Momentum、RMSprop、Adam

吳恩達深度學習筆記

要說Momentum、RMSprop、Adam這三個優化器就要先講講指數加權平均

指數加權平均

在這裏插入圖片描述
上圖是一年中365天的溫度變化
指數加權平均的等式是:Vt = βVt-1 + (1-β)θt
θt 代表第t天的溫度,也就是縱軸的數值,那麼這個等式得到的Vt 近似代表的就是近似是1/(1-β)天的平均溫度。
當β = 0.9時,Vt 就近似10天的平均溫度,
當β = 0.98時,Vt 就近似50天的平均溫度,
當β = 0.5時,Vt 就近似2天的平均溫度
當β取不同的值的時候可以畫出不同的曲線,當β = 0.98時,畫出的曲線最平滑,當β = 0.5時,畫出的曲線最陡。
在這裏插入圖片描述
如上圖,當β = 0.9時,是紅色曲線,當β = 0.98時是綠色曲線。

偏差修正

其實,在估計運算初期,不能很好的估計溫度的值,產生的點會很低,所以需要進行偏差修正,具體就是用Vt/ (1-βt)代替 Vt
這樣就在前期進行了修正,隨着t增大βt接近於0,所以後邊的數值基本一樣。

Momentum

在這裏插入圖片描述
在梯度下降過程中,我們希望在縱軸上震盪較小,在橫軸上希望加快速度。那麼我們應用上面的指數加權平均可以實現
循環:
在每個mini-batch上計算dw,db (代表導數)
Vdw = βVdw+(1-β)dw
Vdb = βVdb+(1-β)db ·
更新參數w和b
w= w-αVdw α是學習率
b = b-αVdb
當β = 0.9時,相當於10次迭代的平均,這樣就可以使縱軸的震動較小,水平方向更快。
默認值β = 0.9

RMSprop

利用均方根
循環:
在每個mini-batch上計算dw,db(導數)
Sdw = βSdw + (1-β)dw2
Sdb = βSdb + (1-β)db2
更新參數w和b
w= w-αdw / [(Sdw) 1/ 2 + a]
b = b-α
db / [ (Sdb) 1/ 2 + a]

這裏實際上我們用的是導數平方的加權操作,a一般爲10-8 防止分母趨近於0。
根據這個更新參數的公式裏面的,我們根據一開始說的目的,所以希望dw小,db大。
因爲函數在垂直方向的斜率比在水平方向的斜率大(因爲垂直方向比水平方向更抖),所以這是成立的。
所以我們還可以使用大一些學習率加快訓練速度而不擔心垂直方向的擴散。

Adam

Adam的主要思想就是把上面的兩個方法結合起來
循環:
在每個mini-batch上計算dw,db(導數)
Vdw = β1Sdw+(1 - β1)dw , Vdb = β1Sdb + (1-β1)db (Momentum)
Sdw = β2Sdw+(1 - β2)dw2,Sdb = β2Sdb + (1 - β2)db2 (RMSprop)
偏差修正:
Vdw(correct) = Vdw / (1 - β1t),Vdb(correct) = Vdb / (1 - β1t)
Sdw(correct) = Sdw / (1 - β2t),Sdb(correct) = Sdb / (1 - β2t)
更新參數w和b
w= w - α* Vdw(correct) / [( Sdw(correct))1/2 + a]
b = b - α* Vdb(correct) / [( Sdb(correct))1/2 + a]

β1代表這個導數的平均值,稱爲一階矩
β2用於計算平方數的指數加權平均,稱爲二階矩

這裏的超參數:
α :學習率,需要自己調整
β1:默認0.9(dw)
β2:默認0.999(dw2
a : 10-8

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