深度學習中的Momentum算法原理

一、介紹

    在深度學習中,Momentum(動量)算法是對梯度下降法的一種優化, 它將物理學中物體的運動理論和梯度下降相結合,其特點是直觀易懂,已成爲目前非常流行的深度學習優化算法之一。

    在介紹動量優化算法前,需要對 指數加權平均法 有所瞭解,它是動量優化算法的理論基礎,可參見本人另外一篇博文:深度學習: 指數加權平均;其次,需要對物理運動理論稍有了解,以便在直觀層面更好的理解該算法。

 

二、背景

    下圖表明瞭傳統的梯度下降法會存在的問題,即訓練軌跡會呈現鋸齒狀,這無疑會大大延長訓練時間。同時,由於存在擺動現象,學習率只能設置的較小,纔不會因爲步伐太大而偏離最小值。

  

 

三、優化思路

     一方面,由於存在鋸齒擺動現象,另一方面學習率又不能設置的稍大,使得收斂速度非常慢。其實,一個很樸素的想法便是讓縱向的擺動儘量小,同時保持橫向的大方向不變,適當提高橫向運動的速率。

     這個時候便是指數加權平均派上用場的時候了! 每一次的梯度更新對應一個向量,通過指數加權平均,縱向的分量基本可以抵消,原因是鋸齒狀存在一上一下的配對向量,方向是基本反向的。而橫向的方向基本沒有變化,因爲從長期的一段時間來看,大方向始終指向最小值。通過指數加權平均優化後,我們期望訓練的軌跡將會如下圖所示。

 

 

    這樣一來,收斂速度將會提高很多。因爲縱向的擺動通過加權平均基本消失,此時,我們可以適當增大學習率,使得橫向的運動稍微提高一點。

 

四、新的梯度更新規則

    有了上面的分析後,我們先來看看如何更新梯度。首先給出未優化前的梯度更新規則,其中 \eta 表示學習率。

                                                                              w\rightarrow w^{'}=w-\eta\frac{\partial C}{\partial w}

                                                                              b\rightarrow b^{'}=b-\eta\frac{\partial C}{\partial b}

     可以把梯度的更新想象成一個球從某個點開始向下運動。結合指數加權平均,引入平均速度 v,只不過這個速度是有方向的,它在梯度下降中就表示平均梯度。我們希望通過 v 來更新當前的速度,同時引入摩擦係數 \beta,可以設爲 0.9。那麼,根據指數加權平均, v 的更新規則爲

                                                                             v_w\rightarrow v^{'}_w=\beta v_w+\left ( 1-\beta \right ) \frac{\partial C}{\partial w}

                                                                             v_b\rightarrow v^{'}_b=\beta v_b+\left ( 1-\beta \right ) \frac{\partial C}{\partial b}

     其中,第一項可以理解爲歷史平均速度,第二項可以理解爲當前的加速度,兩者相加表示當前的平均速度。根據  v 的更新規則,梯度的更新規則變爲

                                                                             w\rightarrow w^{'}=w-\eta v_w

                                                                             b\rightarrow b^{'}=b-\eta v_b

     我們發現,當 \beta 爲 0 時,上述規則退化爲未優化前的規則,當 \beta 爲 1 時, 表示沒有摩擦,速度將保持不變,這在梯度下降的過程中可能會造成越過最優值。在實際開發中,\beta 可以設定在 0 和 1 之間的某個值,一般取 0.9 是一個較好的選擇。

 

五、Momentum算法的本質

    該算法將一段時間內的梯度向量進行了加權平均,分別計算得到梯度更新過程中 w 和 b 的大致走向,一定程度上消除了更新過程中的不確定性因素(如擺動現象),使得梯度更新朝着一個越來越明確的方向前進。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章