Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 88): Zeitreihen-Dense-Encoder (TiDE)"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 88): Zeitreihen-Dense-Encoder (TiDE) :

In dem Bestreben, möglichst genaue Prognosen zu erhalten, verkomplizieren die Forscher häufig die Prognosemodelle. Dies wiederum führt zu höheren Kosten für Training und Wartung der Modelle. Ist eine solche Erhöhung immer gerechtfertigt? In diesem Artikel wird ein Algorithmus vorgestellt, der die Einfachheit und Schnelligkeit linearer Modelle nutzt und Ergebnisse liefert, die mit den besten Modellen mit einer komplexeren Architektur vergleichbar sind.

Wie in einer Reihe von früheren Artikeln ist das Modell des Environment State Encoder unabhängig vom Kontostand und den offenen Positionen. Daher können wir das Modell sogar auf einer Trainingsstichprobe mit einem Durchgang der Interaktion mit der Umgebung trainieren, bis wir die gewünschte Genauigkeit der Vorhersage zukünftiger Zustände erreichen. Natürlich darf die „gewünschte Vorhersagegenauigkeit“ die Möglichkeiten des Modells nicht überschreiten. Keiner kann über seinen Schatten springen.

Nach dem Training des Modells zur Vorhersage von Umweltzuständen gehen wir zur zweiten Stufe über – dem Training der Verhaltenspolitik des Akteurs. In diesem Schritt trainieren wir iterativ die Modelle des Akteurs (Actor) und des Kritikers (Critic) und aktualisieren den Erfahrungswiedergabepuffer in bestimmten Zeiträumen.

Unter der Aktualisierung des Erfahrungswiedergabepuffers verstehen wir eine zusätzliche Sammlung der Umweltinteraktionserfahrung unter Berücksichtigung der aktuellen Verhaltenspolitik des Akteurs. Denn das von uns untersuchte Finanzmarktumfeld ist sehr vielschichtig. Wir können also nicht alle ihre Erscheinungsformen im Erfahrungswiedergabepuffer vollständig sammeln. Wir erfassen nur ein kleines Umfeld der aktuellen politischen Maßnahmen des Akteurs. Durch die Analyse dieser Daten machen wir einen kleinen Schritt zur Optimierung der Verhaltenspolitik unseres Akteurs. Wenn wir uns den Grenzen dieses Segments nähern, müssen wir zusätzliche Daten sammeln, indem wir den sichtbaren Bereich etwas über die aktualisierte Akteurspolitik hinaus erweitern.

Als Ergebnis dieser Iterationen habe ich eine Akteurspolitik trainiert, die in der Lage ist, sowohl in den Trainings- als auch in den Testdatensätzen Gewinne zu erzielen.

Model testing results Model testing results

Im obigen Diagramm sehen wir einen Verlusthandel zu Beginn, der dann in einen klaren Gewinntrend übergeht. Der Anteil der Handelsgeschäfte mit Gewinn liegt bei unter 40 %. Auf 1 Handelsgeschäft mit Gewinn kommen fast 2 mit Verlust. Wir stellen jedoch fest, dass die unrentablen Handelsgeschäfte deutlich kleiner sind als die mit Gewinn. Der Durchschnitt der Handelsgeschäfte mit Gewinn ist fast 2-mal größer als der mit Verlust. All dies ermöglicht es dem Modell, während des Testzeitraums einen Gewinn zu erwirtschaften. Aus den Testergebnissen ergab sich ein Gewinnfaktor von 1,23.

Autor: Dmitriy Gizlyk

 

Hallo Dmitriy,

MLP anstelle anderer, komplexerer Netze zu verwenden, ist recht interessant, zumal die Ergebnisse besser sind.

Leider bin ich beim Testen dieses Algorithmus auf mehrere Fehler gestoßen. Hier sind einige Schlüsselzeilen des Protokolls:

2024.11.15 00:15:51.269 Core 01 Iterations=100000

2024.11.15 00:15:51.269 Kern 01 2024.01.01 00:00:00 TiDEEnc.nnw

2024.11.15 00:15:51.269 Kern 01 2024.01.01 00:00:00 Neues Modell erstellen

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 OpenCL: GPU-Gerät 'GeForce GTX 1060' ausgewählt

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Fehler der Ausführung Kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: unbekannter OpenCL Fehler 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Zug -> 164

2024.11.15 00:15:51.269 Kern 01 2024.01.01 00:00:00 Zug -> 179 -> Encoder 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 ExpertRemove() Funktion aufgerufen

Haben Sie eine Idee, was der Grund dafür sein könnte?

Vorher funktionierte die OpenCL ganz gut.

Chris.

Dmitriy Gizlyk
Dmitriy Gizlyk
  • 2024.11.13
  • www.mql5.com
Trader's profile
 
Chris Kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: unbekannter OpenCL-Fehler 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Zug -> 164

2024.11.15 00:15:51.269 Kern 01 2024.01.01 00:00:00 Zug -> 179 -> Encoder 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 ExpertRemove() Funktion aufgerufen

Haben Sie eine Idee, was der Grund dafür sein könnte?

Vorher funktionierte OpenCL ganz gut.

Chris.

Hy, Chris.

Haben Sie einige Änderungen an der Modellarchitektur vorgenommen oder die Standardmodelle aus dem Artikel verwendet?

 
Dmitriy Gizlyk #:

Hy, Chris.

Haben Sie einige Änderungen an der Modellarchitektur vorgenommen oder Standardmodelle aus dem Artikel verwendet?

Hallo. Ich habe keine Änderungen vorgenommen. Ich habe einfach den "Experts"-Ordner vollständig kopiert und die Skripte so ausgeführt, wie sie nach der Kompilierung waren, in dieser Reihenfolge: "Research", "StudyEncoder", "Study" und "Test". Die Fehler traten in der Phase "Test" auf. Der einzige Unterschied war das Instrument, d. h. der Wechsel von EURUSD zu EURJPY.

Chris

 

Dmitriy, ich habe eine wichtige Lösung. Der Fehler trat nach dem Start von StudyEncoder auf. Hier ist ein weiteres Beispiel:

2024.11.18 03:23:51.770 Core 01 Iterationen=100000

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 TiDEEnc.nnw

2024.11.18 03:23:51.770 Kern 01 2023.11.01 00:00:00 Neues Modell erstellen

2024.11.18 03:23:51.770 Core 01 opencl.dll erfolgreich geladen

2024.11.18 03:23:51.770 Core 01 Gerät #0: GPU 'GeForce GTX 1060' mit OpenCL 1.2 (10 Einheiten, 1771 MHz, 6144 Mb, Version 457.20, Bewertung 4444)

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 OpenCL: GPU-Gerät 'GeForce GTX 1060' ausgewählt

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Fehler der Ausführung Kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: unbekannter OpenCL-Fehler 65536

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Zug -> 164

2024.11.18 03:23:51.770 Kern 01 2023.11.01 00:00:00 Zug -> 179 -> Encoder 1815.1101074

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 ExpertRemove() Funktion aufgerufen


Chris