深度學習Momentum(動量方法)

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

先上結論:學習

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

2.加速學習 blog

3.通常將參數設爲0.5,0.9,或者0.99,分別表示最大速度2倍,10倍,100倍於SGD的算法。圖片

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

這裏寫圖片描述

 

再看看算法: 
這裏寫圖片描述it

動量算法直觀效果解釋:方法

  如圖所示,紅色爲SGD+Momentum。黑色爲SGD。能夠看到黑色爲典型Hessian矩陣病態的狀況,至關於大幅度的徘徊着向最低點前進。 
  而因爲動量積攢了歷史的梯度,如點P前一刻的梯度與當前的梯度方向幾乎相反。所以本來在P點本來要大幅徘徊的梯度,主要受到前一時刻的影響,而致使在當前時刻的梯度幅度減少。 
  直觀上講就是,要是當前時刻的梯度與歷史時刻梯度方向類似,這種趨勢在當前時刻則會增強;要是不一樣,則當前時刻的梯度方向減弱。 im

這裏寫圖片描述

 

從另外一個角度講:img

  要是當前時刻的梯度與歷史時刻梯度方向類似,這種趨勢在當前時刻則會增強;要是不一樣,則當前時刻的梯度方向減弱。 
  假設每一個時刻的梯度g老是相似,那麼由這裏寫圖片描述咱們能夠直觀的看到每次的步長爲: 

這裏寫圖片描述 
即當設爲0.5,0.9,或者0.99,分別表示最大速度2倍,10倍,100倍於SGD的算法。
相關文章
相關標籤/搜索