Encontrar un conjunto de indicadores para alimentar las entradas de la red neuronal. Discusión. Una herramienta para evaluar los resultados. - página 5

 
joo писал(а) >>

¿Por qué no se pueden ver? Las diferencias son visibles. No hay sobresaturación de neuronas cuando se elige el rango de búsqueda adecuado. "Es que no sabes cómo cocinarlos"(c) :)

Para la diferente complejidad de las tareas habrá una optimización diferente de las herramientas, como has notado correctamente (destornilladores).

El tema de la selección de la gama es muy discutible. El GA es muy largo, mucho más que el ORO - otro inconveniente.

Es interesante conocer su técnica para seleccionar un rango de escala, o por qué se guía

joo escribió >>

Habrá diferentes herramientas óptimas para diferentes complejidades, como bien señalas (destornilladores).

La AG no es para los NS. Para el NS-th tiene sus propios métodos de entrenamiento (optimización). Al menos, simplemente porque no se puede utilizar CV como con ORO.

 
rip >> :

Correcto, el algoritmo genético no utiliza la función de error para ajustar los pesos.

Por lo que tengo entendido, se podría marcar el m5 por el máximo beneficio que puede haber en el historial y utilizar este margen de beneficio como función de aptitud.

Eso es exactamente lo que parece la función por la que se estima a un individuo.

>> así que :)

 public double evaluate( IChromosome a_subject) {
        this. NNWeights=new double[ a_subject. size()]; //создаем вектор весов для нейросети
        for (int i=0; i<this. NNWeights. length; i++)
        {
            DoubleGene g= ( DoubleGene) a_subject. getGene( i);
            this. NNWeights[ i]= g. doubleValue(); //заполняем вектор весов для нейросети
        }
        net. SetWeights(this. NNWeights); //устанавливаем веса нейросети
        Trade trade =new Trade();
        for ( int i=0; i<this. csv. CSVInputs. length; i++)
        {
            trade. TradeCurrentSignal( net. ComputeForOneNeuronOutLayer(this. csv. CSVInputs[ i]),this. csv. CSVPrice[ i]);
        }
        
      return 1000000+ trade. Profit; //целевая функция должна быть >0
    }
 
rip >> :

Es una cuestión de error de muestreo de la prueba. Es decir, se toma el siguiente mes después de la muestra de formación. Lo marca según su algoritmo. Se alimentan las salidas a la red entrenada. Compara los resultados. Ese es exactamente el gráfico de estos errores que nos interesa.


También puede obtener el gráfico de errores de la muestra de entrenamiento y estimar el proceso de aprendizaje de su red (o desarrollo de generaciones en el algoritmo genético).

Cuando entreno, aprendo hasta que la función objetivo aumenta o hasta que me aburro (en el tiempo). me ocupo del reentrenamiento indirectamente - la muestra de entrenamiento es mucho más grande que los pesos en la red neuronal. luego, descargo a .mq4 ( aquí, puede haber un error... Estoy probando... todo funciona correctamente) y observar con el probador de estrategias de MT4 lo que resulta.

"comparando el resultado" - esta es la parte de su pensamiento que no entiendo... No entiendo esta parte de tu pensamiento. ¿Qué sentido tiene volver a entrenar intencionadamente la red y comparar su resultado con el de la red entrenada en periodos anteriores?

 
rip >> :

Muestra el resultado al comparar todos los conjuntos que alimentas con las entradas :) Creo que todos estarán muy correlacionados. Todos los indicadores dados utilizan los mismos datos de entrada para el cálculo.

No estoy comparando todos los conjuntos.... Incluso revisar 200 conjuntos de entradas, de hecho hay más, es largo y no tiene mucho sentido, ya que se puede perder algo.

 
iliarr >> :

Cuando entreno, aprendo hasta que la función objetivo aumenta o hasta que me aburro (en tiempo). me ocupo del reentrenamiento indirectamente - la muestra de entrenamiento es mucho más grande que los pesos en la red neuronal. luego, descargo a .mq4 ( aquí, tal vez, hay un error... lo pruebo ) y uso el probador de estrategias MT4 para ver cuál es el resultado.

"No entiendo esta parte de tu pensamiento... No entiendo esta parte de tu pensamiento. Lo que quiero hacer es volver a entrenar la red a propósito y comparar su resultado con el de la red entrenada en periodos anteriores.


¡¿Por qué volver a entrenar?! Hay una muestra sobre la que se está entrenando la red. Ahora simule su funcionamiento, alimente la red con una muestra con la que no está familiarizada y compare el resultado obtenido de la red con el esperado para la muestra de prueba.

 
rip >> :

¿Por qué volver a entrenar? Hay una muestra sobre la que se está entrenando la red. Ahora simule su funcionamiento, alimente la red con una muestra con la que no esté familiarizada y compare el resultado obtenido de la red con el esperado para la muestra de prueba.

lo que sugieres determinará la capacidad de predicción de la red entrenada, no la calidad del entrenamiento... y la capacidad de predicción de una red no sólo depende de la calidad del entrenamiento, sino también de la estructura de la red, de cómo la red interpreta lo que produce y de la información que alimenta.

 
iliarr >> :

Pero en Forex, el resultado de lo que sugieres determina la capacidad de predicción de la red entrenada, no la calidad del entrenamiento... mientras que la capacidad de predicción de una red no sólo depende de la calidad del entrenamiento, sino también de la estructura de la red, de cómo interpretas su salida y de la información que introduces en la red.

Ejem... ¿Qué tiene esto que ver con la capacidad de predicción? Tienes una red, tienes tu red con una supuesta interpretación de sus respuestas.

Según su código, la clase Trade() simula el proceso de negociación de una manera u otra. Abrir una posición, mantener una posición, cerrar una posición.

>>En base a eso, usted decide qué tan adecuado es para usted el individuo en cuestión. Así que inicialmente has establecido algún tipo de regla

de interpretar los resultados.

 
iliarr >> :

no puedo comparar todos los conjuntos.... Probar hasta 200 conjuntos de entradas, de hecho hay más, es largo y no tiene mucho sentido, ya que se puede perder algo.

Hm... La idea de una muestra de entrenamiento:(Predictor de precios próximos mediante red neuronal )


ntr - de conjuntos de entrenamiento

lb - lastBar


// Rellenar las matrices de entrada con datos; en este ejemplo nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // utiliza Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

 
rip >> :

Hm... La idea de una muestra de entrenamiento:(Predictor de precios próximos mediante red neuronal )


ntr - de conjuntos de entrenamiento

lb - lastBar


// Rellenar las matrices de entrada con datos; en este ejemplo nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0;
int fd1=1;
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // utiliza Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...
fd2=fd1;
fd1=fd;
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

Gracias. Voy a echar un vistazo.

 

IlyaA писал(а) >>

El público necesita ver una dependencia gráfica del error de aprendizaje con el tiempo (número de épocas).

->

iliarr escribió(a) >>
debemos estar hablando de cosas diferentes... No enseño con un profesor ( hay un error de aprendizaje en esta forma de enseñar)... Estoy enseñando al máximo de la función objetivo y no sé cuál es el valor máximo posible de la función objetivo.

->

rip escribió >>

Se trata de un error de muestreo de las pruebas. Es decir, se toma el siguiente mes después de la muestra de formación. Usted lo marca, según su algoritmo. Se alimentan las salidas a la red entrenada. Compara los resultados. Ése es el gráfico de errores que nos interesa.

También puedes obtener un gráfico de errores de la muestra de entrenamiento y estimar cómo está aprendiendo tu red (o el desarrollo de generaciones en el algoritmo gen.)

Parece que rip e IlyaA no entienden que iliarr está utilizando un método de enseñanza sin profesor. ¿De qué tipo de error de aprendizaje estamos hablando cuando la función objetivo es el beneficio? ¿O pensáis que habiendo entrenado la red en el historial, deberíais ejecutarla en un historial de prueba y comparar el beneficio obtenido? El beneficio será diferente, menor o mayor, pero diferente. El historial de pruebas es diferente. No confundir con la aproximación por favor, donde el criterio para la calidad de la aproximación es la desviación estándar de la función original y la obtenida.


StatBars escribió :>>

ORO cuando una neurona se sobresatura prácticamente deja de "entrenarla", mientras que GA puede sobresaturar fácilmente una neurona y seguir aumentando los pesos de las neuronas.

->

StatBars escribió >>

Sobre el tema de la selección de la gama, es muy discutible. El GA es muy largo, mucho más que el ORO - otro inconveniente.

->

StatBars escribió(a) >>

La AG no es para los NS. Para las SN, existen sus propios métodos de formación (optimización). Aunque sólo sea porque no se puede utilizar CV como con ORO.

No entiendo, ¿por qué tanta insistencia?

Aquí hay algunos enlaces que aparecieron en una búsqueda que dice lo contrario:

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=13&pa=10&ar=3

http://masters.donntu.edu.ua/2004/fvti/solomka/library/article2.htm

http://www.neuropro.ru/memo314.shtml


No he afirmado ni afirmo que el AG sea la única solución de optimización correcta para todos los problemas. Es simplemente más versátil que cualquier otra solución, y a menudo más rápida, fácilmente adaptable a casi cualquier tarea. Otra pregunta, legítima, es qué número mínimo de ejecuciones de una función de aptitud es necesario para encontrar la solución óptima. De esto es de lo que deberíamos hablar, no de la velocidad de los algoritmos de optimización en sí. Y aquí GA superará a la mayoría de los demás algoritmos.

Puedo abrir un hilo aparte, si alguien está interesado, en el que pueda publicar funciones de prueba interesantes para los algoritmos de optimización y los resultados de varios algoritmos. Creo que será muy útil no sólo para los que se ocupan de NN, sino para cualquier persona que quiera obtener un resultado de sus esfuerzos óptimo en muchos sentidos.

StatBars escribió :>>

Es interesante escuchar tu técnica para seleccionar un rango de pesos, o por lo que te guías

En Maple o Mathca miro el rango de pesos en el que trabaja la función de activación. Si el ámbito de alguna función es [-1;1], ¿qué sentido tiene "buscar", por ejemplo, en ese rango de variables (-100;100)?