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 -