TDNN
Zurück Nach oben Vorwärts

Kurzbeschreibung Parameter Funktionsweise Ein/Ausgänge Limitierungen Querverweise Beispiele

Kurzbeschreibung
Das TDNN-Modul stellt Methoden zum überwachten Training und zur Anwendung vorwärts gerichteter Neuronaler Netze bereit. Time-Delay-Neural-Nets sind dynamische Netzparadigmen, die zur Erfassung und Verarbeitung von Zeitreihen verwendet werden. Mehrlagige Perzeptren (MLP) mit einem statischen Systemverhalten können als Spezialfall von TDNN angesehen werden. Das Modul bietet verschiedene Lernalgorithmen zum Trainieren der Netze, die alle auf Gradientenabstiegsverfahren basieren.
Parameter
Netzstruktur:
Neuronen: Anzahl der Neuronen in den jeweiligen Schichten.
Neben der Ein- und Ausgabeschicht sind maximal zwei verdeckte Neuronenschichten erlaubt.
Soll keine verdeckte Schicht verwendet werden sind die Neuronen in beiden verdeckten Schichten auf 0 zu setzen. Soll genau eine verdeckte Schicht verwendet werden, muß die Anzahl der gewünschten Neuronen in Verdeckt1 eingetragen werden, und der Wert in Verdeckt2 auf 0 gesetzt werden.
Delays: Hier wird die Verzögerung zwischen den Neuronenschichten angegeben.
Bei Verwendung von n Schichten sind jeweils die n-1 -ten Verzögerungen zu setzen, der Rest wird ignoriert.
Ein Verzögerungswert von 1 bedeutet dabei, daß nur jeweils die aktuelle Ausgabe der Vorgängerneuronen von Bedeutung ist.
Aktivierung: Die verwendete Aktivierungsfunktion in allen Neuronen.
Es stehen folgende drei Aktivierungsfunktionen zur Verfügung:

Name

Funktion

Wertebereich

f '(0)

Logistische Aktivierung (logist)

f(x) = 1/( 1+e^(-x) )

]0 , 1[

0.25

Tangens Hyperbolicus (htan)

f(x) = tanh(x)

]-1 , 1[

1.0

Schnelle Aktivierung (fast)

f(x) = x/( 1 + |x| )

]-1 , 1[

1.0

Gewichte rücksetzen: Alle gespeicherten Gewichte zwischen Neuronen werden initialisiert.
Lernen:
Load: Lädt früher erlernte Gewichte
Save: Speichert ermittelte Gewichte
Algorithmus: Der zum Trainieren des Netzes verwendete Algorithmus. Es stehen die Algorithmen temporal Backpropagation (Backprop),
temporal Resilient Backpropagation (R-Prop),
temporal Quickpropagation (Quick Prop) und
temporal Quick Resilient Backpropagation (QRProp) zur Auswahl.
Die Funktionsweise der Algorithmen Backpropagation, Quickpropagation und Resilient Backpropagation kann z.B in Zell Andreas, Simulation Neuronaler Netze, Addison-Wesley 1994 nachgelesen werden. Quick Resilient Backpropagation wird z.B. in Rojas R., Neural Networks, A Systematic Introduction, Springer-Verlag 1996 beschrieben.
Die Erweiterung dieser für statische MLP's ausgelegten Algorithmen auf TDNN's (Namenszusatz temporal) kann z.B. in Sick Bernhard, Dissertationsarbeit Universität Passau, 1999 nachgeschlagen werden.
Synchrones Lernen: Eine Eingabe in das Netz wird erst dann bearbeitet, nachdem der letzte Schritt vom Lernprozeß verarbeitet wurde.
Dadurch gehen beim Trainieren des Netzes keine Eingaben verloren.
Schnelle Initialisierung: Beim Lesen der ersten Eingabe wird diese sooft nacheinander durch das Netz propagiert, bis sämtliche Verzögerungspuffer in den Neuronen mit diesem Startwert gefüllt sind.
Dadurch kann vermieden werden, daß die Ausgabe des Netzes am Anfang recht zufällig ist.
Priorität: Hier kann die Priorität des nebenläufigen Lernprozeßes eingestellt werden.
Puffer: Anzahl der zusätzlichen Puffer in den Neuronen beim nebenläufigen Lernen.
Bei einer niedrigen Priorität des Lernprozeßes und starker Auslastung des Rechners kann es passieren, daß der Lernprozeß beim Trainieren des Netzes nicht mit dem Hauptprozeß beim Durchpropagieren der Eingabe mithalten kann. In diesem Fall kann der Lernprozeß um die hier eingetragenen Schritte zurückfallen, bevor er neu gestartet werden muß.
Bei jedem Neustart des Lernprozeßes während der Hauptprozeß läuft, muß der Lernprozeß vollständig initialisiert werden (im Gegensatz zur schnellen Initialisierung, siehe oben), so daß der hier eingetragene Wert immer mindestens so groß wie die Gesamtverzögerung des Netzes sein sollte.
Epochenlänge: Länge einer Epoche, oder Null.
Wird hier ein Wert n ungleich 0 angegeben, bedeutet dies, daß nach jeweils n Schritten eine Epoche für den Lernalgorithmus endet.
Wird hier 0 angegeben, wird das Ende einer Epoche durch ein Ende eines Pakets signalisiert.
Die Bedeutung der Parameter der Lernalgorithmen ist durch die Namensgebung direkt aus der Funktionsweise des Algorithmus ersichtlich, und wird hier nicht genauer erklärt. Die Parameter sind i.a. allerdings deutlich kleiner zu wählen, als bei ihren statischen Äquivalenten, besonders bei zunehmender Komplexität der Netzstruktur.
Folgende Parameter sind für den jeweiligen Algorithmus von Bedeutung:
Automatisch stoppen: Die Lernphase wird beendet, wenn die Änderungen an den Ausgängen unter einer bestimmten Schwelle liegen.
Abwechselndes Training:
temporal Backpropagation:
Lernfaktor
temporal Resilient Backpropagation und temporal Quick Resilient Backpropagation:
Schritt +
Schritt t-
Max
Min
Init
temporal Quickpropagation:
Lernfaktor
Decay
max. Wachstum
Funktionsweise
Das TDNN-Modul kennt zwei Betriebszustände. Zum einen den sog. Normalzustand, und einen Trainingsmodus. Welcher Modus aktiv ist, wird über den Eingang Training On/Off festgelegt.
Im Normalzustand nimmt das Netz die Eingabe Net Input entgegen, propagiert sie durch das Netz, und stellt die Ausgabe am Ausgang Net Output wieder zur Verfügung. Der Eingang Desired Output kann hier frei bleiben, über den Ausgang Error werden keine Werte ausgegeben.
Im Trainingsmodus wird zusätzlich ein nebenläufiger Prozeß gestartet, der das Training des Netzes übernimmt. Dazu werden über den Eingang Desired Output die Trainingsmuster eingelesen. In diesem Modus ist der Eingang Desired Output obligatorisch, über den Ausgang Error wird dann nach jeder Epoche der Fehlerwert ausgegeben.
Die Übergabe der Werte an das Netz und damit die einzelnen Neuronen geschieht blockweise. Die Blocklänge am Eingang Net Input muß deshalb so groß sein wie die Anzahl der Eingangsneuronen, und die Blocklänge am Eingang Desired Output so groß wie die Anzahl der Ausgagsneuronen.
Gleiches gilt für die Ausgabe Net Output des Netzes.
Ein-/Ausgänge
Eingänge    
Net Input TYPEINFO {TypeInfo} DOUBLE[] {TIME_DOMAIN} Netzeingabe
Desired Output TYPEINFO {TypeInfo} DOUBLE[] {TIME_DOMAIN} Trainingsmuster
Training On/Off TYPEINFO {TypeInfo} SWORD[1]{BIN} aktiviert (1) / deaktiviert (0) den Trainingsmodus
Load Weights TYPEINFO {TypeInfo} SWORD[1]{BIN} Lädt die Gewichte aus der im
Eigenschafsdialog angegebenen
Datei
Save Weights TYPEINFO {TypeInfo} SWORD[1]{BIN} Speichert die Gewichte in die im
Eigenschafsdialog angegebene
Datei
Reset Weights TYPEINFO {TypeInfo} SWORD[1]{BIN} Setzt die Gewichte auf zufällige kleine Werte zwischen -1 und 1
Ausgänge    
Net Output TYPEINFO {TypeInfo} DOUBLE[] {TIME_DOMAIN} Netzausgabe
Error TYPEINFO {TypeInfo} DOUBLE[1] {SCALAR} Der Fehler als quadratische Summe des Netzes während der letzten Epoche
Limitierungen
Das ausgegebene Signal ist bei den Aktivierungsfunktionen tanh() und der schnellen Aktivierung symmetrisch zur Nullinie, da diese punktsymmetrisch zum Nullpunkt sind.
Querverweise
Um mehrere Eingangsdaten in das für das TDNN-Modul nötige Blockformat zusammenzufassen, kann das Modul PolySerial verwendet werden. Liefert das TDNN-Modul mehrere Ausgaben, die einzeln weiterverarbeitet werden sollen, kann das Modul PolySerial verwendet werden.
Beispiele
Um das Netz beim Anpassen der Gewichte beobachten zu können, kann man z.B. das Netz auf die identische Funktion trainieren. Dazu genügt ein kleines Netz mit nur einer Schicht und wenigen Neuronen. Als Eingang kann dann z.B. das FuncGen-Modul verwendet werden. Die Blocklänge muß dann dort auf 1 gesetzt werden, zum Visualisieren der Ausgabe kann das AnalogChart-Modul verwendet werden. Da voreingestellt ein Sinus-Signal ausgegeben wird, sollte als Aktivierungsfunktion tanh() verwendet werden. Eine fertige Schaltung könnte dann z.B. wie folgt aussehen:

Evtl. sollte der Sinus für beide Eingänge noch mit einem Faktor < 1 (ca. 0.7) multipliziert werden.