Cuando una red neuronal produce una predicción incorrecta, surge una pregunta fundamental: ¿qué capa o neurona es responsable del error? El algoritmo de backpropagation resuelve exactamente este problema, distribuyendo el error desde la última capa hasta la capa de entrada mediante derivadas parciales. Comprender este mecanismo es esencial para entender cómo aprenden las redes neuronales.
¿Cómo funciona el ciclo de entrenamiento antes del backpropagation?
Antes de hablar de backpropagation, conviene repasar el flujo completo de entrenamiento [0:24]. Cada capa de la red neuronal posee pesos que realizan operaciones de producto punto con los datos de entrada. La información pasa capa por capa, volviéndose más específica en cada nivel.
- En la capa final se obtiene una predicción.
- Esa predicción se compara con los valores reales a través de una función de pérdida [0:47].
- La función de pérdida indica qué tan lejos está la predicción del resultado correcto.
- Un optimizador, como el descenso del gradiente, utiliza esa información para actualizar los pesos [1:03].
Con los pesos actualizados, el ciclo vuelve a comenzar: nueva predicción, nueva evaluación de la función de pérdida, nueva actualización de pesos. En cada iteración, el objetivo es encontrar el punto mínimo global de la función de pérdida [1:35].
¿Por qué no podemos culpar solo a la última capa del error?
Aquí ocurre algo muy interesante [1:44]. La función de pérdida calcula un error y se lo asigna a la última capa, la que generó la predicción. Pero esa capa no es la única responsable: los cálculos que realizó dependían de la información que le entregó la capa anterior.
Y esa capa anterior, a su vez, recibió sus datos de la capa que la precede. El problema se propaga hacia atrás:
- La última capa dice: la información me llegó de la capa anterior.
- La capa anterior repite lo mismo.
- Ninguna capa individual es la culpable exclusiva del error [2:16].
Este dilema motivó la creación del algoritmo de backpropagation, que evalúa la red en sentido inverso, desde la capa de salida hasta la capa de entrada, distribuyendo el error y calculando cómo debe actualizarse cada peso [2:42].
¿Cómo se calculan las actualizaciones con la regla de la cadena?
La herramienta matemática que hace posible el backpropagation es la derivada parcial, y específicamente la regla de la cadena [3:17]. Por eso es tan importante que las funciones de activación y la función de pérdida sean diferenciables.
¿Qué ocurre en la última capa?
En la capa final tenemos tres elementos encadenados [3:30]:
- Z: los resultados del producto punto.
- La función de activación aplicada sobre Z.
- La función de costo que evalúa la activación contra el valor real.
Aplicando la regla de la cadena, separamos la derivada en dos factores: la derivada de la función de costo con respecto a la activación, multiplicada por la derivada de la activación con respecto a Z [3:49]. Esto nos da las deltas que indican cuánto y en qué dirección ajustar los pesos de la última capa.
¿Cómo se propaga el error a las capas ocultas?
Para las capas ocultas, el proceso es ligeramente diferente [4:14]. Se toman los pesos de la capa actual y se multiplican en producto punto por las deltas obtenidas de la capa posterior. El resultado se multiplica por la derivada de la activación con respecto a Z en la capa L menos uno.
Además, para evaluar el error en cada capa oculta, esas deltas se multiplican en producto punto por la activación de la capa anterior (L menos dos) [4:38]. De esta forma, el error se distribuye proporcionalmente a lo largo de toda la red.
Derivadas parciales, deltas, activaciones, productos punto: son varios elementos que interactúan [4:56]. Sin embargo, estos conceptos se vuelven mucho más claros al implementarlos desde cero con NumPy en Python, que es el siguiente paso en la ruta de aprendizaje.
Si alguno de estos conceptos como el learning rate, las capas ocultas o el descenso del gradiente todavía genera dudas, practicar en el playground de TensorFlow es una excelente forma de consolidar la comprensión antes de escribir código. ¿Qué parte del backpropagation te resulta más desafiante? Comparte tu experiencia en los comentarios.