WildMag-Archiv

Sie sind hier: Diskmags → WildMagWildMag #3 (Oktober 2000) → Neuronale Netze

Das Lotto-Zahlenfeld
LIN 8080

Für Mathematiker sieht das natürlich alles ganz anders aus. Das Problem dabei ist, ich bin kein solcher. Trotzdem werd ich eben das mal versuchen. Hier also die allgemeine Formel für ein Neuron und seine Aktionen.

Summenformel

Sieht irre kompliziert aus, ist es aber nicht. Nehmen wir als Beispiel das 25. Neuron der ersten Schicht. Seine Aktion besteht einfach darin, die Werte der angrenzenden Zellen zusammen zu zählen und den Mittelwert zu ermitteln. Und dieser soll ja als Output dienen.

Das Summenzeichen in der Formel meint genau das, die Summe von ... Das n steht für die Zahlen dieser Summe, hier n = (17, 18, 19, 24, 26, 31, 32, 33) und es steht für die Namen der angrenzenden Feldern (hier Ziffern). Das j steht für die Werte, die hinter den Namen stehen. Das sind üblicherweise Schleifen, etwa for i=0 to n, (step j). Hinter dem Summenzeichen steht, woraus die Summe bestehen soll. Das sind die Gewichte w, die hier addiert werden. Zugleich wollen wir sie durch 8 teilen, um einen Mittelwert zu erhalten.

Nun wird hier w mit x mal genommen, der Kehrwert von 8 ist 0,125. Man muss hier aber sorgfältig sein. Denn nach obiger Formel wird jedes Gewicht erst mit 0,125 multipliziert und dann addiert. Es führt hier jedoch zum gleichen Ergebniss, wenn die gasamte Summe mit 0,125 mal genommen wird, und spart Rechenzeit. So müsste dieses mal x eigentlich vor der Summe stehen.

Dieses f_sigmoid steht für den Schwellwert, ab wann das Neuron feststellt, dass es einen Output tätigen soll. Das ist an sich eine Sprungfunktion, die eine Fallunterscheidung durchführt (+1 für Werte grösser Null, 0 für Werte = Null und -1 für Werte kleiner Null). Sie ist ein Standard in Neuronalen Netzen, kann aber durch andere Funktionen ersetzt werden. Anbei die Kurve dieser Funktion.

Sigmod Kurve

Schliesslich ist y das, was als Outputwert ermittelt wurde und je nach dem weitergeleitet wird. Das (t) steht für einen Parameter, das könnte ein zeit- oder rundenabhängiger Wert sein. Den benötigen wir aber vorerst nicht. Die Formel für die Aktion der Neuronen der ertsen Schicht sieht also so aus:

out1 = 0,125 * Summe( wj )

Nun können wir das ausführen. Was hier noch fehlt ist die allgemeine mathematische Formulierung für j, die angrenzenden Felder. Die hab ich aber nicht drauf, ich bin kein Mathematiker. Aber die zweite Aktion des 25. Neurons, die muss natürlich sein. Das kann man aber auch seiner Synapse überlassen. Leider hat die erste Schicht noch keine Synapsen.

Die zweite Aktion besteht darin, festzustellen, ob das 25. Feld bei der aktuellen Eingabe ein Treffer war oder nicht. Daraus folgende Aktionen lassen sich über if-then-else Ketten realisieren. Wenn 25 ein Treffer war, muss das Gewicht der Zelle um +0,25, das der angrenzenden Zellen um +0,1 korrigiert werden. Wenn 25 kein Treffer war, wird das eigene w um -0,05 berichtigt. Zudem wird, nachdem alle Neuronen durch sind, der Gewichtswert upgedated, so dass eine folgende Eingabe mit bereits manipulierten Zellenwerten startet.

LIN 8080