Beispiel

Bei der Modellierung des binären Neurons wird schrittweise vorgegangen, und zwar bottom up, d.h. zuerst werden die Grundelemente bereitgestellt, und dann werden aus diesen komplexere Einheiten zusammengebaut.

Im Fall des binären Neurons gibt es zwei Grundelemente: die Summenfunktion $net\_nnbin$ und die Aktivierungsfunktion $act\_nnbin$. Beide werden so konstruiert, daß man ein neues Modell eröffnet und dieses unter dem neuen Thema Neuron abspeichert. Das Bild 10.1 zeigt das FCL-Modell einer Summenfunktion mit zwei Eingängen und zwei Gewichten.

Figure 10.1: Summenfunktion 'net_nnbin' mit zwei Eingängen und Gewichten
\includegraphics[width=3.0in]{netBin.eps}

Das Bild 10.10 zeigt das FCL-Modell der binären Aktivierungsfunktion. Sie hat als einen Input den Output der Summenfunktion $net\_nnbin$ und vergleicht diesen Werte mittels der Funktion $if\_geq$ (wenn größer oder gleich). Ist der Wert der Summenfunktion größer oder gleich dem Schwellwert, dann wird eine '1' ausgegeben, sonst eine '0'.

Figure 10.2: Binäre Aktivierungsfunktion
\includegraphics[width=2.5in]{actBin_intern.eps}

Dann kann man das eigentliche Modell des binären Neurons bauen, indem man ein neues Modell beginnt und die vorher gebauten Modelle $net\_nnbin$ und $act\_nnbin$ als Elemente aus der Bibliothek hereinzieht. Fügt man die entsprechenden Input und Outputparameter noch hinzu und verbindet alle Ein- und Ausgänge, dann erhält man das Neuron $neuron\_bin$ (vgl. das Bild 10.3.

Figure 10.3: Binäres Neuron mit Summen- und Aktivierungsfunktion
\includegraphics[width=2.5in]{neuron_bin_intern.eps}

Um dieses Neuron testen zu können, benötigt man jetzt noch eine geeignete Testumgebung. Im Bild 10.4 ist solch ein Testaufbau zu sehen. Eine Umgebung $environment\_noclock\_s2$, die über eine Uhr $clock$ gesteuert wird, liefert zu jedem Zeitpunkt zwei Stimuli $S1\_OUT$ und $S2\_OUT$. Diese Stimuli erscheinen an den Eingängen des binären Neurons. Zusützlich muß man noch eingeben, welche Gewichte $W1, W2$ man dem binären Neuron übermitteln will sowie einen Schwellwert $THETA$.

Figure 10.4: Testaufbau für ein binäres Neuron
\includegraphics[width=3.5in]{exp_neuron_bin_env_clck_2s.eps}

Wenn man für die Ein- und Ausgänge wie auch für die Gewichte binäre Werte {0,1} annimmt, dann gibt es für einen bestimmten Schwellwert $THETA$ 16 verschiedene Konstellationen. In einem Testlauf kann man diese durchtesten. Für den Fall mit $THETA = 0.5$ zeigt das Bild 10.5 den Output des binären Neurons für 20 Durchläufe. Man kann erkennen, daß der Schwellwert $THETA$ nur dann überwunden wird, wenn wenigstens ein Eingang aktiv ist und das Gewichte den Wert '1' hatt.

Figure 10.5: Testlauf mit einem binären Neuron
\includegraphics[width=3.5in]{TEST_neuronBin_S1S2_OUT.eps}

Die Umgebung $environment\_noclock\_2s$ (vgl. Bild 10.6) besteht aus zwei Listen $S1, S2$, jeweils realisiert als 1-dimensionale Matrizen, die für n-viele Zeitpunkt vorgegebene Werte enthalten. Jede Liste wird technisch gesehen als die 1.Spalte (mit Index '0'!) einer 1-dimensionalen Matrix, die n-viele Zeilen enthält. Während der Wert für die Spalte also immer auf '0' bleibt, wird -abhängig vom Zeitpunkt-, eine andere Zeile gewählt. Dies geschieht über den Parameter $SELECT$, der z.B. über eine Uhr gesteuert werden kann. Abhängig von dem festen Wert $COLUMN = 0$ und den variierenden Werten von $SELECT$ können dann mit der Funktion $getMatrixValue$ gezielt Werte aus den Listen gelesen werden. Man kann die Werte für die Parameter $S1, S2$ entweder manuell in eine Matrix eingeben oder aber die Adresse für eine Datei im CSV-Format. Im letzteren Fall wird diese Datei geladen und die Werte aus dieser Datei werden in die Matrix eingesetzt.

Figure 10.6: Struktur der Umgebung
\includegraphics[width=2.5in]{env_s2_sel.eps}

Gerd Doeben-Henisch 2013-01-17