Discusión sobre el artículo "Aprendizaje automático y Data Science (Parte 06): Redes neuronales (Parte 02): arquitectura de la redes neuronales con conexión directa"

 

Artículo publicado Aprendizaje automático y Data Science (Parte 06): Redes neuronales (Parte 02): arquitectura de la redes neuronales con conexión directa:

En el artículo anterior, comenzamos a estudiar las redes neuronales con conexión directa, pero hay algunas cosas que quedaron sin resolver. Una de ellas es el diseño de la arquitectura. Por ello, en el presente artículo, veremos cómo diseñar una red neuronal flexible, teniendo en cuenta los datos de entrada, el número de capas ocultas y los nodos de cada red.

Si por cualquier motivo debemos cambiar los parámetros de un modelo con código estático, la optimización puede ocupar mucho tiempo: entre otras lindezas, acaba siendo un auténtico quebradero de cabeza y un dolor de espalda considerable.

Si observamos con más detenimiento las operaciones subyacentes a la red neuronal, veremos que cada entrada se multiplica por su coeficiente de peso asignado, y el resultado se suma al desplazamiento. Esto se gestiona bien con la ayuda de operaciones matriciales.

Multiplicación de matrices en una red neuronal

Autor: Omega J Msigwa

 

En mi opinión, en este ciclo el material está mucho mejor presentado que, por ejemplo, en el ciclo "Redes neuronales - es sencillo"...

Una pregunta a los administradores. ¿Es posible insertar enlaces a bibliografías de pago en el código?

//+------------------------------------------------------------------+
//|NeuralNets.mqh
//|Copyright 2022, Omega Joctan. |
//| https://www.mql5.com/en/users/omegajoctan |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, Omega Joctan."
#property link      "https://www.mql5.com/en/users/omegajoctan"
//+------------------------------------------------------------------+

#import "The_Matrix.ex5" //código fuente aquí >>> https://www.mql5.com/en/market/product/81533
   void MatrixMultiply(double &A[],double &B[],double &AxBMatrix[], int colsA,int rowsB,int &new_rows,int &new_cols);
   void CSVToMatrix(double &Matrix[],int &mat_rows,int &mat_cols,string csv_file,string sep=",");
   void MatrixPrint(double &Matrix[],int cols,int digits=5);
#import

bool m_debug = true;
 
Denis Kirichenko #:

En mi opinión, en este ciclo el material está mucho mejor presentado que, por ejemplo, en el ciclo "Redes neuronales - es fácil"...

Una pregunta a los administradores. ¿Es posible insertar enlaces a bibliografías de pago en el código?

No, no es posible, se me olvidó quitar el enlace

 

Existe tal cosa en el artículo:

Ok so here is the function responsible for training the neural network.

void CNeuralNets::train_feedforwardMLP(double &XMatrix[],int epochs=1)

Doy a propósito un extracto en el idioma en que el autor escribió el artículo.

Me da vergüenza preguntar: ¿dónde se aprende? En mi opinión, hay una difusión directa....

Es curioso:

CNeuralNets::CNeuralNets(fx HActivationFx, fx OActivationFx, int inputs, int &NodesHL[], int outputs=NULL, bool SoftMax=false)
   {
   e = 2.718281828;
    ...
   }

)))

CNeuralNets::CNeuralNets(fx HActivationFx, fx OActivationFx, int inputs, int &NodesHL[], int outputs=NULL, bool SoftMax=false)
   {
    e = M_E;
   ...
   }
 

Cuando vi que hay una sección en el artículo:

Матрицы в помощь

Si de repente necesitas cambiar los parámetros de un modelo con código estático, la optimización puede llevar mucho tiempo - es un dolor de cabeza, de espalda y otros problemas.

Pensé que finalmente alguien describiría MO en términos dematrices nativas. Pero el dolor de cabeza de las matrices hechas por uno mismo en forma de array unidimensional a la XMatrix[] sólo aumentó....

Документация по MQL5: Основы языка / Типы данных / Матрицы и векторы
Документация по MQL5: Основы языка / Типы данных / Матрицы и векторы
  • www.mql5.com
Матрицы и векторы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
¿Qué significa esto?
int hlnodes[3] = {4,6,1};

¿4 entradas, 1 laer oculta con 6 neuronas y una salida?


No explicas bien lo más importante. Cómo declarar la arquitectura del modelo.

¿Cuántas capas ocultas puedo utilizar?

¿Cómo defino cuántas neuronas tiene cada capa oculta?
Ejemplo: Quiero una red con 8 entradas.
3 capas ocultas con 16, 8, 4 neuronas.
Y 2 Salidas..
¿Es posible?