El descenso por gradiente es un algoritmo para minimizar una función diferenciable dando pasos repetidos en la dirección que más la reduce localmente. Si buscas "qué es el descenso por gradiente", la idea central es simple: calcular la pendiente, bajar un poco y repetir.
Se usa mucho en optimización basada en cálculo y en aprendizaje automático. El método funciona mejor cuando puedes calcular una derivada o un gradiente y elegir una tasa de aprendizaje lo bastante pequeña para mantener la estabilidad, pero lo bastante grande para avanzar.
En una variable, la regla de actualización es
y en varias variables se convierte en
donde es la tasa de aprendizaje. La tasa de aprendizaje controla cuánto avanza cada paso, así que afecta directamente a si el algoritmo converge, se estanca o se pasa del mínimo.
Intuición del descenso por gradiente
El gradiente apunta cuesta arriba. Si tu objetivo es minimizar, el movimiento local natural es ir en la dirección contraria.
Esa regla local no garantiza la mejor respuesta posible en todos los problemas. En una función convexa, el descenso por gradiente puede llevar al mínimo global. En una función no convexa, puede quedarse en un mínimo local, una región plana u otro punto estacionario.
Cómo funciona el algoritmo de descenso por gradiente
Cada iteración usa la información actual de la pendiente, actualiza el punto y comprueba si debe continuar.
- Empieza con una estimación inicial o .
- Calcula la derivada o el gradiente en el punto actual.
- Actualiza restando por esa derivada o gradiente.
- Detente cuando el gradiente sea pequeño, las actualizaciones sean diminutas o se alcance un límite de iteraciones fijado de antemano.
La regla de actualización estándar supone que la función objetivo es diferenciable en los puntos donde la aplicas. Algunos métodos de optimización usan subgradientes para problemas no suaves, pero ese es un planteamiento distinto.
Por qué importa la tasa de aprendizaje en el descenso por gradiente
La tasa de aprendizaje es el tamaño de paso.
Si es demasiado pequeña, el descenso por gradiente suele moverse en la dirección correcta, pero puede ser desesperadamente lento. Si es demasiado grande, las actualizaciones pueden pasarse del mínimo, rebotar de un lado a otro o incluso divergir.
Esto se ve con claridad en una función cuadrática, donde la pendiente se vuelve más pronunciada al alejarte del mínimo. Un tamaño de paso que parece seguro en un lugar puede ser demasiado agresivo en otro.
Ejemplo resuelto: descenso por gradiente en una cuadrática
Considera
Esta función tiene su mínimo en . Su derivada es
Usa descenso por gradiente con tasa de aprendizaje y punto inicial .
Entonces la regla de actualización es
Empezando desde :
Luego
y
Cada paso se acerca más a , y el valor de la función disminuye cada vez. Ese es el patrón principal que hay que notar: el descenso por gradiente no salta directamente a la respuesta. Mejora la estimación mediante correcciones locales repetidas.
Variantes comunes del descenso por gradiente
Descenso por gradiente batch
El descenso por gradiente batch usa todo el conjunto de datos para calcular cada actualización. Para una función objetivo fija, esto da un paso determinista, pero puede ser costoso cuando el conjunto de datos es grande.
Descenso por gradiente estocástico
El descenso por gradiente estocástico actualiza usando una sola muestra cada vez. Cada paso es más barato y más ruidoso. Ese ruido puede ayudar al método a seguir moviéndose, pero también hace que la trayectoria sea menos suave.
Descenso por gradiente mini-batch
El descenso por gradiente mini-batch usa un pequeño grupo de muestras por paso. Suele ser un compromiso práctico porque reduce el ruido frente a las actualizaciones puramente estocásticas, mientras sigue siendo mucho más barato que las actualizaciones con batch completo.
Estas variantes importan sobre todo en aprendizaje automático, donde la función objetivo suele ser una pérdida media sobre muchos ejemplos de entrenamiento.
Errores comunes con el descenso por gradiente
Tratar la tasa de aprendizaje como algo cosmético
Cambiar cambia el comportamiento del propio algoritmo. Un método que converge con una tasa de aprendizaje puede fallar con otra.
Suponer que el descenso por gradiente siempre encuentra el mínimo global
Esa conclusión necesita condiciones. Por ejemplo, la convexidad da garantías mucho más fuertes que un paisaje no convexo general.
Ignorar la escala de las variables en problemas aplicados
En problemas de optimización con variables mal escaladas, una dirección puede cambiar mucho más rápido que otra. Entonces el descenso por gradiente puede hacer zigzag y converger lentamente, a menos que el problema se reformule o se escale con más cuidado.
Detenerse solo porque el gradiente no es exactamente cero
Los algoritmos numéricos rara vez esperan un cero perfecto. Las reglas de parada prácticas suelen comprobar si la norma del gradiente, el cambio en los parámetros o el cambio en la función objetivo es lo bastante pequeño.
Cuándo se usa el descenso por gradiente
El descenso por gradiente se usa en optimización numérica, estadística y aprendizaje automático. Es especialmente común cuando no hay una solución exacta en forma cerrada o cuando calcularla directamente resulta demasiado costoso.
Para problemas pequeños con fórmulas simples, el cálculo puede dar el mínimo exactamente. El descenso por gradiente se vuelve más útil cuando el espacio de parámetros es grande, la función objetivo tiene muchas variables o la pérdida proviene de conjuntos de datos grandes.
Prueba un problema similar
Prueba tu propia versión con y punto inicial . Haz un caso con y otro con . Ver una ejecución estable y otra inestable deja mucho más claro el papel de la tasa de aprendizaje que la fórmula por sí sola.
¿Necesitas ayuda con un problema?
Sube tu pregunta y obtén una solución verificada, paso a paso, en segundos.
Abrir GPAI Solver →