5.4 Backpropagation

Mit dem 1986 vorgestellten Backpropagation Algorithmus gelingt es, die Gewichte eines mehrschichtigen Netzwerks so anzupassen, dass es auch nicht linear separierbare Probleme wie das XOR lernen kann. Mit ihm kann der Fehler in der Outputschicht zurück in die verdeckten Schichten propagiert werden. Ein Beispielnetzwerk mit zwei Schichten lernbarer Gewichte w ist in Abbildung 5.8 dargestellt. Schichten von Neuronen zwischen der Input- und Outputschicht werden als Hiddenschichten bzw. Hiddenneuronen bezeichnet (hier Neuron-Schicht ). Typischerweise sind solche Netzwerke vollständig vernetzt (fully connected), d.h. alle Neuronen einer Schicht sind mit allen der Folgeschicht verbunden.

Zweischichtiges Backpropagation Netzwerk

Abbildung 5.8: Zweischichtiges Backpropagation Netzwerk

Die Backpropagation Lernregel ist zweigeteilt: für Outputneuronen ähnelt sie der Delta-Lernregel. Der Fehler des Outputneurons wird ebenfalls mit der Lernrate und dem Output des Vorgängerneurons multipliziert. Zusätzlich wird sie noch mit der Ableitung der Aktivierungsfunktion Sigma multipliziert, so dass die Anpassung der Gewichte entlang des steilsten Gradienten der Fehlerfunktion erfolgt.

Für Neuronen aller Hiddenschichten wird der anteilige Fehler am Fehler aller Nachfolgeneuronen bestimmt, da für diese Neuronen kein gewünschter Ouput bekannt ist. Dieser ergibt sich aus der Summe aller Fehler des Nachfolgeneurons , , mal dem Gewicht zu diesem Neuron.

Für Backpropagation muss die Aktivierungsfunktion differenzierbar und nichtlinear sein. Die Nichtlinearität ist wichtig, damit ein mehrschichtiges Netzwerk überhaupt ausdrucksfähiger ist als ein einschichtiges Netzwerk mit entsprechend mehr Neuronen. Die Differenzierbarkeit wird benötigt, um den Gradienten der Fehlerfunktion berechnen zu können. Als Aktivierungsfunktion kommen die Sigmoid-Funktion wegen ihrer einfachen Ableitung, der Tangens Hyperbolicus oder die Rectified Linear Unit (ReLU) Funktion zum Einsatz (siehe Abbildung 5.9). Damit ist die Ausgabe eines Neurons auch nicht mehr diskret, sondern nimmt Werte zwischen und im Fall von Sigmoid, zwischen und beim Tanh und zwischen und nach oben nicht begrenzt für ReLU an.

Gängige Aktivierungsfunktionen

Abbildung 5.9: Gängige Aktivierungsfunktionen

Bei einer Klassifikation, wie z.B. der im vorigen Kapitel vorgestellten Erkennung von Ziffern, wird es durch die kontinuierlichen Outputs nicht mehr gelingen, dass das Neuron der erkannten Ziffer den Wert und alle anderen den Wert annehmen. Für eine solche Klassifikation wird daher meist die ‘Winner-takes-all’ Outputfunktion verwendet, bei der der Output mit der höchsten Aktivierung gewinnt. Möchte man die Höhe der Aktivierung der Outputneuronen zusätzlich als Maß verwenden, wie sicher sich das Netz ist, besteht noch die Schwierigkeit, dass die absolute Größe des Outputs insbesondere bei der ReLU Funktion von der Größe der Gewichte abhängt und bei jedem Lernlauf verschieden sein wird. Eine Lösung ist die SoftMax Outputfunktion, die die Größe der Outputs so normiert, dass ihre Summe eins ergibt (siehe Formel (5.5)). Die Größe jedes Outputs gibt dann die vom Netzwerk geschätzte Wahrscheinlichkeit an, dass es sich um diese Ziffer handelt.

Die ideale Zahl der Schichten und der Anzahl Neuronen in diesen Schichten lässt sich leider nur empirisch finden. Hat das Netzwerk zu wenig Neuronen, kann es die Trainingsdaten nur unvollständig repräsentieren und schneidet entsprechend auch bei unbekannten Daten schlecht ab (Underfitting). Hat das Netzwerk zu viele Schichten und Neuronen, kann es zwar die Trainingsdaten auswendig lernen, schneidet aber ebenfalls bei der Klassifikation unbekannter Daten schlecht ab, weil das Netzwerk die Fehler der Trainingsdaten mitgelernt hat und nicht gut generalisiert (Overfitting). Was zu viel und was zu wenig ist, hängt aber vom konkreten Problem ab und kann nicht allgemein beantwortet werden.

Würde man das Problem der Ziffernerkennung aus Abbildung 5.6 mit einem Backpropagation Netzwerk angehen, bei dem auch die Gewichte zur Retina-Schicht lernbar sind, hätte das Netzwerk lernbare Gewichte Bei einer HD-Auflösung des Bildes wären es hingegen schon 6,2 Millionen Gewichte alleine in der ersten Schicht. Zudem würde die Erkennung einer Ziffer dann noch mehr davon abhängen, wo im Bild die Ziffer dargestellt ist und wie groß sie ist. Dieses Problem wurde mit Hilfe von Convolutional Neural Networks gelöst.