SGD動量法和Nesterov加速梯度下降法

SGD存在的問題

  • 損失(loss)在一個方向上快速變化而在另一個方向慢慢變化:沿平緩方向進展非常緩慢,沿陡峭方向劇烈抖動。
  • 如果損失函數(shù)具有局部最小值或鞍點,該怎么辦?

動量法(Momentum)

SGD難以沖破溝壑,讓Momentum幫助SGD加速,避免震蕩。上一步驟V_{t-1}的更新矢量乘以系數(shù)\gamma,與本次更新矢量進行相加,得到v_t,動量項\gamma通常設(shè)為0.9。

V_t = \gamma V_{t-1} + \eta \bigtriangledown_\theta J(\theta)
\theta = \theta - V_t

可以看到,參數(shù)更新時不僅考慮當前梯度值,而且加上了一個積累項(沖量),但多了一個超參\gamma,一般取接近1的值如0.9。相比原始梯度下降算法,沖量梯度下降算法有助于加速收斂。當梯度與沖量方向一致時,沖量項會增加,而相反時,沖量項減少,因此沖量梯度下降算法可以減少訓(xùn)練的震蕩過程。

有時候,沖量梯度下降算法也可以按下面方式實現(xiàn):
V_t = \beta V_{t-1} + (1-\beta) \bigtriangledown_\theta J(\theta)
\theta = \theta - \eta V_t
此時我們就可以清楚地看到,所謂的沖量項其實只是梯度的指數(shù)加權(quán)移動平均值(Exponentially weighted moving averages)。這個實現(xiàn)和之前的實現(xiàn)沒有本質(zhì)區(qū)別,只是學(xué)習(xí)速率進行了放縮一下而已。移動平均數(shù)只是計算比較相近時刻數(shù)據(jù)的加權(quán)平均數(shù),一般可認為這個時間范圍為{1} \over {1-\beta} ,比如\beta=0.9,你可以近似認為只是平均了10時刻之內(nèi)的數(shù)據(jù)而已,因為再往前權(quán)重太小了,基本沒影響了。

此處應(yīng)該有圖

動量法的意義

  • 對于梯度改變方向的維度減少更新
  • 對于梯度相同方向的維度增加更新

此處應(yīng)有圖

  • 缺點:先計算坡度,然后進行大跳躍,盲目的加速下坡。

Nesterov加速梯度法(NAG)

先在前一個累計的梯度方向上進行跳躍\theta - \gamma V_{t-1},然后測量下一跳躍點的梯度并與之前點的動量進行加和,從而更新向量。
V_t = \gamma V_{t-1} + \eta \bigtriangledown(\theta-\gamma V_{t-1})
\theta = \theta - V_t
圖一中,黃色線段為當前點累積的動量,紅色線為下一個點的梯度,綠色線為修正后的動量,藍色短線為當前點的梯度,藍色長線與黃色線平行即為當前點累積的動量。

圖一

圖二

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 梯度下降算法現(xiàn)在變的越來越流行,但是對于使用者來說,它的優(yōu)化過程變的越來越黑盒。本文我們介紹下不通梯度下降算...
    wendaJ閱讀 1,645評論 0 1
  • 1. 文章 An overview of gradient descent optimization algori...
    Silence_Dong閱讀 3,929評論 0 5
  • 梯度下降算法 基于梯度的優(yōu)化是優(yōu)化一個函數(shù)的最終取值。輸入?yún)?shù),需要優(yōu)化的函數(shù)是,基于梯度的優(yōu)化即通過改變使得最大...
    木一易一閱讀 3,311評論 0 3
  • https://mp.weixin.qq.com/s/BuHiG9FjX-OiSNWx3KquQQ 17.隨機梯度...
    _龍雀閱讀 3,988評論 0 4
  • 爛笑話:我媽呢年紀大了,但是總想看年輕人喜歡看的東西,那天跟我說“去幫我下載一個電影來看,主角是一個穿襯衣的黃發(fā)糕...
    韓三元小豬頭閱讀 2,414評論 10 3

友情鏈接更多精彩內(nèi)容