Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

Die Gewichtsjustierung ist dann wieder wie folgt:

newWeighti = oldWeighti + deltaWi

Ist deltaW positiv, wird das Gewicht etwas vergrößert, ist deltaW negativ, wird das Gewicht etwas verkleinert.

Diese Lernregel funktioniert nur bei Neuronalen Netzen ohne Hidden-Layer. Für die Hidden-Layer ist aber eine eigene Lernregel erforderlich: Backpropagation. Entwickelt wurde das Verfahren in den 70er Jahren. Bei Hidden-Layern hat man das Problem, dass man keinen direkten Fehler für Neuronen dieser Schicht berechnen kann, weil für die Hidden-Neuronen der gewünschte Output nicht definiert ist.

Für die Neuronen im Hidden-Layer ergeben sich die Backpropagation-Regeln wie folgt:

für alle Hidden-Neuronen i tue

  für alle Gewichte j tue

    double[] errors = new double[Anzahl der Output-Neuronen]

    für alle Output-Neuronen k tue

      errors[k] = (target[k] – output[k]) * output[k] * (1 – output[k]) *

                                                         neuron[i].weightOfOutputLayer[k]

    deltaW = (errors[].sum) * outputFromHiddenLayer[i] *

                                 (1 - outputFromHiddenLayer[i]) * input[j] * learningRate

    wenn das Gewicht j ein "normales Gewicht" ist tue

      neuron[i].weights[j] += deltaW

Das Verfahren, wie mit einem Bias-Gewicht umzugehen ist, wird später erläutert (s. Seite 45).

- 31 -