Discusión sobre el artículo "Redes neuronales: así de sencillo (Parte 6): Experimentos con la tasa de aprendizaje de la red neuronal"

 

Artículo publicado Redes neuronales: así de sencillo (Parte 6): Experimentos con la tasa de aprendizaje de la red neuronal:

Ya hemos hablado sobre algunos tipos de redes neuronales y su implementación. En todos los casos, hemos usado el método de descenso de gradiente para entrenar las redes neuronales, lo cual implica la elección de una tasa de aprendizaje. En este artículo, queremos mostrar con ejemplos lo importante que resulta elegir correctamente la tasa de aprendizaje, y también su impacto en el entrenamiento de una red neuronal.

El tercer experimento supone una ligera desviación respecto al tema principal del artículo. Su idea surgió durante los dos primeros experimentos. Entonces, decidimos compartirlo con el lector. Al observar el entrenamiento de la red neuronal, vimos que la probabilidad de omitir un fractal oscila alrededor del 60-70%, y rara vez cae por debajo del 50%. La probabilidad de aparición de un fractal, ya sea de compra o venta, se encuentra alrededor del 20-30%. Esto resulta bastante natural, ya que hay muchos menos fractales en el gráfico que velas dentro de las tendencias. Por consiguiente, nuestra red neuronal se sobreentrena y obtenemos los resultados anteriores. Casi el 100% de los fractales se omiten y solo en raras ocasiones se pueden detectar.  

Entrenamiento del asesor con un ritmo de aprendizaje de 0.01

Para solucionar este problema, hemos decidido compensar ligeramente el desequilibrio de la muestra y, ante la inexistencia de un fractal en el valor de referencia, hemos indicado 0.5 en lugar de 1 al entrenar la red.

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

Este paso ha dado sus frutos. Tras iniciar el asesor experto con una tasa de aprendizaje de 0.01 y una matriz de pesos tras los experimentos previos y después de 5 épocas de entrenamiento, vemos una estabilización del error en torno al 0.34. En este caso, además, la proporción de fractales omitidos disminuyó al 51%, y los "aciertos" aumentaron en un 9,88%. En el gráfico, podemos ver que el asesor emite señales en grupos, definiendo así algunas zonas. Está claro que la idea requiere de elaboración y pruebas adicionales, pero los resultados obtenidos indican la consistencia de este enfoque. 

Aprendizaje con 0.5 para la ausencia de fractal

Autor: Dmitriy Gizlyk

 
Sólo pasaba por aquí)))) ¿No te confunde el hecho de que el error crezca a medida que aprendes???? debería ser al revés)))))
 
Александр Алексеевич:
Sólo pasaba por aquí)))) ¿No te confunde el hecho de que el error crezca con el entrenamiento? debería ser al revés)))))
El error crece durante las primeras pasadas tras la inicialización con valores aleatorios. Después de varias pasadas empieza a disminuir. Esto puede deberse a la dispersión caótica de los valores iniciales con respecto al nivel de la función objetivo. Además, se puede observar un ligero crecimiento del error en el contexto de la tendencia general a su disminución, que se explica por la falta de suavidad de la función objetivo.
 

Hola Dmitriy,


Me gusta mucho esta serie, como una herramienta de aprendizaje para mí para las redes neuronales. Yo uso MT4, incluyendo la búsqueda de una implementación de SymbolInfo. Supongo que ahí está el problema, ya que se ejecuta pero no hace nada durante el aprendizaje. ¿Tendría alguna idea de lo que sería necesario para que se ejecute en MT4? Gracias.

 

Buenas tardes.

Me puedes decir, ¿entrenas NS sólo con el precio de cierre? ¿O utilizáis también el volumen de negociación en una determinada MT?

 
Oleg Mazurenko:

¡Buenas tardes!

Me puedes decir, ¿entrenas NS sólo con el precio de cierre? ¿O utilizáis también el volumen de negociación en una determinada MT?

Ahora bien, en el ejemplo descrito, la red neuronal recibe apertura, cierre, máximo, mínimo, volumen, hora y lecturas de 4 indicadores. El proceso de transferencia de los datos iniciales a la red neuronal se describe en el enlace.

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

Para cualquiera que venga después de mí: tenga en cuenta el primer ejemplo Fractal_OCL1.mql no compila

Necesitas cambiar

//#define lr 0. 1

double eta=0.1;

 
El principal problema no está en seleccionar el coeficiente de entrenamiento, después de todo, Tensor Flo tiene una función que lo reduce gradualmente durante el entrenamiento hasta un valor especificado, seleccionando el óptimo. El problema es que la red neuronal no encuentra patrones estables, no tiene nada a lo que agarrarse. He utilizado modelos que van desde las capas totalmente conectadas hasta las novedosas ResNet y Attention. El efecto no supera el 60%, y esto es en un área estrecha, en general, todo se desliza al 50/50. Con las redes neuronales hay que pensar en lo que se podría analizar en general. Las meras matrices de precios y volúmenes, en cualquier combinación, no dan resultados.
 
eccocom #:
El principal problema no está en seleccionar el coeficiente de entrenamiento, después de todo, Tensor Flo tiene una función que lo reduce gradualmente durante el entrenamiento hasta un valor especificado, seleccionando el óptimo. El problema es que la red neuronal no encuentra patrones estables, no tiene nada a lo que agarrarse. He utilizado modelos que van desde las capas totalmente conectadas hasta las novedosas ResNet y Attention. El efecto no supera el 60%, y esto es en un área estrecha, en general, todo se desliza al 50/50. Con las redes neuronales hay que pensar en lo que se podría analizar en general. Las meras matrices de precios y volúmenes, en cualquier combinación, no dan resultados.

Hay que intentar analizar la correlación entre los datos iniciales y el resultado objetivo.

 

"...en ausencia de fractal en el valor de referencia, al entrenar la red, especifiqué 0,5 en lugar de 1".

¿Por qué exactamente 0,5, de dónde ha salido esta cifra?

 
Gexon entrenar la red especificado 0,5 en lugar de 1".

¿Por qué exactamente 0,5, de dónde viene esta cifra?

Durante el entrenamiento, el modelo aprende la distribución de probabilidad de cada uno de los 3 eventos. Como la probabilidad de ausencia del fractal es mucho mayor que la probabilidad de su aparición, la subestimamos artificialmente. Especificamos 0,5, porque en este valor llegamos aproximadamente al mismo nivel de probabilidades máximas de los sucesos. Y se pueden comparar.
Estoy de acuerdo en que este enfoque es muy controvertido y viene dictado por las observaciones de la muestra de entrenamiento.