Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 609

 
Sergey Chalyshev:


Werfen Sie Ihr Netzwerk in den Papierkorb, wenn es auf solche gpsh-Werte reagiert. Ein normales Netzwerk funktioniert und lernt bei allen Anfangswerten, sogar bei Null.


Das ist Unsinn.
 

  • Bestimmung der optimalen DNN-Hyperparameter

Zu den Hyperparametern eines neuronalen Netzes gehören in der Regel die Anzahl der versteckten Schichten, die Anzahl der Neuronen in jeder versteckten Schicht, die angewandten Aktivierungs-, Initialisierungs- und Regularisierungsfunktionen sowie das Trainingsniveau. Die Struktur der Hyperparameter-Optimierung ist in der folgenden Abbildung dargestellt.

optimHP

Abb. 1. Struktur von Hyperparametern in einem neuronalen Netz und Möglichkeiten zu deren Optimierung

Es gibt drei Möglichkeiten zur Optimierung von Hyperparametern:

  1. Gittersuche
  2. Genetische Optimierung
  3. Gittersuche Genetische Suche Bayes'sche Optimierung

Im ersten Fall definieren wir für jeden Hyperparameter einen Vektor mit mehreren festen Werten. Dann trainieren wir das Modell mit caret::train() oder unserem eigenen Skript auf allen Kombinationen von Hyperparameterwerten. Danach wird das Modell mit der besten Klassifizierungsqualität ausgewählt und seine Parameter werden als optimal akzeptiert. Der Nachteil dieser Methode ist, dass wir durch die Festlegung eines Rasters von Werten wahrscheinlich das Optimum verfehlen.

Die zweite Methode nutzt die Möglichkeit der stochastischen Suche nach den besten Parametern mit Hilfe von genetischen Algorithmen. Wir haben indiesem Artikel bereits mehrere genetische Optimierungsalgorithmen im Detail besprochen. Deshalb werden wir sie nicht wiederholen.

Im dritten Fall wird der Bayes'sche Ansatz (Gaußsche Prozesse und IMS) verwendet, den wir in diesem Artikel testen werden. Wir werden das PaketrBayesianOptimization(Version 1.1.0) verwenden. Für die Theorie der verwendeten Methoden sieheJasper Snoek, Hugo Larochelle, Ryan P. Adams (2012) Practical Bayesian Optimization of Machine Learning Algorithms

Hyperparameter in neuronalen Netzen lassen sich im Allgemeinen in zwei Gruppen unterteilen: globale und lokale (Knoten). Zu den globalen Parametern gehören die Anzahl der versteckten Schichten, die Anzahl der Neuronen in jeder Schicht, das Trainingsniveau und das Drehmoment sowie die Initialisierungsgewichte der Neuronen. Zu den lokalen Parametern gehören der Ebenentyp, die Aktivierungsfunktion, Dropout/Dropconect und andere Regularisierungsparameter.

 

Im Allgemeinen wird empfohlen, wieder mit denselben Daten zu trainieren.

Ich habe hier ein paar manuelle Schulungen gemacht und bin etwas verwirrt. Ich hatte erwartet, dass die Fehlerreduzierung stabil sein würde, aber sie springt.

Selbst wiederholtes Training mit derselben Netzstruktur kann zu Ergebnissen führen, die um 3-5 % voneinander abweichen, was die korrekte Wahl der Struktur ebenfalls beeinträchtigen kann.

 

Können Sie mir andere Händler empfehlen, die mich schulen können? Ein Freund von mir hat mir eine Schulung empfohlen (von Polikarp Brekhunov - geändert von Artyom Trishkin), wer weiß, vielleicht gibt es auch andere Händler, die Schulungen anbieten?

 
elibrarius:

Im Allgemeinen wird empfohlen, wieder mit denselben Daten zu trainieren.

Ich habe hier ein paar manuelle Schulungen gemacht und bin etwas verwirrt. Ich hatte erwartet, dass die Fehlerreduzierung stabil sein würde, aber sie springt.

Sogar wiederholtes Training mit derselben Netzstruktur kann zu Ergebnissen führen, die um 3-5 % voneinander abweichen, was die richtige Wahl der Struktur ebenfalls beeinträchtigen kann.

So sollte es sein. Die anfängliche Initialisierung der Skalen erfolgt mit kleinen Werten von Zufallszahlen (abhängig von der Art der Initialisierung). Um reproduzierbare Ergebnisse zu erhalten, ist es notwendig, den GSF vor jedem Trainingslauf in den gleichen Zustand zu versetzen. Dafür ist set.seed() gedacht.

Viel Glück!

 
Vladimir Perervenko:

So sollte es auch sein. Die anfängliche Initialisierung der Gewichte erfolgt mit kleinen Zufallszahlenwerten (je nach Art der Initialisierung). Um reproduzierbare Ergebnisse zu erhalten, ist es notwendig, den GSF vor jedem Trainingslauf in den gleichen Zustand zu versetzen. Dafür ist set.seed() gedacht.

Viel Glück!

Ah, nun, ich habe in Darch RBM in 2 Epochen mit learnRate = 0.3 vortrainiert.

 
Vladimir Perervenko:

  • Bestimmung der optimalen DNN-Hyperparameter

Im zweiten Fall nutze ich die Möglichkeit der stochastischen Suche nach den besten Parametern unter Verwendung genetischer Algorithmen.

Für den Handel ist die Idee der Modelloptimierung (TS) höchst fragwürdig, denn jede Optimierung sucht nach Spitzen/Tiefs, und die brauchen wir nicht. Wir brauchen im Idealfall flache Plateaus, die so groß wie möglich sind. Diese Plateaus sollten eine bemerkenswerte Eigenschaft haben: Änderungen der Modellparameter sollten NICHT zur Umgehung des Plateaus führen.

Hier geht es um Optimierung.

Hinzu kommt das Problem der Stabilität der Modellparameter, die, wenn sie sich ändern, innerhalb eines recht engen (5 %) Konfidenzintervalls liegen. Ich habe den Eindruck, dass die Stabilität der Modellparameter daraus resultiert, dass sich die Leistung des Modells auf einem bestimmten Plateau befindet, und wenn wir beim Testen des Modells plötzlich ein sehr gutes Ergebnis erhalten, bedeutet dies, dass wir den Minimax-Punkt erreicht haben, wir haben einen instabilen Zustand erreicht, der in der Praxis nie eintreten wird, außerdem wird sich um diesen optimalen Punkt herum ein Stop-Out befinden.

PS.

Übrigens haben die Entwickler im Tester eine solche Möglichkeit vorgesehen, ein Plateau nach Farbe zu suchen. Ich persönlich verwende den Tester als Finishing-Tool und nehme Parameter, die sich auf ein Quadrat mit gleichfarbigen Quadraten drum herum beziehen. Dies ist ein klarer Ausdruck meines Konzepts eines Plateaus.

 
elibrarius:

Ah, nun, ich habe 2 Epochen Pre-Learning in Darch RBM mit learnRate = 0,3 durchgeführt.

In darch() gibt es standardmäßig einen Parameter seed = NULL. Setzen Sie ihn auf einen Zustand, zum Beispiel seed = 12345.

Dies ist ein kleiner learnRate-Wert. Beginnen Sie mit learnRate = 0,7, numEpochs = 10 für RBM und NN. Dies sind jedoch die Höchstwerte. Sie müssen für einen bestimmten Datensatz optimiert werden.

Viel Glück!

 
Vladimir Perervenko:
In darch() gibt es standardmäßig einen Parameter seed = NULL, den Sie auf einen bestimmten Wert setzen, z. B. seed = 12345.

Dies ist ein kleiner learnRate-Wert. Beginnen Sie mit learnRate = 0,7, numEpochs = 10 für RBM und NN. Dies sind jedoch die Höchstwerte. Sie müssen für einen bestimmten Datensatz optimiert werden.

Viel Glück!

Ich danke Ihnen! Ich werde es versuchen.
 
SanSanych Fomenko:

Für den Handel erscheint die Idee der Modelloptimierung (TS) höchst fragwürdig, denn jede Optimierung sucht nach Höchst- und Tiefstständen, und die brauchen wir nicht. Wir brauchen im Idealfall flache Plateaus, die so groß wie möglich sind. Diese Plateaus sollten eine bemerkenswerte Eigenschaft haben: Änderungen der Modellparameter sollten NICHT zur Umgehung des Plateaus führen.

Hier geht es um Optimierung.

Hinzu kommt das Problem der Stabilität der Modellparameter, die, wenn sie sich ändern, innerhalb eines recht engen (5 %) Vertrauensintervalls liegen. Ich habe den Eindruck, dass die Stabilität der Modellparameter daraus resultiert, dass sich die Leistung des Modells auf einem bestimmten Plateau befindet, und wenn wir beim Testen des Modells plötzlich ein sehr gutes Ergebnis erhalten, bedeutet dies, dass wir den Minimax-Punkt erreicht haben, wir haben einen instabilen Zustand erreicht, der in der Praxis nie eintreten wird, außerdem wird sich um diesen optimalen Punkt herum ein Stop-Out befinden.

PS.

Übrigens haben die Entwickler im Tester eine solche Möglichkeit vorgesehen, ein Plateau nach Farbe zu suchen. Ich persönlich verwende den Tester als Finishing-Tool und nehme Parameter, die sich auf ein Quadrat mit gleichfarbigen Quadraten drum herum beziehen. Dies ist ein klarer Ausdruck meines Konzepts des "Plateaus".

1. Von welcher Optimierung sprechen Sie? Welches Plateau? Welches Modell? Wenn es sich um ein neuronales Netz handelt, wäre es seltsam, das DNN nicht zu trainieren (Parameter zu optimieren), bevor man es einsetzt.

2. Welche Modellparameter(?) sollten stabil sein?

Ich verstehe Ihre Gedanken nicht.

Ich sprach von der Optimierung der Hyperparameter von DNN, die unbedingt und nicht im Tester durchgeführt werden muss.