Entrenamiento de Redes Neuronales

La suma de los pesos de las entradas, W1, W2, W3, etc.. multiplicadas por sus pesos asociados determina el “impulso nervioso” que recibe la neurona. Este valor, se procesa en el interior de la célula mediante una función de activación que devuelve un valor que se envía como salida de la neurona.

En el esquema anterior se representa una neurona artificial del siguiente modo:

Una red neuronal artificial está formada por neuronas artificiales conectadas entre sí y agrupadas en diferentes niveles que denominamos capas:

Una capa es un conjunto de neuronas cuyas entradas provienen de una capa anterior (o de los datos de entrada en el caso de la primera capa) y cuyas salidas son la entrada de una capa posterior

En la siguiente imagen podemos ver una red con cuatro capas:

La inicialización de los pesos y bias en Deep Learning, forma parte de los procesos de trabaja con redes neuronales profundas, por lo que conocer cómo funciona y a qué hace referencia es imprescindible.

 Los valores de los pesos de las neuronas se van actualizando buscando reducir el valor de la función de pérdida. Este proceso se realiza mediante la propagación hacia atrás. El objetivo de la red neuronal es resolver los problemas de la misma manera que el cerebro humano, aunque las redes neuronales son más abstractas.

Forward propagation

La propagación hacia adelante es el conjunto de procesos matemáticos desde que introducimos nuestros datos en la red neuronal, hasta que esta da un resultado. Supongamos que tenemos esta red neuronal:

 

Las operaciones se van haciendo de izquierda a derecha, es decir de la capa de entrada, van a la primera capa oculta, hidden layer 1, después van a la segunda capa oculta, hidden layer 2, y por último van a la última capa que nos da el resultado, output layer. Esto es la propagación hacia adelante.

Backward Propagation

Sucede solo durante el entrenamiento de la red neuronal. La propagación hacia atrás es lo que hace que la red neuronal aprenda, es decir, sepa cada vez hacer mejores predicciones. Esta propagación se realiza con cualquier algoritmo de optimización numérico, como el descenso de gradiente estocástico.

El Backwards propagation es un algoritmo de aprendizaje supervisado utilizado para entrenar redes neuronales artificiales. Su objetivo es ajustar los pesos y sesgos de una red neuronal para minimizar la diferencia entre las salidas de la red y las salidas deseadas o esperadas durante el entrenamiento.

El algoritmo utiliza una técnica de optimización matemática llamada gradiente descendente, que permite ajustar los pesos y sesgos de la red para minimizar el error.

El proceso de ajuste se realiza en dos fases: en la propagación hacia adelante, forward propagation,, se calcula la salida de la red para una entrada dada, y en la propagación hacia atrás, back propagation, se ajustan los pesos y sesgos de la red para minimizar el error.

En la Propagación hacia atrás, se calcula el error entre la salida de la red y la salida deseada. Luego, se propaga este error hacia atrás a través de la red neuronal, desde la capa de salida hacia las capas ocultas. Durante la propagación hacia atrás, se calcula la derivada parcial del error con respecto a cada peso y sesgo de la red.

A partir de derivadas parciales, se actualizan los pesos y sesgos de la red utilizando la técnica de gradiente descendente. La idea detrás del gradiente descendente es ajustar los pesos y sesgos de la red de manera que minimicen el error en cada época de entrenamiento. El algoritmo utiliza la derivada del error con respecto a cada peso y sesgo para determinar la dirección y magnitud del ajuste.

La tasa de aprendizaje es un parámetro importante en el algoritmo, ya que indica la magnitud de los ajustes que se realizan en cada época de entrenamiento. El proceso de propagación hacia adelante y propagación hacia atrás se repite muchas veces, ajustando los pesos y sesgos de la red para minimizar el error en cada época de entrenamiento. Con el tiempo, la red neuronal se ajusta para producir salidas más precisas y útiles para tareas específicas, como clasificación, predicción o reconocimiento de patrones

En la imagen, podemos ver una red con una primera capa de dos neuronas, una capa oculta de dos neuronas y una capa de salida de otras dos neuronas. Además, la capa interna y la de salida tienen también bias.

Por simplicidad, vamos a suponer que nuestro training set se compone solo de un elemento: 0.05, 0.1que es de clase 1, podría ser de clase 0, si la probabilidad de la neurona o1 es mayor que la de la neurona o2, o de clase 1 si ocurre lo contrario.

En la siguiente imagen se puede ver la red con los pesos inicializados aleatoriamente, el elemento del training set a la entrada y la salida deseada:

Ya tenemos nuestra red definida y lista para entrenar. Una red aprende Mediante el forward y back propagation en Deep Learning.

Forward pass

El feed-forward o pasada hacia delante consiste en calcular la salida de nuestra red con los valores actuales de los pesos. Para ello, siguiendo con nuestro ejemplo, lo que hacemos es alimentar, feed forward, la red con nuestro elemento de entrenamiento.

De acuerdo con esto, para calcular o1 y o2 necesitamos:

  • Para la primera capa, la oculta:
    • inh1 y outh1
    • inh2 y outh2
  • Para la última capa, la de salida:
    • ino1 y outo1
    • ino2 y outo2

Donde o1 = outo1 y o2 = outo2.

Con lo cual, tenemos que calcular:

Vamos a ver cómo llevamos el cálculo de nuestra salida:

Solo nos queda calcular o1 y o2, vamos allá:

Por lo tanto, aplicando la función de activación:


Ya tenemos las predicciones de nuestra red neuronal calculadas. Sin embargo, no hemos terminado, porque no se parecen en nada al 0.01 y 0.99 deseados.

Back propagation

Para actualizar los pesos, cada uno en función de lo que influya en el error total, debemos calcular cuánto influye un cambio en un determinado peso con respecto al error total y actualizarlo teniendo en cuenta esta relación.

Por ejemplo, para calcular cuánto influye un cambio en el peso w5 en el error total, podemos entender cada neurona como una función y aplicar la regla de la cadena para llegar desde el error total hasta el peso w5.

Imagina que cada círculo es una función y que cada flecha una multiplicación. Entonces, utilizando la regla de la cadena, podríamos escribir:

Tras recordar la regla de la cadena, veamos cómo podemos escribir la fórmula que nos indique cúanto cambia el E total en función del peso w5:

El concepto de Deep Learning nace a raíz de utilizar un gran número de capas ocultas en las redes.

Entrenar una red neuronal consiste en ajustar cada uno de los pesos de las entradas de todas las neuronas que forman parte de la red neuronal, para que las respuestas de la capa de salida se ajusten lo más posible a los datos que conocemos.

Si queremos conseguir que la red neuronal sea capaz de generalizar e identificar gatos en cualquier imagen, es importante utilizar un elevado número de imágenes para realizar el entrenamiento, tanto de imágenes que son gatos, etiquetadas como 1, como de imágenes que no son gatos, etiquetadas como 0, incluyendo la mayor variabilidad posible.

Con esto, la red será capaz de ajustar sus parámetros para satisfacer en la medida de lo posible todas las imágenes, por lo que será capaz de extraer de manera precisa las características que identifican la presencia de un gato en una imagen.

Las redes neuronales no supervisadas se entrenan permitiendo que la red neuronal se autoajuste continuamente a las nuevas entradas. Se emplean para inferir información a partir de conjuntos de datos que constan de datos de entrada sin respuestas etiquetadas. Se pueden utilizar para descubrir distribuciones naturales, categorías y relaciones entre categorías en los datos.

Una parte de este algoritmo consiste en estimar continuamente el estado del error del modelo, y para ello necesita la loss function o función de perdida, que estima la pérdida del modelo, y ayuda a actualizar el valor de los pesos para que reduzcan el valor de pérdida de esta función hasta la siguiente evaluación.

Durante el paso de entrenamiento de la red neuronal, esta aprende a predecir un input.

En el backpropagation se ajustan los parámetros del modelo, con el objetivo de ir reduciendo la cost function, que es el error de predicción. El objetivo es ir reduciendo este error mientras se van modificando y optimizando los weights y biases, parámetros el modelo.

En Deep Learnig, DL, sus resultados son losses, y el objetivo es reducir esos valores. La definición de esta función es uno de los pilares para que una red neuronal o estructura de DL tenga un buen rendimiento, ya que es un punto clave para la correcta representación matemática de este modelo. En el siguiente punto se trataran los tipos más usados y su definición.

Pero antes de empezar a hablar de funciones específicas hay dos cosas de las que es importante hablar:

  • Hay infinitas funciones de pérdida y es uno de los campos de investigación más activos actualmente dentro del sector del DL.
  • Cada caso de estudio va a tener su propia función de pérdida óptima y es subjetiva a múltiples variantes como, por ejemplo, al dataset, a la arquitectura entre otros.

La loss function también va a depender mucho de qué objetivo se tenga con la red neuronal; regresión o clasificación, esto va a marcar una diferencia a la hora de decidir con qué función se va a quedar.

Funciones de regresión y de clasificación.

1.- La función mean squared error (MSE) loss, es la primera función que se debe tener en cuenta en un problema de regresión. Se calcula con la media del cuadrado de las diferencias entre el valor predicted y el esperado. El hecho de elevar al cuadrado la diferencia hace imposible que el valor resultante sea negativo y el valor óptimo es el cero, cuando la distancia entre la predicción y el valor esperado es nula. También, hace que las malas predicciones se castiguen más cuándo más grandes resulten, es decir, se castiga más al modelo por hacer errores mayores.

2.- La siguiente función es una modificación de la MSE: mean squared logarithmic error loss (MSLE), la diferencia entre esta función y la anterior es que, en este caso, se aplica un logaritmo, tanto a la predicción como al valor esperado.

Se puede ver en la siguiente ecuación MSLE, el uso del logaritmo hace que el efecto de castigo que tenía la función MSE para las predicciones muy distantes del valor sabido, sea menor y se relaje. En la ecuación MAE se puede ver que se calcula como la media de los valores absolutos entre la diferencia del valor predicted y el valor esperado.

3.- Loss function basado en la teoría de la información. Dada una variable discreta X, se define la entropía H(x), o entropía de Shannon, al logaritmo de la inversa de la probabilidad: La entropía mide la incertidumbre relacionada con los posibles resultados de un proceso aleatorio; cuanto mayor sea la entropía, mayor es la sorpresa para el observador. La mayor incertidumbre aparece cuándo la entropía está en su punto más alto.

Suponiendo que no se tiene una distribución de probabilidad, sino dos, P y Q, definidas ambas en la misma variable aleatoria X. En el caso donde sólo hay dos posibles resultados se tiene la siguiente definición para la cross entropy binaria: Si no se encuentra en una situación de multiclase, la ecuación que se deberá usar para la cross entropy se puede ver en la siguiente ecuación. La función cross entropy es la primera función que se debe testear para problemas de clasificación. A partir de la función de cross entropy han salido otras funciones de pérdida para lidiar, por ejemplo, con datasets no balanceados, refiriéndose a datasets que la frecuencia de una clase es mucho mayor que las otras. De estas adaptaciones de la función de cross entropy han salido dos funciones: weighted binary cross-entropy y balanced binary cross entropy. La weighted binary cross entropy (WBCE) utiliza un coeficiente para darle peso a muestras positivas y normalmente se usa cuando los datos ofrecen un significativo desequilibrio. Su representación matemática se puede ver en la siguiente ecuación.

4.- La balanced binary cross entropy, es similar a la weighted binary cross entropy, pero en esta variante ambas muestras positivas y negativas tienen aplicado un peso. Su representación matemática se puede ver en la siguiente ecuación.

5.- Otra variación de la función binary cross entropy es la focal loss, que trabaja muy bien cuando el desequilibrio del dataset de entrenamiento es muy alto, ya que le da un peso a la contribución de muestras bien predecidas y permite que se aprendan bien las muestras que son positivas, pero no detectadas.

Su representación matemática se puede ver en la siguiente ecuación. Se puede ver que en la función de FL aparece un parámetro 𝛌. Es un hiper parámetro que se usa para calibrar la importancia de muestras mal clasificadas. En la figura 2 se puede ver cómo la modificación de éste parámetro cambia la representación gráfica de la función, 𝛌 disminuye la penalización para muestras fáciles extendiendo el rango dónde recibirán valores bajos de pérdida. Se puede ver, también, que si este hiper parámetro 𝛌 es cero se encuentra con la función standard de cross entropy. Además, FL también puede tener otro parámetro llamado 𝛼, que permite balancear más el error, obteniendo la siguiente función matemática:

Hay muchas funciones de pérdida y aquí sólo se ha presentado unas cuantas opciones. Para escoger a loss function o función de pérdida necesitamos saber que se quiere hacer con nuestra red neuronal: clasificación o regresión.

Para hablar de la regresión se empezará con el uso de una red neuronal para regresión la primera opción tiene que ser mean squared error (MSE) loss. Una vez se pruebe con esta función, si el entrenamiento no ha salido suficientemente bien, es cuando se debe cambiar.

Para seguir investigando qué función usar en lugar de MSE se tiene que estudiar la distribución del dataset. En una situación donde el valor que se quiere predecir tiene valores muy dispersos, no se quiere castigar tanto la diferencia grande entre el predicted value y el valor esperado.

En este caso se puede probar con mean squared logarithmic error (MSLE) loss. Si, el dataset tiene muchos outliers, tampoco se quiere los errores y se puede usar la función de mean absolute error (MAE) loss.

Para la clasificación, la función que se debe probar primero es la cross entropy loss, que se puede usar para casos de clasificación binaria como casos de multiclase. A partir de esta función se han creado muchas otras funciones que son variaciones de esta misma y, se pueden encontrar funciones para clasificación binaria o para clasificación no binaria.

Cada problema es único, cada dataset es diferente y en cada caso hay que estudiar cuál sería la mejor manera de afrontar el desafío. Puede incluso suceder que, en un mismo modelo y problema, sólo cambiando el dataset se tenga que modificar la loss function

 

 

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *