動量梯度下降法、RMSprop、Adam 優化算法


1.1 動量梯度下降法(Gradient descent with Momentum)

優化成本函數J還有一種算法叫做 Momentum,或者叫做動量梯度下降法,運行速度幾乎總是快於標准的梯度下降算法,簡而言之,基本的想法就是計算梯度的指數加權平均數,並利用該梯度更新你的權重

使用動量梯度下降法,你需要做的是,在每次迭代中,確切來說在第t次迭代的過程中,需要計算微分dwdb,用現有的 mini-batch 計算dwdbvdw=βvdw+(1-β)dw,接着同樣地計算vdb vdb=βvdb+(1-β)db,然后重新賦值權重,w: = w avdw,同樣b: =aavdb,這樣就可以減緩梯度下降的幅度。所以有兩個超參數,學習率α以及參數β,β控制着指數加權平均數,β最常用的值是0.9,我們之前平均了過去十天的溫度,所以現在是平均了前十次迭代的梯度,vdw初始值是 0,要注意到這是和dw擁有相同維數的零矩陣,也就是跟w擁有相同的維數,vdb的初始值也是向量零,所以和db擁有相同的維數,也就是和b是同一維數,這個算法要好於沒有 Momentum 的梯度下降算法。

1.2 RMSprop

 

動量(Momentum)可以加快梯度下降,還有一個叫做 RMSprop 的算法,全稱是 root mean square prop 算法,它也可以加速梯度下降,減緩b方向的學習,即縱軸方向,同時加快橫軸方向的學習,RMSprop 算法可以實現這一點。

 

在第t次迭代中,該算法會照常計算當下 mini-batch 的微分dwdb,所以我會保留這個指數加權平均數,我們用到新符號Sdw,因此Sdw=βSdw+(1-β)dw2,同樣Sdb=βSdb+(1-β)db2,接着 RMSprop 會這樣更新參數值:,在橫軸方向或者在例子中的w方向,我們希望學習速度快,而在垂直方向,也就是例子中的b方向,我們希望減緩縱軸上的擺動,所以有了SdwSdbRMSprop 的影響就是你的更新最后會變成縱軸方向上擺動較小,而橫軸方向繼續推進。

1.3 Adam 優化算法(Adam optimization algorithm)

 

Adam 優化算法基本上就是將 Momentum RMSprop 結合在一起,使用 Adam 算法,首先你要初始化,vdw= 0Sdw= 0vdb= 0Sdb= 0,在第t次迭代中,你要計算微分,用當前的 mini-batch 計算dwdb接下來計算 Momentum 指數加權平均數,所以vdw=β1vdw+(1-β1)dw (使用β1,這樣就不會跟超參數β2混淆,因為后面 RMSprop 要用到β2),同樣:vdwb=β1vdb+(1-β1)db ;接着你用 RMSprop 進行更新,即用不同的超參數β2Sdw=β2Sdw+(1-β2)dw2Sdb=β2Sdb+(1-β2)db2。相當於 Momentum 更新了超參數β1RMSprop 更新了超參數β2,一般使用 Adam 算法的時候,要計算偏差修正,同樣, ,S也使用偏差修正,也就是:,,最后更新權重,所以w更新后是,根據類似的公式更新b

Adam 算法結合了 Momentum RMSprop 梯度下降法,並且是一種極其常用的學習算法,被證明能有效適用於不同神經網絡,適用於廣泛的結構。β1常用的缺省值為 0.9,這是 dW 的移動平均數,也就是dW 的加權平均數,這是 Momentum 涉及的項;超參數β2推薦使用 0.999,這是在計算(dw)2以及(db)2的移動加權平均值,的取值建議為10-8,但你並不需要設置它,因為它並不會影響算法表現。

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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