PyTorch autograd
Cada loss.backward() ejecuta AD en modo inverso sobre el grafo de cómputo que PyTorch construyó en el forward.
loss = criterion(model(x), y)
loss.backward()
optim.step()Nombra las cosas pensando en quien lee, no en quien escribe.
Nombra las cosas pensando en quien lee, no en quien escribe.
Fundamentos de Deep Learning
Entrenar una red neuronal es descenso por gradiente sobre una función muy profundamente anidada. El milagro es que el gradiente se calcula en tiempo *lineal* en el tamaño de la red, usando la regla de la cadena en reverso. Ese algoritmo es la retropropagación.
Backprop es la regla de la cadena en reverso.
Sin backprop, redes con más de 2-3 capas son inentrenables.
Entrenar una red neuronal es descenso por gradiente sobre una función muy profundamente anidada. El milagro es que el gradiente se calcula en tiempo *lineal* en el tamaño de la red, usando la regla de la cadena en reverso. Ese algoritmo es la retropropagación.
Una red feed-forward es una composición con y .
Define . La recursión es , y .
Backprop nunca forma una Jacobiana gigante. Solo multiplica vectores por Jacobianas (VJPs). Esto es autodiff en modo reverso — PyTorch, JAX, TF lo implementan.
Dos modos de fallo: gradientes que se desvanecen (sigmoide/tanh) y gradientes que explotan. Curas: ReLU, conexiones residuales, batch norm, inicialización cuidadosa, recorte de gradientes.
Ejemplo trabajado — backprop por una capa: , ReLU, upstream , . Una ReLU muerta da .
Python (in browser)
Esperado: Loss prints; gradient norms finite and non-zero
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Ejemplo trabajado — gradiente respecto a $\mathbf{W}^{(1)}$: . Solo la segunda fila se actualiza.
Cada loss.backward() ejecuta AD en modo inverso sobre el grafo de cómputo que PyTorch construyó en el forward.
loss = criterion(model(x), y)
loss.backward()
optim.step()jax.grad deriva una función Python; jax.jit la compila a XLA para GPU/TPU. Juntos dan código tipo numpy a velocidad compilada.
from jax import grad, jit
grad_fn = jit(grad(loss_fn))Guarda activaciones solo cada k capas; recalcula el resto durante el backward. Intercambia 2× cómputo por O(sqrt(L)) memoria — lo que permite entrenar LLaMA-70B.
Forward en fp16/bf16, gradientes acumulados en fp32. Reduce memoria y acelera el entrenamiento en Tensor Cores 2-4× con pérdida de precisión mínima.
Pon a prueba tu comprensión. Puntos por acierto + racha + velocidad.
3 preguntas rápidas. Acertá 2 para marcar esta lección como completada.