1. Conmutar
  2. Computar
  3. Deducir
  4. Probabilidad
  5. Información
  6. Vectores
  7. Derivadas
  8. Optimizar
  9. Neuronas
  10. Generalizar
  11. Atención
  12. LLM

Capítulo 07 · Optimización

Bajar la montaña a ciegas

Entrenar un modelo es buscar el punto más bajo de un paisaje con miles de millones de dimensiones, en plena niebla y sintiendo solo la pendiente bajo los pies. El descenso de gradiente, que Cauchy inventó en 1847 para calcular órbitas, sigue siendo el algoritmo que entrena todos los LLM.

En 1847 Augustin-Louis Cauchy presentó ante la Academia de Ciencias de París una nota de tres páginas titulada «Método general para la resolución de sistemas de ecuaciones simultáneas». Le interesaban los cálculos astronómicos: determinar la órbita de un cuerpo celeste a partir de observaciones lleva a sistemas de ecuaciones que no se pueden resolver de forma exacta. Su propuesta fue convertir el problema en minimizar una función que mide el error y bajar por ella paso a paso, siempre en la dirección de mayor pendiente. Había inventado el descenso de gradiente.

El algoritmo

Partimos de unos parámetros θ0 cualesquiera y repetimos:

θt+1=θt−η∇ℒ(θt).

El gradiente, que la retropropagación calcula de forma barata, indica la dirección de máxima subida, así que avanzamos en sentido contrario. El número η>0 es la tasa de aprendizaje (learning rate): el tamaño del paso. Es el hiperparámetro más importante de cualquier entrenamiento.

Haz clic en el mapa para elegir el punto de partida. Las bandas de color son curvas de nivel: cuanto más intenso el color, más alta la pérdida. En el cuenco alargado, prueba η=0,05 (avance lento), 0,18 (zigzag) y 0,21 (divergencia): el límite es exactamente 2/λmax⁡=0,2. En el paisaje con varios mínimos, el valle al que se llega depende del punto de partida. El momento β añade inercia: atraviesa más rápido los valles estrechos.

¿Cuándo funciona? Convexidad y suavidad

Para garantizar que el algoritmo funciona hacen falta dos condiciones sobre el paisaje. Una función es convexa si el segmento entre dos puntos cualesquiera de su gráfica queda por encima de ella, es decir, si tiene forma de cuenco. Es β-suave si su gradiente no cambia más deprisa que β: ‖∇f(x)−∇f(y)‖≤β‖x−y‖.

Teorema (mínimos de funciones convexas)

Si f es convexa, todo mínimo local es un mínimo global. Si además es diferenciable, ∇f(x∗)=0 basta para que x∗ sea un mínimo global.

Teorema (convergencia del descenso de gradiente)

Si f es convexa y β-suave y se usa η=1/β, entonces tras k pasos

f(θk)−f(θ∗)≤β‖θ0−θ∗‖22k.

Si además es μ-fuertemente convexa, la convergencia es geométrica: el error se multiplica en cada paso por, como mucho, 1−μ/β.

El caso cuadrático, donde todo se ve

Tomemos f(θ)=12θ⊤Aθ con A simétrica y valores propios 0<λmin⁡≤…≤λmax⁡. Como ∇f=Aθ, el algoritmo hace θt+1=(I−ηA)θt. En la base de vectores propios, cada coordenada evoluciona por separado:

θt(i)=(1−ηλi)tθ0(i).

Converge si y solo si |1−ηλi|<1 para todo i, es decir, si 0<η<2/λmax⁡. Si ηλi>1, esa coordenada cambia de signo en cada paso (el zigzag). La dirección más lenta es la de λmin⁡, y con el mejor η el error se reduce por paso en un factor κ−1κ+1, donde κ=λmax⁡/λmin⁡ es el número de condición. Los valles estrechos y alargados (κ grande) son lentos.

Las redes neuronales no son convexas: su paisaje de pérdida está lleno de mínimos locales, mesetas y puntos de silla. Ningún teorema clásico garantiza que el descenso de gradiente encuentre allí un buen mínimo, y aun así lo encuentra una y otra vez. Algunas explicaciones parciales: en dimensión alta casi todos los puntos críticos son puntos de silla y no mínimos (Dauphin et al., 2014), y en redes muy sobreparametrizadas la mayoría de los mínimos locales son casi tan buenos como el global. Es una de las grandes preguntas abiertas del campo.

Inercia: momento y aceleración

En un valle alargado, el gradiente apunta casi siempre hacia las paredes y no hacia el fondo. Boris Polyak propuso en 1964 el método de la bola pesada: acumular una velocidad que promedia los gradientes anteriores,

vt+1=βvt−η∇ℒ(θt),θt+1=θt+vt+1.

Las oscilaciones se cancelan y el avance en la dirección buena se acumula. En 1983 Yurii Nesterov encontró una variante que alcanza error O(1/k2) en lugar de O(1/k) para funciones convexas suaves, y demostró que es lo mejor posible:

Teorema (cota inferior de Nesterov)

Ningún método que solo use gradientes puede garantizar, para todas las funciones convexas y β-suaves (en dimensión suficientemente alta), un error menor que 3β‖θ0−θ∗‖232(k+1)2 tras k pasos. El método acelerado de Nesterov alcanza ese orden.

Descenso de gradiente estocástico

La pérdida de un LLM es una media sobre billones de palabras de entrenamiento: ℒ(θ)=1N∑i=1Nℓi(θ). Calcular el gradiente exacto en cada paso exigiría recorrer todos los datos. La alternativa es estimarlo con un minilote aleatorio B de unos pocos ejemplos:

gt=1|B|∑i∈B∇ℓi(θt),𝔼[gt]=∇ℒ(θt).

La estimación es ruidosa pero insesgada: en media apunta bien. Herbert Robbins y Sutton Monro demostraron en 1951 que este tipo de procedimiento converge si la tasa de aprendizaje decrece al ritmo adecuado.

Teorema (condiciones de Robbins-Monro, 1951)

En condiciones de regularidad, la aproximación estocástica converge si las tasas ηt cumplen

∑t=1∞ηt=∞y∑t=1∞ηt2<∞,

por ejemplo con ηt=c/t. La primera condición asegura que se puede llegar a cualquier sitio y la segunda, que el ruido acaba apagándose.

Ajuste de una recta y^=wx+b con descenso de gradiente estocástico. Izquierda: los datos y la recta actual. Derecha: el recorrido de los parámetros (w,b) sobre las curvas de nivel de la pérdida. Con el lote completo el camino es suave; con lotes de 1 ejemplo es errático, pero cada paso cuesta 40 veces menos.

Por eso en la práctica se usan siempre lotes pequeños: muchos pasos baratos y ruidosos ganan a pocos pasos caros y exactos. Además, el ruido parece ayudar a escapar de mínimos «afilados» y a encontrar otros más «planos», que suelen generalizar mejor.

Adam: una tasa de aprendizaje para cada parámetro

Los parámetros de una red no se parecen entre sí: algunos reciben gradientes enormes y otros diminutos. En 2014 Diederik Kingma y Jimmy Ba propusieron Adam, que combina el momento con una normalización por la magnitud reciente de cada gradiente:

mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2,θt+1=θt−ηm^tv^t+ϵ.

Aquí m^t y v^t son las medias corregidas por el sesgo inicial. Su variante con decaimiento de pesos desacoplado, AdamW (2017), es el optimizador con el que se entrenan prácticamente todos los LLM actuales, casi siempre con una tasa que sube durante un calentamiento inicial y después decae, en la línea de lo que pedían Robbins y Monro.

Ya tenemos un procedimiento general para ajustar parámetros. La pregunta siguiente es qué familia de funciones parametrizar, y ahí aparece la idea más antigua de la IA: imitar a las neuronas.

Referencias

  1. A.-L. Cauchy (1847). «Méthode générale pour la résolution des systèmes d'équations simultanées». Comptes Rendus de l'Académie des Sciences, 25.
  2. H. Robbins y S. Monro (1951). «A Stochastic Approximation Method». Annals of Mathematical Statistics, 22(3).
  3. B. T. Polyak (1964). «Some methods of speeding up the convergence of iteration methods». USSR Computational Mathematics and Mathematical Physics, 4(5).
  4. Y. Nesterov (1983). «A method for solving the convex programming problem with convergence rate O(1/k²)». Doklady Akademii Nauk SSSR, 269.
  5. Y. Dauphin et al. (2014). «Identifying and attacking the saddle point problem in high-dimensional non-convex optimization». NeurIPS.
  6. D. P. Kingma y J. Ba (2015). «Adam: A Method for Stochastic Optimization». ICLR.
  7. I. Loshchilov y F. Hutter (2019). «Decoupled Weight Decay Regularization». ICLR.
  8. S. Bubeck (2015). «Convex Optimization: Algorithms and Complexity». Foundations and Trends in Machine Learning, 8(3–4).