AdaX:一個比Adam更優秀,帶”長期記憶“的優化器

文 | 蘇劍林(追一科技,人稱蘇神)

美 | 人美心細小謹思密達

來自 | 夕小瑤的賣萌屋

前言

這篇文章簡單介紹一個叫做AdaX的優化器,來自《AdaX: Adaptive Gradient Descent with Exponential Long Term Memory》。介紹這個優化器的原因是它再次印證了之前在《硬核推導Google AdaFactor:一個省顯存的寶藏優化器》一文中提到的一個結論,兩篇文章可以對比着閱讀。

Adam & AdaX

AdaX的更新格式是

其中的默認值是0.0001。對了,順便附上自己的Keras實現:https://github.com/bojone/adax 作爲比較,Adam的更新格式是

其中的默認值是0.999。

等價形式變換

可以看到,兩者的第一個差別是AdaX去掉了動量的偏置校正(這一步),但這其實影響不大,AdaX最大的改動是在處,本來是滑動平均格式,而不像是滑動平均了,而且,似乎有指數爆炸的風險?

原論文稱之爲“with Exponential Long Term Memory”,就是指β導致歷史累積梯度的比重不會越來越小,反而會越來越大,這就是它的長期記憶性。

事實上,學習率校正用的是,所以有沒有爆炸我們要觀察的是。對於Adam,我們有

所以如果設,那麼更新公式就是

基於同樣的道理,如果設,那麼AdaX的的更新公式也可以寫成上式。

衰減策略比較

所以,從真正用來校正梯度的來看,不管是Adam還是AdaX,其更新公式都是滑動平均的格式,只不過對應的衰減係數不一樣。

對於Adam來說,當時t = 0,,這時候就是,也就是用實時梯度來校正學習率,這時候校正力度最大;當時,,這時候是累積梯度平方與當前梯度平方的加權平均,由於,所以意味着當前梯度的權重不爲0,這可能導致訓練不穩定,因爲訓練後期梯度變小,訓練本身趨於穩定,校正學習率的意義就不大了,因此學習率的校正力度應該變小,並且,學習率最好恆定爲常數(這時候相當於退化爲SGD),這就要求時,

對於AdaX來說,當t = 0時,當,滿足上述的理想性質,因此,從這個角度來看,AdaX確實是Adam的一個改進。在AdaFactor中使用的則是,它也是從這個角度設計的。至於AdaX和AdaFactor的策略孰優孰劣,筆者認爲就很難從理論上解釋清楚了,估計只能靠實驗。

就這樣結束了

嗯,文章就到這兒結束了。開頭就說了,本文只是簡單介紹一下AdaX,因爲它再次印證了之前的一個結論——應當滿足條件“”,這也許會成爲日後優化器改進的基本條件之一。


添加個人微信,備註:暱稱-學校(公司)-方向即可獲得

1. 快速學習深度學習五件套資料

2. 進入高手如雲DL&NLP交流羣

記得備註呦

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