Uso de redes neuronales en el comercio - página 39

 

Es una pena que no haya "pioneros". Seguiré investigando...

 
Probé la transformada de Hartley, un análogo de la transformada de Fourier. La tarea consistía en utilizar una función de ventana rectangular desplazada en el tiempo hacia el "pasado". Para descomponer los vectores resultantes en componentes, y utilizarlos para la entrada NS. Como predicción - cambio de componentes espectrales, seguido de una transformación inversa. La transformada inversa resultante del espectro predicho se utiliza en el indicador. AQUÍ se describe con más detalle.
 

He leído un artículo muy entretenido.

Me interesa el principio de estructurar el cerebro como una red neuronal: primero se recluta un gran número de conexiones de todo tipo sin prestar mucha atención a su calidad, y luego se inicia la selección según el principio de "eliminar todo lo que no es necesario para lograr el resultado".

Es muy posible que este enfoque ayude a combatir tanto el sobreentrenamiento como el "fallo estructural", por así decirlo.

A este respecto una pregunta: ¿nadie ha encontrado estudios del principio similar en la teoría NS.

 
alsu:

He leído un artículo muy entretenido.

Me interesa el principio de estructurar el cerebro como una red neuronal: primero se recluta un gran número de conexiones de todo tipo sin prestar mucha atención a su calidad, y luego se inicia la selección según el principio de "eliminar todo lo que no es necesario para lograr el resultado".

Es muy posible que este enfoque ayude a combatir tanto el sobreentrenamiento como el "fallo estructural", por así decirlo.

A este respecto una pregunta: ¿nadie ha encontrado estudios del principio similar en la teoría NS.

Se ha visto algo con el "adelgazamiento neto" cuando se detecta un valor absoluto pequeño en los coeficientes.

Pero no he visto nada parecido en las decenas de veces, y como principio básico "gran, gran excedente, luego reducción". ¿Quieres hacer uno?

Me interesa. Sólo los recursos informáticos serían insuficientes. // No sé cómo adaptar la GPU - es rentable calcular sólo el mismo tipo de esquemas, y aquí cada vez la topología de la red es diferente.

 

MetaDriver:

¿Quieres engancharte?

Yo sí. Pero por ahora estoy pensando: tengo que pensarlo bien para saber qué algoritmo de reducción utilizar. La primera idea es adelgazar realmente por valor absoluto, y hacer que el umbral dependa del número de ejemplos ya presentados: cuanto más grande sea la muestra de entrenamiento, más difícil debería ser para los enlaces sobrevivir.

 
MetaDriver:
No sé cómo adaptar la GPU - es ventajoso calcular sólo el mismo tipo de esquemas, pero aquí cada vez la topología de la red es diferente.
De tipo único e implementado por hardware. La eficiencia de los cálculos paralelos en general es muy exagerada, de hecho (hay cálculos reales e incluso tesis doctorales sobre ello) en general son incluso más lentos que los secuenciales; la razón está en el consumo de tiempo para la transferencia de datos.
 
alsu:
El mismo tipo, y además implementado por hardware. La eficiencia de la computación paralela en general es muy exagerada, de hecho (hay cálculos reales e incluso se defienden tesis doctorales al respecto) en el caso general es incluso más lenta que la secuencial; la razón está en el tiempo empleado en la transferencia de datos.

No puedo estar de acuerdo inmediatamente. Si entiendes bien los detalles, puedes ingeniártelas para exprimir cientos de veces más la velocidad de algunos de tareas. Así que para los cálculos intensivos siempre tiene sentido intentar reducir el problema a una clase de esos "algunos". Si funciona, la ganancia puede ser enorme. Si no es así, entonces no - calcula secuencialmente en un procesador ordinario.

--

Por ejemplo, la optimización genética de redes neuronales del mismo tipo (con la misma topología) con un gran número de ejemplos de entrenamiento es extremadamente beneficiosa (la velocidad de ejecución es decenas o cientos de veces mayor). El único problema es que cada topología requiere un nuevo programa OpenCL. Esto puede resolverse construyendo plantillas ocl básicas y generando nuevos programas ocl automáticamente (de forma programada) para una topología determinada.

Aquí, por cierto. Mientras escribía lo anterior, se me ocurrió una idea de cómo reducir su problema a una clase ventajosa para los cálculos de la GPU. Para hacerlo paso a paso: dentro de cada paso tenemos que leer todo en un programa OCL, pero reducir a cero los coeficientes (en esencia imitar). Y para un nuevo paso, generar un nuevo programa en el que las reducciones del paso anterior ya han sido "flasheadas" en el programa. Y así sucesivamente. Pero este es el caso si se utiliza el "aprendizaje" genético.

 
MetaDriver:
No puedo estar de acuerdo con eso de inmediato. Si conoce bien los detalles, puede conseguir exprimir cien veces más la velocidad de algunos de tareas. Por lo tanto, con los cálculos complejos siempre tiene sentido intentar reducir el problema a la clase de esos "algunos". Si funciona, la ganancia puede ser enorme. Si no es así, entonces no - cuenta secuencialmente en un procesador ordinario.

Por lo que recuerdo, el valor crítico es la relación entre el tiempo de ejecución de las tareas paralelas y las no paralelas (preparación de datos, transmisión de datos) en el bucle principal, y cuanto mayor es el paralelismo, más estrictos son los requisitos para esta relación. Por eso, no sólo debemos aspirar a reducir el algoritmo a "archivo paralelo", sino también a minimizar la parte no paralela.

Por ejemplo, en la ya tan de moda (y, por cierto, implementada en Cinco) computación en la nube las limitaciones de ganancia son muy serias precisamente por el tiempo de transferencia. Para ser justos, hay que tener en cuenta que estas limitaciones sólo aparecerán cuando una red en la nube esté cargada no menos que en decenas de porcentajes.

Bueno, pero ahora no se trata de eso: realmente no hay mucho paralelismo en esta tarea.

 
MetaDriver:// El único problema es que cada topología requiere un nuevo programa OpenCL. Esto puede resolverse construyendo plantillas ocl básicas y generando un nuevo programa ocl automáticamente (de forma programada) para una topología determinada.


No habrá paralelismo: las plantillas dependen secuencialmente unas de otras, por lo que hay que generarlas todas de antemano, pero entonces habrá trillones de ellas y la mayor parte del tiempo se dedicará a encontrar la correcta en el momento)
 
alsu:

No habrá paralelismo: las plantillas dependen secuencialmente unas de otras, por lo que hay que generarlas todas de antemano, pero entonces habrá trillones de ellas y la mayor parte del tiempo se empleará en encontrar la necesaria en el momento)
No es cierto. Lo hice para redes neuronales de un solo tipo. Incluso puedo enviarle un generador de códigos. La cuestión es otra: cómo reducir su tarea a una clase rentable. Vuelve a leer mi post anterior: lo añadí allí.

Ah, bueno, lo duplicaré:

Aquí, por cierto. Mientras escribía lo anterior, se me ocurrió una idea para reducir su problema a una clase de cálculos ventajosos para la GPU. Para hacerlo paso a paso: dentro de cada paso tenemos que leer todo en un programa OCL, pero reducir a cero los coeficientes (en esencia imitar). Y para un nuevo paso, generar un nuevo programa en el que las reducciones del paso anterior ya han sido "flasheadas" en el programa. Y así sucesivamente. Pero este es el caso si se utiliza el "aprendizaje" genético.