Neuronales Netz: Die Implementierung Teil1
Kommen wir zum schwierigen Teil: Die Implementierung.
Für das ganze restliche rundherum hab ich das EA Kitchen Framework genommen. Den aktuellen Source gibts dann immer im dazugehörigen Thread.
Die konkrete Implementierung der NN Logik wird in eine Lib ausgelagert. Ich hatte zwar schon mal so eine geschrieben, aber keine Ahnung mehr wo die is. Also nochmal.
Das ganze wird jetzt sicher ein bissl hardcore programmiertechnisch, also wems nur ums prinzip geht: besser wegschaun ;)
Softwarestruktur
Die Lib wird so aufgebaut das sie genau 1 NN repräsentiert. Sprich es gibt globale variablen in der Lib die Status und Konfiguration speichern, und dann Funktionen für die entsprechenden Zugriffe.
Gespeichert werden muss:
- Anzahl der Schichten -> integer bzw. direkt über größe des layers array
- Anzahl der Neuronen pro Schicht -> int-array: layers
- Definition der Übergangsfunktion pro Neuron -> zweidimensionales array (anzahl schichten x knoten pro schicht)
- Gewichte pro Verbindung -> wird wohl ein dreidimensionales double array. Ebene 1: layer, ebene 2: neuron am layer Ebene 3: neuron auf nächstem Layer
Nötige Zugriffsfunktionen:
- Erzeuge NN. Parameter:
, , , - Berechne NN.
, - Lade Parameter von File:
- Speichere in File:
- Autosave (nimmt filename aus dem geladen wurde
- Trainiere 1 Schritt:
,
Als Lernalgorithmus werd ich den backpropagation verwenden, einfach weil ich ihn kenne ;)
Sprich die Lib wird ein komplett allgemeines NN, das man ggf. auch für ganz andere Varianten verwenden kann. Alle Projektspezifischen Einstellungen werd ich in eine mqh packen die die NN-Lib dann verwendet.
Dann geh ich mal an die Implementation der Lib. Mal sehen wie lang es dauert ;)
4 Comments
Recommended Comments