Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

In diesem Fall stehen die Trainingsdaten in der Klasse LogicalAndData:

public class LogicalAndData {

  public static final double[][] inputs = { 
    { 0, 0 },
    { 1, 0 },
    { 0, 1 },
    { 1, 1 } };

  public static final double[] targets = { 
    0,
    0,
    0,
    1 };

}

Jetzt sollen für ein Training alle Ausgaben angezeigt werden (siehe Abbildung 18). Denn dadurch wird der Lernprozess sehr genau und gut dokumentiert. Der erste und der letzte Ausgabenblock werden durch die Methoden showWeights() und testAllInputsAndShowResults(…) erzeugt.
Der lange Mittelblock wird durch die Methode trainWithSupervisedLearning(…) generiert.

weights incl. bias:  -0.16845808819938868 -0.7935079981112905 0.7771656639659383

outputs: 0.7771656639659383  0.6087075757665497  -0.016342334145352133  -0.1848004223447408  

learned in percent: 25

epoche: 1   data number: 1

error: -1.0

new weights:  -0.16845808819938868  -0.7935079981112905  0.27716566396593834  

epoche: 2   data number: 2

error: -1.0

new weights:  -0.6684580881993887  -0.7935079981112905  -0.22283433603406166

epoche: 3   data number: 4

error: 1.0

new weights:  -0.16845808819938868  -0.29350799811129047  0.27716566396593834

epoche: 4   data number: 1

error: -1.0

new weights:  -0.16845808819938868  -0.29350799811129047  -0.22283433603406166

epoche: 5   data number: 1

epoche: 6   data number: 4

error: 1.0

new weights:  0.3315419118006113  0.20649200188870953  0.27716566396593834

epoche: 7   data number: 1

error: -1.0

new weights:  0.3315419118006113  0.20649200188870953  -0.22283433603406166

epoche: 8   data number: 2

error: -1.0

new weights:  -0.16845808819938868  0.20649200188870953  -0.7228343360340617

epoche: 9   data number: 4

error: 1.0

new weights:  0.3315419118006113  0.7064920018887095  -0.22283433603406166

epoche: 10   data number: 4

epoche: 11   data number: 4

epoche: 12   data number: 2

error: -1.0

new weights:  -0.16845808819938868  0.7064920018887095  -0.7228343360340617

epoche: 21   data number: 2

epoche: 22   data number: 4

error: 1.0

new weights:  0.8315419118006113  1.2064920018887095  -0.7228343360340617

epoche: 23   data number: 4

epoche: 29   data number: 2

epoche: 30   data number: 4

end of training

weights incl. bias:  0.3315419118006113 1.2064920018887095 -1.2228343360340617

outputs: -1.2228343360340617  -0.8912924242334503  -0.016342334145352133  0.3151995776552592

learned in percent: 100

Abbildung 18: Dokumentation eines Trainings (Epochenanzahl = 30)

Und bitte daran denken: es wurden hier nur die Summen-Endwerte ausgegeben. Die Endwerte mit Hilfe der Heaviside-Funktion lauten 0, 0, 0, 1 und sind damit vollständig richtig!

- 21 -