深度學習中幾種常用的優化器


參考:

https://zhuanlan.zhihu.com/p/261695487(推薦)

https://blog.csdn.net/qq_19917367/article/details/119208803

https://zhuanlan.zhihu.com/p/61955391(推薦)

https://zhuanlan.zhihu.com/p/86591381

一、隨機梯度下降法(Stochastic Gradient Descent, SGD)

1、參數更新

注:α為學習率,可以隨着時間推移進行調整。

2、特點

訓練速度快,隨機梯度下降所帶來的的波動性有利於找到較好的局部極值點,甚至全局極值點。但是當遇到局部最優點或鞍點時,梯度為0,無法繼續更新參數。並且沿陡峭維度震盪,而沿平緩維度進展緩慢,難以迅速收斂。

二、SGD with Momentum(SGD-M)

1、參數更新

注:β為歷史梯度貢獻的衰減速率,一般為 0.5,0.9或0.99。可以隨着時間的推移進行調整。

2、特點

因為加入了動量因素,SGD-M緩解了SGD在局部最優點梯度為0,無法持續更新和震盪幅度過大的問題。但是,即使有動量的加持,仍舊有可能陷入局部最優點。

三、Nesterov加速(NAG)

1、參數更新

 2、特點

有利於跳出局部最優解,但是收斂速度慢。

四、AdaGrad(自適應學習率)

1、參數更新

注:δ是一個小的平滑項,為了避免分母為0。大約設為10-7

2、特點

該算法的思想就是針對於不同的維度設置不同的學習率。偏導數較大的參數,學習率較小;偏導數較小的參數,學習率較大。該算法在稀疏數據場景下表現非常好。但是由於st的不斷累積,學習率一直在下降,可能會導致訓練過程提前結束。

五、RMSProp

1、參數更新

 

注:建議的初始值:α=0.001,β=0.9。δ為平滑項,一般取值1e-8~1e-10,tensorflow中的默認值為1e-10。

2、特點

不累積全部歷史梯度,而只關注過去一段時間窗口的下降梯度。避免了AdaGrad中學習率過度衰減的問題。

六、Adam

1、參數更新

注:建議的初始值:α=0.001,β1=0.9,β2=0.999,δ=1e-8

2、特點

通過一階動量和二階動量,有效控制學習率步長和梯度方向,防止梯度的震盪和在鞍點的靜止。但是(1)可能不收斂。二階動量是固定時間窗口內的累積,隨着時間窗口的變化,遇到的數據可能發生巨變,使得st可能會時大時小,不是單調變化。這就可能在訓練后期引起學習率的震盪,導致模型無法收斂。修正方法:(2)可能錯過全局最優解。自適應學習率算法可能會對前期出現的特征過擬合,后期才出現的特征很難糾正前期的擬合效果。后期Adam的學習率太低,影響了有效的收斂。

 


免責聲明!

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



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