Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

Forward-Pass

Es wird zufällig eine der möglichen Eingangskombinationen ausgewählt und an das Netzwerk angelegt. Die Inputsignale durchlaufen dann die gewichteten Eingänge der Neuronen des Hidden-Layers und danach die gewichteten Eingänge der Neuronen des Output-Layers. Dieser Prozess ist nicht schwer zu berechnen (vgl. die Formeln von S. 27 unter der Abbildung 25).

Fehlerberechnung

Es gibt verschiedene Möglichkeiten, den Fehler zwischen einem Ausgangswert und dem Zielwert zu ermitteln, z. B. durch:

error = target – output   

Dies ist ein vorzeichenbehafteter Fehler und wurde bei der Realisierung des Perzeptrons angewendet.

Oder durch:

error = 1/2 * (target – output)²

Dies ist ein positive Fehlerwert, der bei der nachfolgenden Realisierung des Neuronalen Netzwerkes angewendet wird.

Für den Gesamtfehler werden einfach die Einzelfehler der einzelnen Ausgänge aufsummiert:

Etotal = ∑ error

Ziel des Lernverfahrens wird in der Regel sein (unabhängig von der angewendeten Fehlerformel), den Fehlerwert zu minimieren.

 

Backward-Pass

Beim Backward-Pass geht es darum, die Gewichte neu einzustellen, so dass der Gesamtfehler beim nächsten Forward-Pass geringer wird. Hierfür bedarf es sog. Lernregeln, die den Algorithmus formulieren, inwiefern Gewichte reduziert oder vergrößert werden.

Eine Lernregel ist schon beim Perzeptron, also bei einem einzelnen Neuron, angewendet worden: die Delta-Regel.

Diese kann auch für die Justierung der Gewichte des Output-Layers angewendet werden, allerdings muss jetzt die Sigmoid-Funktion f (bzw. deren Umkehrfunktion f-1) mit einbezogen werden.

errori = (targeti – outputi) * (f-1)

errori = (targeti – outputi) * outputi * (1 - outputi)

deltaWi = errori * TrainingParameter.learningRate * outputFromHiddenLayer[i]

Der Input des Output-Layers ist dabei der Output des Hidden-Layers.

- 30 -