Inicio · Parte 08 — Cálculo multivariable, matricial y autodiferenciación
x ← x − α∇f(x)
estable si α < 2/λ_max
convergencia lenta si λ_max/λ_min es grande
El descenso de gradiente aplica repetidamente la misma regla: moverse en dirección contraria al gradiente con un paso α. Sobre una función cuadrática se puede analizar exactamente, y ese análisis explica todo lo que se observa en la práctica.
La condición de estabilidad es α < 2/λ_max, donde λ_max es el mayor autovalor del Hessiano. Superarla hace que el algoritmo diverja, y por eso el learning rate es el hiperparámetro que más divergencias explica. La clase 244 lo comprueba con cuatro valores distintos.
La velocidad de convergencia la determina el cociente de autovalores. Si son parecidos, el descenso avanza directo al mínimo; si son muy dispares, el gradiente apunta casi perpendicular al eje largo del valle y el algoritmo zigzaguea. Con f = x² + 20y², la relación es 20 a 1 y el zigzagueo es visible.
Ese diagnóstico es el que motiva todo lo demás. Momentum (clase 246) amortigua la oscilación acumulando velocidad; los métodos adaptativos escalan cada coordenada por separado; los de segundo orden corrigen la anisotropía directamente. Todos atacan el mismo problema.
Descenso sobre una cuadrática mal condicionada.
f(x,y) = (x−3)² + 5(y+1)², lr = 0.08
inicio (0,0), mínimo teórico (3,−1)
paso x f
1 (0.48, −0.80) 6.55
5 (1.72, −0.99) 1.63
20 (2.90, −1.00) 0.0092
60 (3.00, −1.00) 1.6e−09
gradiente final: 8.9e−05 → convergió ✓
Límite de estabilidad: α < 2/10 = 0.2
Descenso de gradiente sobre una cuadrática con historial.
python classes/part-08-calculo-multivariable-matricial-y-autodiferenciacion/171-optimizacion-sin-restricciones/lab.py
compmath run 171
funcionminimo_teoricolearning_ratehistorialsolucion_finalgradiente_finalconvergio{
"funcion": "(x-3)² + 5(y+1)²",
"minimo_teorico": [
3.0,
-1.0
],
"learning_rate": 0.08,
"historial": [
{
"paso": 1,
"x": [
0.48,
-0.8
],
"f": 6.5503999996
},
{
"paso": 5,
"x": [
1.745364,
-0.99968
],
"f": 1.5741115708
},
{
"paso": 20,
"x": [
2.908229,
-1.0
],
"f": 0.0084219751
},
{
"paso": 60,
"x": [
2.999914,
-1.0
],
"f": 7.4e-09
}
],
"solucion_final": [
2.999914,
-1.0
],
"gradiente_final": [
-0.00017175,
0.0
]
}
Entrenamiento de cualquier modelo por gradiente, ajuste del learning rate y diagnóstico de divergencias.
Autograd de PyTorch y JAX es exactamente el modo reverso del grafo de cómputo que se construye en esta parte a mano.
10.48550/arxiv.1609.04747 verificado en DataCite (2026-08-19).9780387400655 verificado en International ISBN Agency (2026-08-19).