Inicio · Parte 08 — Cálculo multivariable, matricial y autodiferenciación
cadena hacia atrás: dL/dw = dL/da · da/dz · dz/dw
tanh': 1 − tanh²
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.
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.
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
arquitecturaprediccionobjetivoperdidagradientes_manualesgradientes_autodiffparametroscoincidenconclusion{
"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
]
}
Depuración de gradientes, implementación de capas personalizadas, comprensión de loss.backward() y diagnóstico de gradientes que se desvanecen.
Autograd de PyTorch y JAX es exactamente el modo reverso del grafo de cómputo que se construye en esta parte a mano.
10.1038/323533a0 verificado en Crossref (2026-08-19).torch.autograd.gradcheck — Diferenciación automática: el tema de esta clase · URL de la fuente primaria, pendiente de resolver.