Jump to content
Tom Next - Daytrading Community
  • entries
    19
  • comments
    44
  • views
    36,436

Neuronales Netz: Die Implementierung Teil1


Mythos

1,453 views

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

Hi!

 

Warum nimmst du nicht einfach RapidMiner? Das ist kostenlos, hat fast jeden Lernalgo unter der Sonne eingebaut und kommt direkt mit Auswertungstools und Testtools daher.

Link to comment

Hauptgrund: weil ichs nicht kannte. Jetzt wo ichs kenne, neuer Hauptgrund: Ich will ja was lernen ;)

 

Im Ernst, einerseits bin ich mir jetzt nicht sicher ob man RapidMiner ohne Probleme vollautomatisieren und an MT anbinden kann, andererseits will ich ein NN mal komplett selber bauen. Fertige Blackboxen sind eben immer noch Blackboxen auch wenn sie viel können. Falls das eigene NN scheitert, kann leicht sein das ich mir den RapidMiner anschaue, aber erstmal bau ichs selber.

Link to comment

Mein Vorschlag vorhin war nicht als Kritik gedacht, Lernalgos selber zu schreiben um sie besser zu verstehen oder anpassen zu können ist ein Grund den ich als Programmierer nur als zu gut nachvollziehen kann. Abgesehen davon macht es ja auch Spaß ;)

 

Vollautomatisch wird man Rapidminer in MT wohl nicht integrieren können, aber das ist imho auch nicht nötig, in den meisten Fällen will man ja nur das gelernte Modell haben. Ich kann aber nur empfehlen mit Rapidminer mal zu spielen, einfacher kann man andere Lerner wie die SVM nicht testen. Das Programm kann aber am Anfang durch seine Mächtigkeit etwas einschüchternd wirken.

Ich habe selber ein paar Ideen für eine Kombination von NN mit Kursleveln, wenn ich doch nur die Zeit hätte...

Link to comment

habs auch nicht wirklich als Kritik aufgenommen. Freu mich immer über Input. Fürs Daten analysieren ist RapidMiner dann sicher besser weil mehr Möglichkeiten.

 

Ich will aber auch kein statisches NN machen, sondern es im weiteren Verlauf automatisch "nachlernen" lassen etc. Könnte man in der Praxis dann zwar händisch einmal wöchentlich über RapidMiner spielen, aber ich wills vollautomatisch backtesten auch ;)

Link to comment
×
×
  • Create New...