Backpropagation
Backpropagation oder auch Backpropagation of Error bzw. Fehlerrückführung<ref>Werner Kinnebrock: Neuronale Netze: Grundlagen, Anwendungen, Beispiele. R. Oldenbourg Verlag, München 1994, ISBN 3-486-22947-8.</ref> bzw. Rückpropagierung ist ein verbreitetes Verfahren zum Einlernen künstlicher neuronaler Netze. Es gehört in der einfachen Form zur Gruppe der überwachten Lernverfahren und wird als Verallgemeinerung der Delta-Regel auf mehrschichtige Netze angewandt. Die Rückwärtspropagierung ist ein Spezialfall eines allgemeinen Gradientenverfahrens in der Optimierung, basierend auf dem mittleren quadratischen Fehler.
Funktionsweise
Ein künstliches neuronales Netz erhält Eingabedaten und bildet diese auf einen Ausgabewert ab. Die numerischen Eingabedaten werden in jeder Schicht des Netzes mit einer Matrix von Gewichten multipliziert, welche die Parameter des Netzes sind.
Beim Training des neuronalen Netzes wird die Abweichung zwischen dem Ausgabewert des Netzes und dem Zielwert des externen Lehrers (im einfachen Fall) berechnet und dieser Fehler rückwärts durch alle Schichten des Netzes propagiert (Backpropagation). Durch Backpropagation lässt sich ermitteln, welche Pfade den größten Einfluss auf den Fehler haben; sie ermöglicht es, Gewichte von Verbindungen zu stärken oder zu schwächen, um den Fehler zu verringern und eine gewünschte Vorhersage zu erreichen.<ref name=":0">Brent Scarff, Towards Data Science: Understanding Backpropagation</ref>
Im weiterentwickelten Fall (etwa bei der Architektur von AlphaGo) kann auch der menschliche externe Lehrer fehlen und der Zielwert aus anderen Teilen der Architektur geliefert werden.
Algorithmus
Der Backpropagation-Algorithmus läuft in folgenden Phasen:
- Ein Eingabemuster wird angelegt und vorwärts durch das Netz propagiert.
- Die Ausgabe des Netzes wird mit der gewünschten Ausgabe verglichen. Die Differenz der beiden Werte wird als Fehler des Netzes erachtet.
- Der Fehler wird nun wieder über die Ausgabe- zur Eingabeschicht zurück propagiert. Dabei werden die Gewichtungen der Neuronenverbindungen abhängig von ihrem Einfluss auf den Fehler geändert. Dies garantiert bei einem erneuten Anlegen der Eingabe eine Annäherung an die gewünschte Ausgabe.
Der Name des Algorithmus ergibt sich aus dem Zurückpropagieren des Fehlers (engl. error back-propagation).
Fehlerminimierung
Beim Lernproblem wird für beliebige Netze eine möglichst zuverlässige Abbildung von gegebenen Eingabe- auf gegebene Ausgabevektoren angestrebt. Dazu wird die Qualität der Abbildung durch eine Fehlerfunktion beschrieben, die hier durch den quadratischen Fehler definiert wird:
- <math>E = \frac{1}{2} \sum\limits^{n}_{i=1} (t_{i}-o_{i})^{2}</math>.
Dabei ist
- <math>E</math> der Fehler
- <math>n</math> die Anzahl der Ausgabe-Neuronen,
- <math>t_{i}</math> die gewünschte Soll-Ausgabe oder Zielwert (target)
- <math>o_{i}</math> die errechnete Ist-Ausgabe (output).
Der Faktor <math>\tfrac{1}{2}</math> wird dabei lediglich zur Vereinfachung der Ableitung hinzugenommen.
Das Ziel ist nun die Minimierung der Fehlerfunktion, wobei im Allgemeinen lediglich ein lokales Minimum gefunden wird.
Das Einlernen eines künstlichen neuronalen Netzes erfolgt bei dem Backpropagation-Verfahren durch die Änderung der Gewichte, da die Ausgabe des Netzes – außer von der Aktivierungsfunktion – direkt von ihnen abhängt.
Geschichte
Nach verschiedenen Quellen<ref name="dreyfus1990">Stuart Dreyfus: Artificial Neural Networks, Back Propagation and the Kelley-Bryson Gradient Procedure. In: J. Guidance, Control and Dynamics. 1990.</ref><ref name="mizutani2000">Eiji Mizutani, Stuart Dreyfus, Kenichi Nishio: On derivation of MLP backpropagation from the Kelley-Bryson optimal-control gradient formula and its application. In: Proceedings of the IEEE International Joint Conference on Neural Networks (IJCNN 2000). Como Italy, July 2000.</ref><ref name="schmidhuber2015">Jürgen Schmidhuber: Deep learning in neural networks: An overview. In: Neural Networks. 61, 2015, S. 85–117. ArXiv</ref><ref name="scholarpedia2015">Jürgen Schmidhuber: Deep Learning. In: Scholarpedia. 10(11), 2015, S. 328–332. Section on Backpropagation</ref> wurden die Grundlagen des Verfahrens im Kontext der Steuerungstheorie hergeleitet durch Prinzipien dynamischer Programmierung, und zwar durch Henry J. Kelley im Jahre 1960<ref name="kelley1960">Henry J. Kelley: Gradient theory of optimal flight paths. In: Ars Journal. 30(10), 1960, S. 947–954. (online)</ref> und Arthur E. Bryson im Jahre 1961.<ref name="bryson1961">Arthur E. Bryson: A gradient method for optimizing multi-stage allocation processes. In: Proceedings of the Harvard Univ. Symposium on digital computers and their applications. April 1961.</ref> 1962 publizierte Stuart Dreyfus eine einfachere Herleitung durch die Kettenregel.<ref name="dreyfus1962">Stuart Dreyfus: The numerical solution of variational problems. In: Journal of Mathematical Analysis and Applications. 5(1), 1962, S. 30–45. (online)</ref> Vladimir Vapnik zitiert einen Artikel aus dem Jahre 1963<ref>A. E. Bryson, W. F. Denham, S. E. Dreyfus: Optimal programming problems with inequality constraints. I: Necessary conditions for extremal solutions. In: AIAA J. 1, 11, 1963, S. 2544–2550.</ref> in seinem Buch über Support Vector Machines. 1969 beschrieben Bryson und Yu-Chi Ho das Verfahren als mehrstufige Optimierung dynamischer Systeme.<ref>{{#invoke:Vorlage:Literatur|f}}</ref><ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Seppo Linnainmaa publizierte im Jahre 1970 schließlich die allgemeine Methode für automatisches Differenzieren (AD) diskreter Netzwerke verschachtelter differenzierbarer Funktionen.<ref name="lin1970">Seppo Linnainmaa: The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s Thesis (in Finnish), Univ. Helsinki, 1970, S. 6–7.</ref><ref name="lin1976">Seppo Linnainmaa: Taylor expansion of the accumulated rounding error. In: BIT Numerical Mathematics. 16(2), 1976, S. 146–160.</ref> Dies ist die moderne Variante des Backpropagation-Verfahrens, welche auch bei dünner Vernetzung effizient ist.<ref name="grie2012">Andreas Griewank: Who Invented the Reverse Mode of Differentiation? Optimization Stories. In: Documenta Matematica. Extra Volume ISMP, 2012, S. 389–400.</ref><ref name="grie2008">Andreas Griewank, Andrea Walther: Principles and Techniques of Algorithmic Differentiation. 2. Auflage. SIAM, 2008.</ref><ref name="schmidhuber2015" /><ref name="scholarpedia2015" />
1973 verwendete Stuart Dreyfus Backpropagation, um Parameter von Steuersystemen proportional zu ihren Fehlergradienten zu adjustieren.<ref name="dreyfus1973">Stuart Dreyfus: The computational solution of optimal control problems with time lag. In: IEEE Transactions on Automatic Control. 18(4), 1973, S. 383–385.</ref> Paul Werbos erwähnte 1974 die Möglichkeit, dieses Prinzip auf künstliche neuronale Netze anzuwenden,<ref name="werbos1974">Paul Werbos: Beyond regression: New tools for prediction and analysis in the behavioral sciences. PhD thesis. Harvard University 1974.</ref> und im Jahre 1982 tat er dies auf die heute weit verbreitete Art und Weise.<ref name="werbos1982">Paul Werbos: Applications of advances in nonlinear sensitivity analysis. In: System modeling and optimization. Springer, Berlin/Heidelberg 1982, S. 762–770. (online)</ref><ref name="scholarpedia2015" /> 1986 zeigten David E. Rumelhart, Geoffrey E. Hinton und Ronald J. Williams durch Experimente, dass diese Methode zu nützlichen internen Repräsentationen von Eingabedaten in tieferen Schichten neuronaler Netze führen kann, was die Grundlage von Deep Learning ist.<ref name="Rumelhart1986">David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams: Learning representations by back-propagating errors. In: Nature. Band 323, 1986, S. 533–536.</ref> Eric A. Wan war 1993 der erste,<ref name="schmidhuber2015" /> der einen internationalen Mustererkennungswettbewerb durch Backpropagation gewann.<ref name="wan1993">Eric A. Wan: Time series prediction by using a connectionist network with internal delay lines. In: Santa Fe Institute Studies in the Sciences of Complexity-Proceedings. Vol. 15, Addison-Wesley Publishing Co., 1993, S. 195–195.</ref>
Herleitung
Die Formel des Backpropagation-Verfahrens wird durch Differenziation hergeleitet: Für die Ausgabe eines Neurons mit zwei Eingaben <math>x_1</math> und <math>x_2</math> erhält man eine zweidimensionale Hyperebene, wobei der Fehler des Neurons abhängig von den Gewichtungen <math>w_1, w_2</math> der Eingaben <math>x_1, x_2</math> ist. Diese Fehleroberfläche enthält Minima, die es zu finden gilt. Dies kann nun durch das Gradientenverfahren erreicht werden, indem von einem Punkt auf der Oberfläche aus in Richtung des stärksten Abfallens der Fehlerfunktion abgestiegen wird.
Neuronenausgabe
Für die Herleitung des Backpropagation-Verfahrens sei die Neuronenausgabe eines künstlichen Neurons kurz dargestellt. Die Ausgabe <math>o_{j}</math> eines künstlichen Neurons <math>j</math> lässt sich definieren durch
- <math>o_{j}=\varphi(\mbox{net}_{j})</math>
und die Netzeingabe <math>\mbox{net}_{j}</math> durch
- <math>\mbox{net}_{j}=\sum\limits_{i=1}^{n} x_{i} w_{ij}.</math>
Dabei ist
- <math>\varphi</math> eine differenzierbare Aktivierungsfunktion deren Ableitung nicht überall gleich null ist,
- <math>n</math> die Anzahl der Eingaben,
- <math>x_{i}</math> die Eingabe <math>i</math> und
- <math>w_{ij}</math> die Gewichtung zwischen Eingabe <math>i</math> und Neuron <math>j</math>.
Auf einen Schwellwert <math>\theta_{j}</math> wird hier verzichtet. Dieser wird meist durch ein immer „feuerndes“ on-Neuron realisiert und dessen Ausgabe mit dem konstanten Wert 1 belegt. Auf diese Weise entfällt eine Unbekannte.
Ableitung der Fehlerfunktion
Die partielle Ableitung der Fehlerfunktion <math>E</math> ergibt sich durch Verwendung der Kettenregel:
- <math>\dfrac{\partial E}{\partial w_{ij}} = \frac{\partial E}{\partial o_{j}} \frac{\partial o_{j}}{\partial \mbox{net}_{j}} \frac{\partial \mbox{net}_{j}}{\partial w_{ij}}</math>
Mit Matrizen und Vektoren lautet die Kettenregel:
- <math>\dfrac{\partial E}{\partial W} = \frac{\partial E}{\partial O} \frac{\partial O}{\partial \mathrm{Net}} \frac{\partial \mathrm{Net}}{\partial W}</math>
Aus den einzelnen Termen kann nun die folgende Formel berechnet werden. Dabei ist die Herleitung im Gegensatz zur einfachen Delta-Regel abhängig von zwei Fällen:
- Liegt das Neuron in der Ausgabeschicht, so ist es direkt an der Ausgabe beteiligt,
- liegt es dagegen in einer verdeckten Schicht, so kann die Anpassung nur indirekt berechnet werden.
Konkret:
- <math>\Delta w_{ij}= -\eta \dfrac{\partial E}{\partial w_{ij}} = -\eta \delta_{j} o_{i}</math>
- mit
- <math>\delta_{j}=\begin{cases}
\varphi'(\mbox{net}_{j})(o_{j}-t_{j}) & \mbox{falls } j \mbox{ Ausgabeneuron ist,}\\ \varphi'(\mbox{net}_{j}) \sum_{k} \delta_{k} w_{jk} & \mbox{falls } j \mbox{ verdecktes Neuron ist.} \end{cases}</math>
Dabei ist
- <math>\Delta w_{ij}</math> die Änderung des Gewichts <math>w_{ij}</math> der Verbindung von Neuron <math>i</math> zu Neuron <math>j</math>,
- <math>\eta</math> eine feste Lernrate, mit der die Stärke der Gewichtsänderungen bestimmt werden kann,
- <math>\delta_{j}</math> das Fehlersignal des Neurons <math>j</math>, entsprechend zu <math>\frac{\partial E}{\partial \mbox{net}_{j}}</math>,
- <math>t_{j}</math> die Soll-Ausgabe des Ausgabeneurons <math>j</math>,
- <math>o_{i}</math> die Ausgabe des Neurons <math>i</math>,
- <math>o_{j}</math> die Ist-Ausgabe des Ausgabeneurons <math>j</math> und
- <math>k</math> der Index der Neuronen des nachfolgenden Layers von Neuron <math>j</math>.
Bei einem einschichtigen Netzwerk ist <math>o_{i}=x_{i}</math>. Die Ausgabe <math>o_{i}</math> entspricht dann also den Eingängen des Netzwerks.
Modifizierung der Gewichte
Die Variable <math>\delta_{j}</math> geht dabei auf die Unterscheidung der Neuronen ein: Liegt das Neuron in einer verdeckten Schicht, so wird seine Gewichtung abhängig von dem Fehler geändert, den die nachfolgenden Neuronen erzeugen, welche wiederum ihre Eingaben aus dem betrachteten Neuron beziehen.
Die Änderung der Gewichte kann nun wie folgt vorgenommen werden:
- <math>w_{ij}^{\mbox{neu}}=w_{ij}^{\mbox{alt}} + \Delta w_{ij}</math>.
Dabei ist
- <math>w_{ij}^{\mbox{neu}}</math> der neue Wert des Gewichts,
- <math>w_{ij}^{\mbox{alt}}</math> der alte Wert des Gewichts und
- <math>\Delta w_{ij}</math> die oben berechnete Änderung des Gewichts (basierend auf <math>w_{ij}^{\mbox{alt}}</math>)
Das Ziel der Backpropagation ist es, die Ableitung des Fehlers in Bezug auf die Gewichte im Netz zu finden. Wenn nach der Änderung eines Wertes in Bezug auf einen anderen Wert gesucht ist, ist dies eine Ableitung. Für die Berechnung repräsentiert jedes Neuron eine Funktion und jede Kante führt einen Vorgang auf dem angehängten Neuron aus. Man beginnt mit dem Fehlerneuron und bewegt sich jeweils ein Neuron zurück und nimmt die partielle Ableitung des aktuellen Neurons in Bezug auf den Neurons in der vorhergehenden Schicht. Jeder Ausdruck wird an den vorhergehenden Ausdruck gekettet, um den Gesamtwert zu berechnen. Dies ist die Kettenregel.<ref name=":0" />
Kettenregel
Die Vorhersagen sind eine lineare Funktion, gefolgt von einer Sigmoidfunktion. Das Modell und die Verlustfunktion lauten wie folgt:
- <math>\begin{align}
z &= w \cdot x + b \\ y &= \sigma(z) \\ \mathcal{L} &= \frac{1}{2} \cdot (y - t)^2 \\ \end{align}</math>
Partielle Ableitungen können auf dieselbe Weise berechnet werden, wie univariate Ableitungen berechnet würden. Man kann die Kostenfunktion in Bezug auf <math>w</math> und <math>b</math> erweitern und dann die Ableitungen mithilfe wiederholter Anwendungen der univariaten Kettenregel berechnen:
- <math>\begin{align}
\frac{\partial \mathcal{L}}{\partial w} &= \frac{\partial}{\partial w}\left(\frac{1}{2}(\sigma(w \cdot x + b) - t)^2\right) \\ &= (\sigma(w \cdot x + b) - t) \cdot \sigma'(w \cdot x + b) \cdot x \\ \frac{\partial \mathcal{L}}{\partial b} &= \frac{\partial}{\partial b}\left(\frac{1}{2}(\sigma(w \cdot x + b) - t)^2\right) \\ &= (\sigma(w \cdot x + b) - t) \cdot \sigma'(w \cdot x + b) \\ \end{align}</math>
Die multivariable Kettenregel ist eine Verallgemeinerung der univariaten Kettenregel:<ref>Roger Grosse, University of Toronto: Lecture 6: Backpropagation</ref><ref>Roger Grosse, University of Toronto: Backpropagation & Automatic Differentiation</ref>
- <math>\frac{d}{dt} f(x(t), y(t)) = \frac{\partial f}{\partial x} \cdot \frac{dx}{dt} + \frac{\partial f}{\partial y} \cdot \frac{dy}{dt}</math>
Kostenfunktionen für das maschinelle Lernen basieren normalerweise auf Matrixberechnungen. Eine Theorie besagt, dass es immer einen Algorithmus zum Berechnen von Ableitungen einer Kostenfunktion gibt, der höchstens ein paar Mal so viele Operationen verwendet wie die Kostenfunktion selbst.
Dazu kann man einen Berechnungsgraphen betrachten, der mit der Berechnung eines Skalars <math>z</math> endet. Eine Zwischenberechnung erstellt eine Matrix <math>C</math> aus zwei Grundmatrixen <math>A</math> und <math>B</math>. Bei der umgekehrten Differentiation berechnet man <math>\bar{C}</math>, eine Matrix derselben Größe wie <math>C</math>, wobei <math>\bar{C}_{ij} = \tfrac{\partial z}{\partial C_{ij}}</math>. Man muss dann dieses Ableitungssignal backpropagieren, um <math>\bar{A}</math> und <math>\bar{B}</math> zu berechnen, wobei <math>\bar{A}_{ij} = \tfrac{\partial z}{\partial A_{ij}}</math> und <math>\bar{B}_{ij} = \tfrac{\partial z}{\partial B_{ij}}</math>. Die Kettenregel ergibt eine allgemeine Gleichung für die Backpropagation von Matrixableitungen:
- <math>\bar{A}_{ij} = \frac{\partial z}{\partial A_{ij}} = \sum_{k,l} \frac{\partial z}{\partial C_{kl}} \cdot \frac{\partial C_{kl}}{\partial A_{ij}} = \sum_{k,l} \partial \bar{C}_{kl} \cdot \frac{\partial C_{kl}}{\partial A_{ij}}</math>
Es sollten jedoch nicht alle Terme in dieser Gleichung ausgewertet werden. Wenn <math>A</math> und <math>C</math> beide <math>n \times n</math>-Matrixen sind, gibt es <math>n^4</math> Elemente <math>\tfrac{\partial C_{kl}}{\partial A_{ij}}</math>, wenn alle Kombinationen von <math>i</math>, <math>j</math>, <math>k</math> und <math>l</math> berücksichtigt werden. Ableitungen können dieselbe Rechenaufwand wie die Kostenfunktion haben können, aber die meisten Matrixfunktionen haben eine bessere Laufzeit als <math>O(n^4)</math>. Daher ist es normalerweise möglich, die obige Summe auszuwerten, ohne alle ihre Terme explizit zu berechnen.<ref>University of Edinburgh: Backpropagation of Derivatives</ref>
Aktivierungsfunktion
Der Backpropagation-Algorithmus sucht nach dem Minimum der Fehlerfunktion unter Verwendung des Gradientenverfahrens. Die Kombination von Gewichten, die die Fehlerfunktion minimiert, wird als Lösung des Lernproblems angesehen. Weil dieses Verfahren die Berechnung des Gradienten der Fehlerfunktion bei jedem Iterationsschritt erfordert, muss die Fehlerfunktion stetig und differenzierbar sein.
Eine der beliebtesten Aktivierungsfunktionen für Backpropagation-Netze ist die Sigmoidfunktion <math>s_c(x) = \frac{1}{1 + e^{-cx}}</math>. Die Konstante <math>c</math> ist beliebig wählbar und ihr Kehrwert <math>\frac{1}{c}</math> wird Temperaturparameter in stochastischen neuronalen Netzen genannt. Die Form des Sigmoids ändert sich entsprechend dem Wert von <math>c</math>. Höhere Werte von <math>c</math> bringen die Form des Sigmoids näher an die der Heaviside-Funktion, und im Grenzwert <math>c \rightarrow \infty</math> konvergiert das Sigmoid zu einer Heaviside-Funktion.
Die Ableitung der Sigmoidfunktion nach <math>x</math> ist <math>\frac{\partial}{\partial x} s_c(x) = \frac{c \cdot e^{-cx}}{(1 + e^{-cx})^2} = c \cdot s_c(x) \cdot (1 - s_c(x))</math>
Eine Alternative zum Sigmoid ist das symmetrische Sigmoid, definiert als <math>S(x) = 2 \cdot s(x) - 1 = \frac{1 - e^{-x}}{1 + e^{-x}}</math>. Dies ist der Tangens hyperbolicus für das Argument <math>\frac{x}{2}</math>, also <math>\tanh \left( \frac{x}{2} \right)</math>.
Viele andere Arten von Aktivierungsfunktionen wurden vorgeschlagen und der Backpropagation-Algorithmus ist auf alle anwendbar. Eine differenzierbare Aktivierungsfunktion macht die von einem neuronalen Netz berechnete Funktion differenzierbar unter der Annahme, dass die Integralfunktion an jedem Knoten nur die Summe der Eingaben ist, weil das Netz selbst nur zusammengesetzte Funktionen berechnet.<ref>Freie Universität Berlin: The Backpropagation Algorithm</ref>
Erweiterungen
Die Wahl der Lernrate <math>\eta</math> ist wichtig für das Verfahren, da
- ein zu hoher Wert eine starke Veränderung bewirkt, wodurch das Minimum verfehlt werden kann
- ein zu kleiner Wert das Einlernen unnötig verlangsamt.
Verschiedene Optimierungen von Rückwärtspropagierung, z. B. Quickprop, zielen vor allem auf die Beschleunigung der Fehlerminimierung; andere Verbesserungen versuchen vor allem die Zuverlässigkeit zu erhöhen.
Backpropagation mit variabler Lernrate
Um eine Oszillation des Netzes, d. h. alternierende Verbindungsgewichte zu vermeiden, existieren Verfeinerungen des Verfahrens, bei dem mit einer variablen Lernrate gearbeitet wird.
Backpropagation mit Trägheitsterm
Durch die Verwendung eines variablen Trägheitsterms (Momentum) <math>\alpha</math> kann der Gradient und die letzte Änderung gewichtet werden, so dass die Gewichtsanpassung zusätzlich von der vorausgegangenen Änderung abhängt. Ist das Momentum <math>\alpha</math> gleich 0, so hängt die Änderung allein vom Gradienten ab, bei einem Wert von 1 lediglich von der letzten Änderung.
Ähnlich einer Kugel, die einen Berg hinunter rollt und deren aktuelle Geschwindigkeit nicht nur durch die aktuelle Steigung des Berges, sondern auch durch ihre eigene Trägheit bestimmt wird, lässt sich der Backpropagation ein Trägheitsterm hinzufügen:
- <math>\Delta w_{ij}(t+1)= (1-\alpha) \eta \delta_{j} x_{i} + \alpha \Delta w_{ij}(t)</math>
Dabei ist
- <math>\Delta w_{ij}(t+1)</math> die Änderung des Gewichts <math>w_{ij}(t+1)</math> der Verbindung von Neuron <math>i</math> zu Neuron <math>j</math> zum Zeitpunkt <math>(t+1)</math>,
- <math>\eta</math> eine Lernrate,
- <math>\delta_{j}</math> das Fehlersignal des Neurons <math>j</math> und
- <math>x_{i}</math> die Eingabe des Neurons <math>i</math>,
- <math>\alpha</math> der Einfluss des Trägheitsterms <math>\Delta w_{ij}(t)</math>. Dieser entspricht der Gewichtsänderung zum vorherigen Zeitpunkt.
Damit hängt die aktuelle Gewichtsänderung <math>(t+1)</math> sowohl vom aktuellen Gradienten der Fehlerfunktion (Steigung des Berges, 1. Summand), als auch von der Gewichtsänderung des vorherigen Zeitpunktes ab (eigene Trägheit, 2. Summand).
Durch den Trägheitsterm werden unter anderem Probleme der Backpropagation-Regel in steilen Schluchten und flachen Plateaus vermieden. Da zum Beispiel in flachen Plateaus der Gradient der Fehlerfunktion sehr klein wird, käme es ohne Trägheitsterm unmittelbar zu einem „Abbremsen“ des Gradientenabstiegs, dieses „Abbremsen“ wird durch die Addition des Trägheitsterms verzögert, so dass ein flaches Plateau schneller überwunden werden kann.
Sobald der Fehler des Netzes minimal wird, kann das Einlernen abgeschlossen werden und das mehrschichtige Netz ist nun bereit, die erlernten Muster zu klassifizieren.
Gleichungen der Backpropagation
Die Gleichungen der Backpropagation lassen sie wie folgt zusammenfassen:
- <math>\begin{align}
\delta_{j}^L &= \frac{\partial E}{\partial o_{j}^L} \varphi'(\mbox{net}_j^L) \\ \delta_{j}^l &= ((w^{l+1})^T\delta^{j+1}) \circ \varphi'(\mbox{net}_j^l) \\ \frac{\partial E}{\partial t_{j}^L} &= \delta_{j}^l \\ \frac{\partial E}{\partial w_{ij}^L} &= o_{j}^{l-1} \delta_{i}^l \end{align}</math> Diese Gleichungen bieten eine Möglichkeit, den Gradienten der Kostenfunktion zu berechnen. Daraus ergibt sich folgender Algorithmus:<ref>Neural Networks and Deep Learning: How the backpropagation algorithm works</ref>
- Setze die Aktivierung <math>o^1</math> für die Eingabeschicht
- Berechne <math>z^l = w^l o^{l-1} + t^l</math> und <math>o^l = \varphi(\mbox{net}_j^l) </math> für <math>l = 2, 3, \ldots, L</math>
- Berechne den Vektor <math>\frac{\partial E}{\partial o_{j}^L} \varphi'(\mbox{net}_j^L) </math>
- Berechne den Vektor <math>\delta_{j}^l = ((w^{l+1})^T\delta^{j+1}) \circ \varphi'(\mbox{net}_j^l) </math> für <math>l = L - 1, L - 2, \ldots, 2</math>
- Der Gradient der Kostenfunktion ist <math>\frac{\partial E}{\partial w_{ij}^L} = o_{j}^{l-1} \delta_{i}^l</math> und <math>\frac{\partial E}{\partial t_{j}^L} = \delta_{j}^l</math>
Siehe auch
Literatur
- David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams: Learning representations by back-propagating errors. In: Nature. Band 323, 1986, S. 533–536 (nature.com).
- Raúl Rojas: Theorie der Neuronalen Netze. Springer, 1996, ISBN 3-540-56353-9. (E-Book der englischen Version; PDF; 4,6 MB), S. 151 ff.
- Burkhard Lenze: Einführung in die Mathematik neuronaler Netze. Logos-Verlag, Berlin 2003, ISBN 3-89722-021-0.
- Robert Callan: Neuronale Netze im Klartext. Pearson Studium, München 2003.
- Andreas Zell: Simulation neuronaler Netze. R. Oldenbourg Verlag, München 1997, ISBN 3-486-24350-0.
Weblinks
- Michael Nielsen: Neural Networks and Deep Learning Determination Press 2015 (Kapitel 2, e-book)
- Backpropagator’s Review (lange nicht gepflegt)
- Ein kleiner Überblick über Neuronale Netze (David Kriesel) – kostenloses Skriptum in Deutsch zu Neuronalen Netzen. Reich illustriert und anschaulich. Enthält ein Kapitel über Backpropagation samt Motivation, Herleitung und Variationen wie z. B. Trägheitsterm, Lernratenvariationen u. a.
- Membrain: freier Neuronale-Netze-Editor-und-Simulator für Windows
- Blogbeitrag zum Thema Backpropagation und Gradient Descent inkl. Programmierbeispiele
Einzelnachweise
<references responsive/>