Wie aktualisiert man die Gewichte einer Dekonvolutionsebene?

8

Ich versuche eine dekonvolutionäre Schicht (oder eine transponierte Faltungsschicht, um genau zu sein) zu entwickeln.

Im Vorwärtsdurchlauf mache ich eine volle Faltung (Faltung mit Nullauffüllung) Im Rückwärtsdurchlauf mache ich eine gültige Faltung (Faltung ohne Auffüllung), um die Fehler an die vorherige Ebene weiterzuleiten

Die Gradienten der Verzerrungen sind leicht zu berechnen, einfach eine Frage der Mittelung über die überflüssigen Dimensionen.

Das Problem ist, ich weiß nicht, wie man die Gewichte der Faltungsfilter aktualisiert. Was sind die Gradienten? Ich bin mir sicher, dass es eine Faltungsoperation ist, aber ich sehe nicht wie. Ich versuchte eine gültige Faltung der Eingänge mit den Fehlern, aber ohne Erfolg.

    
Baptiste Wicht 17.01.2017, 14:20
quelle

1 Antwort

1

Dekonvolution erklärt

Zunächst ist deconvolution eine Faltungsschicht, die nur für einen anderen Zweck verwendet wird, nämlich upsampling (warum es nützlich ist, wird erklärt in dieses Papier ).

Zum Beispiel wird hier ein 2x2 Eingangsbild (unteres Bild in blau) auf 4x4 (oberes Bild in grün) hochgerechnet:

Um es zu einer gültigen Faltung zu machen, wird die Eingabe zuerst aufgefüllt, um 6x6 zu erhalten, wonach 3x3 filter ohne Schreiten angewendet wird. Genau wie in der normalen Faltungsschicht können Sie verschiedene Strategien zum Auffüllen / Schreiten wählen, um die gewünschte Bildgröße zu erzielen.

Rückwärtsdurchlauf

Nun sollte klar sein, dass der Rückwärtsdurchlauf für die Entfaltung ein Teilfall des Rückwärtsdurchlaufs für eine Faltungsschicht ist, mit besonderem Schritt und Auffüllen. Ich denke, du hast es bereits getan, aber hier ist eine naive (und nicht sehr effiziente) Implementierung für jeden Schritt und Padding:

%Vor%

Das Gleiche kann mit im2col und col2im effizienter durchgeführt werden, aber es ist nur ein Implementierungsdetail. Eine weitere lustige Tatsache: Der Rückwärtsdurchlauf für eine Faltungsoperation (sowohl für die Daten als auch für die Gewichte) ist wiederum eine Faltung, aber mit räumlich umgedrehten Filtern.

So wird es angewendet (einfache einfache SGD):

%Vor%

Wie Sie sehen, ist das ziemlich einfach, Sie müssen nur verstehen, dass Sie die gleiche alte Faltung anwenden.

    
Maxim 01.10.2017 08:57
quelle