Backpropagation-Algorithmus
Das Backpropagtion-Verfahren wurde 1986 von Rumelhart, Hinton und Williams in ihrem berühmten Artikel Learning representations by back-propagating errors angegeben und hat wesentlich dazu beigetragen, dass der damalige so genannte KI-Winter beendet wurde und dem Verfahren des maschinellen Lernens erneut große Aufmerksamkeit gewidmet wurde.
Vorbemerkung
In diese Unterkapitel geht es recht technischer zu. Daher ist dieses Unterkapitel nicht so sehr zum Selbstlernen für Schüler:innen geeignet, sondern richten sich eher an Lehrer:innen zum Verständnis des mathematischen Hintergrunds.
Grundsätzliche Idee der Backpropagation
Wie im vorhergehenden Kapitel betrachten wir weiterhin die Kostenfunktion , welche für eine feste Eingangsgröße ein Maß dafür angibt, wie stark die Ausgangsaktivierungen von den gewünschten Ergebnissen abweichen. Die Kostenfunktion ist eine Funktion, die von sämtlichen Gewichten und Biases des KNN abhängt:
Es soll nun ein Verfahren angegeben werden, bei dem in jedem Lernschritt für einen festen Eingangswert alle Gewichte und Biases gleichzeitig neu justiert werden.
Mit bezeichnen wir die Propagierungsfunktion des -ten Layers. Beachte, dass hierbei Matrizen und dass und Vektoren sind. Die Aktivierungsfunktion des -ten Layers lautet damit also:
Beachte, dass dabei die Anwendung von auf den Vektor komponentenweise gemeint ist. Das heißt, in Koordinatenschreibweise ergibt sich für die Aktivierungsfunktion:

Die grundlegende Idee der Backpropagation besteht darin, zunächst die Fehler des Ausgabelayers (also die Abweichungen der Ausgangsaktivierungen von den gewünschten Aktivierungen ) zu betrachten. Genauer definieren wir den Fehler im -ten Layer als:
Da der Fehler ja von den Gewichten und Biases abhängt, ist die Idee nun, in jeder Iteration diese Gewichte und Biaes so neu zu justieren, dass der Fehler etwas kleiner wird (Gradientenabstiegsverfahren).
Weiterhin muss ja der Fehler durch einen Fehler im vorhergehenden Layer zustande gekommen sein. Daher wird in jedem Iterationsschritt auch berechnet, wie groß dieser Fehler gewesen sein muss.
Dieses Vorgehen wird nun für das gesamte KNN durchgeführt. Das heißt, ausgehend vom Fehler des Layers werden die Gewichte und Biases durch Gradientenabstieg angepasst. Anschließend wird der Fehler im vorhergehenden Layer berechnet. Dieses Vorgehen wird solange wiederholt, bis man beim Eingangslayer angekommen ist.
Da man dabei vom Ausgabelayer startend iterativ rückwärts durch das gesamte KNN bis zum Eingabelayer läuft, wird dieses Vorgehen als Backpropagation der Fehler bezeichnet. In einem Backpropagationschritt werden dabei alle Gewichte und alle Biases des KNN gleichzeitig so justiert, dass der Ausgabefehler insgesamt im Sinne der Kostenfunktion etwas kleiner wird.
Nun zu der genaueren mathematischen Ausarbeitung der Backpropagation:
Mathematische Herleitung der nötigen Formeln
Berechnung des Fehler des Ausgabelayers
Wegen und der Kettenregel gilt: Weiter folgt wegen : Damit ergibt sich für den Fehler also insgesamt: Wird nun noch mit das Hardamard-Produkt notiert, so ergibt sich in Vektorschreibweise: Mit Hilfe dieser Formel lässt sich also der Fehler nach erfolgter Forwardpropagation sofort berechnen.
Anmerkung Wegen sich der Fehler in Gradientenschreibweise auch notieren als:
Backpropagation des Fehlers vom Layer zum Layer
Der Fehler in einem nachfolgenden Layer muss ja durch einen Fehler in dem vorhergehenden Layer zustande gekommen sein. Deshalb ist unser Ziel nun, eine Formel für den Fehler ) als Funktion des Fehlers des nachfolgenden Layers herzuleiten. Mit Hilfe dieser Formel kann dann der Fehler iterativ rückwärts durch das gesamte KNN bis zum Eingangslayer propagiert werden. Man nennt dieses Vorgehen deshalb Backpropagation des Fehlers durch das gesamte KNN.
Dazu betrachten wir zunächst die Abhängigkeit der Propagierungsfunktion von der Propagierungsfunktion im vorhergehenden Layer. Wegen gilt zunächst: Daraus folgt für die Abhängigkeit von sofort: Für den Fehler folgt daraus mit der Kettenregel: In Matrixschreibweise kann diese Gleichung elegant geschrieben werden als: Mit Hilfe dieser Gleichung ist also unser Ziel erfüllt und wir können aufgrund der Kenntnis des Fehler jeweils den Fehler im vorhergehenden Layer berechnen (Backpropagation des Fehlers). Beachte dabei, dass die Werte aufgrund der vorangegangenen Forwardpropagation bereits alle bekannt sind.
Korrektur der Biases
Nachdem nun also durch Backpropagation sämtliche Fehler für alle Layer des KNN bekannt sind, können wir uns anschauen, wie die Biases so neu justiert werden können, dass die Kostenfunktion für den immer noch festen Eingangswert kleiner wird. Dazu betrachten wir die Abhängigkeit der Kostenfunktion von den Biases. Wegen und der Kettenregel erhält man: In Vektorschreibweise also: Werden nach erfolgter Backpropagation sämtlicher Fehler durch das gesamte KNN also in jedem Layer die Bisaes nach der Vorschrift angepasst, so wird die Kostenfunktion insgesamt kleiner. Das Netzwerk hat also also gelernt, den ursprünglichen Eingangswert im Sinne der Kostenfunktion besser zu verarbeiten. In der obigen Formel wurde noch eine Lernrate eingeführt, die verhindern soll, dass man zu schnell über lokale Minima der Kostenfunktion hinausläuft.
Korrektur der Gewichte
Analog zum Vorgehen bei den Biases leiten wir nun eine Formel für die Abhängigkeit der Kostenfunktion von den Gewichten her. Wiederum wegen und der Kettenregel erhalten wir sofort: In Matrixschreibweise also: Analog zum Vorgehen bei den Biases werden auch die Gewichtswerte nach der folgenden Vorschrift neu justiert (Abstieg in Richtung des negativen Gradienten gedämpft um die Lernrate ):
Zusammenfassung der Update-Regeln
Backpropagation der Fehler durch das gesamte KNN und Gradient : Update der neuen Biases und Gewichte :
Trainingsbatches
In tatsächlichen Anwendungen wird der Updateschritt meist nicht für einen einzelnen Trainingswert aus den Trainingsdaten ausgeführt. Stattdessen betrachtet man eine ganze Teilmenge und berechnet für jeden Wert einen gemittelten Updateschritt: Das eigentliche Update der Gewichte und Biases wird also lediglich ein einziges mal für das komplette Trainingsbatch ausgeführt. Mit diesem Vorgehen soll erreicht werden, dass man erstens nicht so leicht über ein lokales Minimum der Kostenfunktion hinausläuft. Und zweitens soll auch vermieden werden, dass man in einem lokalen Minimum der Kostenfunktion steckenbleibt, falls nebenan eventuell noch weitere lokale Minima mit noch niedrigeren Kosten existieren. Die Trainingsbatches werden dabei jeweils nacheinander zufällig aus der Menge aller Trainingsdaten ausgewählt. Auch durch diese zufällige Wahl soll vermieden werden, über lokale Minima hinauszulaufen oder in lokalen Minima steckenzubleiben, welche global betrachtet noch nicht sonderlich gut sind.
Lizenzangaben
Das vorliegende Unterkapitel orientiert sich an der Darstellung in dem online Buch von Michael Nielsen: Neural Networks and Deep Learning und unterliegt deshalb (anders als der Rest von inf-schule.de) der Lizenz „Creative Commons Attribution-NonCommercial 3.0 Unported License“. Die in diesem Unterkapitel neu ergänzten Bestandteile unterliegen zusätzlich der ShareAlike-Klausel.