Tema
Retropropagación
- Aprendizaje profundo
- Nivel intermedio
- Con simulador interactivo
La retropropagación calcula el gradiente de la pérdida respecto de todos los pesos de una red aplicando la regla de la cadena desde la salida hacia la entrada y reutilizando los resultados intermedios.
Nombre en inglés
Backpropagation
Intuición
Cada capa recibe desde arriba una señal que dice cuánto cambiaría la pérdida si su salida cambiase un poco. Con esa señal, la capa calcula el gradiente de sus propios pesos y también la señal que entrega a la capa de abajo. El ahorro está en que la señal se calcula una sola vez por capa, mientras que derivar cada peso por separado repetiría el mismo trabajo tantas veces como pesos haya.
Fórmula
\delta^{(L)} = \nabla_a L \odot f'(z^{(L)}) \qquad \delta^{(l)} = (W^{(l+1)T} \delta^{(l+1)}) \odot f'(z^{(l)}) \qquad \frac{\partial L}{\partial W^{(l)}} = \delta^{(l)} (a^{(l-1)})^T
Ejemplo resuelto
Sea una red 2-2-1 con ReLU en la capa oculta y salida lineal. La entrada es x = (1, 2) y el objetivo es y = 0.5. Los pesos ocultos son w1 = (0.5, -0.5) y w2 = (0.5, 0.25), ambos con sesgo cero y fijo, y los de salida son v = (2, 1) con sesgo cero. Hacia adelante, z1 = 0.5 menos 1 = -0.5 y la ReLU lo deja en 0; z2 = 0.5 más 0.5 = 1 y la ReLU lo deja en 1; la salida vale 2 por 0 más 1 por 1 = 1. Con la pérdida igual a la mitad del cuadrado del error, la pérdida vale 0.125 y su derivada respecto de la salida vale 1 menos 0.5 = 0.5. Hacia atrás, el gradiente de v es 0.5 por (0, 1) = (0, 0.5) y el del sesgo de salida vale 0.5. La señal que baja a la capa oculta es 0.5 por v = (1, 0.5), que la ReLU multiplica por 1 donde z es positivo y por 0 donde no lo es, de modo que queda (0, 0.5). El gradiente de w2 es 0.5 por x = (0.5, 1) y el de w1 es (0, 0) porque su unidad está apagada. Con tasa 0.1 los pesos pasan a v = (2, 0.95), sesgo de salida -0.05 y w2 = (0.45, 0.15). Una segunda pasada hacia adelante da 0.6625 y una pérdida cercana a 0.0132, es decir, cerca de una décima parte de la inicial.
Errores frecuentes
- Actualizar los pesos de una capa antes de haber usado sus valores antiguos para propagar la señal hacia abajo, lo que mezcla dos iteraciones y produce un gradiente que no corresponde a ninguna de las dos.
- Suprimir la derivada de la activación al bajar de capa, fallo que se detecta comparando el gradiente analítico con el numérico sobre un solo peso.
- Dar por sentado que una unidad con gradiente cero está bien entrenada, cuando en el ejemplo anterior la primera unidad oculta no recibe gradiente por estar apagada y puede quedarse muerta para siempre.
Ejercicio
En la misma red del ejemplo, ¿cuánto vale el gradiente de la pérdida respecto del primer peso de la segunda unidad oculta?
Ver la solución
La señal que llega a la segunda unidad oculta es la derivada de la salida por el peso de salida correspondiente, es decir, 0.5 por 1 = 0.5. Como z2 = 1 es positivo, la derivada de la ReLU vale 1 y la señal pasa intacta. El gradiente respecto de un peso de entrada es esa señal multiplicada por la entrada asociada, que aquí vale 1. El resultado es 0.5.
Respuesta: 0.5
Temas relacionados
Cursos a los que prepara
Simulador
Este tema tiene un simulador interactivo en la guía.