深度學習Momentum(動量方法)


轉自:http://blog.csdn.net/bvl10101111/article/details/72615621

先上結論:

1.動量方法主要是為了解決Hessian矩陣病態條件問題(直觀上講就是梯度高度敏感於參數空間的某些方向)的。

2.加速學習 

3.一般將參數設為0.5,0.9,或者0.99,分別表示最大速度2倍,10倍,100倍於SGD的算法。

4.通過速度v,來積累了之前梯度指數級衰減的平均,並且繼續延該方向移動: 

這里寫圖片描述

 

再看看算法: 
這里寫圖片描述

動量算法直觀效果解釋:

  如圖所示,紅色為SGD+Momentum。黑色為SGD。可以看到黑色為典型Hessian矩陣病態的情況,相當於大幅度的徘徊着向最低點前進。 
  而由於動量積攢了歷史的梯度,如點P前一刻的梯度與當前的梯度方向幾乎相反。因此原本在P點原本要大幅徘徊的梯度,主要受到前一時刻的影響,而導致在當前時刻的梯度幅度減小。 
  直觀上講就是,要是當前時刻的梯度與歷史時刻梯度方向相似,這種趨勢在當前時刻則會加強;要是不同,則當前時刻的梯度方向減弱。 

這里寫圖片描述

 

從另一個角度講:

  要是當前時刻的梯度與歷史時刻梯度方向相似,這種趨勢在當前時刻則會加強;要是不同,則當前時刻的梯度方向減弱。 
  假設每個時刻的梯度g總是類似,那么由這里寫圖片描述我們可以直觀的看到每次的步長為: 

這里寫圖片描述 

即當設為0.5,0.9,或者0.99,分別表示最大速度2倍,10倍,100倍於SGD的算法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM