Descenso de gradiente
En simple: lee esto primero
Descenso de gradiente = ir bajando la montaña del error a pasitos, siempre hacia donde más baja, hasta llegar al fondo.
Estás en un cerro con neblina y quieres llegar al valle. No ves el camino, pero sí sientes la inclinación bajo tus pies: das un paso cuesta abajo, vuelves a sentir, otro paso… así hasta el fondo.
- Se usa cuando no hay fórmula directa o cuando los datos son demasiados para usarla.
- La tasa de aprendizaje es el tamaño del paso: muy chica tarda una eternidad; muy grande te hace saltar de un lado a otro sin llegar.
- Si las variables están en escalas muy distintas (metros vs. millones), el valle queda alargado y bajar es lento: por eso se escalan los datos.
- gradiente
- la flecha que apunta hacia donde la función sube más rápido.
- tasa de aprendizaje (η)
- el tamaño de cada paso.
- época
- una pasada completa por todos los datos.
- estocástico / mini-batch
- en vez de mirar todos los datos en cada paso, mirar uno o un grupito: más rápido, pero más «tembloroso».
Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.
Cuando una fórmula no alcanza
Sección titulada «Cuando una fórmula no alcanza»La solución cerrada necesita formar e invertir (, costo ). Con o enormes es demasiado lento o no cabe en memoria, y la mayoría de los modelos no tienen forma cerrada (la logística ya no la tiene). Entonces caminamos cuesta abajo.
La gran idea
Sección titulada «La gran idea»No ves el bowl completo, pero en tu actual siempre puedes medir la pendiente local:
- El gradiente apunta en la dirección de máximo aumento (cuesta arriba).
- Para bajar, paso en la dirección opuesta, .
- Paso pequeño, volver a medir, repetir. Cerca del fondo la pendiente se aplana, así que los pasos se achican solos.
Un excursionista en neblina espesa: no ve el valle, pero siente con los pies hacia dónde baja el terreno.
La regla de actualización
Sección titulada «La regla de actualización»Reutilizamos el mismo gradiente de las ecuaciones normales, ahora para dar un paso en vez de resolver:
es la tasa de aprendizaje (learning rate), un hiperparámetro delicado:
- : los pesos nunca cambian, no se aprende nada.
- muy pequeño: se arrastra (convergencia lentísima).
- muy grande: se pasa del valle, oscila o diverge.
- El signo menos es esencial: el gradiente apunta cuesta arriba.
Rueda cuesta abajo: descenso de gradiente
Regla: w ← w − η·J′(w). Arrastra el punto de inicio con el slider y observa qué hace la tasa de aprendizaje η. Prueba los valores de la slide: 0.04, 0.3, 0.9 y 1.04.
- Datos : . Modelo (sin sesgo, para simplificar). Costo promedio .
- Gradiente: . Con : residuales , , así que . Paso con : .
- En : residuales , , . Nuevo .
- En : residuales , , ; . Los pasos se achican solos porque la pendiente se aplana.
- La solución exacta es . Cada paso multiplica la distancia al óptimo por : convergencia geométrica.
- ¿Y si ? El factor sería : , diverge. El máximo estable aquí es .
Batch, estocástico o mini-batch
Sección titulada «Batch, estocástico o mini-batch»El gradiente es una suma sobre los puntos. Las variantes difieren en cuántos puntos usa cada paso:
| Variante | Puntos por paso | Ventaja | Desventaja |
|---|---|---|---|
| Batch | los | gradiente exacto, camino suave | cada paso = una pasada completa por los datos |
| Estocástico (SGD) | 1 al azar | pasos baratísimos, muchos por pasada | ruidoso, tiembla alrededor del mínimo |
| Mini-batch | 32–256 | equilibrio; una multiplicación de matrices en GPU | hay que elegir el tamaño |
¿Por qué aceptar un gradiente ruidoso? Escala y memoria (millones de filas no caben), progreso más rápido (muchos pasos baratos por pasada), el ruido ayuda a escapar de mesetas en modelos no convexos, y hardware (un mini-batch es justo lo que acelera una GPU). Como la regresión lineal es convexa, las tres variantes llegan al mismo óptimo.
El escalado de features moldea el bowl
Sección titulada «El escalado de features moldea el bowl»La curvatura del bowl la fija . Features en escalas muy distintas (metros² vs número de cuartos vs precio en millones) estiran el bowl en un valle largo y delgado: un solo no sirve para ambas direcciones y el descenso zigzaguea. Estandarizar cada feature (media 0, varianza 1) redondea el bowl y el descenso va casi derecho.
Curvas de nivel: por qué estandarizar
La forma del bowl la fija XᵀX. Con features en escalas muy distintas el valle es largo y fino (curvatura κ alta): un mismo η no sirve para ambas direcciones y el descenso zigzaguea. Con κ = 1 (features estandarizados) el bowl es redondo.
Ejercicio
Sección titulada «Ejercicio», . Haz dos pasos con y con .
Solución
, así que , o bien .
- : factor . Distancia inicial ; : . Converge monótonamente.
- : factor . Distancia ; : . Cambia de lado y crece: diverge.
Regla general para esta parábola: converge si ; oscila si .
Autoevaluación
0/4 correctas · 0 respondidasEn código (NumPy, desde cero)
Sección titulada «En código (NumPy, desde cero)»import numpy as np
def gd_linear(X, y, eta=0.1, epochs=100, batch=None, seed=0): rng = np.random.default_rng(seed) X1 = np.c_[np.ones(len(X)), X] w = np.zeros(X1.shape[1]) n = len(y) for _ in range(epochs): idx = rng.permutation(n) step = batch or n # batch=None → batch completo for s in range(0, n, step): b = idx[s:s + step] r = y[b] - X1[b] @ w # residuales del mini-batch grad = -2 * X1[b].T @ r / len(b) # ∇J promedio w -= eta * grad return w
Xs = (X - X.mean(0)) / X.std(0) # ¡estandarizar primero!w_batch = gd_linear(Xs, y) # batchw_mini = gd_linear(Xs, y, eta=0.05, batch=32) # mini-batchPara profundizar
Sección titulada «Para profundizar»Fuente ·ML_Course_Linear_Regression.pdf (slides 22–28) · ML_Course_Math_Foundations.pdf · ML_Course/session-02c-gradient-descent.ipynb