Discusión sobre el artículo "Redes neuronales: así de sencillo (Parte 7): Métodos de optimización adaptativos"
+
¿Es un ejemplo para MLP? ¿El aprendizaje se hizo más rápido con Adam? Recuerdo epochs tomó un tiempo muy largo para aprender la última vez alrededor de
Gradiente estocástico toma mucho tiempo para trabajar, seguro
Gracias por el artículo.
¿Hay planes para organizar otros métodos de cálculo de la función de pérdida de aprendizaje?
Dmitriy Gizlyk - ¿tiene usted práctica además de la mera teoría o es un eterno "profesor"?
práctica - ¿es cuando con la ayuda de sus métodos se consigue operar con éxito?
- www.mql5.com
Dmitriy Gizlyk: ¿tiene usted práctica además de la mera teoría o es un eterno "profesor"?
practica - es cuando con la ayuda de sus metodos se consigue operar con exito?
¿Quiere que el artículo contenga una máquina de imprimir dinero?
El hombre habla de la arquitectura de la red y las variaciones de su organización, lo que es interesante, y lo que para alimentar la red depende del usuario.
Pregunta. ¿Para qué sirve crear una enumeración
enum ENUM_BUFFERS
{
WEIGHTS,
DELTA_WEIGHTS,
OUTPUT,
GRADIENT,
FIRST_MOMENTUM,
SECOND_MOMENTUM
}; y variables en la clase CLayer?
class CLayer: public CArrayObj { private: ... int hWeights; int hDeltaWeights; int hOutput; int hGradient; ... };
No encuentro su uso en el código.
Pregunta. ¿Para qué fines se crean las transferencias
y variables en la clase CLayer?
No encuentro su uso en el código.
Gracias por señalarlo. Puedes borrarlas, son restos de borradores.
Hola a todos . ¿ quien se ha encontrado con este error al intentar leer un fichero ?
OnInit - 198 -> Error de lectura AUDNZD.......
Hola a todos . ¿quién se ha encontrado con este error al intentar leer un archivo ?
OnInit - 198 -> Error de lectura AUDNZD.......
Este mensaje sólo le informa de que la red pre-entrenada no se ha cargado. Si está ejecutando su EA por primera vez, es normal y no preste atención al mensaje. Si ya has entrenado la red neuronal y quieres seguir entrenándola, entonces debes comprobar dónde se ha producido el error de lectura de datos del fichero.
Desafortunadamente, no especificó el código de error para que podamos decir más.Este mensaje sólo le informa de que no se ha cargado la red preentrenada. Si está ejecutando su EA por primera vez, es normal y no preste atención al mensaje. Si ya has entrenado la red neuronal y quieres seguir entrenándola, entonces debes comprobar dónde se ha producido el error de lectura de datos del fichero.
Lamentablemente, no has especificado el código de error para que podamos decirte más.Hola.
Te diré más al respecto.
Al iniciar el Asesor Experto por primera vez. Con estas modificaciones en el código:
dError=Net.getRecentAverageError(); if(add_loop) { Net.Save(FileName+".nnw",dError,dUndefine,dForecast,dtStudied,false); printf("Era %d -> error %.2 f %% forecast %.2 f",count,dError,dForecast); } ChartScreenShot(0,FileName+IntegerToString(count)+".png",750,400); int h=FileOpen(CSV,FILE_READ|FILE_WRITE|FILE_CSV); if(h!=INVALID_HANDLE) { FileSeek(h,0,SEEK_END); FileWrite(h,eta,count,dError,dUndefine,dForecast); FileFlush(h); FileClose(h); Print("Файл должен быть создан ChartScreenShot "); } else Print("Операция FileOpen ChartScreenShot неудачна, ошибка ",GetLastError()); } }
en el log escribe esto :
KO 0 18:49:15.205 Core 1 NZDUSD: carga 27 bytes de datos históricos para sincronizar a 0:00:00.001
FI 0 18:49:15.205 Core 1 NZDUSD: historial sincronizado de 2016.01.04 a 2022.06.28
FF 0 18:49:15.205 Core 1 2019.01.01 00:00:00 OnInit - 202 -> Error de lectura AUDNZD_PERIOD_D1_ 20Fractal_OCL_Adam 1.nnw prev Net 0
CH 0 18:49:15.205 Core 1 2019.01.01 00:00:00 OpenCL: Dispositivo GPU 'gfx902' seleccionado
KN 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Era 1 -> error 0.01 % previsión 0.01
QK 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Fichero a crear ChartScreenShot
HH 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Era 2 -> error 0.01 % previsión 0.01
CP 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Archivo a crear ChartScreenShot
PS 2 18:49:19.829 Core 1 desconectado
OL 0 18:49:19.829 Núcleo 1 conexión cerrada
NF 3 18:49:19.829 Probador detenido por usuario
И в директории "C:\Users\Borys\AppData\Roaming\MetaQuotes\Tester\BA9DEC643240F2BF3709AAEF5784CBBC\Agent-127.0.0.1-3000\MQL5\Files"
Se crea este archivo :
Fractal_10000000.csv
#define FileName Symb.Name()+"_"+EnumToString((ENUM_TIMEFRAMES)Period())+"_"+IntegerToString(HistoryBars,3)+StringSubstr(__FILE__,0,StringFind(__FILE__,".",0)) #define CSV "Fractal_"+StringSubstr(DoubleToString(eta),2)+".csv"
con el siguiente contenido :
| 0.1 1 0.006391065067727753 0.30606698779533065 0.009849141883310947 |
| 0.1 2 0.01416031275898674 0.320172057079727 0.009671500063084178 |
| 0.1 1 0.021322935369592233 0.4824709164481285 0.009510368103745911 |
| 0.1 2 0.03047882579179044 0.4736268224037817 0.009336035129387396 |
| 0.1 1 0.04096262961921367 0.4747386346906194 0.009164897823757697 |
| 0.1 2 0.04745129346676422 0.9935630387598718 0.1983981648307233 |
y así sucesivamente...
Al reiniciar, aparece el mismo error y se sobrescribe el archivo .csv .
Es decir, el Expert está siempre en formación porque no encuentra el archivo.
Y la segunda pregunta, por favor sugiero el código (para leer datos de la neurona de salida) para abrir órdenes de compra venta cuando la red está entrenada.
Gracias por el artículo y por la respuesta.
Hola.
Te contaré más.
al lanzar el Asesor Experto por primera vez. Con estas modificaciones en el código:
en el log escribe esto :
KO 0 18:49:15.205 Core 1 NZDUSD: cargar 27 bytes de datos históricos para sincronizar a 0:00:00.001
FI 0 18:49:15.205 Core 1 NZDUSD: historial sincronizado de 2016.01.04 a 2022.06.28
FF 0 18:49:15.205 Core 1 2019.01.01 00:00:00 OnInit - 202 -> Error de lectura AUDNZD_PERIOD_D1_ 20Fractal_OCL_Adam 1.nnw prev Net 0
CH 0 18:49:15.205 Core 1 2019.01.01 00:00:00 OpenCL: GPU device 'gfx902' selected
KN 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Era 1 -> error 0.01 % previsión 0.01
QK 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Archivo a crear ChartScreenShot
HH 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Era 2 -> error 0.01 % previsión 0.01
CP 0 18:49:15.205 Core 1 2019.01.01 00:00:00 Archivo debe ser creado ChartScreenShot
PS 2 18:49:19.829 Core 1 desconectado
OL 0 18:49:19.829 Core 1 conexión cerrada
NF 3 18:49:19.829 Probador detenido por el usuario
И в директории "C:\Users\Borys\AppData\Roaming\MetaQuotes\Tester\BA9DEC643240F2BF3709AAEF5784CBBC\Agent-127.0.0.1-3000\MQL5\Files"
Este archivo se crea :
Fractal_10000000.csv
con estos contenidos :
| 0.1 1 0.006391065067727753 0.30606698779533065 0.009849141883310947 |
| 0.1 2 0.01416031275898674 0.320172057079727 0.009671500063084178 |
| 0.1 1 0.021322935369592233 0.4824709164481285 0.009510368103745911 |
| 0.1 2 0.03047882579179044 0.4736268224037817 0.009336035129387396 |
| 0.1 1 0.04096262961921367 0.4747386346906194 0.009164897823757697 |
| 0.1 2 0.04745129346676422 0.9935630387598718 0.1983981648307233 |
Etc...
Al ejecutarlo de nuevo, aparece el mismo error y se sobrescribe el archivo .csv .
Es decir, el Asesor Experto está siempre en aprendizaje porque no encuentra el fichero.
Y la segunda pregunta. por favor sugiera el código (para leer los datos de la neurona de salida) para abrir órdenes de compra venta cuando la red está entrenada.
Gracias por el artículo y por la respuesta.
Buenas noches, Boris.
Usted está tratando de entrenar una red neuronal en el probador de estrategia. No te recomiendo que hagas eso. Desde luego, no sé qué cambios has hecho en la lógica de entrenamiento. En el artículo, el entrenamiento del modelo se organizó en un bucle. Y las iteraciones del ciclo se repetían hasta que el modelo estaba completamente entrenado o el EA se detenía. Y los datos históricos se cargaban inmediatamente en matrices dinámicas en su totalidad. Utilicé este enfoque para ejecutar el Asesor Experto en tiempo real. El período de entrenamiento se estableció mediante un parámetro externo.
Al lanzar el Asesor Experto en el probador de estrategias, el período de aprendizaje especificado en los parámetros se desplaza a la profundidad de la historia desde el comienzo del período de prueba. Además, cada agente en el probador de estrategias MT5 trabaja en su propio "sandbox" y guarda archivos en él. Por lo tanto, cuando vuelva a ejecutar el Asesor Experto en el probador de estrategias, no encontrará el archivo del modelo previamente entrenado.
Intente ejecutar el Asesor Experto en modo de tiempo real y compruebe la creación de un archivo con la extensión nnw después de que el EA deje de funcionar. Este es el archivo donde está escrito su modelo entrenado.
En cuanto a la utilización del modelo en el comercio real, es necesario pasar la situación actual del mercado en los parámetros del método Net.FeedForward. Y luego obtener los resultados del modelo utilizando el método Net.GetResult. Como resultado de este último método, el buffer contendrá los resultados del trabajo del modelo.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Redes neuronales: así de sencillo (Parte 7): Métodos de optimización adaptativos:
En artículos anteriores, hemos usado el descenso de gradiente estocástico para entrenar una red neuronal utilizando una única tasa de aprendizaje para todas las neuronas de la red. En este artículo, proponemos al lector buscar métodos de aprendizaje adaptativo que nos permitan modificar la tasa de aprendizaje de cada neurona. Vamos a echar un vistazo a las ventajas y desventajas de este enfoque.
Las pruebas de optimización usando el método Adam se realizaron en las mismas condiciones que todas las pruebas anteriores: instrumento EURUSD, marco temporal H1 y los datos de 20 velas consecutivas; la formación se llevó a cabo utilizando la historia de los últimos 2 años. Para la prueba, creamos Fractal_OCL_Adam. Este asesor se creó a partir del asesor experto Fractal_OCL especificando el método de optimización Adam al describir la red neuronal en la función OnInit del programa principal.
El número de capas y neuronas se mantuvo sin cambios.
Inicializamos el asesor con pesos aleatorios que iban de -1 a 1, excluyendo los valores cero. Durante las pruebas, literalmente después de la segunda época de entrenamiento, el error de la red neuronal se estabilizó alrededor del 30%. Recordemos que al realizar el entrenamiento usando el método de descenso de gradiente estocástico, el error se estabilizó alrededor del 42% después de la 5ª época de entrenamiento.
El gráfico de fractales omitidos muestra un aumento paulatino en el indicador a lo largo del entrenamiento. Al mismo tiempo, tras 12 épocas de entrenamiento, observamos una disminución gradual en la tasa de crecimiento del indicador. Después de la 14ª época de formación, el valor de este indicador era del 72,5%. Como comparación, al entrenar una red neuronal similar con el método de descenso de gradiente estocástico, después de 10 épocas de entrenamiento, la proporción de fractales omitidos era del 97-100% con diferentes tasas de aprendizaje.
Autor: Dmitriy Gizlyk