¿Qué es?
El algoritmo que calcula y para cada capa de una red: una pasada hacia delante guardando los valores intermedios y otra hacia atrás aplicando la regla de la cadena desde la pérdida hasta las entradas. Coste: unas dos veces la pasada hacia delante, sea cual sea el número de parámetros.
¿Por qué existe?
El descenso de gradiente necesita el gradiente respecto de cada peso. Calcular cada derivada parcial por separado (o con diferencias finitas) cuesta una evaluación completa de la red por peso: imposible con pesos. La retropropagación comparte el trabajo: la derivada de la pérdida respecto de la salida de una capa se calcula una vez y se reutiliza para todos los pesos que entran en ella.
Intuición
Repartir culpas. La pérdida dice «la salida se ha pasado tanto». Cada capa devuelve la culpa a sus entradas en proporción a cuánto influyeron (las derivadas locales), y cada peso recibe (culpa que llega a su neurona) × (la entrada que multiplicó). Ese producto es .
¿De dónde sale? Sigue los prerrequisitos: retropropagación ← regla de la cadena ← derivadas; ← derivadas parciales ← gradiente ← funciones de varias variables; ← descenso de gradiente ← optimización; ← redes neuronales.
Definición formal
Para , y pérdida , con :
En una red profunda la última fórmula pasa a la capa anterior: .
Fórmulas
¿Cómo se calcula?
adelante: a0 = x; para ℓ = 1..L: zℓ = Wℓ aℓ₋₁ + bℓ; aℓ = σ(zℓ) # guardar cada zℓ, aℓ
pérdida: L = ℓ(aL, y); δ = ∂ℓ/∂aL ⊙ σ'(zL)
atrás: para ℓ = L..1:
∂L/∂Wℓ = δ aℓ₋₁ᵀ ; ∂L/∂bℓ = δ
δ = (Wℓᵀ δ) ⊙ σ'(zℓ₋₁)
actualizar: Wℓ ← Wℓ − η ∂L/∂Wℓ ; bℓ ← bℓ − η ∂L/∂bℓ
Ejemplo
Una neurona, , pérdida cuadrática , con , , , . Hacia delante: , , . Hacia atrás: , , , así que y . Ambas negativas: hay que aumentar y . Reprodúcelo paso a paso en la demo.
Visualización interactiva
valor hacia delante ·gradiente ∂L/∂· que fluye hacia atrás
¿Por qué importa?
La popularizaron Rumelhart, Hinton y Williams (1986), con raíces en la diferenciación automática en modo inverso de
Linnainmaa (1970) y en la teoría de control. Hizo entrenables las redes multicapa y, escalada en GPU, hizo posible el
deep learning. Cada llamada a loss.backward() la ejecuta.
Las matemáticas que hay detrás
La retropropagación es la regla de la cadena evaluada desde la pérdida hacia atrás, reutilizando cada producto intermedio.
La retropropagación calcula para cada peso de la red.
Retropropagación = la regla de la cadena multivariable evaluada en orden inverso sobre el grafo de la red.
¿Dónde se utiliza?
Temas de informática a los que se llega desde aquí, con la cadena de ideas que lleva a ellos:
Qué depende de él
Ejercicios
Para y , deduce y .
Solución
y .
¿Por qué la retropropagación necesita guardar las activaciones de la pasada hacia delante, y cómo intercambia el checkpointing memoria por cómputo?
Solución
Las derivadas locales (, ) dependen de valores de la pasada hacia delante. El checkpointing guarda solo las activaciones de algunas capas y recalcula las demás en la pasada hacia atrás: la memoria baja (a con una colocación óptima) a cambio de más o menos una pasada hacia delante extra.