Descenso por Gradiente
Tabla de Contenidos
Introducción
El descenso por gradiente es un algoritmo de optimización iterativo que ajusta el vector de variables \( \mathbf{x} = \begin{pmatrix} x_1 \\ x_2 \\ \dots \\ x_n \end{pmatrix} \) para encontrar el mínimo local de una función diferenciable \( f(\mathbf{x}) \). Comenzando desde una suposición inicial \( \mathbf{x}_0 \) del vector \( \mathbf{x} \), utiliza el gradiente de la función para hacer pasos hacia el mínimo, controlado por la tasa de aprendizaje \( r \). El proceso continúa hasta que los cambios en los valores de \( \mathbf{x} \) sean suficientemente pequeños, la magnitud del gradiente esté cerca de cero, o se cumpla otro criterio de detención.
Fórmula de Actualización del Descenso por Gradiente
La idea central del descenso por gradiente es ajustar iterativamente las variables para encontrar el mínimo de una función. Este ajuste está guiado por la fórmula de actualización:
\[ \mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k) \]
donde \( \mathbf{x} \) es un vector de variables, \( r \) tal que \( r \gt 0 \) es la tasa de aprendizaje, y \( \nabla f(\mathbf{x}_k) \) es el gradiente de la función \( f \) en \( \mathbf{x} = \mathbf{x}_k \) tal que:
\[ \nabla f(\mathbf{x}) = \begin{pmatrix} \dfrac{\partial f}{\partial x_1} \\ \dfrac{\partial f}{\partial x_2} \\ \dots \\ \dfrac{\partial f}{\partial x_n}\\ \end{pmatrix} \]
La fórmula de actualización proviene del concepto de que el gradiente \( \nabla f(\mathbf{x}) \) apunta en la dirección del aumento más pronunciado de la función \( f \). Para minimizar \( f \), nos movemos en la dirección opuesta al gradiente. La tasa de aprendizaje \( r \) determina el tamaño de los pasos que damos en esta dirección.
Descripción Detallada del Descenso por Gradiente
1. Inicialización:
- Comienza con una suposición inicial para el vector de variables \( \mathbf{x} \). Dejemos que este valor inicial sea \( \mathbf{x}_0 \).
- Elige una tasa de aprendizaje \( r \), que controla el tamaño de los pasos que se dan hacia el mínimo.
2. Calcular el Gradiente:
- Para la función \( f(\mathbf{x}) \), calcula el gradiente \( \nabla f(\mathbf{x}) \).
- Evalúa este gradiente en el valor actual de \( \mathbf{x} = \mathbf{x}_k \). Denotamos el gradiente en la iteración \( k \) como \( \nabla f(\mathbf{x}_k) \).
3. Regla de Actualización:
- Usa la fórmula de actualización para ajustar los valores de \( \mathbf{x} \):
\[
\mathbf{x}_{k+1} = \mathbf{x}_k - r \nabla f(\mathbf{x}_k)
\]
- Aquí, \( \mathbf{x}_{k+1} \) es el valor actualizado de \( \mathbf{x} \) después de una iteración.
4. Iteración:
- Repite el proceso de calcular el gradiente y actualizar los valores de \( \mathbf{x} \) hasta que se cumpla un criterio de detención. El criterio de detención puede ser:
- Un número máximo de iteraciones.
- El cambio en los valores de \( \mathbf{x} \) entre iteraciones es menor que un umbral predefinido.
- La magnitud del gradiente \( \|\nabla f(\mathbf{x}_k)\| \) es menor que un umbral predefinido.
5. Convergencia:
- Una vez que se cumple el criterio de detención, el valor de \( \mathbf{x} \) debería estar cerca del valor que minimiza la función \( f(\mathbf{x}) \).
Una calculadora para
visualizar el descenso por gradiente
algoritmo está incluida y puede ser utilizada para obtener una comprensión profunda del algoritmo.
Otra Calculadora de Descenso por Gradiente para investigar la convergencia también está incluida.