Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 6): Experimentieren mit der Lernrate des neuronalen Netzwerks"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 6): Experimentieren mit der Lernrate des neuronalen Netzwerks :

Wir haben zuvor verschiedene Arten von neuronalen Netzen zusammen mit ihren Implementierungen betrachtet. In allen Fällen wurden die neuronalen Netze mit der Gradientenverfahren trainiert, für die wir eine Lernrate wählen müssen. In diesem Artikel möchte ich anhand von Beispielen zeigen, wie wichtig eine richtig gewählte Rate ist und welchen Einfluss sie auf das Training des neuronalen Netzes hat.

Das dritte Experiment ist eine leichte Abweichung vom Hauptthema des Artikels. Die Idee dazu entstand während der ersten beiden Experimente. Also beschloss ich, es mit Ihnen zu teilen. Bei der Beobachtung des Trainings des neuronalen Netzes ist mir aufgefallen, dass die Wahrscheinlichkeit des Ausbleibens eines Fraktals um 60-70 % schwankt und selten unter 50 % fällt. Die Wahrscheinlichkeit des Auftretens eines Fraktals, egal ob Kauf oder Verkauf, liegt bei etwa 20-30%. Das ist ganz natürlich, da es viel weniger Fraktale auf dem Chart gibt als Kerzen innerhalb von Trends. Unser neuronales Netzwerk ist also übertrainiert, und wir erhalten die oben genannten Ergebnisse. Fast 100 % der Fraktale werden übersehen, und nur seltene können erkannt werden.  

Training des EA mit der Lernrate von 0,01

Um dieses Problem zu lösen, habe ich beschlossen, die Ungleichmäßigkeit der Stichprobe ein wenig zu kompensieren: Für das Fehlen eines Fraktals im Referenzwert habe ich beim Training des Netzes 0,5 statt 1 angegeben.

            TempData.Add((double)buy);
            TempData.Add((double)sell);
            TempData.Add((double)((!buy && !sell) ? 0.5 : 0));

Dieser Schritt brachte einen guten Effekt. Der Expert Advisor, der mit einer Lernrate von 0,01 und einer aus früheren Experimenten gewonnenen Gewichtsmatrix läuft, zeigt nach 5 Trainingsepochen eine Fehlerstabilisierung von etwa 0,34. Der Anteil der verfehlten Fraktale sank auf 51 % und der Anteil der Treffer stieg auf 9,88 %. Sie können aus dem Diagramm erkennen, dass der EA Signale in Gruppen generiert und somit einige bestimmte Zonen aufweist. Offensichtlich erfordert die Idee weitere Entwicklung und Tests. Aber die Ergebnisse zeigen, dass dieser Ansatz recht vielversprechend ist. 

Lernen mit 0,5 für kein Fraktal

Autor: Dmitriy Gizlyk

 
Ich bin nur vorbeigekommen)))) Verwirrt es Sie nicht, dass der Fehler mit dem Lernfortschritt zunimmt???? es eigentlich umgekehrt sein sollte)))))
 
Александр Алексеевич:
Ich bin nur vorbeigekommen)))) Verwirrt Sie nicht die Tatsache, dass der Fehler mit dem Training wächst??? es sollte andersherum sein)))))
Der Fehler wächst während der ersten Durchläufe nach der Initialisierung mit Zufallswerten. Nach mehreren Durchläufen beginnt er zu sinken. Dies kann auf eine chaotische Streuung der Anfangswerte vom Niveau der Zielfunktion zurückzuführen sein. Außerdem kann man ein leichtes Wachstum des Fehlers vor dem Hintergrund der allgemeinen Tendenz zu seiner Verringerung feststellen, was sich durch die Ungleichmäßigkeit der Zielfunktion erklären lässt.
 

Hallo Dmitriy,


Ich mag diese Serie sehr, da sie mir als Lernwerkzeug für Neuronale Netze dient. Ich benutze MT4, einschließlich der Suche nach einer Implementierung von SymbolInfo. Ich vermute, dass hier das Problem liegt, da es zwar läuft, aber während des Lernens nichts tut. Hätten Sie eine Idee, was nötig wäre, damit es in MT4 läuft? Vielen Dank!

 

Guten Tag!

Können Sie mir sagen, ob Sie NS nur anhand des Schlusskurses trainieren? Oder verwenden Sie auch das Handelsvolumen zu einem bestimmten TM?

 
Oleg Mazurenko:

Guten Tag!

Können Sie mir sagen, ob Sie NS nur anhand des Schlusskurses trainieren? Oder verwenden Sie auch das Handelsvolumen zu einem bestimmten TM?

In dem beschriebenen Beispiel erhältdas neuronale Netz Eröffnungs-, Schluss-, Hoch-, Tiefst-, Volumen- und Zeitdaten sowie die Messwerte von 4 Indikatoren. Der Prozess der Übertragung der Ausgangsdaten an das neuronale Netz wird in dem Link beschrieben.

Нейросети — это просто (Часть 2): Обучение и тестирование сети
Нейросети — это просто (Часть 2): Обучение и тестирование сети
  • www.mql5.com
В данной статье мы продолжим изучение нейронных сетей, начатое в предыдущей статье и рассмотрим пример использования в советниках созданного нами класса CNet. Рассмотрены две модели нейронной сети, которые показали схожие результаты как по времени обучения, так и по точности предсказания.
 

Für alle, die nach mir kommen: Beachten Sie, dass das erste Beispiel Fractal_OCL1.mql nicht kompiliert werden kann

Sie müssen Folgendes ändern

//#define lr 0. 1

double eta=0.1;

 
Das Hauptproblem liegt nicht in der Auswahl des Trainingskoeffizienten, denn Tensor Flo verfügt über eine Funktion, die ihn während des Trainings schrittweise auf einen bestimmten Wert reduziert und so den optimalen Wert auswählt. Das Problem ist, dass das neuronale Netz keine stabilen Muster findet, es hat nichts, woran es sich festhalten kann. Ich habe Modelle verwendet, die von vollständig verknüpften Schichten bis zum neumodischen ResNet und Attention reichen. Die Wirkung geht nicht über 60 % hinaus, und das ist ein schmaler Bereich, im Allgemeinen geht alles auf 50/50 zurück. Bei neuronalen Netzen müssen wir darüber nachdenken, was generell analysiert werden könnte. Nur Anordnungen von Preisen und Mengen, in beliebigen Kombinationen, liefern keine Ergebnisse.
 
eccocom #:
Das Hauptproblem liegt nicht in der Auswahl des Trainingskoeffizienten, denn Tensor Flo verfügt über eine Funktion, die ihn während des Trainings schrittweise auf einen bestimmten Wert reduziert und so den optimalen Wert auswählt. Das Problem ist, dass das neuronale Netz keine stabilen Muster findet, es hat nichts, woran es sich festhalten kann. Ich habe Modelle verwendet, die von vollständig verknüpften Schichten bis zum neumodischen ResNet und Attention reichen. Die Wirkung geht nicht über 60 % hinaus, und das ist ein schmaler Bereich, im Allgemeinen geht alles auf 50/50 zurück. Bei neuronalen Netzen müssen wir darüber nachdenken, was generell analysiert werden könnte. Eine bloße Auflistung von Preisen und Mengen in beliebigen Kombinationen liefert keine Ergebnisse.

Versuchen Sie, die Korrelation zwischen den Ausgangsdaten und dem Zielergebnis zu analysieren.

 

"...in Ermangelung eines Fraktals im Referenzwert habe ich beim Training des Netzes 0,5 anstelle von 1 angegeben."

Warum genau 0,5, woher kommt diese Zahl?

 
Gexon Training des Netzes 0,5 statt 1 angegeben."

Warum genau 0,5, woher kommt diese Zahl?

Während des Trainings lernt das Modell die Wahrscheinlichkeitsverteilung für jedes der 3 Ereignisse. Da die Wahrscheinlichkeit der Abwesenheit eines Fraktals viel höher ist als die Wahrscheinlichkeit seines Auftretens, wird sie künstlich unterschätzt. Wir geben 0,5 an, weil wir bei diesem Wert zu einem annähernd gleichen Niveau der maximalen Wahrscheinlichkeiten der Ereignisse kommen. Und sie können verglichen werden.
Ich stimme zu, dass dieser Ansatz sehr umstritten ist und von den Beobachtungen der Trainingsstichprobe abhängt.