🧮 Computational Mathematics

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

243 — Gradiente y direcciones de descenso

avanzado clase 3 de 20 4 horas demostración descent_directions

El gradiente negativo es la dirección más empinada, pero no la única que sirve.

Fórmulas

d es de descenso ⟺ dᵀ∇f < 0
la más empinada: d = −∇f
Newton: d = −H⁻¹∇f  (también de descenso si H es definida positiva)

Desarrollo

El criterio para que una dirección sirva es sencillo: su producto escalar con el gradiente debe ser negativo. Eso significa que forma un ángulo mayor de 90 grados con el gradiente, y que moverse un poco en esa dirección reduce la función. Hay infinitas direcciones que lo cumplen, no solo una.

El gradiente negativo es la de máximo descenso local, en el sentido de que maximiza la reducción por unidad de longitud del paso. Pero «localmente óptima» no significa «globalmente eficiente»: en un valle alargado el gradiente apunta hacia las paredes en vez de a lo largo del valle, y el descenso zigzaguea desperdiciando la mayor parte del movimiento.

Ese defecto es exactamente lo que corrigen los métodos posteriores. Momentum promedia gradientes sucesivos y el zigzag se cancela. Newton usa la curvatura para reescalar cada dirección y apunta directamente al mínimo de la aproximación cuadrática. Los métodos adaptativos escalan por coordenada. Todos siguen siendo direcciones de descenso, solo que mejor elegidas.

Conviene retener que cualquier dirección con producto escalar negativo funciona, incluso una aleatoria. Los métodos de optimización sin gradiente explotan esa libertad probando direcciones al azar y quedándose con las que reducen el objetivo. Son lentos pero aplicables donde no hay derivada, y la clase 259 los desarrolla.

Ejemplo trabajado

Cuatro direcciones evaluadas desde el mismo punto.

f(x,y) = x² + 20y²      punto (−2, 3)      f = 184,0
∇f = (−4, 120)

dirección           dᵀ∇f      ¿descenso?   f tras un paso
−gradiente        −14 416         sí         183,8800
aleatoria válida     −116         sí         183,9180
eje x                 + 4         no         184,0040
+gradiente        +14 416         no         184,1201

La más empinada es −∇f, pero la aleatoria también sirve.

Nota: el gradiente vale 120 en y y −4 en x. El descenso
corregirá sobre todo y, y avanzará muy poco en x: ese
desequilibrio es el que produce el zigzag.

Qué calcula el laboratorio

Cualquier dirección con dᵀ∇f < 0 hace descender la función.

python classes/part-12-optimizacion-matematica-y-computacional/243-gradiente-y-direcciones-de-descenso/lab.py
compmath run 243

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "-gradiente": {
    "dᵀ∇f": -14416.0,
    "es_de_descenso": true,
    "f_tras_el_paso": 183.87995333
  },
  "coordenada_x": {
    "dᵀ∇f": 4.0,
    "es_de_descenso": false,
    "f_tras_el_paso": 184.004001
  },
  "aleatoria_valida": {
    "dᵀ∇f": -116.0,
    "es_de_descenso": true,
    "f_tras_el_paso": 183.91798611
  },
  "ascenso": {
    "dᵀ∇f": 14416.0,
    "es_de_descenso": false,
    "f_tras_el_paso": 184.12008663
  },
  "f_inicial": 184.0,
  "la_mas_empinada": "-∇f"
}

Errores comunes

Dónde se usa

Diseño de optimizadores, métodos de región de confianza, optimización sin derivadas y análisis de convergencia.

Idea rectora de la parte

Momentum promedia gradientes; Adam además normaliza por su escala.

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