Ich bin mir nicht sicher, ob Sie akzeptierte Antworten ändern können, aber da die einzige Antwort auf Ihre Frage zur Rückübertragung die Vorwärtsausbreitung ist, habe ich beschlossen, es auszuprobieren.
Im Wesentlichen behandeln Sie das Gewichtsdelta (δRδhlj) das gleiche wie ein Gewichtsdelta für ein lineares Neuron, aber trainieren Sie es einmal für jedes Mal, wenn Sie Ihren Filter (Kernel) über den Eingang legen, alles in einem einzigen Backprop-Durchgang. Das Ergebnis ist die Summe der Deltas für alle Überlagerungen Ihres Filters. Ich denke in Ihrer Notation wäre diesδRδhlj=∑ni=1xl−1iδRδxl+1j wo xl−1 ist eine Eingabe, die mit multipliziert wurde hlj für eine Ihrer Überlagerungen während der Vorwärtsausbreitung und xl+1 ist die Ausgabe, die sich aus dieser Überlagerung ergibt.
Zwischen den beiden Ergebnissen von Backprop durch eine Faltungsschicht (Parameterdeltas und Eingabedeltas) scheint es, als wären Sie mehr an Parameterdeltas interessiert, genauer gesagt an den Gewichtsmatrixdeltas (δRδhlj). Der Vollständigkeit halber werde ich beide mit der folgenden Beispielebene behandeln:
Wenn Sie einen 1D-Satz von Eingängen haben [1,2,3]und ein Filter [0.3,0.5] Wenn dies mit Schritt 1, ohne Auffüllen, ohne Vorspannung und ohne Aktivierungsfunktion angewendet wird, hätte die Aktivierung Ihres Filters so ausgesehen [1∗0.3+2∗0.5,2∗0.3+3∗0.5]=[1.3,2.1]. Wenn Sie auf Ihrem Backprop-Pass durch diese Ebene zurückkehren, sagen wir, die Aktivierungsdeltas, die Sie für Ihre Berechnungen verwenden, sind[−0.1,0.2].
Gewichtsdeltas:
Als Sie im Vorwärtspass durchgekommen sind, haben Sie Ihre Eingaben zwischengespeichert [1,2,3]Nennen wir das A_prev, da es wahrscheinlich die Aktivierung Ihrer vorherigen Ebene ist. Nehmen Sie für jede mögliche Überlagerung Ihres Filters (in diesem Fall können Sie sie nur an zwei Stellen [ 1,2 , 3] und [1, 2,3 ] auf die Eingabe legen) diese Scheibe der Eingabe A_slice und multiplizieren Sie sie jeweils Element durch das zugehörige Ausgangsdelta dZ, und addieren Sie es für diesen Durchgang zu Ihrem Gewichtsdelta dW. In diesem Beispiel würden Sie hinzufügen[1∗−0.1,2∗−0.1] für die erste Überlagerung auf dW, dann hinzufügen [2∗0.2,3∗0.2]für die zweite Überlagerung. Alles in allem ist Ihr dW für diese Faltungsschicht auf diesem Backprop-Pass[0.3,0.4].
Bias Deltas:
Wie bei Gewichtsdeltas, aber addieren Sie einfach Ihr Ausgabedelta, ohne mit der Eingabematrix zu multiplizieren.
Eingabedeltas:
Rekonstruieren Sie die Form der Eingabe für diese Ebene, nennen Sie sie dA_prev, initialisieren Sie sie mit Nullen und gehen Sie die Konfigurationen durch, in denen Sie Ihren Filter der Eingabe überlagert haben. Multiplizieren Sie für jede Überlagerung Ihre Gewichtsmatrix mit dem dieser Überlagerung zugeordneten Ausgabedelta und addieren Sie dies zu dem dieser Überlagerung zugeordneten Slice von dA_prev. Das heißt, Overlay 1 wird hinzugefügt[0.3∗−0.1,0.5∗−0.1]=[−0.03,−0.05] zu dA_prev resultierend in [−0.03,−0.05,0], dann wird Overlay 2 hinzugefügt [0.3∗0.2,0.5∗0.2]=[0.06,0.1], ergebend [−0.03,0.01,0.1] für dA_prev.
Dies ist eine ziemlich gute Quelle, wenn Sie dieselbe Antwort in verschiedenen Begriffen lesen möchten: Link