Discusión sobre el artículo "Redes neuronales: así de sencillo"

 

Artículo publicado Redes neuronales: así de sencillo:

Cada vez que hablamos de inteligencia artificial, en nuestra cabeza surgen todo tipo de ideas fantásticas, y nos parece que se trata de algo complicado e inalcanzable. Sin embargo, cada día oímos hablar de la inteligencia artificial en nuestra vida diaria. En las noticias se escribe con cada vez mayor frecuencia sobre los logros en el uso de redes neuronales. En el presente artículo, queremos mostrar al lector lo sencillo que puede resultar para cualquiera crear una red neuronal y usar los logros de la inteligencia artificial en el trading.

En la Wikipedia encontramos la siguiente definición de lo que es una red neuronal:

"Las redes neuronales artificiales (también conocidas como sistemas conexionistas) son un modelo computacional vagamente inspirado en el comportamiento observado en su homólogo biológico. Consiste en un conjunto de unidades, llamadas neuronas artificiales, conectadas entre sí para transmitirse señales."

Es decir, una red neuronal artificial es una cierta entidad que consta de una matriz de neuronas artificiales con una conexión organizada entre las mismas. En este caso, además, la organización de la interacción mutua de las neuronas se ha creado a imagen y semejanza del cerebro de un organismo vivo.

En la figura de abajo podemos el esquema de una red neuronal simple. En esta, las neuronas están marcadas con círculos, mientras que las conexiones entre las mismas se muestran con líneas. Como podemos ver por la figura, las neuronas se disponen en capas que se dividen en 3 grupos. En color azul se marca la capa de las neuronas de entrada, a las que se suministra la información original. En color verde y rojo se marcan las neuronas de salida, que generan el resultado del trabajo de la red neuronal. Entre ellas se ubican las neuronas grises, que forman la llamada capa oculta. 

Ejemplo de red neuronal simple

Autor: Dmitriy Gizlyk

 
Bien hecho autor!),
que haya implementado la red, todo Data Scientist que se precie debería hacerlo....

Lástima que el artículo no contenga ni un solo ejemplo que muestre el rendimiento..., ni gráficos de entrenamiento..., sino sólo teoría (agua) de Wikipedia y código.

El código, sin ejemplos visuales de su funcionamiento, también hace aguas.....

Conclusión: un artículo por un artículo..., pero quería ver algo interesante, tales y más nuevas versiones de las neuronas han sido implementadas desde hace tiempo en MQL4, MQL5, C#, etc.
 

1 - Gracias por el artículo, me ha fascinado para el tiempo libre más cercano, y tan pronto como tengo un día libre - voy a profundizar en el tema.

2 - Una observación, el código no compila. Aparentemente, has escrito ejemplos simplificando tus desarrollos, pero no has comprobado los ejemplos resultantes en la práctica. Creo que los errores de erratas están expresados, al menos los que yo he notado. Todavía no he terminado de leer el artículo. Y desde el punto de vista de programación en los métodos de creación de nuevas neuronas y demás, no se borran las pasadas si el índice no supera el valor anterior, se obtienen potenciales objetos zombies....

3 - Pregunta. Los pesos de la rejilla no deben sumar uno aparentemente no ?

 
otra pregunta ¿qué es neurotNam - el método de creación de neuronas en una capa? no se declara en ninguna parte y la lógica de por qué el valor inicial de una neurona es igual al resto de la división por 3 menos 1 no está clara?
 
Andrey Azatskiy:

2 - La red implementada funcionará muy lentamente, porque está implementada toda a través de objetos..., al menos los pesos deberían estar implementados a través de arrays simples. Además se puede ver que hay errores en el proyecto de la red desde el punto de vista de OOP, es en el propio proyecto, debido a esto tantos objetos resultaron.

3 - Los pesos de la red puede tener cualquier valor, no limitado por nada, cuando cerca de cero valores que reducen su influencia....

Debes haber confundido el valor único de una neurona, el valor final, pero después de la función sigmoidea... en este caso, sí, la salida de cada neurona de la red es de 0 a 1, pero en el artículo había una tankencia como activación de una neurona, y su salida es de -1 a 1.

Otra gran desventaja de este artículo, ni una palabra se dijo acerca de la preparación de datos, normalización, etc, y esto es muy importante, porque la red neuronal no funciona con los datos originales

 

Daniil Kurmyshev:

2 - La red implementada funcionará muy lentamente, porque está implementada toda a través de objetos..., al menos los pesos deberían implementarse a través de arrays simples. Además puedes ver que hay errores en el proyecto de la red desde el punto de vista de la POO, está en el propio proyecto, por eso salieron tantos objetos.

No habra perdida de rendimiento, lo he probado, y puedes mirar en los posts del admin Renat, el demostro que la POO en MQL5 funciona tan rapido como el estilo procedural.

En cuanto al artículo, la presentación es buena, pero el material ya ha sido cubierto muchas veces en artículos sobre este recurso, aunque puede ser útil.

 

"Si queremos alimentar la entrada de una red neuronal con algún conjunto de datos de 10 elementos, la capa de entrada de la red debe contener 10 neuronas. Esto permitirá aceptar todo el conjunto de datos. Las neuronas de entrada redundantes sólo serán lastre".

no, no debería, una puede ser suficiente

 

"El número de capas ocultas viene determinado por la relación causal entre los datos de entrada y el resultado esperado. Por ejemplo, si estamos construyendo nuestro modelo en relación con la técnica de los "5 por qué", lo lógico es utilizar 4 capas ocultas, que en suma con la capa de salida nos darán la oportunidad de plantear 5 preguntas a los datos originales."

¿qué es "5 porqués" y qué tienen que ver 4 capas? Lo he buscado, un simple árbol de decisión responde a esta pregunta. El aproximador universal es un NS de 2 capas, que responderá a cualquier número de "por qué" :) Las otras capas se utilizan principalmente para el preprocesamiento de datos en diseños complejos. Por ejemplo, para comprimir una imagen a partir de un gran número de píxeles y luego reconocerla.

"Dado que la salida de una neurona es un resultado lógico, las preguntas planteadas a la red neuronal deben suponer una respuesta inequívoca".

Si la salida no es un sumador simple, se supone que la respuesta es probabilística.

Tenía miedo de mirar el código, ya que hay un montón de implementaciones de alta calidad en Internet )).

 

Errores de compilación.


 
El artículo es interesante. ¿Puede explicar "en los dedos":

1. ¿Qué es una neurona por dentro?
2. ¿Qué es un haz neuronal? (Me refiero a la conexión entre dos neuronas - neurona de capa 1 y neurona de capa 2).

Estas son las preguntas que no entendí hasta el final del artículo.

Gracias.
 
El artículo, segunda parte, es "cómo funciona una neurona artificial". Corrígeme si me equivoco.

Una neurona consta de varias funciones:
1. La primera multiplica el valor de entrada por un coeficiente de peso.
2. La segunda resume los productos.
3. La tercera calcula el valor resultante en la función de activación.

Entiendo las palabras, pero no entiendo el significado.