Wenn ein neuronales Netzwerk einen Stapel verarbeitet, werden alle Aktivierungswerte für jede Schicht für jedes Beispiel berechnet (möglicherweise parallel pro Beispiel, wenn Bibliothek und Hardware dies unterstützen). Diese Werte werden für eine mögliche spätere Verwendung gespeichert - dh ein Wert pro Aktivierung pro Beispiel im Stapel, sie werden in keiner Weise aggregiert
Während der Rückausbreitung werden diese Aktivierungswerte als eine der numerischen Quellen zur Berechnung von Gradienten verwendet, zusammen mit den bisher berechneten Gradienten, die rückwärts arbeiten, und den Verbindungsgewichten. Wie bei der Vorwärtsausbreitung wird die Rückausbreitung pro Beispiel angewendet, sie funktioniert nicht mit gemittelten oder summierten Werten. Erst wenn alle Beispiele verarbeitet wurden, arbeiten Sie mit den summierten oder gemittelten Verläufen für den Stapel.
Dies gilt gleichermaßen für maximale Poolschichten. Sie wissen nicht nur, wie die Ausgabe der Pooling-Ebene für jedes Beispiel im Stapel war, sondern können auch die vorhergehende Ebene anzeigen und bestimmen, welche Eingabe in den Pool die maximale war.
Mathematisch und ohne die Notwendigkeit, Indizes für NN-Schichten und Neuronen zu definieren, kann die Regel so ausgedrückt werden
Die Vorwärtsfunktion istm = m a x ( a , b )
Wir kennen für eine Zielfunktion J (im neuronalen Netzwerk ist dies die Verlustfunktion, die wir minimieren möchten, und wir gehen davon aus, dass wir bereits bis zu diesem Punkt zurückpropagiert haben).∂J.∂m
Wir wollen wissen, und∂J.∂ein∂J.∂b
Wenna > b
Daher ist wenn , sonst∂J.∂ein= ∂J.∂ma > b∂J.∂ein= 0
und wenn , sonst∂J.∂b= ∂J.∂mb > a∂J.∂b= 0
Wenn die Rückausbreitung über eine maximale Pooling-Ebene erfolgt, wird der Gradient pro Beispiel verarbeitet und nur der Eingabe der vorherigen Ebene zugewiesen, die das Maximum war. Andere Eingänge erhalten einen Gradienten von Null. Wenn dies gestapelt ist, ist es nicht anders, es wird nur pro Beispiel verarbeitet, möglicherweise parallel. Über einen ganzen Stapel hinweg kann dies bedeuten, dass mehr als eine, möglicherweise alle Eingabeaktivierungen für den maximalen Pool einen Teil des Gradienten erhalten - jeweils aus einer anderen Teilmenge von Beispielen im Stapel.
* Lokal -> wenn nur infinitesimale Änderungen an .m
** Technisch gesehen haben wir , wenn genau ist, eine Diskontinuität, aber in der Praxis können wir dies beim Training eines neuronalen Netzwerks ohne Probleme ignorieren.a = b