Discusión sobre el artículo "Redes neuronales: así de sencillo (Parte 2): Entrenamiento y prueba de la red"

 

Artículo publicado Redes neuronales: así de sencillo (Parte 2): Entrenamiento y prueba de la red:

En el presente artículo, proseguiremos nuestro estudio de las redes neuronales, iniciado en el artículo anterior, y analizaremos un ejemplo de uso en los asesores de la clase CNet que hemos creado. Asimismo, analizaremos dos modelos de red neuronal que han mostrado resultados semejantes tanto en su tiempo de entrenamiento, como en la precisión de sus predicciones.

La primera época depende al máximo de los pesos de la red neuronal elegidos al azar en la etapa inicial.

Tras 35 épocas de entrenamiento, la brecha en las estadísticas se amplió levemente a favor del modelo de regresión de la red neuronal:

Índice Red neuronal de regresión Red neuronal de clasificación
Error medio cuadrático 0.68 0.78
Porcentaje de "acierto" 12.68% 11.22%
Fractales "omitidos" 20.22% 24.65%

Resultado de la 35ª época de entrenamiento de la red neuronal de regresión (1 neurona de entrada) Resultado de la 35ª época de entrenamiento de la red neuronal de clasificación (3 neuronas de entrada)

Los resultados de la simulación muestran que ambas variantes de organización de la red neuronal ofrecen resultados semejantes tanto en su tiempo de entrenamiento, como en la precisión de sus predicciones. Asimismo, los indicadores obtenidos muestran la necesidad de gastar tiempo y recursos adicionales para el entrenamiento. Los lectores que deseen analizar la dinámica de aprendizaje de las redes neuronales, podrán estudiar las capturas de pantalla de cada época de entrenamiento en el archivo adjunto.

Autor: Dmitriy Gizlyk

 

Este artículo es interesante. Ni siquiera he intentado mirar a las redes neuronales antes, creyendo que son un "bosque oscuro" y todo lo que leí sobre este tema antes me repugnaba por la abundancia de palabras incomprensibles, pero en este artículo, de hecho, la teoría es bastante simple y comprensible, ¡gracias al autor por ello!

Y me gustaría aclarar esta frase:"Ambos EAs mostraron resultados similares con una tasa de acierto de poco más del 6%." ¿Estoy en lo cierto al entender que después de la primera "pasada" de entrenamiento, el pronóstico de la red neuronal se justificó sólo en un 6%.
Y después de 35 épocas de entrenamiento - sólo el 12% ???

Un resultado tan bajo no motiva a estudiar el tema más a fondo.

¿Cuáles son los métodos para mejorar la precisión de la predicción?

 

Buenas tardes, Dimitri.

El tema es muy interesante y necesario. Gracias por estos artículos).

1. Tengo una pregunta sobre el código del método Traine(... ):

            TempData.Clear();
            bool sell=(High.GetData(i+2)<High.GetData(i+1) && High.GetData(i)<High.GetData(i+1));
            
            //в строчке ниже скорее всего не верно определяется Low фрактал  
            bool buy=(Low.GetData(i+2)<Low.GetData(i+1) && Low.GetData(i)<Low.GetData(i+1));
           
            //знаки сравнения нужно поменять наоборот
            buy=(Low.GetData(i+2)>Low.GetData(i+1) && Low.GetData(i)>Low.GetData(i+1));/

Cuando ejecuté la versión modificada en el entrenamiento los resultados mejoraron:

Ya en epoch 8 la precisión fue de 16,98% contra la antigua variante en la misma epoch 10,87%


2. ¿Por qué la red neuronal multicapa tiene un % de precisión tan bajo, no llega al 50%?

 
Alexandr Ishkov:

Buenas tardes, Dimitri.

El tema es muy interesante y necesario. Gracias por estos artículos).

1. Tengo una pregunta sobre el código del método Traine(... ):

Cuando ejecuté la versión modificada en el entrenamiento los resultados mejoraron:

Ya en epoch 8 la precisión fue de 16,98% frente a la antigua variante en la misma epoch 10,87%.

Gracias por el comentario, Alexander. Un desafortunado error de copypaste.

 
Alexandr Ishkov:

Buenas tardes, Dimitri.

2. ¿Por qué la red neuronal multicapa tiene un % de precisión tan bajo, no llega al 50%?

Escribí en el primer artículo que tomé indicadores aleatorios de los estándar con parámetros estándar. Una red neuronal es una buena herramienta, pero no algo sobrenatural. Busca patrones donde los hay. Pero si no hay patrones en los datos brutos, no los encontrará por sí sola. Dar exactamente con un fractal es una tarea bastante difícil y, para ser sincero, no esperaba dar con un resultado exacto. Pero lo que conseguí da pie para seguir trabajando.

 
Dmitriy Gizlyk:

Gracias por el comentario, Alexander. Un desafortunado error de copypaste.

Suele ocurrir)

Dmitriy Gizlyk:

En el primer artículo escribí que tomé indicadores aleatorios de los estándar con parámetros estándar. Una red neuronal es una buena herramienta, pero no algo sobrenatural. Busca patrones donde los hay. Pero si no hay patrones en los datos brutos, no se le ocurrirán por sí sola. Dar exactamente con un fractal es una tarea bastante difícil y, para ser sincero, no esperaba dar con un resultado exacto. Pero lo que conseguí da pie para seguir trabajando.

Tiene sentido).

Gracias, tu trabajo es genial en cualquier caso )

 

Dmitry, ¡buenas tardes!

Muy interesante la serie de artículos sobre redes neuronales. En este momento estoy experimentando con diferentes conjuntos de indicadores y tareas para la red. Decidí establecer una tarea para la red para determinar la probabilidad de ocurrencia de la siguiente barra, ya sea con el nivel Hight mayor que el nivel Open de la barra actual en 100 puntos, o con el nivel Low menor que el nivel Open de la barra actual en 100 puntos.

         if(add_loop && i<(int)(bars-MathMax(HistoryBars,0)-1) && i>1 && Time.GetData(i)>dtStudied && dPrevSignal!=-2)
           {
            TempData.Clear();
            double DiffMin=100;
            double DiffLow=Open.GetData(i+1)-Low.GetData(i);
            double DiffHigh=High.GetData(i)-Open.GetData(i+1);
            bool sell=(DiffLow>=DiffMin);
            bool buy=(DiffHigh>=DiffMin);
            TempData.Add((double)buy);
            TempData.Add((double)sell);
            TempData.Add((double)(!buy && !sell));
            Net.backProp(TempData);
	    ...
           }

Al probar el Asesor Experto, las etiquetas de los fractales predichos se muestran en el gráfico, pero la estadística de fractales predichos correctamente y no encontrados no se actualiza y siempre es igual a 0,00%. ¿Puede indicarme el error que cometí?

        if(DoubleToSignal(dPrevSignal)!=Undefine)
              {
               if(DoubleToSignal(dPrevSignal)==DoubleToSignal(TempData.At(0)))
                  dForecast+=(100-dForecast)/Net.recentAverageSmoothingFactor;
               else
                  dForecast-=dForecast/Net.recentAverageSmoothingFactor;
               dUndefine-=dUndefine/Net.recentAverageSmoothingFactor;
              }
            else
              {
               if(sell || buy)
                  dUndefine+=(100-dUndefine)/Net.recentAverageSmoothingFactor;
              }
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями -  вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых...
 
altec3:

Dimitri, ¡buenas tardes!

Muy interesante la serie de artículos sobre redes neuronales. En este momento estoy experimentando con diferentes conjuntos de indicadores y tareas para la red. Decidí establecer una tarea para la red para determinar la probabilidad de ocurrencia de la siguiente barra, ya sea con el nivel Hight mayor que el nivel de apertura de la barra actual en 100 puntos, o con el nivel Low menor que el nivel de apertura de la barra actual en 100 puntos.

Al probar el Asesor Experto, las etiquetas de los fractales predichos se muestran en el gráfico, pero la estadística de fractales predichos correctamente y no encontrados no se actualiza y siempre es igual a 0,00%. ¿Puede indicarme el error que cometí?

Buenas tardes,
has especificado Diff=100, por lo que tengo entendido es en pips. Y la diferencia se calcula por precio. Es decir, para EURUSD se calcula como 1,16715-1,15615=0,01. Como resultado, usted no tiene datos comparables y vender y comprar siempre será falso.

 
Dmitriy Gizlyk:

Buenos días,
has especificado Diff=100, por lo que tengo entendido es en puntos. Y la diferencia se calcula por precio. Es decir, para EURUSD se calculará como 1.16715-1.15615=0.01. Como resultado, usted no tiene datos comparables y vender y comprar siempre será falso.

Gracias. Efectivamente, tan pronto como lo llevé todo a un denominador común - el problema se resolvió.
 

Tengo una pregunta: ¿Por qué diablos estudiar el tema de toda una serie de artículos mega abstruso si esta red neuronal tiene una precisión insignificante ... Creo que el tema debe ser interrumpido o la EA debe ser mejorado.

Me gustaría añadir que mi red neuronal es mucho más "compleja" que la tuya, pero está garantizada para dar un 70-80% de entradas correctas y al mismo tiempo es mucho más simple en su estructura ....

y añadiría que hay muchas otras redes neuronales con mucha más precisión que la tuya.

En general, tengo la impresión de que te pagan dinero por tus artículos, pero no sirven para nada .... Lo siento.

Tampoco estoy de acuerdo con el título "Las redes neuronales son fáciles", los que se dedican al aprendizaje automático en big data saben - no es fácil ... :-)

>Para evaluar el rendimiento de la red se puede utilizar el error cuadrático medio de predicción, el porcentaje de fractales correctos predichos, el porcentaje de fractales perdidos.

No estoy de acuerdo con esto en absoluto - el resultado es sólo el balance final, el beneficio neto y sólo y nada más ... nada de nada, no es ciencia por ciencia, es ciencia por beneficio.

Incluso te diré por qué: hay Asesores Expertos con un 60% de precisión ... pero gracias a un sistema inteligente dan más beneficios que los asesores con 80% de precisión ...

y usted debe comenzar con el gráfico de las estadísticas finales de comercio de su EA o no tiene sentido leerlo, inmediatamente me vuelvo hacia abajo si no hay estadísticas o no cumple con mis requisitos, entonces no se puede leer en absoluto, a continuación se muestra la prueba de mi neuronka no muy inteligente

staithe

 
Boris Egorov:

y usted debe comenzar con el gráfico del estado final de comercio de su EA o no tiene sentido leerlo, inmediatamente me vuelvo hacia abajo, si no hay estado o no cumple con mis requisitos, entonces usted no puede leer en absoluto, a continuación se muestra la prueba de mi neuronka no muy inteligente.

entonces usted no necesita la sección de artículos.

Para sus necesidades - un steith rentable, las secciones Codobase y Mercado son adecuados.

sí, por cierto, incluso su mensaje no se ajusta a sus necesidades, por lo que puede ser ignorado también? )))


usted necesita artículos, los necesita para probar correctamente un EA de trabajo sobre la base de la red neuronal, hay una alta probabilidad de que su estado es de un probador, no sólo de MT4, pero puede que no haya dividido la muestra de formación en tren / prueba / validación.

Necesitas artículos para aprender a escribir un buen código estructurado y legible - Creo que el código del autor en el artículo es perfecto para estos requisitos.