Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

Die Implementierung des Neuronalen Netzwerkes enthält die folgenden Klassen:  

Activation, ActivationFunction, DisplayMachineLearning, FeedForwardNetwork, MachineLearningMain, NetworkParameter, Neuron, ProcessMonitoring und TrainingParameter.

Für die zwei Anwendungsbeispiele im nächsten Kapitel kommen noch die Klassen für die Trainingsdaten hinzu:
LogicalAndData und VeryShortData.

Die gesamte Software findet sich unter: https://github.com/Ehlert99/DeepLearning

Die zentrale Klasse FeedForwardNetwork besteht aus den in diesem Kapitel besprochenen Methoden:

import java.util.ArrayList;
import java.util.Random;

public class FeedForwardNetwork {

  private double[] inputLayer;
  private ArrayList<Neuron> hiddenLayer;
  private ArrayList<Neuron> outputLayer;
  public FeedForwardNetwork(...) {...}
  private void builtHiddenLayer(...) {...}
  private void builtOutputLayer(...) {...}
  public void setWeightsOfHiddenLayer() {...}
  public double[][] getWeightsOfHiddenLayer() {...}
  public void setWeightsOfOutputLayer() {...}
  public double[][] getWeightsOfOutputLayer() {...}
  public void calculateOutput(...) {...}
  private void setInputLayer (...) {...}
  private void calculateOutputFromHiddenLayer(...) {...}
  private void calculateOutputFromOutputLayer() {...}
  public void trainWithSupervisedLearning() {...}
  private double calculateTotalError(...) {...}
  private void makeBackPropagationForOutputLayer(...) {...}
  public void testAllTrainingsdataAndShowResults() {...}
  public void testAllTestdataAndShowResults() {...}
  private void testAllInputsAndShowResults(...) {...}
  private boolean isNotABiasWeight(...) {...}
  private void makeBackPropagationForHiddenLayer(...) {...}
  private double calculateDeltaW(...) {...}
  private void setBias(...) {...}

}

Hinweis: Diese Klasse sollte einem Refactoring unterzogen werden (z.B. Aufteilung in mehrere Klassen), damit sie "cleaner" wird.

- 48 -