Sesión 14: Optimización y Gradiente Descendente

Teoría

1. Funciones cóncavas y convexas

Interpretación geométrica: Las funciones convexas tienen forma de “U” (como $x^2$), las cóncavas tienen forma de “∩” (como $\sqrt{x}$ o $\ln x$).

Importancia en optimización: Para funciones convexas, cualquier mínimo local es también mínimo global. Esto simplifica enormemente la búsqueda del óptimo.

Ejemplo: $f(x) = x^2$ es convexa. $f(x) = \ln x$ es cóncava en su dominio.

2. Máximos y mínimos locales y globales

Ejemplo: $f(x) = x^3 - 3x$ tiene un máximo local en $x=-1$ y un mínimo local en $x=1$, pero no tiene mínimo global (tiende a $-\infty$).

3. Problemas de optimización: minimización de funciones

En machine learning, casi todos los problemas se formulan como:

\[\min_{\theta} L(\theta)\]

donde $L$ es una función de pérdida (o costo) y $\theta$ son los parámetros del modelo. Buscamos el valor de $\theta$ que hace mínima la pérdida.

4. Descenso de gradiente: algoritmo e interpretación geométrica

El descenso de gradiente es un método iterativo para encontrar mínimos de una función diferenciable. La idea es moverse en la dirección opuesta al gradiente (dirección de máximo decrecimiento) para reducir el valor de la función.

Algoritmo básico:

  1. Inicializar $\theta$ aleatoriamente (o con algún valor).
  2. Mientras no se alcance la convergencia: \(\theta \leftarrow \theta - \eta \nabla L(\theta)\) donde $\eta > 0$ es la tasa de aprendizaje (learning rate).

Interpretación geométrica: El gradiente apunta en la dirección de máximo crecimiento. Por tanto, restarlo nos lleva cuesta abajo en la superficie de pérdida.

Ejemplo unidimensional: $L(\theta) = \theta^2$. Gradiente: $\nabla L = 2\theta$. Con $\theta_0 = 3$, $\eta = 0.1$:

5. Variantes del descenso de gradiente

6. Programación de la tasa de aprendizaje (learning rate schedules)

7. Regularización como penalización en la función objetivo

A menudo se añade un término de regularización para controlar la complejidad del modelo y evitar sobreajuste. La función objetivo se convierte en:

\[L_{\text{total}}(\theta) = L_{\text{original}}(\theta) + \lambda R(\theta)\]

8. Condiciones de optimalidad


Aplicaciones prácticas

Machine Learning (ML)

1. Descenso de gradiente en regresión y clasificación

Ejemplo numérico (regresión lineal con SGD): Supongamos un punto $(x, y) = (2, 3)$, $\mathbf{w} = [0.5]$, $b=0$ (omitimos sesgo). Con MSE, la pérdida para ese punto es $(3 - 0.52)^2 = (3-1)^2 = 4$. Gradiente: $2(3-1)(-2) = -8$. Con $\eta=0.1$, nuevo peso: $0.5 - 0.1(-8) = 0.5 + 0.8 = 1.3$. Así, el peso aumenta para reducir el error.

2. Gradient boosting (optimización)

En gradient boosting, cada nuevo árbol se ajusta a los residuos (gradientes negativos) de la función de pérdida. Por ejemplo, para MSE, el residuo es $y - \hat{y}$. Esto es esencialmente un paso de descenso de gradiente en el espacio de funciones.

3. Búsqueda de hiperparámetros

La optimización de hiperparámetros (como $\eta$, $\lambda$, etc.) se puede hacer mediante búsqueda en cuadrícula, búsqueda aleatoria o métodos bayesianos. Aunque no es gradiente descendente sobre los hiperparámetros (porque no son diferenciables), a menudo se usa el concepto de optimización para encontrar la mejor configuración.

Deep Learning (DL)

1. SGD en redes neuronales

El entrenamiento de redes profundas casi siempre usa alguna variante de SGD. Por ejemplo, en PyTorch, torch.optim.SGD implementa SGD con o sin momentum.

2. Momentum

Ayuda a acelerar el entrenamiento y a suavizar las oscilaciones. Especialmente útil en regiones donde el gradiente cambia de dirección.

3. Adam y AdamW
4. Cosine annealing

Se usa frecuentemente con reinicios (cosine annealing with restarts) para escapar de mínimos locales y explorar mejor el espacio de parámetros. Es común en entrenamiento de transformers y modelos de visión.

Ejemplo: En entrenamiento de ResNet en CIFAR-10, se puede programar la tasa de aprendizaje con cosine annealing de 0.1 a 0 durante 200 épocas.

5. Optimización en agentes autónomos

En aprendizaje por refuerzo, los agentes se optimizan mediante algoritmos como policy gradient, que son esencialmente descenso de gradiente sobre la política. También se usan optimizadores como Adam para estabilizar el entrenamiento.