2 · Función de costo y gradiente descendente
El optimizador universal — toma la pendiente de la pérdida, da un paso en sentido contrario, repite hasta converger.
El gradiente descendente es cómo aprende casi todo modelo de ML moderno — toma la pendiente de la pérdida, da un paso en sentido contrario, repite.
Sin esto:
Sin gradiente descendente no puedes optimizar redes neuronales (no existe forma cerrada) — y la forma cerrada OLS falla a escala de todas formas.
En la lección anterior encontramos la mejor recta derivando la forma cerrada OLS — estableciendo el gradiente igual a cero y resolviendo analíticamente. Eso funciona muy bien para regresión lineal con datos moderados, pero tiene límites concretos:
- La ecuación normal requiere invertir una matriz (n × n) — tiempo O(n³). Con 10 millones de filas, eso es inviable.
- Las redes neuronales tienen millones de parámetros sin solución de forma cerrada — cada peso debe encontrarse de forma iterativa.
El gradiente descendente es la respuesta. La clave es geométrica: el gradiente ∇L en un punto del espacio de parámetros te indica qué dirección hace que la pérdida aumente más rápido. Da un paso en la dirección opuesta y reduces la pérdida. Repite, y desciendes en espiral por la superficie de pérdida hacia el mínimo.
Para la pérdida MSE con parámetros (w, b), los gradientes son:
∂L/∂w = −(2/n) · Σ(yᵢ − ŷᵢ) · xᵢ
∂L/∂b = −(2/n) · Σ(yᵢ − ŷᵢ)
La regla de actualización en cada iteración t es:
wₜ₊₁ = wₜ − η · ∂L/∂w
bₜ₊₁ = bₜ − η · ∂L/∂b
donde η (eta) es la tasa de aprendizaje — un hiperparámetro que controla el tamaño del paso. Elegir η correctamente es la habilidad práctica más importante al entrenar modelos de ML.
Python (in browser)
Observa cómo w y b convergen hacia 2.5 y 1.0 durante 200 iteraciones. La columna MSE muestra cómo cae la pérdida — eso es aprendizaje.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
El eje y en escala logarítmica revela la rápida caída inicial y la aproximación asintótica. Tres tasas de aprendizaje, tres historias: muy lenta, justa, diverge.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
La curva de pérdida característica: una caída pronunciada en las primeras decenas de iteraciones, luego una meseta larga. La meseta indica que el modelo está cerca de su mínimo — más iteraciones devuelven mejoras cada vez menores.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Mini-batch GD es el estándar industrial — el tamaño de batch se ajusta, no se elige arbitrariamente. Comienza con 32 o 64.
Si la pérdida del gradiente descendente oscila entre valores altos y bajos sin converger, la causa más probable es:
Gradiente Descendente — el capítulo de MML que cubre la regla de actualización, las condiciones de convergencia y la intuición geométrica de la superficie de pérdida.
- El gradiente ∂L/∂w indica qué dirección aumenta la pérdida — da un paso en sentido contrario: w ← w − η·∂L/∂w.
- La tasa de aprendizaje η es el hiperparámetro más crítico: muy pequeña → convergencia lenta; muy grande → diverge u oscila.
- Batch GD usa todos los datos por paso (estable, lento). SGD usa una muestra (rápido, ruidoso). Mini-batch (32–256 muestras) es el estándar industrial.
- Adam, RMSprop, AdaGrad son variantes adaptativas del GD — el paso central es idéntico; añaden escalado de tasa de aprendizaje por parámetro.
Toda red neuronal se entrena con gradiente descendente (con Adam etc. como variantes). XGBoost realiza gradiente descendente en el espacio de funciones. SGD con momentum es el estándar universal para deep learning.
Si lo quitas: Estarías limitado a modelos de solo forma cerrada — sin redes neuronales, sin aprendizaje en línea, sin modelos con millones de parámetros.