Anmerkungen zum Backpropagation-Modul

Da das grundsätzliche Prinzip des Algorithmus bereits im Theorieteil und durch die Kommentare im Quellcode (Anhang 5.1.1) erläutert wird, wird im Folgenden lediglich auf die Besonderheiten in der Struktur der Klassen, auf die verwendeten Optimierungen des Standard-Backpropagation-Algorithmus und auf die notwendige Datennormalisierung eingegangen.

Struktur der Klassen

Die im Quellcode definierten Klassen spiegeln die hierarchische Struktur eines neuronalen Netzes wieder: Die übergeordnete Klasse Net erzeugt bei ihrer Initialisierung mehrere Instanzen der Klasse Layer, die den verschiedenen Schichten des Netzes entsprechen. Jede Schicht erzeugt wiederum mehrere Instanzen der Klasse Neuron, denen nach ihrer Initialisierung jeweils ein Schwellenwert (Variable BiasWeight) und gewichtete Verbindungen (Klasse Link) zur nächsten Schicht zugeordnet werden.

Momentum

Der Momentum-Term stellt eine einfache Modifikation des Backpropagation-Verfahrens dar, durch den die Probleme des Lernverfahrens „auf flachen Plateaus und in steilen Schluchten der Fehlerfunktion“ (vgl. [8], S. 115) zum Teil vermieden werden können. Zur aktuellen, durch die Zurückpropagierung des Fehlers berechneten Gewichtsänderung wird ein Bruchteil der letzten Gewichtsänderung addiert. Führt man eine Konstante α ein, die angibt, wie stark die letzte Gewichtsänderung in die aktuelle mit einfließen soll, so wird aus Formel (2.17) (nach [8], S. 115):

Im Quellcode äußert sich das in der Einführung der Variablen BiasChange der Klasse Neuron und der Variablen WeightChange der Klasse Link, die jeweils die letzte Änderung des Schwellenwertes bzw. des Gewichts speichern. Der Konstanten α entspricht Net.Momentum.

Flat-Spot Elimination

Bei der Verwendung einer sigmoiden Aktivierungsfunktion ergibt sich ein weiteres Problem, dessen Ursache in der Verwendung der Ableitung der Funktion in der Formel für das Fehlersignal zu suchen ist: Sobald die Netzeingabe eines Neurons in die Randbereiche der Aktivierungsfunktion gerät – bei der hier verwendeten logistischen Funktion sind das die Bereiche nahe 0 und 1 – nähert sich die Ausgabe der Ableitung 0 an, so dass nur noch sehr geringe Gewichtsänderungen möglich sind und es zu einer starken Verzögerung des Lernvorgangs kommt (vgl. [8], S. 116). Das lässt sich vermeiden, indem zur Ableitung der Aktivierungsfunktion stets eine Konstante – z.B. 0,1 – addiert wird (vgl. [8], S. 116). Aus diesem Grund wird bei der Initialisierung des neuronalen Netzes der Konstanten FlatSpotVar ein Wert zugewiesen, der bei jedem Aufruf der Funktion ActDerivation mit übergeben wird.

Normalisierung der Ein- und Ausgaben

Bei der Verwendung der logistischen Aktivierungsfunktion ist eine Voraussetzung für erfolgreiches Lernen, dass sich die dem Netz für das Training vorgelegten Ausgaben im Bereich zwischen 0 und 1 befinden. Das ist auf die Tatsache zurückzuführen, dass die logistische Funktion – Formel (2.2) – nur Werte aus dem Bereich ]0;1[ zurückliefert. Das Netz kann aus diesem Grund nicht lernen, Werte außerhalb dieses Bereichs zurückzugeben. Aufgrund der Verwendung einer Ausgabe von 1 für die richtige Sprachkategorie und Ausgaben von 0 für alle anderen Kategorien sind die Ausgaben des in LanguageSort.py verwendeten neuronalen Netzes automatisch im gewünschten Bereich.

Obwohl die logistische Funktion Eingaben jeder Größenordnung verarbeiten kann, da ihre Definitionsmenge beträgt, empfiehlt es sich, auch die Eingaben zu skalieren: Hier bietet sich der Bereich [-1;1] an, da die Streuung der Ausgaben um den Eingabewert 0 am größten ist (vgl. [7]). Die Eingaben des LanguageSort-Netzes sind zwar bereits im Bereich [0;1], werden aber zum Zwecke eines schnelleren Lernvorgangs durch die Funktion ScaleInputs so skaliert, dass die gesamte Bandbreite des Bereichs von [-1;1] ausgenutzt wird.

Jede Eingabe gibt den Bruchteil an, den die Anzahl des Auftretens eines bestimmten Zeichens vom Gesamttext ausmacht und ist demnach eine Zahl im Bereich [0;1]. Weiterlesen

< Praxisbeispiel | Inhaltsverzeichnis | Netztopologie >

Write a Comment