Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 609

 
Sergey Chalyshev:


Tira tu red a la basura si reacciona así a los valores de gpsh. Una red normal funciona y aprende a cualquier valor inicial, incluso a cero.


No tiene sentido.
 

  • Determinación de los hiperparámetros óptimos de la DNN

Normalmente, los hiperparámetros de una red neuronal incluyen el número de capas ocultas, el número de neuronas en cada capa oculta, las funciones de activación, inicialización y regularización aplicadas, y el nivel de entrenamiento. La estructura de la optimización de los hiperparámetros se muestra en la siguiente figura.

optimHP

Fig. 1. Estructura de los hiperparámetros en una red neuronal y formas de optimizarla

Hay tres formas de optimizar los hiperparámetros:

  1. Búsqueda en la red
  2. Optimización genética
  3. Búsqueda en cuadrícula Búsqueda genética Optimización bayesiana

En el primer caso, para cada hiperparámetro definimos un vector con varios valores fijos. Luego, usando caret::train() o nuestro propio script, entrenamos el modelo en todas las combinaciones de valores de hiperparámetros. Después se selecciona el modelo con la mejor métrica de calidad de clasificación y sus parámetros se aceptan como óptimos. El inconveniente de este método es que, al establecer una cuadrícula de valores, es probable que no encontremos el óptimo.

El segundo método utiliza la posibilidad de búsqueda estocástica de los mejores parámetros con el uso de algoritmos genéticos. Eneste artículo ya hemos hablado en detalle de varios algoritmos de optimización genética. Por lo tanto, no los repetiremos.

En el tercer caso se utiliza el enfoque bayesiano (procesos gaussianos e IMS), que probaremos en este artículo. Utilizaremos el paqueterBayesianOptimization(versión 1.1.0). Para la teoría de los métodos utilizados, véaseJasper Snoek, Hugo Larochelle, Ryan P. Adams (2012) Practical Bayesian Optimization of Machine Learning Algorithms

Los hiperparámetros de las redes neuronales en general pueden dividirse en dos grupos: globales y locales (de nodo). Los globales incluyen el número de capas ocultas, el número de neuronas en cada capa, el nivel de entrenamiento y par, los pesos de inicialización de las neuronas. Los locales incluyen el tipo de capa, la función de activación, el dropout/dropconect y otros parámetros de regularización.

 

En general, se recomienda volver a entrenar mucho con los mismos datos.

He hecho algunos entrenamientos manuales aquí y estoy un poco confundido. Esperaba que la reducción de errores fuera estable, pero salta.

Incluso un entrenamiento repetido sobre la misma estructura de red puede dar resultados con una diferencia del 3-5%, lo que también puede interferir en la elección correcta de la estructura.

 

¿Pueden sugerirme algún otro comerciante que pueda formarme? Un conocido me aconsejó que me formara (de Polikarp Brekhunov - cambiado por Artyom Trishkin), quién sabe, quizás haya otros comerciantes que ofrezcan cursos de formación.

 
elibrarius:

En general, se recomienda volver a entrenar mucho con los mismos datos.

He hecho algunos entrenamientos manuales aquí y estoy un poco confundido. Esperaba que la reducción de errores fuera estable, pero salta.

Incluso un entrenamiento repetido con la misma estructura de red puede dar resultados con un 3-5% de diferencia, lo que también puede interferir en la elección correcta de la estructura.

Así es como debe ser. La inicialización de las balanzas se realiza con pequeños valores de números aleatorios (depende del tipo de inicialización). Para obtener resultados reproducibles, es necesario poner el GSF en el mismo estado antes de cada entrenamiento. Para esto sirve set.seed().

Buena suerte

 
Vladimir Perervenko:

Así es como debe ser. La inicialización de los pesos se realiza con pequeños valores numéricos aleatorios (depende del tipo de inicialización). Para obtener resultados reproducibles, es necesario poner el GSF en el mismo estado antes de cada entrenamiento. Para eso está set.seed().

Buena suerte,

Ah, bueno, yo estaba pre-entrenando en Darch RBM en 2 epochs con learnRate = 0.3.

 
Vladimir Perervenko:

  • Determinación de los hiperparámetros óptimos de la DNN

En el segundo caso utilizo la posibilidad de búsqueda estocástica de los mejores parámetros, utilizando algoritmos genéticos.

Para el comercio, la idea de la optimización del modelo (TS) es muy cuestionable, porque cualquier optimización busca los picos / valles, y no los necesitamos. Necesitamos, idealmente, mesetas planas que sean lo más grandes posible. Estas mesetas deberían tener una propiedad notable: los cambios en los parámetros del modelo NO deberían conducir a la evasión de la meseta.

Se trata de la optimización.

De hecho, aquí habría que añadir también el problema de la estabilidad de los parámetros del modelo que, si cambian, están dentro de un intervalo de confianza bastante estrecho (5%). Me parece que la estabilidad de los parámetros del modelo resulta de la situación en la que el rendimiento del modelo se encuentra en una cierta meseta y si de repente obtenemos un resultado muy bueno mientras probamos el modelo significa que hemos alcanzado el punto minimax, hemos conseguido una condición inestable que nunca se producirá en la práctica, además un stop-out se situará alrededor de este punto óptimo.

PS.

Por cierto, en el probador los desarrolladores han proporcionado esa posibilidad de buscar una meseta por colores. Personalmente, utilizo el probador como herramienta de acabado y tomo parámetros que se refieren a un cuadrado con cuadrados del mismo color alrededor. Esta es una clara expresión de mi concepto de meseta.

 
elibrarius:

Ah, bueno, he estado haciendo 2 epochs de pre-aprendizaje en Darch RBM con learnRate = 0.3.

Dentro de darch() hay un parámetro semilla = NULL por defecto. Establézcalo a algún estado, por ejemplo semilla = 12345.

Este es un pequeño valor de learnRate. Comienza con learnRate = 0.7, numEpochs = 10 para RBM y NN. Pero estos son datos del techo. Hay que optimizar para un conjunto de datos específico.

Buena suerte

 
Vladimir Perervenko:
Hay un parámetro seed = NULL dentro de darch() por defecto. Ponerlo en algún estado, por ejemplo seed = 12345.

Este es un pequeño valor de learnRate. Comienza con learnRate = 0.7, numEpochs = 10 para RBM y NN. Pero estos son datos del techo. Hay que optimizar para un conjunto de datos específico.

Buena suerte

Gracias. Lo probaré.
 
SanSanych Fomenko:

Para el comercio, la idea de la optimización del modelo (TS) parece muy cuestionable, porque cualquier optimización está buscando picos / valles, y no los necesitamos. Necesitamos, idealmente, mesetas planas, tan grandes como sea posible. Estas mesetas deberían tener una propiedad notable: los cambios en los parámetros del modelo NO deberían conducir a la evasión de la meseta.

Se trata de la optimización.

De hecho, aquí habría que añadir también el problema de la estabilidad de los parámetros del modelo que, si cambian, están dentro de un intervalo de confianza bastante estrecho (5%). Me parece que la estabilidad de los parámetros del modelo resulta de la situación en la que el rendimiento del modelo se encuentra en una cierta meseta y si de repente obtenemos un resultado muy bueno mientras probamos el modelo significa que hemos alcanzado el punto minimax, hemos conseguido una condición inestable que nunca se producirá en la práctica, además un stop-out se situará alrededor de este punto óptimo.

PS.

Por cierto, en el probador los desarrolladores han proporcionado esa posibilidad de buscar una meseta por colores. Personalmente, utilizo el probador como herramienta de acabado y tomo parámetros que se refieren a un cuadrado con cuadrados del mismo color alrededor. Esta es una clara expresión de mi concepto de meseta.

1. ¿De qué optimización habla? ¿Qué meseta? ¿Qué modelo? Si se trata de una red neuronal, sería extraño no entrenar (optimizar los parámetros) la DNN antes de utilizarla.

2. ¿Qué parámetros del modelo (?) deben ser estables?

No entiendo tus pensamientos.

Me refería a la optimización de los hiperparámetros de DNN, que debería hacerse necesariamente y no en el probador.