Backpropagation
Backpropagation ist ein überwachtes Lernverfahren, mit dem FF-Netze erster und zweiter Ordnung trainiert werden können. Ein Netz gilt als trainiert, wenn die Menge der Trainingsdaten richtigen Ausgaben zugeordnet wird. Die Ausgaben werden also beim Training vorgegeben. Legt man eine Eingabe an das Netz an, so berechnet es eine Ausgabe. Da ein gewünschter Ausgabevektor vorgegeben ist, kann man den Fehler berechnen, den das Netz bei diesem Ein- Ausgabe-Paar macht.
Der Faktor von 0,5 hat nur rechentechnische Bedeutung.
Durch Aufsummierung der einzelnen Fehler für die gesamte Trainingsmenge, kann der Gesamtfehler bestimmt werden :
Backpropagation versucht nun durch einen Gradientenabstieg die Gewichte (=Parameter der Fehlerfunktion) so zu justieren, daß dieser
Fehler minimal (also optimal Null) wird.
Die Lernregel
Die Lernregel ist die erweiterte Deltaregel :
Backpropagation ist ein Gradientenabstiegsverfahren. D.h. die Fehlerfunktion
wird dadurch optimiert, daß der Gradient (also die Steigung) am aktuellen Punkt der
Fehlerfunktion berechnet wird. [Beachte : die Fehlerfunktion ist über den Gewichten
definiert] . Um nun das Minimum der Funktion zu finden, wird ein Gewicht in Richtung
des Gefälles verändert, d.h. man arbeitet mit partiellen Ableitungen der Fehlerfunktion.
Dies wird solange gemacht, bis der Fehler auf der Trainingsmenge Null ist. Wird er nicht zu
Null, hängt man entweder in einem lokalen Minimum fest oder
das Netz hat keine geeignete Topologie, alle Trainingsbeispiele richtig zu klassifizieren.
Also : Die Minimierung des Fehlers E durch die Änderung des Gewichts
wij bewirkt einen Gradientenabstieg :
Mit anderen Worten, das Gewicht wird in Richtung des Gefälles verändert.
Der Gradient kann mittels der Kettenregel aufgetrennt werden :b
Der zweite Faktor ergibt
Den ersten Faktor kann man umbenennen :
Dann gilt :
Um die 'Schrittweite' eines Berechnungsschrittes steuern zu können, wird noch eine (hier konstante)
Lernrate (ein konstanter Faktor) hinzugefügt.
Den Deltaterm kann man noch ausrechnen. Es ergibt sich :
, falls es sich um ein Ausgabeneuron handelt und
, falls es sich um ein verstecktes oder Eingabeneuron handelt.
Der Trainingsalgorithmus
Der Trainingsalgorithmus minimiert den Fehler auf den Trainingsdaten.
- die Gewichtsmatrix wird zufällig initialisiert
- ein EingabeVektor der Trainingsmenge wird an das Netz angelegt
- die Ausgabe wird berechnet
- der Deltaterm wird für die Ausgabeneuronen bestimmt
- schichtenweise werden die restlichen Deltaterme bestimmt
- die Gewichte werden ensprechend verändert
- solange Fehler auf Trainingsmenge zu groß mache bei Schritt 2
weiter
Probleme
Backpropagation garantiert wie jedes Gradientenabstiegsverfahren keine globale Optimierung.
Das Verfahren kann in lokalen Minima steckenbleiben. [ Auch eine ganz blöde Eigenschaft :
befindet sich die zu minimierende Fehlerfunktion gerade in einem Maximum, so ist der Gradient
und damit auch die Gewichtsänderung 0, womit das Verfahren steckenbleibt ] Auf Plateaus bleibt
das Verfahren stecken oder kommt nur sehr langsam voran, da der Gradient sehr klein ist.
Ein anderes Problem stellen Schluchten dar, wo das Verfahren von einer Wand an die
andere springen kann und so das Tal nicht erreicht (Oszillation).
wichtige Konfigurationsparameter
Lernrate
- groß : führt schnell zum Erfolg, jedoch können Minima übersprungen werden
- klein : lokale Minima kaum übersprungen, jdeoch geringe Konvergenzgeschwindigkeit
Netztopologie
- keine allgemein anwendbaren Regeln vorhanden
- daher mit mehreren Varianten starten und beste nehmen
Erweiterungen zu Backpropagation
Der Momentum-Term :
Der Momentum-Term versucht das Oszillationsproblem in Schluchten zu lösen, in dem die
aktuelle Gewichtsänderung von der zuletzt gemachten abhängig gemacht wird. Die letzte
Gewichtänderung wird dabei mit einem Faktor multipliziert und zur 'normalen' Gewichtsänderung
hinzuaddiert.
Dieser Faktor ist sorgfältig zu wählen.
Der Gradient-Reuse-Algorithmus
Wie der Name sagt, wird der berechnete Gradient wiederverwendet. (Sonst funktioniert das
Ganze wie Backpropagation). Die Idee dieses Algorithmus ist relativ einfach : Die einmal berechnete Gewichtsänderung
wird solange verwendet, wie die Fehlerfunktion weiter minimiert
wird. Dadurch kann man sich die aufwendige Berechnung der Deltas oft sparen. So kann dieser
Algorithmus die Konvergenzgeschwindigkeit von Backpropagation erhöhen.