Discusión sobre el artículo "Neuroredes profundas (Parte V). Optimización bayesiana de los hiperparámetros de las DNN" - página 3

 
Vladimir Perervenko:

Para el Bayesiano, hay que jugar no sólo con el número de pases, sino también con el número de puntos. Hay que buscar una opción más rápida. Esto es muy tedioso

Para acelerarlo, añade a los parámetros al llamar a BayesianOptimisation

maxit = 1 #1 en lugar de 100 - número de repeticiones para GP_fit para la predicción de hiperplanos
No noté ninguna mejora con 100 repeticiones en comparación con 1, así que ahora uso 1.
Ie.

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

maxit=1 vía ... se pasará a GPfit:: GP_fit y la optimización se ejecutará 1 vez en lugar de 100.
También puedes pasar:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - de 200*d selecciona 80*d mejores y construye 2*d clusters - donde d es el número de parámetros a optimizar.

Descripción de estos parámetros aquí https://github.com/cran/GPfit/blob/master/R/GP_fit.R

Vladimir Perervenko:

PS. ¿No cambias a TensorFlow? Es sólo un nivel superior.

Parece que con Darch 30% en el entrenamiento y 36% en el test lo consigo. Terminaré el EA, lo pondré a trabajar y luego a lo mejor lo hago.
Aunque Darch tiene poco soporte, han corregido y mejorado algunas cosas, pero en enero lo mandaron de CRAN al archivo por no arreglar errores (había uno con error de evaluación en modo entrenamiento con validación). En mayo sacaron la versión 13, pero luego volvieron a la 12. Ahora la versión 13 ha aparecido de nuevo - aparentemente ha sido terminada.
 
elibrarius:

Para acelerar las cosas, añada a los parámetros al llamar a BayesianOptimisation

maxit = 1 #1 en lugar de 100 - número de repeticiones para GP_fit para la predicción del hiperplano
No noté ninguna mejora en 100 repeticiones en comparación con 1, así que uso 1.
Ie.

maxit=1 vía ... se pasará a GPfit:: GP_fit y la optimización se ejecutará 1 vez en lugar de 100.
También puedes pasar:
control = c(20*d, 10*d, 2*d);#default - control = c(200*d, 80*d, 2*d) - elige 80*d mejor de 200*d y construye 2*d clusters - donde d es el número de parámetros a optimizar

Sí, parece que funciona con Darch 30% en entrenamiento y 36% en test. Terminaré el EA, lo pondré a trabajar, y entonces quizás lo haga.
Aunque Darch tiene poco soporte, han corregido y mejorado algunas cosas, pero en enero lo mandaron de CRAN al archivo por no corregir errores (había uno con la estimación de errores en modo entrenamiento con validación). En mayo sacaron la versión 13, pero luego volvieron a la 12. Ahora la versión 13 ha aparecido de nuevo - aparentemente la han terminado.

Gracias por la información. Probaré con tus parámetros.

Hace tiempo que no los visito en Github. Tendré que escribir una propuesta. El paquete darch proporciona el uso de GPU, pero quitaron el paquete que usan para esto de CRAN (para 3.4.4). Y sería interesante ver cómo afectaría la GPU a la velocidad y la calidad.

Suerte

 

Hay otro freno aquí

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

También puse maxit = 1 en lugar de 100.

A través de ... no se puede pasar, puede simplemente cargar su función Utility_Max en R y utilizar la versión corregida.

 
elibrarius:

Otro retrasado aquí

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

También puse maxit = 1 en lugar de 100.

A través de ... no se puede pasar, puede simplemente cargar su función Utility_Max en R y utilizar la versión corregida.

Lo he comprobado en la optimización del conjunto de redes neuronales del artículo PartVI. Ni maxit ni control tiene un efecto visible en el tiempo de computación. La mayor influencia es el número de neuronas en la capa oculta. Lo dejé así

 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))

Mejor 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

Valor - F1 promedio. No es un mal rendimiento.

Para acelerar los cálculos, tenemos que reescribir algunas funciones del paquete. Lo primero es sustituir todas las funciones ncol(), nrow(), que son muchas, por dim()[1], dim()[2]. Se ejecutan decenas de veces más rápido. Y probablemente, ya que sólo hay operaciones matriciales, usar la GPU (paquete gpuR). No voy a ser capaz de hacerlo yo mismo, ¿puedo sugerir al desarrollador?

Suerte

 
Vladimir Perervenko:

Lo he comprobado en la optimización del conjunto de redes neuronales del documento PartVI. Ni maxit ni control tienen un tiempo de ejecución visible. La mayor influencia es el número de neuronas en la capa oculta. Lo dejé así

Mejor 10

Valor - F1 medio. No es una mala actuación.

Para acelerar los cálculos, tenemos que reescribir algunas funciones del paquete. Lo primero es sustituir todas las funciones ncol(), nrow() por dim()[1], dim()[2]. Se ejecutan decenas de veces más rápido. Y probablemente, ya que sólo hay operaciones matriciales, usar la GPU (paquete gpuR). No podré hacerlo yo mismo, ¿puedo sugerírselo al desarrollador?

Suerte

Sólo optimizar algunos parámetros, he optimizado 20 piezas, y cuando los puntos conocidos se convierten en 20-40 piezas, a continuación, el cálculo de sólo GPfit tomó decenas de minutos, en tales condiciones, verá la aceleración.

Y el número de neuronas afecta sólo el tiempo de cálculo de la propia NS.

 
elibrarius:

Sólo optimizar algunos parámetros, he optimizado 20 piezas, y cuando los puntos conocidos se convierten en 20-40 piezas, a continuación, el cálculo de sólo GPfit tomó decenas de minutos, en tales condiciones se verá la aceleración.

Y el número de neuronas afecta sólo el tiempo de cálculo de la propia NS.

Supongo que sí.

 
¿Cómo exactamente lo uso, ¿cómo puedo organizar mi sistema de comercio en una red neuronal, así o un comercio automatizado EA más complejo
[Eliminado]  
MetaQuotes Software Corp.:

Nuevo artículo Deep Neural Networks (Part V). Bayesian optimization of DNN hyperparameters ha sido publicado:

Autor: Vladimir Perervenko

Hola Vladimir,
Estoy trabajando en los derivados de la MACD para móviles android y estoy necesitando ayuda para escribir un algoritmo preciso en el formulario de llenado de parámetros de propiedades . sería capaz de incluir cómo los ajustes de nivel se puede colocar y si puedo continuar las comunicaciones .
Gracias ,
Paul