Auf jedem Feld des Bandes der Turingmaschine kann eines von 4
möglichen Symbolen stehen: `(', `)', `*' und ` ' (`Blank').
Die entsprechenden Eingabevektoren für das Netzwerk sind
,
,
und
.
Der endliche Automat, der das Zustandsübergangsdiagramm der
Turingmaschine beschreibt,
ist durch Tabelle 2.1 definiert.
Er besitzt 4 Zustände: 0, 1, 2 und 3. Aus einem gegebenen Zustand geht der
Automat nach dem Lesen des Zeichens unter dem Lese- und Schreibkopf
der Turingmaschine
gemäß der Zustandsübergangstabelle in einen neuen Zustand über
und schreibt gleichzeitig vor, ob der
Lese- und Schreibkopf nach rechts, nach links, oder überhaupt
nicht bewegt werden soll (`nix').
Die entsprechenden gewünschten Ausgabevektoren für zwei
der Ausgabeknoten des Netzwerkes sind
,
und
.
Weiterhin wird eine von vier Aktionen ausgeführt:
1. Schreibe `*',
2. Zeige an, daß die Klammerstruktur balanciert ist,
3. Zeige an, daß die Klammerstruktur nicht balanciert ist,
4. Tue nichts (`nix').
Die entsprechenden gewünschten Ausgabevektoren für zwei zusätzliche
Ausgabeknoten des Netzwerkes sind
,
,
und
.
Dem Netzwerk wird zu keinem Zeitpunkt
Information über den gegenwärtigen
Zustand der Turingmaschine geliefert. Es
muß daher eigene geeignete interne Zustände `erfinden'.
|
Während der Trainingsphase wurde sowohl zu Beginn als auch
nach jeder Abarbeitung einer aus maximal 30 Klammern
bestehenden Zeichenreihe eine neue Klammernfolge
gemäß einer exponentiellen Bandlängenverteilung
generiert und die Anfangsposition des Kopfes der Turingmaschine
auf das erste Zeichen des frisch generierten Bandes
zurückgesetzt.
Ein frisches Trainingsband wurde dabei wie folgt erstellt:
Zunächst wurde auf zufällige Weise eine balancierte Klammernfolge
generiert. In zwei Dritteln aller Fälle wurde diese durch zufällige
`Mutationen' modifiziert, wobei die Wahrscheinlichkeit dafür,
daß Klammern durch ihr Gegenstück ersetzt wurden,
betrug.
Dem rekurrenten Netzwerk wurden jeweils zwei Zeitschritte zur Verarbeitung einer neuen Eingabe zugestanden. Zwischen dem Ende der Abarbeitung eines Bandes und dem Beginn der Abarbeitung des neuen Bandes wurde das Netz nicht von neuem initialisiert - Ereignisse, die während der Verarbeitung alter Bänder auftraten, konnten somit im Prinzip einen störenden Einfluß auf die Verarbeitung eines neuen Bandes nehmen. Die Trainingsphase wurde nach 100000 Turingmaschinenzyklen beendet. Eine anschließende Testphase galt als erfolgreich beendet (das Problem galt als gelernt), wenn das Netzwerk für die Zeitdauer von 50000 Turingmaschinenzyklen keinen Fehler machte, wobei ein Fehler durch eine 0.5 übersteigende Differenz zwischen der gewünschten und der tatsächlichen Ausgabe eines beliebigen Ausgabeknotens definiert war.
Bei 5 Testläufen mit RTRL lernte ein rekurrente Netz mit 15 versteckten Knoten und mit zwischen -1.0 und 1.0 initialisierten Gewichten bei einer Lernrate von 0.5 dabei stets, die Turingmaschine korrekt zu simulieren. Diese Resultate sind mit den in [150] berichteten Ergebnissen verträglich.
Bei 5 Testläufen mit dem neuartigen -Verfahren aus
Abschnitt 2.5 lernte dasselbe rekurrente Netz bei gleicher
Gewichtsinitialisierung ebenfalls in allen Fällen, die Aufgabe zu lösen.
Dies ist nicht verwunderlich, da ja beide Verfahren den
gleichen Gradienten berechnen (numerische Probleme
durch die unterschiedliche Art der Gradientenberechnung
traten nicht auf).
Das neuartige Verfahren benötigte allerdings nur etwa
ein Achtel der Rechenzeit des RTRL-Verfahrens.
Natürlich stellt der Beschleunigungsfaktor 8 hier
keine obere Schranke für die Überlegenheit der
-Methode dar - je größer das Netzwerk,
desto stärker fällt der Proportionalitätsfaktor
ins Gewicht.