優化器:SGD > Momentum > AdaGrad > RMSProp > Adam

superjfhc發表於2020-12-25

SGD 隨機梯度下降

在這裡SGD和min-batch是同一個意思,抽取m個小批量(獨立同分布)樣本,通過計算他們平梯度均值。後面幾個改進演算法,均是採用min-batch的方式。
在這裡插入圖片描述

momentum

1.動量方法主要是為了解決Hessian矩陣病態條件問題(直觀上講就是梯度高度敏感於引數空間的某些方向)的。
2.加速學習
3.一般將引數設為0.5,0.9,或者0.99,分別表示最大速度2倍,10倍,100倍於SGD的演算法。
4.通過速度v,來積累了之間梯度指數級衰減的平均,並且繼續延該方向移動:
在這裡插入圖片描述要是當前時刻的梯度與歷史時刻梯度方向相似,這種趨勢在當前時刻則會加強;要是不同,則當前時刻的梯度方向減弱。
  假設每個時刻的梯度g總是類似,那麼由
  在這裡插入圖片描述
我們可以直觀的看到每次的步長為:
在這裡插入圖片描述

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

AdaGrad

1.簡單來講,設定全域性學習率之後,每次通過,全域性學習率逐引數的除以歷史梯度平方和的平方根,使得每個引數的學習率不同
2.效果是:在引數空間更為平緩的方向,會取得更大的進步(因為平緩,所以歷史梯度平方和較小,對應學習下降的幅度較小)
3.缺點是,使得學習率過早,過量的減少,驗證集上效果好,測試集上效果差
在這裡插入圖片描述

RMSProp

1.AdaGrad演算法的改進。鑑於神經網路都是非凸條件下的,RMSProp在非凸條件下結果更好,改變梯度累積為指數衰減的移動平均以丟棄遙遠的過去歷史。
2.經驗上,RMSProp被證明有效且實用的深度學習網路優化演算法。
相比於AdaGrad的歷史梯度:
在這裡插入圖片描述
RMSProp增加了一個衰減係數來控制歷史資訊的獲取多少:
在這裡插入圖片描述

## Adam
1.Adam演算法可以看做是修正後的Momentum+RMSProp演算法
2.動量直接併入梯度一階矩估計中(指數加權)
3.Adam通常被認為對超引數的選擇相當魯棒
4.學習率建議為0.001

其實就是Momentum+RMSProp的結合,然後再修正其偏差。
在這裡插入圖片描述

相關文章