"New Neural" es un proyecto de motor de red neuronal de código abierto para la plataforma MetaTrader 5. - página 62

 
joo:

Lo que es más rápido está claro. Pero, ¿cuántas veces durante todo el entrenamiento tendrás que escribir en el archivo? - ¿Una vez?

Por lo tanto, la velocidad no es crítica, pero el control visual se simplifica.

Yo no diría que un archivo xml es fácil de controlar visualmente.

Todavía puedo utilizar algún tipo de plantilla como un archivo xml, pero la visualización de una rejilla con 1500 neuronas en una capa sería un dolor en el culo, por lo que se obtiene la molestia de crear un archivo xml y no obtendrá una buena visualización de todos modos. Aunque no lo rechazo, cuando lo guardas, puedes duplicarlo en xml también.

MetaDriver:

¿Qué quiero decir con la inicialización? Si cargar pesos, es una cosa. Si configurar la parrilla + cargar pesos es otra cosa.

--

Sí. Voy a cantar.

Hay dos formas de mapear la configuración de la red intermedia (estructura, tipo) en el código mql5.

La primera: la configuración dinámica de la red durante la inicialización a partir de las clases de la biblioteca. Esta red abunda en matrices dinámicas y enlaces mediante punteros. Este enfoque ha dominado implícitamente hasta ahora.

Pero hay una segunda forma: Generar una malla rígida (con arrays estáticos y accesos directos a las direcciones deseadas (índices)) después de la preconfiguración y el mapeo a xml.

Este motor puede ser mucho más atractivo para los usuarios, debido a la mayor velocidad (significativa) de la red generada. Pero más complicado de implementar. De hecho, habría que hacer un compilador xml2mql.

Yo, de hecho, por la segunda vía. Espero que las metacomillas ayuden, si nos atascamos.

La primera forma.

La segunda alternativa fue descartada (no recuerdo exactamente, pero en las primeras páginas), porque en el futuro en la categoría de "usuario" se incluirán personas que no saben lo que es F7.

Además, el motor está pensado para ser fácilmente ampliable, y cualquiera que conozca el propósito de F7 puede añadir otro tipo de cuadrícula o inventar la suya propia.

ZY entender su apego a la codificación de la plantilla, pero están de acuerdo en la segunda forma vamos a tener grandes problemas con la implementación de ambos algoritmos de aprendizaje y la extensión de los tipos de neuronas, además de esto todavía tendrá que ser optimizado para la GPU. Hay serios problemas con la primera variante, las cosas más simples que todo el mundo es capaz de hacer, y sólo para describir el proyecto de motor universal hace que mi cerebro se fríe.

 

Mañana copiaré mi trabajo sobre el almacenamiento de los prototipos de red, la configuración de las tareas de formación, el almacenamiento de las soluciones encontradas aquí desde mi ordenador de trabajo.

Todo en xml

Creo que la intensidad de recursos del análisis de archivos xml es demasiado exagerada

No olvide que se trata de un procedimiento único.

Además, escribir un analizador nativo de archivos xml para MQL5 es una tarea trivial comparada con la complejidad de un proyecto de red neuronal

 
Urain:

La primera forma.

La segunda alternativa ha sido descartada (no recuerdo exactamente, pero en las primeras páginas), porque en el futuro, la gente que no sabe lo que es F7 se alistará en la categoría de "usuario".

Además, se supone que este motor es fácilmente ampliable, y quien conozca el propósito de F7, puede añadir algunas mallas más para sí mismo o inventar las suyas propias.

Sólo tengo una pregunta debido a mi falta de competencia en los tipos de malla.

¿Puede definirse un tipo de malla de forma única mediante una tabla de consulta, es decir, podemos crear una malla abstracta universal que sólo se desprenda de una tabla de consulta determinada? En otras palabras, ¿una red verdaderamente universal ?

Si la respuesta es afirmativa, el tipo de rejilla se define en el editor de configuración de rejillas ANTES de que se cree la vista intermedia, y no es necesario modificar la biblioteca universal. Lo único que se puede hacer es optimizarlo, ampliar la biblioteca de convertidores no lineales, los métodos de entrenamiento, etc.

Si la respuesta es "no", no dudes en ponerme algunos enlaces para las excepciones que no encajan de esta manera.

--

Si la representación xml de la descripción de la red está bien pensada y se abstrae completamente de la implementación mql (lo cual es correcto), entonces las alternativas no parecen contradictorias. No sólo pueden aplicarse ambos, sino que también pueden combinarse entre sí.

 
MetaDriver:
...

La respuesta no es binaria,

Por un lado, la respuesta es negativa, la propia tabla de relaciones no especifica la tipificación de las neuronas.

Por otro lado la respuesta es positiva, es posible especificar tipos en forma numérica (se crea un objeto de un tipo específico heredado de un ancestro común por el interruptor).

Así que en conjunto, una matriz paramétrica y una tabla de relaciones están bien.

Pero por otro lado, incluso el editor de configuración tiene parámetros (número de capas, número de neuronas en cada capa, tipos de neuronas en la capa) y eso es antes de crear enlaces.

 
MetaDriver:

En otras palabras, ¿una red verdaderamente universal ?

De la alimentación sí. Para los demás, hay que mirar la topología.
 
TheXpert:
De la alimentación, sí. Para los demás, hay que mirar la topología.

La topología se establece mediante la tabla de enlaces....

?

 
MetaDriver:

La topología se establece mediante la tabla de enlaces ....

Y la funcionalidad de las piezas a enlazar.
 
TheXpert:
Y la funcionalidad de las piezas a enlazar.

Bien, vamos a entrar en un poco más de detalle aquí.

¿Puede esta funcionalidad ser dada por una tabla finita (pequeña)? ¿Cuál es la diferencia entre neuronas de diferentes tipos (aparte de las funciones de activación)?

 
MetaDriver:

Bien, vamos a entrar en un poco más de detalle aquí.

Esta funcionalidad puede venir dada por una tabla finita (pequeña)? ¿Cuál es la diferencia entre neuronas de distintos tipos (aparte de las funciones de activación)?

Estrictamente hablando, no.

Primero un caso sencillo. Digamos que tenemos neuronas lineales, sigmoides y tangentes. Si queremos añadir un nuevo tipo de activación, tenemos que ampliar la enumeración de tipos de activación.

Básicamente, para que el infierno con él. Pero primero, ¿por qué, por ejemplo en la red Kohonen, la capa de salida necesitaría una señal de algunas=algunas funciones de activación? Se trata de información superflua y redundante.

En segundo lugar, esta lista es teóricamente ilimitada.

En tercer lugar, cada red puede tener peculiaridades en su funcionamiento y disposición. Por ejemplo, una red Kohonen (SOM) puede tener un ajuste de la función de vecindad y una bandera para decidir si se emiten los resultados como salida o sólo el líder (poniendo a cero todos los no líderes)

En los modelos lógicos, por ejemplo, los parámetros configurables están en la función de activación. ¿Está esto también en el modelo general?

En la capa MLP podría ser una bandera de presencia de una sola neurona.

____________________________

Por cierto, es mucho más fácil comprobar la validez de xml que la representación binaria. Y guardar/restaurar no es esencialmente una cuestión de tiempo.

 
TheXpert:

1. estrictamente hablando, no.

Primero un caso sencillo. Digamos que tenemos neuronas lineales, sigmoides y tangentes. Si queremos añadir un nuevo tipo de activación, tenemos que ampliar la enumeración de tipos de activación.

Básicamente, para que el infierno con él. Pero primero, ¿por qué, por ejemplo en la red Kohonen, la capa de salida necesitaría una señal de algunas=algunas funciones de activación? Es una información innecesaria y superflua.

En segundo lugar, esta lista es teóricamente ilimitada.

En tercer lugar, cada red puede tener sus propias peculiaridades de funcionamiento y estructura. Por ejemplo, una red Kohonen (SOM) puede tener un ajuste de la función de vecinos y una bandera para decidir si se emiten los resultados como salida o sólo el líder (poniendo a cero todos los no líderes).

En los modelos lógicos, por ejemplo, los parámetros configurables están en la función de activación. ¿Está esto también en el modelo general?

En la capa MLP podría ser una bandera para tener una sola neurona.

____________________________

2. Por cierto, es mucho más fácil comprobar la validez de xml que la representación binaria. Y la recuperación del ahorro no es esencialmente una cuestión de tiempo.

1. Por qué no. Mi idea es algo así: crear una "base de elementos" universal a partir de la cual se pueda "soldar" una red neuronal de cualquier tipo (puede ser extensible). Los elementos de esta base se definen por medio de definiciones exactas e inequívocas: fórmulas. Si es necesario con la aplicación del pseudocódigo. Después de crear la base de elementos abstractos (si es posible), se puede formatear el archivo xml, capaz de describir todas las conexiones entre los elementos. Una vez aprobada la descripción xml, el proyecto se puede paralizar fácilmente: escriba por separado

1) Implementación de componentes. => la salida es una biblioteca de componentes.

2) configurador(es) de tipo/estructura de red => salida - gráfica, paso a paso o cualquier otro configurador(es), guardando la configuración en un archivo xml.

3) traductor(es) al código mql. => la salida es (1) una red neuronal mql superconfigurada, que toma un archivo xml como parámetro, o (2) un compilador de una red rígida basada en mql.

Algo así. Parece que tiene sentido.

2. Sí.