Quasi-Newton (BFGS / L-BFGS)

Cómo aproximar el Hessiano para optimizar de forma eficiente

Los métodos Quasi-Newton son algoritmos de optimización que aproximan el Hessiano en lugar de calcularlo explícitamente. Esto permite obtener gran parte de la velocidad del método de Newton, pero con un costo computacional mucho menor.

👉 Son ampliamente usados en machine learning y optimización numérica.

Definición corta

Los métodos Quasi-Newton estiman el Hessiano usando información del gradiente para acelerar la optimización.


Definición detallada

En lugar de usar:xt+1=xtH1f(xt)x_{t+1} = x_t – H^{-1} \nabla f(x_t)

Se usa una aproximación:xt+1=xtBt1f(xt)x_{t+1} = x_t – B_t^{-1} \nabla f(x_t)

Donde:

  • BtB_tBt​ ≈ Hessiano
  • se actualiza iterativamente

👉 No se calcula el Hessiano real.

Intuición

El método responde:

👉 “Aprendo la forma de la función mientras avanzo”


Gradiente → dirección  
Newton → dirección + Hessiano real
Quasi-Newton → dirección + Hessiano aprendido

Idea clave

  • Usa diferencias de gradientes
  • Construye una aproximación progresiva

BFGS

BFGS (Broyden–Fletcher–Goldfarb–Shanno):

  • actualiza una matriz aproximada del Hessiano
  • converge rápido
  • muy usado en práctica

Actualización (idea conceptual)

Bt+1=Bt+correccioˊn basada en gradientesB_{t+1} = B_t + \text{corrección basada en gradientes}Bt+1​=Bt​+correccioˊn basada en gradientes


👉 Mantiene propiedades importantes como simetría.


L-BFGS

L-BFGS (Limited-memory BFGS):

  • no guarda la matriz completa
  • usa memoria limitada
  • ideal para grandes dimensiones

Es la versión escalable.

Comparación

MétodoHessianoMemoriaEscala
Newtonexactoaltopequeño
BFGSaproximadomediomedio
L-BFGSaproximadobajogrande

Uso en machine learning

🔹 1. Modelos clásicos

  • regresión logística
  • SVM

🔹 2. Deep learning (limitado)

  • datasets pequeños
  • problemas convexos

🔹 3. Optimización eficiente

Menos iteraciones que SGD.

Ejemplo conceptual

Paso 1 → aprende dirección  
Paso 2 → mejora estimación
Paso 3 → converge rápido

Ejemplo intuitivo

En cada paso:

  1. calcula gradiente
  2. compara con el anterior
  3. ajusta la estimación del Hessiano

👉 aprende la geometría sin calcularla.

Relación con otros conceptos

  • Gradiente
  • Hessiano
  • Método de Newton
  • Optimización

Ejemplo en Python (SciPy BFGS)

import numpy as np
from scipy.optimize import minimize
def f(x):
return x[0]**2 + x[1]**2
x0 = np.array([5.0, 5.0])
result = minimize(f, x0, method='BFGS')
print("Resultado:", result.x)

Ejemplo con L-BFGS

from scipy.optimize import minimize
import numpy as np
def f(x):
return x[0]**2 + x[1]**2
x0 = np.array([5.0, 5.0])
result = minimize(f, x0, method='L-BFGS-B')
print("Resultado:", result.x)

Ejemplo en PyTorch (L-BFGS)

import torch
x = torch.tensor([5.0], requires_grad=True)
optimizer = torch.optim.LBFGS([x], lr=1)
def closure():
optimizer.zero_grad()
y = x**2
y.backward()
return y
for _ in range(5):
optimizer.step(closure)
print("Resultado:", x.item())

Qué muestra este ejemplo

  • Optimización sin Hessiano explícito
  • Convergencia eficiente
  • Uso práctico en ML

Errores comunes

Usarlo en datasets enormes

Puede ser lento.


Confundir con Newton exacto

Es solo una aproximación.


Ignorar condiciones iniciales

Afecta convergencia.

Ejemplo conceptual en ML

Gradiente → información local  

Quasi-Newton → aprende curvatura

Optimización eficiente

Interpretación profunda

Los métodos Quasi-Newton permiten:

  • capturar curvatura sin alto costo
  • acelerar la convergencia
  • escalar mejor que Newton

👉 Son el equilibrio entre precisión y eficiencia.

Conclusión

Los métodos Quasi-Newton (BFGS / L-BFGS) ofrecen una forma eficiente de optimización al aproximar el Hessiano, logrando una convergencia rápida sin el alto costo computacional del método de Newton.

👉 Son una pieza clave en la optimización moderna.


Related Concepts