¿Cuál es la lógica y la intuición detrás del algoritmo de optimización de momento y por qué se considera mejor que el descenso de gradiente?

Es un concepto de la física, un objeto en movimiento tendrá una tendencia a seguir moviéndose. La medida de resistencia al cambio en el movimiento se llama impulso.

Entonces, si alguien te lanza una pelota, puedes atraparla y detenerla fácilmente.

  • La pelota tiene poca tendencia a seguir moviéndose, por lo tanto, su impulso es bajo.

Ahora intenta detener un tren completamente cargado y las cosas pueden ponerse feas rápidamente.

  • El tren tiene mucho impulso cuando comienza a moverse porque es difícil detenerlo, por lo que su tendencia a mantenerse en movimiento o mantenerse quieto es muy alto.

Este concepto también es muy útil para mejorar los algoritmos de optimización.

En realidad, las técnicas de optimización que implican impulso son en su mayoría métodos basados ​​en el descenso de gradiente. Entonces, el impulso en la optimización no es necesariamente un algoritmo de optimización independiente, es solo una característica adicional para mejorar los algoritmos de optimización.


Basta con la física echemos un vistazo a la optimización.

En gradiente normal tenemos una regla de actualización básica dada por:

[matemáticas] \ Phi_ {t + 1} = \ Phi_ {t} – \ lambda \ frac {\ partial L} {\ partial \ Phi_ {t}} [/ math]

donde L = función objetivo dada, [matemáticas] \ lambda [/ matemáticas] = tasa de aprendizaje pequeña, [matemáticas] \ Phi [/ matemáticas] = parámetros

On puede ver el cambio en los parámetros como “movimiento” y, por lo tanto, podemos usar el concepto de impulso para dar al proceso de actualización una tendencia a seguir avanzando en la misma dirección usando:

[matemáticas] \ delta \ Phi_ {t} = – \ lambda \ frac {\ partial L} {\ partial \ Phi_ {t}} + \ alpha \ delta \ Phi_ {t-1} [/ math]

donde [math] \ alpha [/ math] = factor de impulso.

La actualización se convierte en:

[matemáticas] \ Phi_ {t + 1} = \ Phi_ {t} + \ delta \ Phi_ {t} [/ matemáticas]

¿Por qué es útil el impulso?

  • Evita cambios u oscilaciones extremadamente bruscos y puntiagudos y, por lo tanto, actúa como un filtro de paso bajo que amortigua las fluctuaciones o el ruido rápidos. Por lo tanto, con el impulso agregado, el camino hacia el mínimo en la superficie de error es bastante más suave en comparación con el descenso de gradiente normal. Así como es más fácil hacer vibrar una pelota que el tren completamente cargado.
  • Ayuda al algoritmo de optimización a escapar de los pozos de mínimos locales malos. Esto sucede debido a esta tendencia a seguir moviéndose en la misma dirección. Entonces, a menos que los mínimos locales sean muy profundos, el impulso recopilado de los pasos de actualización anteriores le permitirá escapar de esos mínimos locales en cuestión. La bola que rueda por el suelo puede quedar atrapada fácilmente por un pequeño bache, pero un automóvil no puede debido a la diferencia de impulso (ignore la diferencia de tamaño).

Espero que esto ayude.

Hay una gran explicación en Why Momentum Really Works. No puedo hacer nada mejor que vincularme a eso.