Bei folgendem einfachen Experiment geht es darum, den gegenwärtigen Aufenthaltsort eines Fahrzeugs in einer Parkgarage abzuspeichern. Dies involviert das Binden eines Werts an eine den Standort des Autos repräsentierende Variable.
Weder noch
benötigten versteckte Knoten zur Lösung des
Problems.
Als Aktivierungsfunktion aller beteiligten Ausgabeknoten fand erneut
die Identitätsfunktion Verwendung.
Alle Systemeingaben sowie
's gewünschte Ausgaben
bestanden aus Binärvektoren.
besaß einen Eingabeknoten, der für den Namen der
Variablen WO-IST-MEIN-AUTO? stand.
Außerdem verfügte
über 3 Ausgabeknoten (die sogenannten
Parkplatzindikatoren) für die Namen
dreier möglicher Parkplätze
,
, und
(die möglichen Antworten auf WO-IST-MEIN-AUTO?).
besaß 6 Eingabeknoten sowie 3 Ausgabeknoten,
einen für jedes schnelle Gewicht
(nebenbei bemerkt: hier sieht man,
daß
nicht immer dieselbe Eingabe haben
muß wie
).
Drei der sechs Eingabeknoten fungierten als `Parkplatzdetektoren' -
,
,
. Die Parkplatzdetektoren
wurden immer nur für einen einzigen Zeitschritt aktiviert:
Besaß der Eingabevektor für diese drei Knoten den Wert
, so bedeutete dies
`Automobil wurde soeben im 1. Parkplatz abgestellt'.
stand für
`Automobil wurde soeben im 2. Parkplatz abgestellt'.
stand für
`Automobil wurde soeben im 3. Parkplatz abgestellt'.
stand für
`Automobil steht entweder auf irgendeinem Parkplatz
oder fährt herum, wurde jedenfalls nicht soeben abgestellt'.
Die drei zusätzlichen Eingabeknoten wurden zu jedem Zeitpunkt
durch zufällig gewählte binäre Werte besetzt. Die Wahrscheinlichkeit,
daß einer dieser Knoten die Aktivation 1.0 aufwies, betrug dabei stets
0.5. Diese Zufallsaktivationen dienten als ablenkende zeitveränderliche
Eingaben aus der Umgebung eines Autobesitzers, dessen (leicht
eintöniges) Leben folgenden Verlauf nimmt:
Er fährt sein Auto für 0 oder mehr Zeitschritte durch die Gegend,
wobei die Wahrscheinlichkeit für die Beendigung der Fahrt
zu jedem Zeitpunkt bei 0.25 liegt (solange die Fahrt andauert,
trägt der Eingabevektor für die Parkplatzdetektoren den Wert
).
Daraufhin parkt er sein Fahrzeug auf einem der 3 möglichen Parkplätze
(was für die Dauer eines Zeitschrittes den entsprechenden Parkplatzdetektor
aktiviert).
Anschließend tätigt er Geschäfte außerhalb seines Autos,
was ihn für 0 oder mehrere
Zeitschritte beansprucht, wobei die
Wahrscheinlichkeit für die Beendigung der Geschäftstätigkeit
zu jedem Zeitpunkt 0.25 beträgt (alle Parkplatzdetektoren sind
während dieser Zeit ausgeschaltet).
Schließlich erinnert sich der Autobesitzer seines Parkplatzes,
steigt in sein Fahrzeug und beginnt von neuem, herumzufahren etc..
Dieses Verhalten erzeugt einen kontinuierlichen Strom
von sechs-dimensionalen Eingabevektoren.
Die Aufgabe des Systems bestand darin,
die gegenwärtige
Position des Automobils abzuspeichern.
Es wurde trainiert, indem der
WO-IST-MEIN-AUTO?-Eingabeknoten
zu zufällig gewählten Zeitschritten aktiviert wurde und
's erwünschte Ausgabe
(die Aktivierung des zum gegenwärtigen Parkplatz
gehörigen Ausgabeknotens) gemäß (3.6)
zur Berechnung der Gewichtsänderungen
für
diente.
' Gewichte wurden wieder zufällig zwischen -0.1 und 0.1
initialisiert.
Falls für
100 aufeinanderfolgende Zeitschritte
's Ausgabefehler den Wert 0.05 nicht überstieg,
galt die Aufgabe als gelöst.
Mit Architektur 1 und
Gewichtsmodifikationsfunktion (3.9)
fand das System
bei
und
innerhalb von 6000 Zeitschritten eine Lösung.
Wie erwartet, lernte dabei, Parkplatzindikatoren durch
kurzfristig starke Verbindungen an
den
WO-IST-MEIN-AUTO?-Knoten zu binden.
Dank der lokalen Ausgaberepräsentation war es einfach,
die Verbindungsmuster zu analysieren:
Zu einem gegebenen Zeitpunkt wies die Verbindung
vom WO-IST-MEIN-AUTO?-Knoten zum gegenwärtig relevanten
Parkplatzindikator ein starkes schnelles Gewicht auf
(vorausgesetzt, das Auto befand sich gerade in geparktem Zustand).
Die übrigen schnellen Gewichte wurden währenddessen
unterdrückt.