【深度學習】關於Adam


版權聲明:本文為博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/weixin_31866177/article/details/88601294

從SGD(SGD指mini-batch gradient descent)和Adam兩個方面說起。

更詳細的可以看:深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)(醍醐灌頂!)

SGD

SGD就是每一次迭代計算mini-batch的梯度,然后對參數進行更新,是最常見的優化方法了。即:

其中,\eta是學習率,g_t是梯度 SGD完全依賴於當前batch的梯度,所以\eta可理解為允許當前batch的梯度多大程度影響參數更新。

缺點:(正因為有這些缺點才讓這么多大神發展出了后續的各種算法)

  • 選擇合適的learning rate比較困難 - 對所有的參數更新使用同樣的learning rate。對於稀疏數據或者特征,有時我們可能想更新快一些對於不經常出現的特征,對於常出現的特征更新慢一些,這時候SGD就不太能滿足要求了
  • SGD容易收斂到局部最優,並且在某些情況下可能被困在鞍點【原來寫的是“容易困於鞍點”,經查閱論文發現,其實在合適的初始化和step size的情況下,鞍點的影響並沒這么大。感謝@冰橙的指正】
  • 參數取值震盪嚴重。(我自己添加的)

Adam 

Adam(Adaptive Moment Estimation)本質上是帶有動量項的RMSprop,它利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率。Adam的優點主要在於經過偏置校正后,每一次迭代學習率都有個確定范圍,使得參數比較平穩。公式如下:

特點:

  • 結合了Adagrad善於處理稀疏梯度和RMSprop善於處理非平穩目標的優點
  • 對內存需求較小
  • 為不同的參數計算不同的自適應學習率
  • 也適用於大多非凸優化 - 適用於大數據集和高維空間

 一個框架看懂優化算法之異同 SGD/AdaGrad/Adam

優化算法的一般框架:

后續復習的時候,存在了一個疑問,上述方法說對解決稀疏數據十分有效,那么哪里體現出了對稀疏數據有效呢?

參數更新越頻繁,二階動量越大,學習率就越小。

 

這篇也不錯,之后復習看:

Adam和學習率衰減(learning rate decay)


免責聲明!

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



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