Diskussion zum Artikel "Tiefe neuronale Netzwerke (Teil V). Bayes'sche Optimierung von DNN-Hyperparametern" - Seite 3

 
Vladimir Perervenko:

Bei der Bayes'schen Methode müssen Sie nicht nur mit der Anzahl der Durchgänge, sondern auch mit der Anzahl der Punkte spielen. Man muss nach einer schnelleren Option suchen. Dies ist sehr mühsam

Um es zu beschleunigen, fügen Sie den Parametern beim Aufruf von BayesianOptimisation hinzu

maxit = 1 #1 statt 100 - Anzahl der Wiederholungen für GP_fit für die Vorhersage der Hyperebene
Ich konnte keine Verbesserung mit 100 Wiederholungen im Vergleich zu 1 feststellen, also verwende ich jetzt 1.
D.h..

BayesianOptimization(все как у вас , maxit = 1)

maxit=1 über ... wird an GPfit:: GP_fit übergeben und die Optimierung wird 1 Mal statt 100 Mal durchgeführt.
Sie können auch Folgendes übergeben:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - aus 200*d die 80*d besten auswählen und 2*d Cluster bilden - wobei d die Anzahl der zu optimierenden Parameter ist.

Beschreibung dieser Parameter hier https://github.com/cran/GPfit/blob/master/R/GP_fit.R

Vladimir Perervenko:

PS. Wechseln Sie nicht zu TensorFlow? Es ist nur ein höheres Niveau.

Es scheint, dass ich mit Darch 30% im Training und 36% im Test erreiche. Ich werde den EA fertigstellen, ihn in Betrieb nehmen, und dann werde ich es vielleicht tun.
Obwohl Darch schlecht unterstützt wird, haben sie einige Dinge korrigiert und verbessert, aber im Januar wurde es von CRAN ins Archiv geschickt, weil Fehler nicht behoben wurden (es gab einen mit Fehlerauswertung im Trainingsmodus mit Validierung). Im Mai wurde Version 13 veröffentlicht, dann aber wieder auf Version 12 zurückgesetzt. Jetzt ist die 13. Version wieder aufgetaucht - offenbar ist sie fertiggestellt worden.
 
elibrarius:

Um die Dinge zu beschleunigen, fügen Sie den Parametern beim Aufruf von BayesianOptimisation

maxit = 1 #1 statt 100 - Anzahl der Wiederholungen für GP_fit für die Vorhersage der Hyperebene
Ich habe keine Verbesserung bei 100 Wiederholungen im Vergleich zu 1 festgestellt, also verwende ich 1.
D.h..

maxit=1 über ... wird an GPfit:: GP_fit übergeben und die Optimierung wird 1 Mal statt 100 Mal durchgeführt.
Sie können auch Folgendes übergeben:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - wähle 80*d am besten aus 200*d und bilde 2*d Cluster - wobei d die Anzahl der zu optimierenden Parameter ist

Ja, es scheint mit Darch 30% im Training und 36% im Test zu funktionieren. Ich werde den EA fertigstellen, ihn in Betrieb nehmen, und dann werde ich es vielleicht tun.
Obwohl Darch schlecht unterstützt wird, haben sie einige Dinge korrigiert und verbessert, aber im Januar wurde es von CRAN ins Archiv geschickt, weil Fehler nicht behoben wurden (es gab einen mit Fehlerschätzung im Trainingsmodus mit Validierung). Im Mai wurde Version 13 veröffentlicht, dann aber wieder auf Version 12 zurückgesetzt. Jetzt ist die 13. Version wieder aufgetaucht - offenbar haben sie sie fertiggestellt.

Vielen Dank für die Information. Ich werde es mit Ihren Parametern versuchen.

Ich habe sie schon lange nicht mehr auf Github besucht. Ich werde einen Vorschlag schreiben müssen. Das darch-Paket bietet GPU-Nutzung, aber sie haben das Paket, das sie dafür verwenden, aus CRAN entfernt (für 3.4.4). Und es wäre interessant, wie sich GPU auf Geschwindigkeit und Qualität auswirken würde.

Viel Glück

 

Eine weitere Bremse gibt es hier

https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R

Ich habe auch maxit = 1 anstelle von 100 eingestellt .

Da ... nicht übergeben werden kann, können Sie einfach Ihre Utility_Max-Funktion in R laden und die korrigierte Version verwenden.

 
elibrarius:

Ein weiterer Spasti hier

https://github.com/yanyachen/rBayesianOptimization/blob/master/R/Utility_Max.R

Ich habe auch maxit = 1 statt 100 eingestellt .

Da ... nicht übergeben werden kann, können Sie einfach Ihre Utility_Max-Funktion in R laden und die korrigierte Version verwenden.

Ich habe es an der Optimierung des neuronalen Netzes Ensemble aus dem PartVI-Artikel überprüft. Weder maxit noch control haben einen sichtbaren Einfluss auf die Berechnungszeit. Den größten Einfluss hat die Anzahl der Neuronen in der versteckten Schicht. Ich habe es so gelassen

 OPT_Res <- BayesianOptimization(fitnes, bounds = bonds,
                                  init_grid_dt = NULL, init_points = 20, 
                                  n_iter = 20, acq = "ucb", kappa = 2.576, 
                                  eps = 0.0, verbose = TRUE,
                                  maxit = 100, control = c(100, 50, 8))
elapsed = 14.42 Round = 1       numFeature = 9.0000     r = 7.0000      nh = 36.0000    fact = 9.0000   Value = 0.7530 
elapsed = 42.94 Round = 2       numFeature = 4.0000     r = 8.0000      nh = 46.0000    fact = 6.0000   Value = 0.7450 
elapsed = 9.50  Round = 3       numFeature = 11.0000    r = 5.0000      nh = 19.0000    fact = 5.0000   Value = 0.7580 
elapsed = 14.17 Round = 4       numFeature = 10.0000    r = 4.0000      nh = 35.0000    fact = 4.0000   Value = 0.7480 
elapsed = 12.36 Round = 5       numFeature = 8.0000     r = 4.0000      nh = 23.0000    fact = 6.0000   Value = 0.7450 
elapsed = 25.61 Round = 6       numFeature = 12.0000    r = 8.0000      nh = 44.0000    fact = 7.0000   Value = 0.7490 
elapsed = 8.03  Round = 7       numFeature = 12.0000    r = 9.0000      nh = 9.0000     fact = 2.0000   Value = 0.7470 
elapsed = 14.24 Round = 8       numFeature = 8.0000     r = 4.0000      nh = 45.0000    fact = 2.0000   Value = 0.7620 
elapsed = 9.05  Round = 9       numFeature = 7.0000     r = 8.0000      nh = 20.0000    fact = 10.0000  Value = 0.7390 
elapsed = 17.53 Round = 10      numFeature = 12.0000    r = 9.0000      nh = 20.0000    fact = 6.0000   Value = 0.7410 
elapsed = 4.77  Round = 11      numFeature = 9.0000     r = 2.0000      nh = 7.0000     fact = 2.0000   Value = 0.7570 
elapsed = 8.87  Round = 12      numFeature = 6.0000     r = 1.0000      nh = 40.0000    fact = 8.0000   Value = 0.7730 
elapsed = 14.16 Round = 13      numFeature = 8.0000     r = 6.0000      nh = 41.0000    fact = 10.0000  Value = 0.7390 
elapsed = 21.61 Round = 14      numFeature = 9.0000     r = 6.0000      nh = 47.0000    fact = 7.0000   Value = 0.7620 
elapsed = 5.14  Round = 15      numFeature = 13.0000    r = 3.0000      nh = 3.0000     fact = 5.0000   Value = 0.7260 
elapsed = 5.66  Round = 16      numFeature = 6.0000     r = 9.0000      nh = 1.0000     fact = 9.0000   Value = 0.7090 
elapsed = 7.26  Round = 17      numFeature = 9.0000     r = 2.0000      nh = 25.0000    fact = 1.0000   Value = 0.7550 
elapsed = 32.09 Round = 18      numFeature = 11.0000    r = 7.0000      nh = 38.0000    fact = 6.0000   Value = 0.7600 
elapsed = 17.18 Round = 19      numFeature = 5.0000     r = 3.0000      nh = 46.0000    fact = 6.0000   Value = 0.7500 
elapsed = 11.08 Round = 20      numFeature = 6.0000     r = 4.0000      nh = 20.0000    fact = 6.0000   Value = 0.7590 
elapsed = 4.47  Round = 21      numFeature = 6.0000     r = 2.0000      nh = 4.0000     fact = 2.0000   Value = 0.7390 
elapsed = 5.27  Round = 22      numFeature = 6.0000     r = 2.0000      nh = 21.0000    fact = 10.0000  Value = 0.7520 
elapsed = 7.96  Round = 23      numFeature = 7.0000     r = 1.0000      nh = 41.0000    fact = 7.0000   Value = 0.7730 
elapsed = 12.31 Round = 24      numFeature = 7.0000     r = 3.0000      nh = 41.0000    fact = 3.0000   Value = 0.7730 
elapsed = 7.64  Round = 25      numFeature = 8.0000     r = 4.0000      nh = 16.0000    fact = 7.0000   Value = 0.7420 
elapsed = 6.24  Round = 26      numFeature = 13.0000    r = 5.0000      nh = 6.0000     fact = 1.0000   Value = 0.7600 
elapsed = 8.41  Round = 27      numFeature = 11.0000    r = 8.0000      nh = 8.0000     fact = 7.0000   Value = 0.7420 
elapsed = 8.48  Round = 28      numFeature = 6.0000     r = 7.0000      nh = 15.0000    fact = 2.0000   Value = 0.7580 
elapsed = 10.11 Round = 29      numFeature = 12.0000    r = 6.0000      nh = 17.0000    fact = 4.0000   Value = 0.7310 
elapsed = 6.03  Round = 30      numFeature = 8.0000     r = 3.0000      nh = 12.0000    fact = 1.0000   Value = 0.7540 
elapsed = 8.58  Round = 31      numFeature = 13.0000    r = 5.0000      nh = 18.0000    fact = 2.0000   Value = 0.7300 
elapsed = 6.78  Round = 32      numFeature = 13.0000    r = 2.0000      nh = 15.0000    fact = 8.0000   Value = 0.7320 
elapsed = 9.54  Round = 33      numFeature = 10.0000    r = 3.0000      nh = 37.0000    fact = 9.0000   Value = 0.7420 
elapsed = 8.19  Round = 34      numFeature = 6.0000     r = 1.0000      nh = 42.0000    fact = 3.0000   Value = 0.7630 
elapsed = 12.34 Round = 35      numFeature = 7.0000     r = 2.0000      nh = 43.0000    fact = 8.0000   Value = 0.7570 
elapsed = 20.47 Round = 36      numFeature = 7.0000     r = 8.0000      nh = 39.0000    fact = 2.0000   Value = 0.7670 
elapsed = 11.51 Round = 37      numFeature = 5.0000     r = 9.0000      nh = 18.0000    fact = 3.0000   Value = 0.7540 
elapsed = 32.71 Round = 38      numFeature = 7.0000     r = 7.0000      nh = 40.0000    fact = 6.0000   Value = 0.7540 
elapsed = 28.33 Round = 39      numFeature = 7.0000     r = 9.0000      nh = 38.0000    fact = 5.0000   Value = 0.7550 
elapsed = 22.87 Round = 40      numFeature = 12.0000    r = 6.0000      nh = 48.0000    fact = 3.0000   Value = 0.7580 

 Best Parameters Found: 
Round = 12      numFeature = 6.0000     r = 1.0000      nh = 40.0000    fact = 8.0000   Value = 0.7730                                  maxit = 100, control = c(100, 50, 8))

Bester 10

OPT_Res %$% History %>% dp$arrange(desc(Value)) %>% head(10) %>%
    dp$select(-Round) -> best.init
  best.init
   numFeature r nh fact Value
1           6 1 40    8 0.773
2           7 1 41    7 0.773
3           7 3 41    3 0.773
4           7 8 39    2 0.767
5           6 1 42    3 0.763
6           8 4 45    2 0.762
7           9 6 47    7 0.762
8          11 7 38    6 0.760
9          13 5  6    1 0.760
10          6 4 20    6 0.759

Wert - durchschnittlicher F1. Keine schlechte Leistung.

Um die Berechnungen zu beschleunigen, müssen wir einige Funktionen des Pakets umschreiben. Als erstes ersetzen wir alle ncol(), nrow(), von denen es eine Menge gibt, durch dim()[1], dim()[2]. Diese werden zigmal schneller ausgeführt. Und wahrscheinlich, da es nur Matrix-Operationen sind, verwenden Sie GPU (gpuR-Paket). Ich werde es nicht selbst machen können, kann ich es dem Entwickler vorschlagen?

Viel Glück!

 
Vladimir Perervenko:

Ich habe es mit der Optimierung des neuronalen Netzes aus dem PartVI-Papier überprüft. Weder maxit noch control haben eine sichtbare Ausführungszeit. Den größten Einfluss hat die Anzahl der Neuronen in der versteckten Schicht. Ich habe es so gelassen

Am besten 10

Wert - durchschnittlicher F1. Keine schlechte Leistung.

Um die Berechnungen zu beschleunigen, müssen wir einige Funktionen des Pakets umschreiben. Als erstes müssen alle ncol(), nrow() Funktionen durch dim()[1], dim()[2] ersetzt werden. Sie werden zigmal schneller ausgeführt. Und wahrscheinlich, da es nur Matrix-Operationen gibt, verwenden Sie GPU (gpuR-Paket). Ich werde es nicht selbst tun können, kann ich es dem Entwickler vorschlagen?

Viel Glück!

Optimieren Sie einfach ein paar Parameter, ich habe 20 Stück optimiert, und wenn die bekannten Punkte zu 20-40 Stück werden, dann dauert die Berechnung von GPfit nur ein paar Minuten, unter solchen Bedingungen werden Sie eine Beschleunigung sehen.

Und die Anzahl der Neuronen beeinflusst nur die Berechnungszeit des NS selbst.

 
elibrarius:

Optimieren Sie nur wenige Parameter, ich habe 20 Stück optimiert, und wenn aus bekannten Punkten 20-40 Stück werden, dann dauert die Berechnung von GPfit nur zehn Minuten, unter solchen Bedingungen werden Sie die Beschleunigung sehen.

Und die Anzahl der Neuronen beeinflusst nur die Berechnungszeit des NS selbst.

Ich denke, ja.

 
Wie genau verwende ich es, wie organisiere ich mein Handelssystem in ein neuronales Netzwerk oder einen komplexeren EA für den automatisierten Handel?
[Gelöscht]  
MetaQuotes Software Corp.:

Neuer Artikel Tiefe Neuronale Netze (Teil V). Bayesianische Optimierung von DNN-Hyperparametern ist veröffentlicht worden:

Autor: Vladimir Perervenko

Hallo Vladimir,
Ich arbeite an den Derivaten des MACD für android mobile und brauche Hilfe, um einen genauen Algorithmus auf die Eigenschaften Parameter fill-in Form zu schreiben . würden Sie in der Lage sein, wie die Level-Einstellungen positioniert werden können und wenn ich die Kommunikation fortsetzen kann .
Danke ,
Paul