深度學習最全優(yōu)化方法總結比較
這篇文章已經(jīng)比較清楚了索赏, 這篇筆記主要幫助理解和記憶各種算法忿檩, 無數(shù)學公式秩冈。
以前經(jīng)常覺得, 優(yōu)化算法名字好難記沃测, 所以順便把自己理解的名字的組合也寫進來缭黔。
:) 我承認標題黨了, 今天正好又要看一遍優(yōu)化算法蒂破, 所以干脆沉下心來馏谨, 盡可能記住這幾種優(yōu)化算法, 最好的方式就是用一句話來表達出這些優(yōu)化算法附迷。
SGD
沒什么好說的
Momentum
如其名惧互, 動量, 把歷史改變作為動量累加到當前梯度上喇伯。
動量+梯度
Nesterov
也是動量喊儡, 先動量, 根據(jù)動量后的值計算梯度更新艘刚。
先動量管宵, 求跳躍后的梯度
Adagrad
用所有梯度平方和后開根號除當前梯度, 來反向調節(jié)更新
我猜是為了防止更新率過大的時候攀甚, 防止震蕩箩朴;更新率過小的時候, 讓梯度加速秋度, 當然也看的出來很多問題炸庞, 至少不該使用所有的以前的梯度, 這樣荚斯, 越訓練到后面埠居, 越慢, 到最后事期, 受到以前梯度平方的影響滥壕, 更新就非常慢了
adapt + gradient descent
適合處理稀疏梯度
Adadelta
以前的梯度平方衰減后累加開根號后來除現(xiàn)在的梯度
證明了我對adagrad的理解, 無衰減累加梯度**2會過多的影響現(xiàn)在的取值兽泣, 加上衰減后绎橘, 以前的梯度的影響會漸漸消失, 越近的梯度對現(xiàn)在的影響越大唠倦。
Adagrad delta版本
現(xiàn)在的默認參數(shù)称鳞, 估計針對是歸一化數(shù)據(jù)的涮较, 所以也證明了, 對數(shù)據(jù)歸一化非常重要冈止, 不然咋個以前的梯度都較大的話狂票, 現(xiàn)在還是訓練越來越慢。
- 訓練初中期熙暴,加速效果不錯闺属,很快
- 訓練后期,反復在局部最小值附近抖動
RMSprop
Adadelta的變體
其實沒咋個看懂變體后公式中E的含義怨咪, 猜測主要簡化了計算屋剑, 并且只計算最近一次的梯度變化么?
RMS均方根的意思
- RMSprop算是Adagrad的一種發(fā)展诗眨,和Adadelta的變體唉匾,效果趨于二者之間
- 適合處理非平穩(wěn)目標 - 對于RNN效果很好
Adam
帶有動量項的RMSprop
- 適用于大數(shù)據(jù)集和高維空間
Ada + Momentum
Adamax
帶有學習率上限的Adam
Nadam
帶有Nesterov動量項的Adam
- 一般而言,在想使用帶動量的RMSprop匠楚,或者Adam的地方巍膘,大多可以使用Nadam取得更好的效果。
記錄下《[深度學習最全優(yōu)化方法總結比較]https://zhuanlan.zhihu.com/p/22252270)
》一文中作者的經(jīng)驗:
- Adadelta芋簿,RMSprop峡懈,Adam是比較相近的算法,在相似的情況下表現(xiàn)差不多与斤。
- 在想使用帶動量的RMSprop肪康,或者Adam的地方,大多可以使用Nadam取得更好的效果