Cómo usar la curvatura para encontrar mínimos más rápido
El Método de Newton (Newton’s Method) es un algoritmo de optimización de segundo orden que utiliza tanto el gradiente como el Hessiano para encontrar mínimos (o raíces) de una función de forma más eficiente que el descenso de gradiente.
👉 Es uno de los métodos más potentes en optimización matemática.
Definición corta
El Método de Newton actualiza parámetros usando gradiente y Hessiano para encontrar mínimos rápidamente.
Definición detallada
La actualización es:xt+1=xt−H−1∇f(xt)
Donde:
- ∇f(x) = gradiente
- H = Hessiano
- H−1 = inversa del Hessiano
👉 A diferencia del descenso de gradiente, ajusta el paso según la curvatura.
Intuición
El método responde:
👉 “No solo hacia dónde ir, sino cuánto avanzar según la forma de la función”
Gradiente → dirección
Hessiano → forma
Newton → dirección + ajuste óptimo
Interpretación geométrica
- usa aproximación de Taylor de segundo orden
- encuentra el mínimo de esa aproximación
👉 Newton salta directamente al mínimo local de esa aproximación.
Ejemplo simple
Gradiente:
Hessiano:
Actualización:
👉 Converge en un solo paso.
🔄 Comparación con descenso de gradiente
| Método | Usa | Velocidad |
|---|---|---|
| Gradient Descent | gradiente | lenta |
| Newton | gradiente + Hessiano | rápida |
Método de Newton en machine learning
🔹 1. Optimización rápida
Menos iteraciones.
🔹 2. Curvatura adaptativa
Se ajusta automáticamente.
🔹 3. Uso en modelos pequeños
- regresión logística
- modelos convexos
🔹 4. Limitaciones en deep learning
- Hessiano costoso
- inversión de matriz cara
Problemas del método
🔹 1. Costo computacional
🔹 2. Hessiano no invertible
Puede fallar.
🔹 3. No siempre converge
Depende del punto inicial.
Variantes
- Newton amortiguado
- Quasi-Newton (BFGS, L-BFGS)
Ejemplo conceptual
Descenso de gradiente → pasos pequeños
Newton → salto directo al mínimo
Ejemplo en Python
import numpy as npdef f(x): return x**2def grad(x): return 2*xdef hessian(x): return 2x = 5.0for _ in range(3): x = x - grad(x)/hessian(x)print("Resultado:", x)
Ejemplo en PyTorch
import torchfrom torch.autograd.functional import hessiandef f(x): return x[0]**2x = torch.tensor([5.0], requires_grad=True)for _ in range(3): y = f(x) grad = torch.autograd.grad(y, x, create_graph=True)[0] H = hessian(f, x) x = x - grad / H[0][0]print("Resultado:", x.item())
Ejemplo 2D
import torchfrom torch.autograd.functional import hessiandef f(x): return x[0]**2 + x[1]**2x = torch.tensor([3.0, 4.0], requires_grad=True)for _ in range(2): y = f(x) grad = torch.autograd.grad(y, x, create_graph=True)[0] H = hessian(f, x) x = x - torch.linalg.solve(H, grad)print("Resultado:", x)
Qué muestra este ejemplo
- Uso del Hessiano
- Convergencia rápida
- Optimización avanzada
Errores comunes
Ignorar singularidad del Hessiano
Puede romper el algoritmo.
Usarlo en redes grandes
Es computacionalmente inviable.
No regularizar
Puede ser inestable.
Ejemplo conceptual en ML
Función de pérdida
↓
Newton usa curvatura
↓
Convergencia rápida
Interpretación profunda
El método de Newton permite:
- aprovechar la geometría de la función
- acelerar la convergencia
- entender mejor la optimización
👉 Es la versión “inteligente” del descenso de gradiente.
Conclusión
El Método de Newton utiliza gradiente y Hessiano para encontrar mínimos de forma eficiente, adaptándose a la curvatura de la función. Es más rápido que el descenso de gradiente, pero también más costoso.
👉 Es clave para entender la optimización de segundo orden.
Related Concepts
- Gradiente
- Hessiano
- Descenso de gradiente
- Aproximación de Taylor
- Optimización