Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

Die Trainingsparameter werden wie folgt eingestellt:

public class TrainingParameter {

  public static final int numberOfEpochs = 100;  // 1000, 10000, 100000
  public static final double learningRate = 0.5; // 0.1
  public static final ActivationFunction activationFunction = ActivationFunction.SIGMOID;  
  public static final double faultTolerance = 0.1;
  public static final double[][] inputs = LogicalAndData.inputs;
  public static final double[][] targets = LogicalAndData.targets;
  public static final double[][] weightsOfHiddenLayer = null;
  public static final double[][] weightsOfOutputLayer = null;
  public static final boolean isBiasBackPropagationDesired = true;

}

Die Daten entsprechen einer logischen UND-Verknüpfung:

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 } };

}


Das Netzwerk wird zu Demonstrationszwecken viermal trainiert, jeweils mit einer unterschiedlichen Anzahl von Epochen.

In jedem Training und in jeder einzelnen Epoche wird eins von den möglichen vier Eingangspaaren über einen Zufallsgenerator ausgewählt, das Ergebnis berechnet, dieses dann mit dem Ziel verglichen und die Gewichte entsprechend angepasst. Am Ende jeden Trainings werden für die vier Eingaben die folgenden Ausgaben bzw. Ergebnisse von Abbildung 38 berechnet.


- 50 -