¿Cuál es el mejor algoritmo para la optimización convexa sin restricciones de propósito general?

Descenso de gradiente estocástico, con un tamaño de paso decreciente proporcional a t ^ (- 1/2).

Es de primer orden, por lo que cada iteración requiere memoria proporcional a la dimensión d del problema únicamente: escalable. Estocástico significa que para muchos tipos de problemas, cada iteración requiere solo d trabajo, por lo que normalmente hará algo útil muy rápidamente. Calcular un gradiente estocástico es una barrera muy baja para la entrada. Prácticamente, a SGD le está yendo muy bien incluso para problemas bastante especializados como redes neuronales y svm primal lineal (algunas veces variando el horario del tamaño del paso). Teóricamente, obtienes una prueba fácil de convergencia incluso con problemas no suaves y no muy convexos.


Saber más sobre el problema le proporciona algoritmos más especializados con tasas más rápidas, por supuesto, y alcanzar un SGD de alta precisión en sí mismo es bastante inútil, pero no conozco ningún algoritmo con una aplicabilidad tan amplia.

Obviamente, el algoritmo iterativo, como el descenso de gradiente, el gradiente conjugado, Newton, etc.

Además, los algoritmos inteligentes como el algoritmo genético (GA), el algoritmo de enjambre de partículas (PSO), el algoritmo de recocido simulado (SA) se pueden utilizar para resolver el problema de optimización, pero no se recomiendan.