Gradient Descent
El descenso de gradiente entrena modelos actualizando repetidamente sus pesos en función del gradiente de la pérdida. Abarca las tasas de aprendizaje, SGD, el momento y Adam.
El descenso del gradiente es el algoritmo de optimización iterativo que entrena la mayoría de los modelos de aprendizaje automático, desde la regresión lineal hasta las grandes redes neuronales. En cada paso calcula el gradiente de la función de pérdida con respecto a cada peso del modelo y desplaza cada peso un pequeño paso en dirección opuesta, hacia donde la pérdida disminuye más deprisa. La regla de actualización es w ← w − η∇L(w), donde η es la tasa de aprendizaje. Una analogía habitual es la de un excursionista que baja una montaña con niebla espesa: como no puede ver el valle, nota la pendiente bajo sus pies y da un paso cuesta abajo, una y otra vez, hasta que el terreno se aplana.
Cómo funciona el descenso de gradiente#
Cada iteración consta de tres partes. Una pasada hacia delante calcula las predicciones y la pérdida; la retropropagación calcula el gradiente de la pérdida con respecto a cada peso, y el optimizador actualiza los pesos. El gradiente apunta cuesta arriba en la superficie de pérdida, de acuerdo con la definición del gradiente en cálculo multivariable, así que restarlo desplaza los pesos cuesta abajo.
Las variantes se diferencian en la cantidad de datos que utiliza cada paso. El descenso del gradiente por lotes calcula el gradiente exacto en todo el conjunto de datos de entrenamiento, lo que resulta preciso, pero lento para conjuntos grandes. El descenso de gradiente estocástico (SGD) lo estima a partir de un solo ejemplo, mientras que el descenso del gradiente por minibotes, el método estándar en aprendizaje profundo, calcula la media para un tamaño de lote de decenas o miles de ejemplos y mantiene ocupadas las GPU. El ruido de los gradientes de minibotes también ayuda a los pesos a superar puntos de silla y mínimos pronunciados. Una pasada completa por el conjunto de entrenamiento es una época.
Cómo elegir la tasa de aprendizaje#
La tasa de aprendizaje determina el tamaño del paso y suele ser el primer hiperparámetro que se ajusta en el descenso del gradiente. Una tasa demasiado baja desperdicia capacidad de cálculo avanzando poco a poco hacia el mínimo; una tasa demasiado alta lo sobrepasa. En una pérdida cuadrática, cualquier tasa superior a 2 dividido por la curvatura de la pérdida hace que cada paso se aleje más del mínimo que el anterior. El fragmento siguiente minimiza (w − 2)², cuya curvatura es 2, con tres tasas de aprendizaje en PyTorch:
import torch
# Minimize loss(w) = (w - 2)^2, whose minimum is at w = 2, with three learning rates
for lr in [0.1, 0.5, 1.1]:
w = torch.tensor(5.0, requires_grad=True)
for step in range(20):
loss = (w - 2) ** 2
loss.backward() # w.grad now holds the slope 2 * (w - 2)
with torch.no_grad():
w -= lr * w.grad # step against the gradient
w.grad.zero_()
print(f"Learning rate {lr}: w = {w.item():.4f} after 20 steps")Con una tasa de 0,1, el peso sigue en 2,0346 después de 20 pasos; con una tasa de 0,5, llega exactamente a 2,0000 porque equivale a uno dividido por la curvatura; y con una tasa de 1,1, sobrepasa el objetivo por un margen cada vez mayor hasta que w alcanza 117,0129. Las programaciones de entrenamiento reales empiezan con un breve calentamiento y después reducen la tasa, a menudo siguiendo una curva coseno, para mantener estables los primeros pasos y afinar los últimos.
Momentum, Adam y optimizadores modernos#
El descenso de gradiente simple zigzaguea por valles estrechos de la superficie de pérdida, por lo que la mayoría de los entrenamientos utiliza reglas de actualización mejoradas. El momento acumula una media móvil de los gradientes anteriores y avanza en esa dirección, lo que amortigua las oscilaciones y acelera el progreso en direcciones constantes. El optimizador Adam también sigue los gradientes al cuadrado de cada parámetro para asignar a cada peso un tamaño de paso adaptativo, y AdamW desacopla la disminución de pesos de esa actualización. Muon ortogonaliza la actualización de momento de cada matriz de pesos 2D mediante iteraciones de Newton-Schulz, para que ninguna dirección domine el paso. El entrenamiento de Ultralytics YOLO26 con optimizer="auto" selecciona AdamW, con una tasa de aprendizaje ajustada al número de clases, para ejecuciones de hasta 10.000 iteraciones, y MuSGD, que añade a SGD actualizaciones ortogonalizadas de tipo Muon para los pesos convolucionales y lineales, para ejecuciones más largas.
Aplicaciones en el mundo real#
El descenso del gradiente es el motor de entrenamiento de casi todos los sistemas de aprendizaje profundo. En vehículos autónomos, ajusta redes de detección de objetos para reducir la diferencia entre los cuadros predichos y los etiquetados de peatones, señales y vehículos en millones de fotogramas. En el análisis de imágenes médicas, ajusta redes neuronales convolucionales que separan los tumores del tejido sano en resonancias magnéticas y tomografías computarizadas. Los modelos de lenguaje grandes se entrenan del mismo modo, normalmente con AdamW y billones de tokens.
Descenso del gradiente y conceptos relacionados#
- Retropropagación: La retropropagación calcula los gradientes mediante la regla de la cadena, y el descenso del gradiente los utiliza para actualizar los pesos. Ambos se ejecutan seguidos en cada paso de entrenamiento y suelen mencionarse juntos.
- Función de pérdida: La función de pérdida mide cuánto se equivocan las predicciones del modelo, y el descenso del gradiente es el procedimiento que reduce esa puntuación.
- Gradiente explosivo: Cuando los gradientes crecen sin control en redes profundas, el descenso del gradiente da pasos destructivos; el recorte de gradientes lo evita limitando la norma del gradiente antes de cada actualización.
- Algoritmos evolutivos: Estos métodos sin gradiente buscan mediante el muestreo y la selección de candidatos sin calcular gradientes, por lo que son adecuados para objetivos no diferenciables, como la elección de hiperparámetros.










