.

lunes, 12 de febrero de 2024

CÁLCULOS DETRAS DEL ALGORITMO BACKPROPAGATION


 Click aquí BACKPROPAGATION para abrir el recurso

Click aquí RETROPROPAGACIÓN para abrir el recurso

Para explicar los cálculos matemáticos detrás del algoritmo de Backpropagation en una Red Neuronal extremadamente simple, consideremos una red con la siguiente estructura:
  • Una capa de entrada con una sola neurona (nodo de entrada).
  • Una capa oculta con una sola neurona.
  • Una capa de salida con una sola neurona.
  • La función de activación utilizada en la neurona es la función sigmoide.
La función sigmoide, denotada como \(\sigma\), es una función de activación común en las redes neuronales que "aplasta" los valores de entrada a un rango entre 0 y 1. Se define como:
\[\sigma(x) = \frac{1}{1 + e^{-x}}\]

Estructura de la Red

- Entrada: \(x\)
- Peso entre la entrada y la capa oculta: \(w_1\)
- Peso entre la capa oculta y la salida: \(w_2\)
- Salida deseada: \(y\)
- Salida real de la red: \(\hat{y}\)

Forward Propagation

El proceso de propagación hacia adelante calcula la salida de la red basándose en las entradas actuales y los pesos de la red.

1. De la entrada a la capa oculta:

    - Valor de entrada a la capa oculta: \(z_1 = x \cdot w_1\)
    - Activación de la capa oculta: \(a_1 = \sigma(z_1)\)

2. De la capa oculta a la salida:

    - Valor de entrada a la salida: \(z_2 = a_1 \cdot w_2\)
    - Activación de la salida (predicción de la red): \(\hat{y} = \sigma(z_2)\)

Cálculo del Error

El error se calcula usando la función de pérdida. Una función de pérdida común es el error cuadrático medio (MSE), pero para simplificar, usaremos el error como la diferencia entre la salida deseada y la salida real:
\[\text{Error} = \frac{1}{2}(y - \hat{y})^2\]

Backpropagation

El objetivo de Backpropagation es calcular el gradiente del error con respecto a cada peso (\(w_1, w_2\)) y actualizar los pesos para minimizar el error. El cálculo del gradiente se realiza aplicando la regla de la cadena.

1. Actualizar \(w_2\) (capa oculta a salida):

    - Derivada del error con respecto a \(w_2\): \(\frac{\partial \text{Error}}{\partial w_2} = \frac{\partial \text{Error}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_2} \cdot \frac{\partial z_2}{\partial w_2}\)

    - Donde:
        - \(\frac{\partial \text{Error}}{\partial \hat{y}} = \hat{y} - y\)
        - \(\frac{\partial \hat{y}}{\partial z_2} = \sigma(z_2) \cdot (1 - \sigma(z_2))\) (derivada de la función sigmoide)
        - \(\frac{\partial z_2}{\partial w_2} = a_1\)

2. Actualizar \(w_1\) (entrada a capa oculta):

    - Derivada del error con respecto a \(w_1\): \(\frac{\partial \text{Error}}{\partial w_1} = \frac{\partial \text{Error}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_2} \cdot \frac{\partial z_2}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1}\)
    
    - Donde:
        - \(\frac{\partial z_2}{\partial a_1} = w_2\)
        - \(\frac{\partial a_1}{\partial z_1} = \sigma(z_1) \cdot (1 - \sigma(z_1))\) (derivada de la función sigmoide)
        - \(\frac{\partial z_1}{\partial w_1} = x\)

Actualización de Pesos

Los pesos se actualizan restando el producto de la tasa de aprendizaje y el gradiente calculado para cada peso. Este proceso ajusta gradualmente los pesos en la dirección que reduce el error total de la predicción. La actualización de los pesos se realiza según la fórmula:

\[w_{nuevo} = w_{viejo} - \eta \cdot \frac{\partial \text{Error}}{\partial w}\]

Donde:
- \(w_{nuevo}\) es el valor actualizado del peso.
- \(w_{viejo}\) es el valor actual del peso antes de la actualización.
- \(\eta\) es la tasa de aprendizaje, un hiperparámetro que controla cuánto ajustamos los pesos con cada actualización. Una tasa de aprendizaje más alta hace que los ajustes sean más grandes, lo que puede acelerar el aprendizaje pero también puede hacer que se sobrepase el mínimo del error.
- \(\frac{\partial \text{Error}}{\partial w}\) es el gradiente del error con respecto al peso que estamos actualizando.

Ejemplo de Actualización de Pesos

1. Para \(w_2\):

La actualización de \(w_2\) se realiza utilizando el gradiente del error con respecto a \(w_2\), calculado previamente. Suponiendo que hemos calculado \(\frac{\partial \text{Error}}{\partial w_2}\), actualizamos \(w_2\) como sigue:

\[w_{2,nuevo} = w_{2,viejo} - \eta \cdot \frac{\partial \text{Error}}{\partial w_2}\]

2. Para \(w_1\):

Similarmente, actualizamos \(w_1\) usando el gradiente del error con respecto a \(w_1\), que también fue calculado:

\[w_{1,nuevo} = w_{1,viejo} - \eta \cdot \frac{\partial \text{Error}}{\partial w_1}\]

Intuición Detrás de la Actualización de Pesos

La esencia de la actualización de los pesos es utilizar la información del error (cuánto se equivocó la red) para hacer ajustes informados en los pesos, de manera que en futuras predicciones, el error sea menor. Al realizar este proceso iterativamente a través de múltiples rondas de entrenamiento (epochs), la red aprende gradualmente los pesos óptimos que minimizan el error para las tareas específicas que realiza, ya sea clasificación, regresión, etc.

Este proceso de ajuste iterativo, guiado por el algoritmo de backpropagation y la actualización de los pesos según el descenso de gradiente, es lo que permite que las redes neuronales aprendan de los datos y mejoren su rendimiento en las tareas para las que son entrenadas.






No hay comentarios:

Publicar un comentario