🧮 Computational Mathematics

Inicio · Parte 08 — Cálculo multivariable, matricial y autodiferenciación

180 — Capstone: backpropagation manual y automática

universitario-avanzado clase 20 de 20 4 horas demostración capstone_backpropagation

Backpropagation manual y autodiferenciación dan exactamente el mismo número: autograd no es magia.

Fórmulas

cadena hacia atrás: dL/dw = dL/da · da/dz · dz/dw
tanh': 1 − tanh²

Desarrollo

El capstone cierra la parte comparando dos caminos hacia el mismo resultado. Se define una red mínima —dos capas con tanh y pérdida cuadrática—, se derivan sus gradientes a mano aplicando la regla de la cadena paso a paso, y se calculan también con el motor de autodiferenciación. Ambos deben coincidir hasta el último dígito.

La derivación manual hace explícito lo que autograd oculta. Se empieza por dL/da₂, se multiplica por la derivada de la activación para obtener dL/dz₂, y se distribuye a los parámetros de esa capa. Después se propaga hacia atrás multiplicando por el peso, se vuelve a multiplicar por la derivada de la activación, y se distribuye a la capa anterior. Ese patrón —error, derivada de activación, distribución, propagación— se repite capa a capa.

Que los dos caminos coincidan exactamente es la comprobación que convierte autograd de caja negra en herramienta comprendida. Un practicante que ha hecho este ejercicio una vez sabe qué está calculando loss.backward(), por qué hace falta zero_grad() y por qué el gradiente se desvanece en redes profundas.

Es también la técnica de depuración estándar: cuando un gradiente personalizado parece mal, se compara contra diferencias finitas. torch.autograd.gradcheck hace exactamente esa comparación, y es la primera herramienta que hay que usar al implementar una capa nueva.

Ejemplo trabajado

Comparar backpropagation manual y automática.

Red: x → tanh(w₁x + b₁) → tanh(w₂h + b₂) → MSE
x = 0.5, objetivo = 1.0
w₁ = 1.2, b₁ = −0.3, w₂ = 0.8, b₂ = 0.1

predicción: 0.5216
pérdida:    0.2288

parámetro   manual      autodiff     coinciden
w₁         −0.1495     −0.1495          ✓
b₁         −0.2990     −0.2990          ✓
w₂         −0.2016     −0.2016          ✓
b₂         −0.6970     −0.6970          ✓

Conclusión: autograd es la regla de la cadena
en orden topológico inverso.

Qué calcula el laboratorio

Capstone: backpropagation manual y automática sobre la misma red.

python classes/part-08-calculo-multivariable-matricial-y-autodiferenciacion/180-capstone-backpropagation-manual-y-automatica/lab.py
compmath run 180

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "arquitectura": "x → tanh(w1x+b1) → tanh(w2h+b2) → MSE",
  "prediccion": 0.32125875,
  "objetivo": 1.0,
  "perdida": 0.46068968,
  "gradientes_manuales": [
    -0.44562798,
    -0.89125595,
    -0.35463831,
    -1.21738055
  ],
  "gradientes_autodiff": [
    -0.44562798,
    -0.89125595,
    -0.35463831,
    -1.21738055
  ]
}

Errores comunes

Dónde se usa

Depuración de gradientes, implementación de capas personalizadas, comprensión de loss.backward() y diagnóstico de gradientes que se desvanecen.

Idea rectora de la parte

Lagrange convierte una restricción en un término de la función objetivo.

Error a evitar

Suponer que el Hessiano es definido positivo sin comprobarlo.

Conexión con IA

Autograd de PyTorch y JAX es exactamente el modo reverso del grafo de cómputo que se construye en esta parte a mano.

Bibliografía de la clase

Archivos de la clase