El método del gradiente conjugado es un algoritmo utilizado para la optimización de funciones convexas. Se utiliza principalmente en problemas de optimización numérica, como la minimización de funciones cuadráticas o la resolución de sistemas de ecuaciones lineales.
En el contexto del machine learning, el método del gradiente conjugado puede utilizarse para optimizar funciones objetivo, como la función de costo en algoritmos de aprendizaje supervisado, como regresión lineal o logística, y en algoritmos de aprendizaje no supervisado, como el análisis de componentes principales (PCA).
La idea principal detrás del método del gradiente conjugado es encontrar el mínimo de una función minimizando su gradiente, buscando la dirección en la que la función decrece rápidamente. Sin embargo, en lugar de avanzar en la dirección del gradiente en cada paso, el método del gradiente conjugado busca una dirección "conjugada" que permita converger más eficientemente hacia el mínimo.
El algoritmo del gradiente conjugado se basa en calcular sucesivas direcciones conjugadas y ajustar el tamaño de paso en cada dirección para minimizar la función objetivo. Esto se logra mediante la búsqueda de línea en cada dirección conjugada.
Este algoritmo es más eficiente resolviendo problemas lineares que el descenso del gradiente:
Donde A es simétrica y positiva definida.
En una búsqueda de línea determinamos la dirección de ascenso más pronunciada y luego seleccionamos el tamaño del paso. Por ejemplo, en el método de ascenso de gradiente, tomamos un tamaño de paso igual al gradiente multiplicado por la tasa de aprendizaje. Para la figura de la izquierda a continuación, la dirección más profunda según el contorno del gradiente (el eclipse punteado) se mueve hacia la derecha. El siguiente movimiento puede ir hacia arriba y ligeramente hacia la izquierda según la pendiente más pronunciada en el punto actual. El problema es que al girar ligeramente hacia la izquierda estamos deshaciendo parte del progreso.
El método de gradiente conjugado es un método de Búsqueda Lineal, pero para cada movimiento, no deshace parte de los movimientos realizados anteriormente, como hemos visto que hace el ascenso del gradiente. Optimiza una ecuación cuadrática en menos pasos que el ascenso de gradiente. Si x es N-dimensional (N parámetros), podemos encontrar el punto óptimo en como máximo N pasos. Para cada movimiento, queremos una dirección conjugada con todos los movimientos anteriores. Esto garantiza que no deshacemos parte de los movimientos que hicimos. En resumen, si x es de 4 dimensiones, se deberían necesitar como máximo 4 movimientos para alcanzar el punto óptimo.
1. Iniciamos el ascenso en una dirección particular.
2. Nos instalamos en el punto óptimo para esa dirección.
2. Encontramos una nueva dirección que es -conjugada con cualquier dirección de movimiento anterior .
Matemáticamente, significa que cualquier nueva dirección debe obedecer al conjugado con todas las direcciones anteriores :
Donde:
1. representa la transpuesta de .
2. es una matriz simétrica definida positiva.
2. es otro vector.
Donde es la matriz en la ecuación cuadrática. A continuación, se muestran algunos otros ejemplos de vectores conjugados en el espacio 2D.
Los vectores -conjugados son independientes entre sí. Por lo tanto, N vectores conjugados pueden abarcar un espacio de N dimensiones.
La parte clave del método CG es encontrar y . Aquí hay un resumen de cómo se encuentran y en cada iteración del método CG:
1. Dirección de búsqueda (): En cada iteración del método CG, se calcula una dirección de búsqueda , conjugada con respecto a las direcciones de búsqueda anteriores. Esto se hace para asegurar que el método de gradiente conjugado converja de manera eficiente hacia la solución del problema. La fórmula para calcular se basa en la dirección del gradiente negativo y las direcciones de búsqueda anteriores.
En la imagen se puede observar que la dirección 2 es conjugada (ortogonal) a su dirección anterior 1.
2. Longitud del paso (): Una vez que se ha calculado la dirección de búsqueda , se determina la longitud del paso a lo largo de esta dirección. Este paso es crucial ya que determina qué tan lejos moverse desde el punto actual en la dirección de búsqueda . La longitud del paso se calcula para minimizar la función objetivo a lo largo de la dirección de búsqueda .
En la imagen de arriba se puede ver la importancia de calcular dicha longitud, porque si no lo hacemos y elegimos una al azar, puede suceder que sea menor o mayor de lo necesario y no alcancemos el punto óptimo.
Algoritmo
A continuación se explicará paso a paso el algoritmo del Método del Gradiente Conjugado.
Comenzamos con una suposición aleatoria (o fundamentada) para la solución en () y calculamos la siguiente suposición con y .
* El superíndice denota la transposición.
* es el residuo en la k-ésima iteración del algoritmo del gradiente conjugado.
* es la dirección de búsqueda en la k-ésima iteración.
* es la matriz simétrica y definida positiva asociada al problema de optimización.
* es el residuo en la k-ésima iteración.
* es el tamaño del paso o longitud del paso en la dirección de búsqueda.
* es la dirección conjugada en la k-ésima iteración.
Aquí, se ajusta para minimizar la función en la dirección de búsqueda , lo que garantiza que el método avance hacia el mínimo de manera eficiente. La dirección conjugada es esencial porque asegura que la búsqueda se realice en direcciones ortogonales a las iteraciones anteriores, lo que evita el retraso en la convergencia y acelera el proceso de optimización
Ejemplo
Supongamos que tenemos los siguientes vectores:
También usaremos como parámetro de corte si el residuo es menor a 0.05.
Calculamos y :
Ahora entramos en el bucle:
Ciclo 1:
Calculamos la norma del vector que es 0.55. Dado que no es menor a 0.05, no salimos del ciclo.
Ciclo 2:
Calculamos la norma del vector que es 0, un valor menor a 0.05, por lo tanto, damos por terminado el procedimiento.
En el contexto del machine learning, podemos usar las direcciones de búsqueda que calculamos en este procedimiento junto con algún otro método como Búsqueda Lineal para actualizar los parámetros de nuestro modelo y de esa manera mejorar el rendimiento.
Conclusiones:
El método del gradiente conjugado es una herramienta poderosa y eficiente para resolver una variedad de problemas de optimización en ciencia de la computación, ingeniería y aprendizaje automático, gracias a su rápida convergencia y menor requerimiento de memoria. Este método se puede aplicar en una variedad de problemas de machine learning y aprendizaje automático, especialmente en aquellos que involucran optimización de funciones no lineales y restricciones de región de confianza. Su eficiencia y capacidad para manejar problemas grandes lo hacen útil en una variedad de contextos en machine learning.
Hemos llegado al final de este artículo. Espero que te halla resultado útil y que hallas disfrutado leyéndolo tanto como yo disfrute escribiéndolo 😁.