i

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 Cx(w,b), welche für eine feste Eingangsgröße x ein Maß dafür angibt, wie stark die Ausgangsaktivierungen aL(x) von den gewünschten Ergebnissen y(x) abweichen. Die Kostenfunktion Cx(w,b) ist eine Funktion, die von sämtlichen Gewichten w=(wjkl)j,k,l und Biases b=(bj)j des KNN abhängt:

Cx(w,b):=12y(x)aL(x)2=12k(y(x)aL(x))2

Es soll nun ein Verfahren angegeben werden, bei dem in jedem Lernschritt für einen festen Eingangswert x alle Gewichte w und Biases b gleichzeitig neu justiert werden.

Mit zl:=wlal1+bl bezeichnen wir die Propagierungsfunktion des l-ten Layers. Beachte, dass hierbei wl Matrizen und dass al1 und zl Vektoren sind. Die Aktivierungsfunktion des l-ten Layers lautet damit also:

al=σ(zl)=σ(wlal1+bl)

Beachte, dass dabei die Anwendung von σ auf den Vektor zl komponentenweise gemeint ist. Das heißt, in Koordinatenschreibweise ergibt sich für die Aktivierungsfunktion:

ajl=σ(zjl)=σ(kwjklakl1+bjl)

Die grundlegende Idee der Backpropagation besteht darin, zunächst die Fehler δL des Ausgabelayers (also die Abweichungen der Ausgangsaktivierungen aL(x) von den gewünschten Aktivierungen y(x)) zu betrachten. Genauer definieren wir den Fehler im l-ten Layer als:

δl:=Cxzl:=(Cxzjl)j

Da der Fehler δL ja von den Gewichten wL und Biases bL abhängt, ist die Idee nun, in jeder Iteration diese Gewichte und Biaes so neu zu justieren, dass der Fehler δL etwas kleiner wird (Gradientenabstiegsverfahren).

Weiterhin muss ja der Fehler δL durch einen Fehler δL1 im vorhergehenden Layer zustande gekommen sein. Daher wird in jedem Iterationsschritt auch berechnet, wie groß dieser Fehler δL1 gewesen sein muss.

Dieses Vorgehen wird nun für das gesamte KNN durchgeführt. Das heißt, ausgehend vom Fehler δl des Layers l werden die Gewichte wl und Biases bl durch Gradientenabstieg angepasst. Anschließend wird der Fehler δl1 im vorhergehenden Layer l1 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 w=(wjkl)j,k,l und alle Biases b=(bj)j 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 δL des Ausgabelayers

Wegen ajL=σ(zjL) und der Kettenregel gilt: δjL=CxzjL=CxajLσ(zjL) Weiter folgt wegen Cx(w,Θ)=12k(yk(x)akL(x))2: CxajL=(yjajL)(1)=ajLyj Damit ergibt sich für den Fehler δL also insgesamt: δjL=(ajLyj)σ(zjL) Wird nun noch mit das Hardamard-Produkt notiert, so ergibt sich in Vektorschreibweise: δL=(aLy)σ(zL) Mit Hilfe dieser Formel lässt sich also der Fehler δL nach erfolgter Forwardpropagation sofort berechnen.
Anmerkung
Wegen (aLCx)j=(CxajL)j=(ajLyjL)j sich der Fehler δL in Gradientenschreibweise auch notieren als: δL=aLCxσ(zL)

Backpropagation des Fehlers vom Layer l+1 zum Layer l

Der Fehler δl+1 in einem nachfolgenden Layer muss ja durch einen Fehler δl in dem vorhergehenden Layer zustande gekommen sein. Deshalb ist unser Ziel nun, eine Formel für den Fehler δl=δl(δl+1) als Funktion des Fehlers δl+1 des nachfolgenden Layers herzuleiten. Mit Hilfe dieser Formel kann dann der Fehler δl+1 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 zl+1 von der Propagierungsfunktion zl im vorhergehenden Layer. Wegen ajl=σ(zjl) gilt zunächst: zkl+1=iwkil+1ail+bkl+1=iwkil+1σ(zil)+bkl+1 Daraus folgt für die Abhängigkeit zl+1 von zl sofort: zkl+1zjl=wkjl+1σ(zjl) Für den Fehler δl folgt daraus mit der Kettenregel: δjl=Cxzjl=kCxzkl+1zkl+1zjl=kδkl+1zkl+1zjl=kδkl+1wkjl+1σ(zjl)=kwkjl+1δkl+1σ(zjl) In Matrixschreibweise kann diese Gleichung elegant geschrieben werden als: δl=(wl+1)Tδl+1σ(zl) Mit Hilfe dieser Gleichung ist also unser Ziel erfüllt und wir können aufgrund der Kenntnis des Fehler δl+1 jeweils den Fehler δl im vorhergehenden Layer l berechnen (Backpropagation des Fehlers). Beachte dabei, dass die Werte zl aufgrund der vorangegangenen Forwardpropagation bereits alle bekannt sind.

Korrektur der Biases b

Nachdem nun also durch Backpropagation sämtliche Fehler δl für alle Layer l des KNN bekannt sind, können wir uns anschauen, wie die Biases so neu justiert werden können, dass die Kostenfunktion Cx für den immer noch festen Eingangswert x kleiner wird. Dazu betrachten wir die Abhängigkeit der Kostenfunktion von den Biases. Wegen zjl=iwjiail1+bjl und der Kettenregel erhält man: Cxbjl=Cxzjlzjlbjl=δjl1 In Vektorschreibweise also: Cxbl=δl Werden nach erfolgter Backpropagation sämtlicher Fehler δl durch das gesamte KNN also in jedem Layer die Bisaes bl nach der Vorschrift Δbl:=ηδl angepasst, so wird die Kostenfunktion insgesamt kleiner. Das Netzwerk hat also also gelernt, den ursprünglichen Eingangswert x 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 w

Analog zum Vorgehen bei den Biases leiten wir nun eine Formel für die Abhängigkeit der Kostenfunktion Cx von den Gewichten w her. Wiederum wegen zjl=iwjiail1+bjl und der Kettenregel erhalten wir sofort: Cxwjkl=Cxzjlzjlwjkl=δjlakl1 In Matrixschreibweise also: Cxwl=δl(al1)T Analog zum Vorgehen bei den Biases werden auch die Gewichtswerte w nach der folgenden Vorschrift neu justiert (Abstieg in Richtung des negativen Gradienten gedämpft um die Lernrate η): Δwl:=ηδl(al1)T

Zusammenfassung der Update-Regeln

Backpropagation der Fehler δl durch das gesamte KNN und Gradient Θ,wCx: δL=(aLy)σ(zL)δl=(wl+1)Tδl+1σ(zl)Cxbl=δlCxwl=δl(al1)T Update der neuen Biases bl und Gewichte wl: Δbl:=ηδlΔwl:=ηδl(al1)T

Trainingsbatches

In tatsächlichen Anwendungen wird der Updateschritt meist nicht für einen einzelnen Trainingswert xX aus den Trainingsdaten X ausgeführt. Stattdessen betrachtet man eine ganze Teilmenge BX und berechnet für jeden Wert xB einen gemittelten Updateschritt: ΔΘgesamtl:=1|B|xB(ηδxl)Δwgesamtl:=1|B|xB(ηδxl(axl1)T) 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 B werden dabei jeweils nacheinander zufällig aus der Menge X 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.

Suche

5.1.3.6.11.2
https://dev.inf-schule.de/ki/menueansicht/maschinelles_lernen_mit_python/deep_learning/maschinelles_lernen/backward_propagation
https://dev.inf-schule.de/5.1.3.6.11.2
https://dev.inf-schule.de/@/page/xRFdfEQhbHw0f8xB

Rückmeldung geben