一、介紹
在深度學習中,Momentum(動量)算法是對梯度下降法的一種優化, 它將物理學中物體的運動理論和梯度下降相結合,其特點是直觀易懂,已成爲目前非常流行的深度學習優化算法之一。
在介紹動量優化算法前,需要對 指數加權平均法 有所瞭解,它是動量優化算法的理論基礎,可參見本人另外一篇博文:深度學習: 指數加權平均;其次,需要對物理運動理論稍有了解,以便在直觀層面更好的理解該算法。
二、背景
下圖表明瞭傳統的梯度下降法會存在的問題,即訓練軌跡會呈現鋸齒狀,這無疑會大大延長訓練時間。同時,由於存在擺動現象,學習率只能設置的較小,纔不會因爲步伐太大而偏離最小值。
三、優化思路
一方面,由於存在鋸齒擺動現象,另一方面學習率又不能設置的稍大,使得收斂速度非常慢。其實,一個很樸素的想法便是讓縱向的擺動儘量小,同時保持橫向的大方向不變,適當提高橫向運動的速率。
這個時候便是指數加權平均派上用場的時候了! 每一次的梯度更新對應一個向量,通過指數加權平均,縱向的分量基本可以抵消,原因是鋸齒狀存在一上一下的配對向量,方向是基本反向的。而橫向的方向基本沒有變化,因爲從長期的一段時間來看,大方向始終指向最小值。通過指數加權平均優化後,我們期望訓練的軌跡將會如下圖所示。
這樣一來,收斂速度將會提高很多。因爲縱向的擺動通過加權平均基本消失,此時,我們可以適當增大學習率,使得橫向的運動稍微提高一點。
四、新的梯度更新規則
有了上面的分析後,我們先來看看如何更新梯度。首先給出未優化前的梯度更新規則,其中 表示學習率。
可以把梯度的更新想象成一個球從某個點開始向下運動。結合指數加權平均,引入平均速度 ,只不過這個速度是有方向的,它在梯度下降中就表示平均梯度。我們希望通過 來更新當前的速度,同時引入摩擦係數 ,可以設爲 0.9。那麼,根據指數加權平均, 的更新規則爲
其中,第一項可以理解爲歷史平均速度,第二項可以理解爲當前的加速度,兩者相加表示當前的平均速度。根據 的更新規則,梯度的更新規則變爲
我們發現,當 爲 0 時,上述規則退化爲未優化前的規則,當 爲 1 時, 表示沒有摩擦,速度將保持不變,這在梯度下降的過程中可能會造成越過最優值。在實際開發中, 可以設定在 0 和 1 之間的某個值,一般取 0.9 是一個較好的選擇。
五、Momentum算法的本質
該算法將一段時間內的梯度向量進行了加權平均,分別計算得到梯度更新過程中 和 的大致走向,一定程度上消除了更新過程中的不確定性因素(如擺動現象),使得梯度更新朝着一個越來越明確的方向前進。