2 · Cómo entrena una ANN: hacia adelante, pérdida, hacia atrás, actualización
El bucle de entrenamiento de cuatro pasos que sigue toda red neuronal — a mano, en NumPy, luego como 5 líneas de PyTorch.
Entrenar una red neuronal = pase hacia adelante para calcular predicciones, pérdida para medir errores, pase hacia atrás (regla de la cadena) para calcular gradientes, paso del optimizador para actualizar pesos — repetir.
Sin esto:
El entrenamiento es un `model.fit()` de caja negra en lugar de un algoritmo preciso y depurable.
Todo bucle de entrenamiento de redes neuronales, sin importar el framework o la arquitectura, son los mismos cuatro pasos repetidos hasta que la pérdida converge:
- Pase hacia adelante — calcular predicciones desde las entradas a través de todas las capas
- Pérdida — medir cuán incorrectas son las predicciones (ej: MSE, entropía cruzada)
- Pase hacia atrás (retropropagación) — calcular el gradiente de la pérdida respecto a cada peso usando la regla de la cadena
- Paso del optimizador — ajustar cada peso en la dirección que reduce la pérdida:
w ← w - lr * grad
Este bucle es lo que encapsula model.fit() en Keras, optimizer.step() en PyTorch y cada paso de entrenamiento en JAX. Una vez que lo has hecho a mano, todo framework resulta familiar.
Usaremos una red 2 entradas → 2 ocultas → 1 salida con activaciones sigmoid — lo suficientemente pequeña para rastrear a mano, lo suficientemente grande para ser un MLP real.
El bucle de entrenamiento de 4 pasos — el algoritmo que implementa todo framework
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Lectura de PyTorch — el mismo bucle de 4 pasos en 5 líneas de nn.Module
Retropropagación y diferenciación automática — la base matemática del paso 3
¿Qué hace `loss.backward()` en PyTorch?
- Todo bucle de entrenamiento son 4 pasos: pase hacia adelante → pérdida → pase hacia atrás (regla de la cadena) → actualización de pesos. Repetir.
- El pase hacia atrás propaga `dL/dW` para cada peso usando la regla de la cadena — apilar capas significa encadenar derivadas.
- El `loss.backward()` de PyTorch automatiza el paso 3; `optimizer.step()` automatiza el paso 4 — pero el algoritmo es idéntico a la versión manual.
- El problema del gradiente desvanecido (sigmoid satura a 0.25 de gradiente máximo) limita las redes sigmoid profundas — resuelto por ReLU (lección 4).
Todo bucle de entrenamiento de PyTorch / TensorFlow / JAX son exactamente estos 4 pasos. Una vez que lo ves manualmente, todo framework resulta familiar.
Si lo quitas: El entrenamiento es un `model.fit()` de caja negra en lugar de un algoritmo preciso y depurable — no puedes diagnosticar por qué la pérdida se estanca o los gradientes explotan.