Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 45): Training von Fertigkeiten zur Erkundung des Zustands"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 45): Training von Fertigkeiten zur Erkundung des Zustands :

Das Training nützlicher Fertigkeiten ohne explizite Belohnungsfunktion ist eine der größten Herausforderungen beim hierarchischen Verstärkungslernen. Zuvor haben wir bereits zwei Algorithmen zur Lösung dieses Problems kennengelernt. Die Frage nach der Vollständigkeit der Umweltforschung bleibt jedoch offen. In diesem Artikel wird ein anderer Ansatz für das Training von Fertigkeiten vorgestellt, dessen Anwendung direkt vom aktuellen Zustand des Systems abhängt.

Die ersten Ergebnisse waren schlechter als unsere Erwartungen. Zu den positiven Ergebnissen gehört eine ziemlich gleichmäßige Verteilung der in der Teststichprobe verwendeten Fertigkeiten. An dieser Stelle enden die positiven Ergebnisse unseres Tests. Nach mehreren Iterationen des Trainings des Auto-Encoders und des Agenten waren wir immer noch nicht in der Lage, ein Modell zu erhalten, das in der Lage war, aus der Trainingsmenge Gewinne zu erzielen. Offensichtlich war das Problem, dass der Auto-Encoder nicht in der Lage war, Zustände mit ausreichender Genauigkeit vorherzusagen. Infolgedessen ist die Saldenkurve weit vom gewünschten Ergebnis entfernt.

Um unsere Annahme zu testen, wurde ein alternativer EA „EDL\StudyActor2.mq5“ für das Agententraining erstellt. Der einzige Unterschied zwischen der alternativen Option und der zuvor betrachteten ist der Algorithmus zur Erzeugung der Belohnung. Wir nutzten den Zyklus auch zur Vorhersage von Änderungen im Kontostatus. Diesmal haben wir den Indikator für die Veränderung des relativen Saldos als Belohnung verwendet.

      ActorResult = vector<float>::Zeros(NActions);
      for(action = 0; action < NActions; action++)
        {
         reward = GetNewState(Buffer[tr].States[i].account, action, prof_1l);
         ActorResult[action] = reward[0]/PrevBalance-1.0f;
        }

Der Agent, der mit der modifizierten Belohnungsfunktion trainiert wurde, zeigte während des gesamten Testzeitraums einen relativ gleichmäßigen Anstieg der Rentabilität. 

Diagramm der Saldenkurve der Stichprobe

Testergebnisse

Autor: Dmitriy Gizlyk

 

Wie kann man Tests ohne OpenCL durchführen?

Weil der Prozessor OpenCL unterstützt, die Grafikkarte aber nicht und weder der Test noch die Optimierung startet....

 
Oleg Pavlenko OpenCL durchführen?

Weil der Prozessor OpenCL unterstützt, die Grafikkarte aber nicht und weder der Test noch die Optimierung startet....

Guten Tag, Oleg.

Diese Implementierung funktioniert nur mit OpenCL. Um sie zu deaktivieren, müssen Sie den gesamten Netzwerkalgorithmus neu entwerfen. Aber er kann auf einem Prozessor ausgeführt werden, wenn dieser OpenCL unterstützt und die entsprechenden Treiber installiert sind.

 
Dmitriy Gizlyk #:

Guten Tag, Oleg.

Diese Implementierung funktioniert nur mit OpenCL. Um sie zu deaktivieren, müssen Sie den gesamten Netzwerkalgorithmus neu entwerfen. Aber wenn es auf dem Prozessor ausgeführt werden kann, wenn es OpenCL unterstützt und die entsprechenden Treiber installiert sind.

Das ist der Fehler, den ich bekomme (siehe Screenshot). Auf dem Screenshot ist zu sehen, dass die Grafikkarte OpenCL nicht unterstützt, aber der Prozessor ist in Ordnung. Wie kann ich diesen Fehler umgehen und das Programm in einem Tester oder Optimierer ausführen? Was können Sie mir raten?


 
Oleg Pavlenko #:

Dies ist die Fehlermeldung, die ich erhalte (siehe Bildschirmfoto). Der Screenshot zeigt, dass die Grafikkarte nicht OpenCL unterstützt, aber der Prozessor ist in Ordnung. Wie kann ich dies umgehen und es in einem Tester oder Optimierer ausführen? Was können Sie mir raten?


Das Problem ist, dass Sie "tester.ex5" ausführen. Es prüft die Qualität der trainierten Modelle, und Sie haben sie noch nicht. Zuerst müssen Sie Research.mq5 ausführen, um eine Datenbank mit Beispielen zu erstellen. Dann StudyModel.mq5, mit dem der Autoencoder trainiert wird. Der Schauspieler wird in StudyActor.mq5 oder StudyActor2.mq5 trainiert (unterschiedliche Belohnungsfunktion). Und erst dann wird tester.ex5 funktionieren. Beachten Sie, dass Sie in den Parametern des letzteren das Akteursmodell Act oder Act2 angeben müssen. Dies hängt von dem Expert Advisor ab, der für die Studie Actor verwendet wird.

 
Oleg Pavlenko_ _

Diese Fehlermeldung erhalte ich (siehe Screenshot). Der Screenshot zeigt, dass die Grafikkarte nicht OpenCL unterstützt, aber mit dem Prozessor ist alles in Ordnung. Wie kann ich dieses Problem umgehen und es in einem Tester oder Optimierer ausführen? Was können Sie mir raten?


Sie haben Pech, mein Freund. Ich habe das gleiche Problem mit meinem i5-12400

Anscheinend unterstützen einige Intel-Prozessoren der 12. und 13. Generation die fp64-Berechnung nicht.

Intel heimlich ausschließen fp64 von diesen beiden Gen von Prozessor obwohl fp64 wird wieder auf 14.

 
Dmitriy Gizlyk #:

Das Problem ist, dass Sie "tester.ex5" ausführen, um die Qualität der trainierten Modelle zu prüfen, die Sie noch nicht haben. Zuerst müssen Sie Research.mq5 ausführen , um eine Datenbank mit Beispielen zu erstellen. Dann StudyModel.mq5, mit dem der Autoencoder trainiert wird. Der Schauspieler wird in StudyActor.mq5 oder StudyActor2.mq5 trainiert (unterschiedliche Belohnungsfunktion). Und erst dann wird tester.ex5 funktionieren. Beachten Sie, dass Sie in den Parametern des letzteren das Akteursmodell Act oder Act2 angeben müssen. Dies hängt vom Expert Advisor ab, mit dem Sie Actor studieren.

Ich habe mit der Optimierung von Research begonnen .

Als Ergebnis wird Folgendes in das Protokoll geschrieben:

Mache ich wieder etwas falsch?

 
Oleg Pavlenko #:

Mit der Optimierung der Forschung begonnen .

Als Ergebnis wird dies im Protokoll angezeigt:

Mache ich wieder etwas falsch?

Gibt es Meldungen im Protokoll des Testagenten? In einigen Phasen der Initialisierungsunterbrechung zeigt der Expert Advisor Meldungen an.

 
sy4rul #:

Sie haben Pech, mein Freund. Ich habe das gleiche Problem mit meinem i5-12400

Offenbar unterstützen einige Intel 12. und 13. Generation keine fp64-Berechnung.

Intel heimlich ausschließen fp64 von diesen beiden Gen von Prozessor obwohl fp64 wird wieder auf 14.

Diese Version verwendet kein fp64. Nur fp32. Ich habe es auf Iris Xe i7-1165 getestet


 
Dmitriy Gizlyk #:

Gibt es Meldungen im Protokoll des Testagenten? In einigen Phasen der Initialisierungsunterbrechung zeigt der EA Meldungen an.

Ich habe alle Testerprotokolle gelöscht und die Research-Optimierung für die ersten 4 Monate des Jahres 2023 auf EURUSD H1 ausgeführt.

Ich habe es mit echten Ticks ausgeführt:

Ergebnis: 4 Samples insgesamt, 2 im Plus und 2 im Minus:

Vielleicht mache ich etwas falsch, optimiere die falschen Parameter oder es stimmt etwas mit meinem Terminal nicht? Das ist mir nicht klar... Ich versuche, Ihre Ergebnisse wie im Artikel zu wiederholen...

Die Fehler beginnen ganz am Anfang.

Das Set und das Ergebnis der Optimierung sowie die Logs der Agenten und des Testers sind im Research.zip-Archiv angehängt.

Dateien:
Research.zip  36 kb
 
Archiv Forschung.zip
Dateien:
Research.zip  36 kb