Neuronale Netzwerke mit "Neuroph"
Wer sich für neuronale Netzwerke interessiert, der kann mit "Neuroph" sehr schnell eine künstliche Intelligenz realisieren.
Benötigt
- lib-ext.jar (für Patreons)
- Das aktuelle Paket von Neuroph (Version 2.98, Stand: 12/2020):
Daraus bitte die Datei "neuroph-core-2.98.jar" in das JayMo-Verzeichnis entpacken.
Achtung:
Ungültige Werte können zu einer unendlichen Berechnungs-Zeit führen. Im Test führten teils auch gültige Werte zu einem endlosen Loop.
Namensraum
Alle nachfolgend verwendeten Typen befinden sich im Namensraum "Neuroph".
Entsprechend beginnen alle Typen mit dem Prefix "Neuroph_".
Perceptron
Konstruktor
Neuroph_Perceptron(IntNumber inputs, IntNumber outputs)
Funktionen
|
Trainiert das neuronale Netzwerk |
|
Berechnet ein Ergebnis |
Beispiel: OR (Oder)
true || false == true
Dazu werden also 2 Eingänge und ein Ausgang benötigt.
nn = Neuroph_Perceptron( 2, 1 )
Hinweis:
Das Netzwerk arbeitet intern nur mit Dezimalzahlen von 0.0 bis 1.0
Hierfür wird folgende Definition verwendet:
true = 1
false = 0
Zuerst muss das Netzwerk trainiert werden.
Dazu wird ein passendes Trainings-Set erstellt, in dem beschrieben wird was bei einem Eingang ankommt und wie das Ergebnis aussehen soll:
ts = Neuroph_TrainSet( 2, 1 )
ts.add( [0, 0], [0] )
ts.add( [0, 1], [1] )
ts.add( [1, 0], [1] )
ts.add( [1, 1], [1] )
Damit kann das Perceptron trainiert werden:
nn.learn( ts )
Nun ist das neuronale Netzwerk bereit.
Zum Berechnen werden nun 2 Werte (Eingänge) übergeben. Als Ergebnis kommt eine Liste (Ausgang) mit einem Wert zurück:
nn.calc( 0, 0 )[1].print
nn.calc( 0, 1 )[1].print
nn.calc( 1, 0 )[1].print
nn.calc( 1, 1 )[1].print
Hinweis:
XOR lässt sich mit einem Perceptron nicht berechnen, da nur direkte Verbindungen zwischen Ein- und Ausgängen möglich sind.
MultiLayerPerceptron
Ein MultiLayerPerceptron besitzt zwischen Ein- und Ausgängen noch eine oder mehrere verdeckte Ebenen (Layer).
Ansonsten kann dieser Typ wie ein Perceptron verwendet werden.
Konstruktor
Neuroph_MultiLayerPerceptron(IntNumber layers...)
Beispiel: XOR
Hier ein vollständiges Beispiel für XOR:
>prefix = "Neuroph"
mlp = _MultiLayerPerceptron(2, 2, 1)
ts = _TrainSet(2, 1)
ts.add([0, 0], [0])
ts.add([0, 1], [1])
ts.add([1, 0], [1])
ts.add([1, 1], [0])
mlp.learn(ts)
mlp.calc(0,0)[1].round.print
mlp.calc(0,1)[1].round.print
mlp.calc(1,0)[1].round.print
mlp.calc(1,1)[1].round.print