KNN: Beispiel mit 'OR'-Funktion

Mit den soweit bereitgestellten Mitteln kann man nun ein erstes kleines Netzwerk definieren und ausführen lassen. Dazu übernehmen wir das generelle Schema und konkretisieren es zu einem Beispiel. Vorgegeben sind folgende drei Formeln:


\begin{displaymath}
ANN_{1} = \langle N_{1}, CON_{1}, dyn_{1}\rangle
\end{displaymath}


\begin{displaymath}
CON_{ANN.1} \subseteq N_{ANN.1} \times W_{ANN.1} \times N_{ANN.1}
\end{displaymath}


\begin{displaymath}
dyn_{ANN.1}: CON_{ANN.1} \longmapsto CON_{ANN.1}
\end{displaymath}

Dieses Schema soll nun zu einem konkreten Netzwerk spezialisiert (instantiiert) werden, wie es im Bild 10.7 angezeigt wird.

Figure 4.1: Beispiel eines künstlichen neuronalen Netzwerkes mit 2 sensorischen und 2 binären Neuronen
\includegraphics[width=4.5in]{ann_bsp1.eps}

Für die Menge der Neuronen $N_{ANN.1}$ nehmen wir vier Neuronen an, zwei sensorische Neuronen $an_{sens.i}$ und zwei binäre Neuronen $an_{bin.i}$:


\begin{displaymath}
N_{ANN.1} = \{ an_{sens.1}, an_{sens.2}, an_{bin.1}, an_{bin.2} \}
\end{displaymath}

Dabei soll gelten, $\theta_{bin.1} = 1.5, \theta_{bin.2} = 0.5, $. Diese Neuronen verknüpfen wir mittels der Verknüpfungsrelation $CON_{ANN.1}$ wie folgt:


\begin{displaymath}
CON_{ANN.1} = \left\{ \begin{array}{r@{}l}
& \langle an_{se...
...ngle an_{bin.1}, -2, an_{bin.2}\rangle\\
\end{array} \right\}
\end{displaymath}

Jetzt fehlt nur noch die dynamische Abarbeitungsfunktion $dyn_{ANN.1}$. Hier lassen sich viele Varianten denken. Ein einfaches Beispiel wird durch den folgenden Algorithmus dargestellt (vgl. Bild 4.2). Eine mathematische Notierung findet sich in der Formel 10.10. Die Abarbeitungsfunktion $dyn_{ANN.1}$ wird zusammengesetzt aus mehreren Teilfunktionen. Der grundlegende Gedanke besteht darin, daß ein künstliches neuronales Netz von 'links' nach 'rechts' abgearbeitet wird und mindestens eine verdeckte Schicht besitzt. Die Teilfunktion $ bootstrap\_inputs$ beginnt bei den sensorischen Neuronen und bildet daraus eine erste Nachfolgermenge $Q$. Für jedes Element der Menge $Q$ wird dann jeweils die Neuronfunktion mit der Teilfunktion $compute\_each$ berechnet. Ausgehend von $Q$ werden mit der Funktion $successors$ wieder alle Nachfolger berechnet, also $Q = succ(Q)$ und für diese mit $compute\_each$ wieder alle Neuronfunktionen $neuron_{TYPE.i}$. Dann wird mit der Teilfunktion $ if\_minPath+1$ geprüft, ob die letzten Neuronen schon berechnet worden sind. Mit der Annahme, daß alle Ausgangsneuronen von den Inputneuronen aus alle die gleiche minimale Pfadlänge haben, kann die Berechnung der Menge $Q$ bei minimaler Pfadlänge $+1$ dann wieder von vorne beginnen, andernfalls muß sie bei der Teilfunktion $successors$ fortgesetzt werden.

Figure 4.2: Abarbeitungsvorschrift dyn_ANN.1
\includegraphics[width=3.0in]{ann_bsp1_computation.eps}


$\displaystyle bootstrap\_inputs$ $\textstyle :$ $\displaystyle INP \longmapsto Q = INP$ (4.1)
$\displaystyle compute\_each$ $\textstyle :$ $\displaystyle neuron_{type.i} \in Q$ (4.2)
$\displaystyle successors$ $\textstyle :$ $\displaystyle Q \longmapsto succ(Q)$ (4.3)
$\displaystyle compute\_each$ $\textstyle :$ $\displaystyle neuron_{type.i} \in Q$ (4.4)
$\displaystyle if\_minPath+1$ $\textstyle :$ $\displaystyle YES: bootstrap\_inputs; NO: successors$ (4.5)

Ein Beispiel eines idealisierten Ablaufs findet sich im Bild 4.3.

Figure 4.3: Abarbeitung von ANN.1 in Tabelle
\includegraphics[width=4.5in]{ann_bsp1_ablauf.eps}

Entspechend findet sich in Bild 4.4 die Darstellung des oben beschrieben neuronalen Netzes als OKSIMO-Modell. Die Gewichte werden hier als separate Konstanten (= rote Kästchen) dargestellt. Da vier Gewichte gleich sind, wurden diese unter ein Gewicht subsummiert.

Figure 4.4: Beispielnetzwerk ANN.1 mit OKSIMO
\includegraphics[width=4.5in]{anns_bsp1_oksimo.eps}

Kombiniert man dieses Netzwerk wieder mit einer Testumgebung (wie oben), dann kann man das Verhalten dieses Netzwerkes testen. Statt als Diagramm kann man sich das Verhaltensprotokoll auch als Log-Datei ausgeben lassen (siehe unten):

Verhaltensprotokoll zum künstlichen neuronalen Netz ANN1 für 10 aufeinanderfolgende Zeitpunkte.

S1 := Stimulus S1 aus der Umgebung
S2 := Stimulus S2 aus der Umgebung
R1 := Reaktion des Netzwerkes auf die empfangene Stimuli
1 Output: S2, : 0
1 Output: S1, : 0
1 Output: R1, : 0
2 Output: S2, : 0
2 Output: S1, : 0
2 Output: R1, : 0
3 Output: S2, : 1
3 Output: S1, : 0
3 Output: R1, : 1
4 Output: S2, : 0
4 Output: S1, : 1
4 Output: R1, : 1
5 Output: S2, : 1
5 Output: S1, : 1
5 Output: R1, : 0
6 Output: S2, : 0
6 Output: S1, : 0
6 Output: R1, : 0
7 Output: S2, : 1
7 Output: S1, : 0
7 Output: R1, : 1
8 Output: S2, : 0
8 Output: S1, : 1
8 Output: R1, : 1
9 Output: S2, : 1
9 Output: S1, : 1
9 Output: R1, : 0
10 Output: S2, : 0
10 Output: S1, : 0
10 Output: R1, : 0
Gerd Doeben-Henisch 2013-01-17