El descenso coordinado actualiza uno parámetro a la vez, mientras que el descenso de gradiente intenta actualizar todos los parámetros a la vez.
Es difícil especificar exactamente cuándo un algoritmo funcionará mejor que el otro. Por ejemplo, me sorprendió mucho saber que el descenso coordinado era lo más avanzado para LASSO. Y no fui el único; ver diapositiva 17 .
Dicho esto, hay algunas características que pueden hacer que un problema sea más fácil de corregir para coordinar el descenso:
(1) Actualizaciones condicionales rápidas. Si, por alguna razón, el problema permite que uno optimice parámetros individualmente muy rápidamente, el descenso coordinado puede hacer uso de esto. Por ejemplo, uno puede actualizar ciertos parámetros utilizando solo un subconjunto de datos, lo que reduce en gran medida el costo computacional de estas actualizaciones. Otro caso es si hay una solución de forma cerrada para un parámetro individual, condicional a los valores de todos los demás parámetros.
(2) Modos relativamente independientes para los parámetros. Si el valor óptimo de un parámetro es completamente independiente de los valores de los demás parámetros, entonces una ronda de descenso de coordenadas conducirá a la solución (suponiendo que cada actualización de coordenadas encuentre el modo actual). Por otro lado, si el modo para un parámetro dado depende en gran medida de otros valores de parámetros, es muy probable que el descenso de coordenadas avance lentamente, con actualizaciones muy pequeñas en cada ronda.
Desafortunadamente, para la mayoría de los problemas, (2) no se cumple, por lo que es raro que el descenso coordinado funcione bien en comparación con algoritmos alternativos. Creo que la razón por la que funciona bien para LASSO es que hay muchos trucos que uno puede usar para promulgar la condición (1).
α