Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 27): Tiefes Q-Learning (DQN)"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 27): Tiefes Q-Learning (DQN) :

Wir studieren weiterhin das Verstärkungslernen, das Reinforcement Learning. In diesem Artikel werden wir uns mit der Methode des Deep Q-Learning vertraut machen. Mit dieser Methode hat das DeepMind-Team ein Modell geschaffen, das einen Menschen beim Spielen von Atari-Computerspielen übertreffen kann. Ich denke, es wird nützlich sein, die Möglichkeiten der Technologie zur Lösung von Handelsproblemen zu bewerten.

Sie haben wahrscheinlich schon erraten, dass beim Tiefem Q-Lernen (Deep Q-Learning) ein neuronales Netz zur Annäherung an eine Q-Funktion verwendet wird. Was ist der Vorteil eines solchen Ansatzes? Erinnern Sie sich an die Implementierung der tabellarischen Methode der Kreuzentropie im letzten Artikel. Ich habe betont, dass die Umsetzung einer tabellarischen Methode von einer endlichen Anzahl möglicher Zustände und Aktionen ausgeht. Wir haben also die Zahl der möglichen Zustände durch Clustering der Ausgangsdaten begrenzt. Aber ist es so gut? Führt das Clustering immer zu besseren Ergebnissen? Bei der Verwendung eines neuronalen Netzes ist die Zahl der möglichen Zustände nicht begrenzt. Ich halte dies für einen großen Vorteil bei der Lösung von Problemen im Zusammenhang mit dem Handel.

Der erste naheliegende Ansatz besteht darin, die Tabelle aus dem vorherigen Artikel durch ein neuronales Netz zu ersetzen. Aber so einfach ist es leider nicht. In der Praxis erwies sich der Ansatz als nicht so gut, wie er schien. Um den Ansatz umzusetzen, müssen wir einige Heuristiken hinzufügen.

Betrachten wir zunächst das Ziel der Agentenausbildung. Im Allgemeinen besteht das Ziel darin, den Gesamtgewinn zu maximieren. Sehen Sie sich die folgende Abbildung an. Der Agent muss sich von der Zelle Start zur Zelle Finish bewegen. Der Agent erhält die Belohnung einmal, wenn er die Zelle Finish (Ende) erreicht. In allen anderen Zuständen ist die Belohnung gleich Null.

Diskontfaktor

Die Abbildung zeigt zwei Wege. Für uns ist es offensichtlich, dass der orangefarbene Weg kürzer und vorteilhafter ist. Aber in Bezug auf die Maximierung der Belohnung sind sie gleichwertig.

Autor: Dmitriy Gizlyk

 

Для тестирования была создана сверточная модель следующей архитектуры:

  1. Quelldatenschicht, 240 Elemente (20 Kerzen, 12 Neuronen pro Beschreibung einer Kerze).
  2. Konvergente Schicht, Quelldatenfenster 24 (2 Kerzen), Schritt 12 (1 Kerze), Ausgang 6 Filter.
  3. Konvergente Schicht, Quelldatenfenster 2, Schritt 1, 2 Filter.
  4. Kollabierende Schicht, Quelldatenfenster 3, Stufe 1, 2 Filter.
  5. Konvergierende Schicht, Quelldatenfenster 3, Schritt 1, 2 Filter.
  6. Vollständig verbundene neuronale Schicht mit 1000 Elementen.
  7. Vollständig verknüpfte neuronale Schicht mit 1000 Elementen.
  8. Vollständig verknüpfte Schicht mit 3 Elementen (Ergebnisschicht für 3 Aktionen).

Hat jemand herausgefunden, wie man das macht?

Ich habe Transfer Lerning, es funktioniert, kompiliert, aber wie erstellt man ein solches Modell darauf?

Ich versuche es mit Modellen aus früheren Artikeln, aber sie passen nicht.
 
Ivan Butko #:

Hat jemand herausgefunden, wie man das macht?

Ich habe Transfer Lerning, es funktioniert, kompiliert, aber wie erstellt man ein solches Modell auf ihm?

Ich habe die Modelle aus den vorherigen Artikeln ausprobiert, sie passen nicht

1. Starten Sie TransferLearning.
2. Öffnen Sie KEIN Modell.
3. Fügen Sie einfach ein neues Modell ein, z.B. durch Hinzufügen neuer neuronaler Schichten.
4. Klicken Sie auf Modell speichern und geben Sie den Namen der Datei an, die Sie aus dem Programm laden wollen.

 
Dmitriy Gizlyk #:

1. Starten Sie TransferLearning.
2. Öffnen Sie KEIN Modell.
3.Fügen Sie einfach ein neues Modell ein, z.B. durch Hinzufügen neuer neuronaler Schichten.
4. Klicken Sie auf Modell speichern und geben Sie den Namen der Datei an, die Sie aus dem Programm laden wollen.

Welche Arten von Schichten und was ist zu wählen? Sie haben mehrere Typen und mehrere Parameter zur Auswahl




Wählen Sie eine aus, speichern Sie unter "EURUSD_PERIOD_H1_Q-learning.nnw", führen Sie Q-learning.mq5 aus, und das Programm schreibt ins Protokoll.


2022.10.14 15:09:51.743 Experten Initialisierung von Q-learning (EURUSD,H1) fehlgeschlagen mit Code 32767 (falsche Parameter)

Und in der Registerkarte Experten:

2022.10.14 15:09:51.626 Q-learning (EURUSD,H1) OpenCL: GPU device 'NVIDIA GeForce RTX 3080' selected
2022.10.14 15:09:51.638 Q-learning (EURUSD,H1) EURUSD_PERIOD_H1_Q-learning.nnw

 

Hallo Herr Gizlyk, zunächst einmal möchte ich Ihnen für Ihre fundierte Serie danken. Als Nachzügler habe ich allerdings mit einigen Problemen beim Verständnis Ihres aktuellen Artikels zu kämpfen. Nachdem ich die Datei VAE.mqh und die Klasse CBufferDouble aus Ihren früheren Artikeln rekonstruieren konnte, kann ich Ihre Beispielanwendung aus diesem Artikel kompilieren. Zum Test habe ich versucht, mit Ihrem Programm NetCreater ein Netzwerk zu erstellen. Nach vielen Versuchen habe ich es aufgegeben. Die gespeicherten Netzwerke wurden von Ihrer Anwendung aus diesem Artikel nicht akzeptiert. Könnten Sie nicht auch das von Ihnen erstellte Netzwerk zum Download anbieten? Nochmals vielen Dank für Ihre Arbeit!

 
sfonti #:

Hallo Herr Gizlyk, zunächst einmal möchte ich Ihnen für Ihre fundierte Serie danken. Als Nachzügler habe ich allerdings mit einigen Problemen beim Verständnis Ihres aktuellen Artikels zu kämpfen. Nachdem ich die Datei VAE.mqh und die Klasse CBufferDouble aus Ihren früheren Artikeln rekonstruieren konnte, kann ich Ihre Beispielanwendung aus diesem Artikel kompilieren. Zum Test habe ich versucht, mit Ihrem Programm NetCreater ein Netzwerk zu erstellen. Nach vielen Versuchen habe ich es aufgegeben. Die gespeicherten Netzwerke wurden von Ihrer Anwendung aus diesem Artikel nicht akzeptiert. Könnten Sie nicht auch das von Ihnen erstellte Netzwerk zum Download anbieten? Nochmals vielen Dank für Ihre Arbeit!

gleiches Problem hier.. die geladene Datei immer beschädigt.. haben Sie die Lösung gefunden?
 
Hallo. Können Sie mir sagen, wie ich die Quelldatenschicht organisieren soll. Handelt es sich um eine vollständig verbundene Schicht mit 240 Neuronen?
 
star-ik #:
Hallo. Können Sie mir sagen, wie ich die Quelldatenschicht organisieren soll. Handelt es sich um eine vollständig verbundene Schicht mit 240 Neuronen?

Eine reguläre vollverknüpfte Schicht wird als Quelldatenschicht verwendet.

 

Guten Tag!

Nach dem Training wird nicht gespeichert, trainiertes Modell:,

2024.06.01 01:12:26.731 Q-learning (XAUUSD_t,H1) XAUUSD_t_PERIOD_H1_Q-learning.nnw

2024.06.01 01:12:26.833 Q-learning (XAUUSD_t,H1) Iteration 980, Verlust 0.75659

2024.06.01 01:12:26.833 Q-learning (XAUUSD_t,H1) Funktion ExpertRemove() aufgerufen

Fehler beim Versuch, den Tester auszuführen:

2024.06.01 01:16:31.860 Core 1 2024.01.01 01 00:00:00 XAUUSD_t_PERIOD_H1_Q-learning-test.nnw

2024.06.01 01 01:16:31.860 Core 1 Testergestoppt, weil OnInit Nicht-Null-Code zurückgibt 1

2024.06.01.01 01:16:31.861 Kern 1 Verbindung unterbrochen

2024.06.01.01 01:16:31.861 Core 1 Verbindung geschlossen

Hilfe bitte, wer hat so etwas erlebt, wie haben Sie das Problem gelöst?