🧮 Computational Mathematics

Inicio · Parte 12 — Optimización matemática y computacional

246 — Momentum

avanzado clase 6 de 20 4 horas demostración momentum

Momentum promedia gradientes: el zigzag se cancela y la componente útil se acumula.

Fórmulas

vₖ₊₁ = β·vₖ − lr·∇f(xₖ)
xₖ₊₁ = xₖ + vₖ₊₁
paso efectivo ≈ lr/(1−β):  β = 0,9 multiplica por 10

Desarrollo

Momentum añade memoria al descenso. En vez de moverse según el gradiente actual, mantiene una velocidad que es una media móvil exponencial de los gradientes pasados. La analogía física es exacta: una bola que rueda por la superficie acumula inercia en vez de reaccionar solo a la pendiente instantánea.

El efecto en valles alargados es el que justifica el método. Las componentes del gradiente que apuntan a las paredes cambian de signo en cada iteración y se cancelan al promediarse; las que apuntan a lo largo del valle son consistentes y se acumulan. El zigzag desaparece y el avance en la dirección útil se multiplica.

El paso efectivo en una dirección de gradiente constante es lr/(1−β), de modo que β=0,9 equivale a multiplicar el learning rate por 10 en esas direcciones. Ese factor explica por qué al activar momentum suele haber que bajar el learning rate: si no, se cruza el umbral de estabilidad.

El coste es mínimo: un vector de estado del tamaño de los parámetros y una operación por paso. Con esa inversión, momentum acelera prácticamente siempre en problemas mal condicionados, que son la norma. Por eso el SGD con momentum siguió siendo competitivo con Adam en visión por computador durante años.

Ejemplo trabajado

Mismo problema y mismo learning rate, con y sin momentum.

f(x,y) = x² + 20y²      lr = 0,02      β = 0,9

sin momentum:
  x final = (−0,00056922 ; 0,0)
  f final = 3,24e-07

con momentum:
  x final = (1,741e-05 ; −6,475e-05)
  f final = 8,42e-08

factor de mejora en f: 3,85×

La diferencia crece con el número de condición:
con condición 20 la mejora es de 4×; con condición 1000
momentum es la diferencia entre converger y no converger.

Paso efectivo: lr/(1−β) = 0,02/0,1 = 0,2, diez veces mayor.

Qué calcula el laboratorio

Momentum acumula velocidad y amortigua la oscilación.

python classes/part-12-optimizacion-matematica-y-computacional/246-momentum/lab.py
compmath run 246

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "learning_rate": 0.02,
  "beta": 0.9,
  "sin_momentum": {
    "x_final": [
      -0.00056922,
      0.0
    ],
    "f_final": 3.24006e-07,
    "grad_norm_final": 0.001138430701,
    "historial": [
      {
        "iter": 1,
        "f": 10.8864,
        "|∇f|": 24.3052586903
      },
      {
        "iter": 10,
        "f": 1.7680097355,
        "|∇f|": 2.659330544
      },
      {
        "iter": 50,
        "f": 0.0674812774,
        "|∇f|": 0.5195431741
      },
      {
        "iter": 200,
        "f": 3.24e-07,
        "|∇f|": 0.0011384307
      }
    ]
  },
  "con_momentum": {
    "x_final": [
      1.741e-05,
      -6.475e-05
    ],
    "f_final": 8.4165e-08,
    "grad_norm_final": 0.002590407328,
    "historial": [
      {
        "iter": 1,
        "f": 10.8864,
        "|∇f|": 24.3052586903
      },
      {
        "iter": 10,
        "f": 56.7808358661,
        "|∇f|": 67.345167581
      },
      {
        "iter": 50,
        "f": 0.4289057376,
        "|∇f|": 5.7359148553
      },
      {
        "iter": 200,
        "f": 8.42e-08,
        "|∇f|": 0.0025904073
      }
    ]
  },
  "momentum_llega_mas_bajo": true,
  "factor_de_mejora": 3.85
}

Errores comunes

Dónde se usa

SGD con momentum en visión, aceleración de convergencia en problemas mal condicionados y base de Adam y sus variantes.

Idea rectora de la parte

En un problema convexo todo mínimo local es global; fuera de él no hay garantía.

Error a evitar

Declarar convergencia por número de épocas y no por criterio numérico.

Conexión con IA

AdamW es el optimizador por defecto del entrenamiento moderno; entender su actualización explica el weight decay, el warmup y el gradient clipping.

Bibliografía de la clase

Archivos de la clase