Backpropagation bildet die Essenz von dem Training der künstlichen neuronalen Netze. Backpropagation in neuronalen Netzen ist eine Kurzform für „Backward Propagation of Errors“. Es ist eine Standardmethode zum Trainieren künstlicher neuronaler Netze. Backpropagation bezeichnet das Verfahren zur Feinabstimmung der Gewichte von einem neuronalen Netz basierend auf der Fehlerrate, die in der vorherigen Epoche (d. h. Iteration) erhalten wurde. Bei dieser Methode werden die Gewichte der neuronalen Netze, basierend auf der Berechnung des Gradienten einer Verlustfunktion, angepasst.
Durch die Anpassung der Gewichte wird die Fehlerrate der neuronalen Netze reduziert und damit ihre Vorhersage deutlich verbessert.
In diesem Tutorial wird der Backpropagation Algorithmus für das Training der neuronalen Netze Schritt für Schritt hergeleitet.
Inhaltsverzeichnis
- Überwachtes Lernen
- Verlustfunktion
- Softmax-Funktion
- Herleitung von dem Backpropagation-Algorithmus
- Anzahl der Gleitkommaoperationen
- Laufzeitkomplexität von einem Multilayer Perceptron
1. Überwachtes Lernen
Damit im weiteren Verlauf mathematische Zusammenhänge klarer dargestellt werden können, werden an dieser Stelle folgende Definitionen eingeführt:
:
-te Eingabevektor,
:
-te Ausgabevektor,
: Das Label
stellt die wahren Ausgabewerte dar, die das neuronale Netz für die Eingabedaten
berechnen soll.
- (
): Trainingspaar/Trainingsbeispiel
- (
)
: Datensatz, der für das Training des neuronalen Netzes verwendet wird (auch Trainingsdatensatz genannt). Dieser besteht aus
Trainingspaaren.
Eine Eigenschaft der künstlichen neuronalen Netze ist die Fähigkeit, aus den Eingabedaten zu lernen. Das Lernen bezieht sich hier auf die Anpassung der Gewichte im neuronalen Netz, sodass das Netz in der Lage ist, eine Funktion zu approximiert, die eine Abbildung
ermöglicht. Dabei soll der Unterschied zwischen
und den Labels
möglichst gering gehalten werden.
Beim überwachten Lernverfahren erhält das neuronale Netz die Eingabedaten . Mit diesen Werten werden Ausgabedaten
berechnet.
Die Ausgabedaten werden mit den wahren Werten verglichen. Anhand des Fehlers zwischen
und
werden Änderungen an den Gewichten des Netzes vorgenommen. Die Änderung der Gewichte soll zukünftig zu einem kleineren Fehlerwert zwischen dem Label und den berechneten Ausgaben führen. Dieser Prozess wird für alle
Trainingsbeispiele im Trainingsdatensatz mehrmals wiederholt.
Die Anpassung der Gewichte basiert auf dem Gradientenverfahren, das in Abschnitt beschrieben wird. Der Lernprozess eines neuronalen Netzes wird auch als Training bezeichnet. Nach dem erfolgreichen Training ist das neuronale Netz in der Lage zu generalisieren, d.h. für neue Eingabedaten eine korrekte Ausgabe
zu berechnen.
2. Verlustfunktion
Eine Verlustfunktion (auch Kostenfunktion genannt) setzt die Ausgabewerte eines neuronalen Netzes in Verhältnis zu den erwarteten Werten, den Labels
. Je niedriger der Wert der Fehlerfunktion, desto besser ist das neuronale Netz in der Lage, für gegebene Eingabedaten
eine passende Ausgabe
zu berechnen. Mehr Informationen zu den wichtigsten Verlustfunktionen in Deep Learning, finden Sie in meinem Artikel „Verlustfunktionen in Deep Learning„.
Damit kann das Training eines neuronalen Netzes als eine Minimierung der Fehlerfunktion angesehen werden. Abhängig von der Art der Aufgabe, für die das neuronale Netz trainiert wird, muss eine andere Fehlerfunktion verwendet werden. Für Regressionsaufgaben kommt die sog. Mean Squared Error Fehlerfunktion zum Einsatz:
Für Klassifikationsaufgaben, bei denen das neuronale Netz Wahrscheinlichkeitswerte im Intervall (0, 1) berechnen soll, wird die sog. Kreuzentropie verwendet (engl: Cross-Entropy) . Die Kreuzentropie für eine berechnete Wahrscheinlichkeitsverteilung und die tatsächliche Wahrscheinlichkeitsverteilung
ist definiert gemäß:
(1)
3. Softmax-Funktion
Für Klassifikationsaufgaben ist eine Bedingung an die Ausgabewerte eines neuronalen Netzes zu stellen. Diese Bedingung ist, dass die Ausgabewerte eine Wahrscheinlichkeitsverteilung repräsentieren. Die einzelnen Werte im Ausgabevektor
müssen im Intervall (0, 1) liegen und es muss die Bedingung
gelten.
Um diesen Zustand zu erreichen, wird in der Ausgabeschicht als Aktivierungsfunktion die Softmax-Funktion verwendet. Die Softmax-Funktion ist definiert als:
(2)
repräsentiert die gewichteten Eingabedaten (Ausgabewerte der vorherigen Schicht) des Neurons
in der Ausgabeschicht. Die Ausgabeschicht enthält dabei die gleiche Anzahl von Neuronen wie es Klassen gibt. Der Aktivierungswert
des Neurons
in der Ausgabeschicht gibt die Wahrscheinlichkeit an, dass die Eingabewerte
zu der Klasse gehören, die durch das Neuron
repräsentiert wird.
Mehr Informationen zur Verwendung und Implementierung der Softmax-Funktion finden Sie in meinem Artikel „Aktivierungsfunktionen in neuronalen Netzen„.
4. Herleitung von dem Backpropagation-Algorithmus
Der Backpropagation-Algorithm (deutsch: Rückpropagierung-Algorithmus) hat sich als eines der effizientesten Lernverfahren für mehrschichtige neuronale Netzwerke herausgestellt.
Die Grundidee des Backpropagation-Algorithmus ist eine fortlaufende Anpassung der Verbindungsgewichte zwischen den Neuronen, bis die berechnete Ausgabe des neuronalen Netzes hinreichend genau mit der gewünschten Ausgabe, dem Label, übereinstimmt. Die Anpassung der Gewichte erfolgt mittels des Gradientenverfahrens.
Insbesondere wird hier der negative Gradient der Fehlerfunktion als Abstiegsrichtung gewählt.
Im Rahmen dieses Artikels werden Multilayer Perceptrons für Klassifikationsaufgaben implementiert. Aus diesem Grund werden an dieser Stelle die für die Anpassung der Gewichte erforderlichen Gleichungen hergeleitet, die später während des Backpropagation-Algorithmus im Quellcode verwendet werden.
Bei einer Klassifikation wird für die Eingabedaten vom neuronalen Netz eine Wahrscheinlichkeitsverteilung
berechnet. Dabei gibt
im Ausgabevektor
die Wahrscheinlichkeit an, dass
zu der
-ten Klasse gehört. Es gilt
und
. Diese Anforderungen werden durch die Verwendung der Softmax-Funktion in der Ausgabeschicht des Netzes sichergestellt.
Die Herleitung der Gleichungen für die Anpassung der Gewichte erfolgt anhand des Beispiels von dem Multilayer Perceptron in der Abb. 1. Das Netzwerk besitzt eine einzelne versteckte Schicht mit Neuronen, eine Eingabeschicht mit
Neuronen und eine Ausgabeschicht mit
Neuronen.


Um die folgenden mathematischen Zusammenhänge besser verstehen zu können, werden an dieser Stelle folgende Definitionen eingeführt:
: Das Neuron
der ersten Schicht (Eingabeschicht).
: Das Neuron
der zweiten Schicht (Versteckte Schicht).
: Das Neuron
der dritten Schicht (Ausgabeschicht).
: Die Gewichte der ersten Gewichtsmatrix, die die Verbindung zwischen den Neuronen
und
realisieren.
: Die Gewichte der zweiten Gewichtsmatrix, die die Verbindungen zwischen den Neuronen
und
realisieren.
Als Fehlerfunktion wird die Kreuzentropie verwendet:
(3)
Das Label ist one-hot-encoded. Das bedeutet, dass alle Einträge in
Werte von null aufweisen, bis auf einen Eintrag, der den Wert 1 hat. Der Index des Eintrags 1 repräsentiert die Klasse der Eingabedaten
, zu dem dieses Label gehört.
Die Werte in der Ausgabeschicht berechnet sich mit der Softmax-Funktion:
(4)
ist die Summe der gewichteten Aktivierungswerte
der versteckten Schicht, die zum
-ten Neuron der Ausgabeschicht führen:
(5)
Dagegen ist die gewichtete Summe der Neuronen der ersten Schicht, die zum Neuron
in der versteckt Schicht führen. Auf diese gewichtete Summe wird die Aktivierungsfunktion
angewandt:
(6)
Damit stellt den Aktivierungswert des Neurons
in der versteckten Schicht dar. Das Einsetzen der Gl. 4 in Gl. 3 ergibt:
(7)
Im nächsten Schritt wird die Fehlerfunktion gemäß des Gradientenverfahrens nach den einzelnen Gewichten des neuronalen Netzes abgeleitet. Die Ableitung der Fehlerfunktion nach den Gewichten erfolgt mittels der Kettenregel. Die Ableitung der Kreuzentropie
nach den Gewichten
der zweiten Gewichtsmatrix ist gegeben durch Gl. 8.
(8)
Gl. 8 besteht aus zwei Differentialquotienten. Diese werden seperat voneinander berechnet. Für den ersten Differentialquotienten gilt:
(9)
(10)
(11)
(12)
(13)
(14)
In der der Gl. 14 wird die Eigenschaft des one-hot-encoded Labels benutzt. Das Ergebnis des Differentialquotienten wird abgekürzt mit
.
Der zweite Differentialquotient aus Gl. 8 wird in Gl. 15 berechnet. Das Ergebnis stellt den Aktivierungswert des Neurons in der versteckten Schicht dar.
(15)
(16)
Damit erhalten wir mit Gl. 17 die vollständige Form der Ableitung der Fehlerfunktion nach den Gewichten der zweiten Gewichtsmatrix.
(17)
Die Ableitung der Fehlerfunktion nach den Gewichten der ersten Gewichtsmatrix wird ebenfalls mit der Kettenregel berechnet. Damit erhalten wir drei separate Differentialquotienten:
(18)
Der erste Quotient in Gl. 18 wird wie folgt berechnet:
(19)
(20)
(21)
(22)
Die Berechnung des zweiten Differentialquotienten in Gl. 18 ist trivial:
(23)
Als letztes wird in Gl. 24 der dritte Quotient berechnet.
(24)
(25)
(26)
Die Ergebnisse in Gleichungen 22, 23 und 24 ergeben die endgültige Form der Ableitung der Fehlerfunktion nach :
(27)
Wir führen die Definition ein:
(28)
Mit der Definition in Gl. 28 lässt sich die Ableitung in Gl. 27 umformulieren zu:
(29)
Gemäß dem Gradientenverfahren werden die Gewichte in die negative Richtung der Ableitung der Fehlerfunktion angepasst. Für die Anpassung der Gewichte und
gilt damit:
(30)
(31)
bezeichnet hier die Lernrate. Das Einsetzen der vorherigen Ergebnisse in Gl. 30 und 31 ergibt:
(32)
(33)
Damit erhalten wir die finale Form der Gleichungen für die Anpassung der Gewichte in einem Multilayer Perceptron, der eine versteckte Schicht aufweist.
Diese Ergebnisse können für einen Multilayer Perceptron mit einer beliebigen Anzahl von Schichten verallgemeinert werden. Die Anpassungsregel für die Gewichte in einem Multilayer Perceptron mit Schichten ist gegeben mit Gl. 36. Dabei nimmt
ganzzahlige Werte im Intervall
an.
(34)
(35)
(36)
5. Anzahl der Gleitkommaoperationen
Als Gleitkommaoperationen bezeichnet man einzelne Befehle und Berechnungen in Computerprogrammen, die Gleitkommazahlen verwenden.
An dieser Stelle soll die Gleichung für die Anzahl der beim Training eines Multilayer Perceptrons verwendeten Gleitkommaoperationen hergeleitet werden. Die Gleitkommaoperationen werden im Folgenden als FLOPs (englisch: floating-point operations) abgekürzt. Die Ableitung der Gleichung zur Berechnung der Anzahl der Gleitkommaoperationen wird für das Multilayer Perceptron mit der Architektur von (,
,
) Neuronen durchgeführt (vgl. Abb. 1).
Die Menge der Gleitkommaoperationen für die Berechnung der Aktivierungswerte der versteckten Schicht ergibt sich aus
Multiplikationsoperationen,
Additionsoperationen und
Anwendungen der Aktivierungsfunktion. Damit beträgt die Anzahl der Operationen für die Berechnungen der Aktivierungswerte der ersten versteckten Schicht FLOPs(
.
Die Menge der Operationen für die Berechnung der Ausgabewerte berechnen sich analog und ergibt FLOPs(
, wobei
y_m
zur Vereinfachung als nur eine Operation gezählt wird.
Für die Berechnung der Gradienten (vgl. Gl. ??), werden insgesamt FLOPs(
Operationen benötigt. Dabei entfallen
Operationen auf die Berechnung von (
).
steht für die Menge der Multiplikationen in (
)
.
Die Berechnung von FLOPs( ist umfangreicher. Für
ergeben sich
Multiplikationen und
Additionen.
muss
mal berechnet werden. Zwischen
und
werden
Multiplikationen benötigt. Zwischen
und
werden
Multiplikationen durchgeführt. Damit gilt FLOPs(
.
Für die Anpassung der Gewichte in mit den berechneten Gradienten gilt FLOPs(
. Dabei werden
Multiplikationen und
Subtraktionen durchgeführt. Analog ergibt sich mit FLOPs(
die Menge der Gleitkommaoperationen für die Anpassung von
.
Damit müssen in einer Trainingsiterationen bei einem Multilayer Perceptron mit () – Neuronen für einen einzelnen Datenpunkt insgesamt FLOPs
Gleitkommaoperationen durchgeführt werden.
6. Laufzeitkomplexität von einem Multilayer Perceptron
Die Laufzeitkomplexität von einem Multilayer Perceptron mit (,
,
) – Neuronen bei der Berechnung eines Ausgabewertes beträgt
.
Für die Berechnung von und
muss der Aufwand von
und
aufgebracht werden.
Für die Anpassung von und
betragen die Laufzeitkomplexitäten
und
.
Damit ergibt sich für den Backpropagation-Algotithmus mit die gleiche Laufzeitkomplexität wie bei der Berechnung der Ausgabewerte.
Die gesamte Laufzeitkomplexität des Multilayer Perceptrons beträgt damit . Für einen Trainingsdatensatz mit
Datenpunkten ergibt sich mit
der Rechenaufwand für eine volle Epoche.