深度學習優化器Ranger: a synergistic optimizer using RAdam (Rectified Adam), Gradient Centralization and LookAhead筆記
今年人工智慧年會中,偶然聽到講師呼籲大家,都2020了,不要再用Adam了,請改用Ranger,因此著手來寫一篇Ranger的筆記。
今年有兩篇優化器相關的論文被提出,分別是LookAhead和RAdam,這兩種方法用不同角度對深度學習的優化做改進,後來研究員 Less Wright將兩個方法整合成一個新的優化器:Ranger,得到了更好的成果。
廢話不多說,先上PyTorch實現的GitHub:https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer
要了解RAdam 和 LookAhead 是如何互補的,需要先分別討論他們的概念。
RAdam
全名是Rectified Adam,白話地說,就是自動熱身(warmup)版的Adam。
概念
Adam是一種常用的自適應學習率 (adptive learning rate) 優化器,但類方法在訓練的初期,adptive learning rate的變異非常大,然後在少量的數據進行過度跳躍,下了錯誤決策,就容易收斂在local minimum。
為了解決這個問題,RAdam根據adaptive rate的變異程度去修正learning rate,讓Adam可以自動熱身,不需再手動調整,也避免模型收斂在local minimum。
概念是這樣:有個熱身用的開關,閥值為rho,這個rho代表adpative learning rate分配的自由度:
- 樣本數很小(rho很小) → 要熱身 → 關閉開關 → 耍廢
- 樣本數夠大(rho很大) → 熱身完 → 打開開關 → 根據變異程度修正adaptive learning rate
優點
如此的做法,讓RAdam在享有Adam快速收斂優勢的同時,又達到跟SGD差不多好的收斂結果。RAdam詳細概念可以參考我寫的另一篇文章:https://is.gd/2yxrE7。
LookAhead
2020由深度學習教父Geoffrey Hinton團隊發表的論文,LookAhead基於損失空間非常複雜,因此設計出兩組weight:fast跟slow weight。
概念
LookAhead可以任意選擇搭配的優化器,先快速的探索,並更新fast的權重 (inner update)。每k個mini-batch時,利用fast的權重更新slow的權重,再用slow的權重回去更新fast的權重(outer update),如此為一個循環,讓fast不容易走錯路或落入local minimum。流程可見下圖右。
下圖左是準確率的等高線圖,可以看到當fast(藍)在探索時,因為slow權重的更新,直接拉動fast權重,讓它可以往準確率更高的區域繼續做探索。反觀SGD在20個epochs內都沒有探索到那塊區域。
更新方式就是指數移動平均:
表現
由下圖可以看到LookAhead在Cifar-100上表現優秀,不只贏過了Adam,也贏過了SGD (差異不大就是了...)。
下圖可以發現,fast(藍)的更新常常會誤入歧途,降低準確率,但藉由slow的更新,會把它拉回準確率更高的區塊,增加訓練的穩定度。
優點
- 增加訓練的穩定性。
- 減少tune超參數的工作量:就算是用default設定,也能顯著的改善SGD和Adam的結果。
- 更快的收斂速度,更小的計算開銷。
Ranger
好的,上面介紹完兩種不同的優化器,它們用不同角度改進了優化器,我們選擇RAdam作為LookAhead中的優化器,就可以實踐Ranger了。
參數
下方是Ranger參數,除了Adam本來的參數外,也新增了RAdam和LookAhead的參數:
- alpha:LookAhead中,更新slow權重時的step size
- k:LookAhead,每k個mini-batch更新一次slow權重
- N_sma_threshold:RAdam中的自由度rho,≤rho要熱身,>rho要修正adptive learning rate。雖然論文中default是4,不過這邊作者覺得採用5效果比較好。
gc則是後來更新的Ranger版本採用的新優化技術:Gradient Centralization,藉由將梯度均值中心化成0,來提升訓練穩定性。
以上就是Ranger的介紹,如果對你有幫助,歡迎不吝嗇的多拍幾下手~
或是哪裡有理解錯誤,也歡迎指正討教。
參考文獻
- LookAhead optimizer: k steps forward, 1 step back:https://arxiv.org/pdf/1907.08610.pdf
- On the Variance of the Adaptive Learning Rate and Beyond: https://arxiv.org/pdf/1908.03265.pdf
- Ranger: https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer
- 可以丢掉SGD和Adam了,新的深度学习优化器Ranger:RAdam + LookAhead强强结合: https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247511875&idx=3&sn=b7fb4db92adb455ec5cca3e75ce170a8&chksm=e99e9cbadee915ac7f004ea5717adaa5e58d3187e0cb98635f11c6205e69934c0ea8e00310a5&mpshare=1&scene=1&srcid=&sharer_sharetime=1577631984056&sharer_shareid=3097eea32dc0f009bcb869a036183b0f&key=bf3c04cc414d26bd9db5ad0997194a95c2bd8dd668eeeb4a53aaf8c01542bc3db57d4ed9d7e051ebe7c627aa0965c96891e3fe99f3d73e8fb7d3433ac987aa9afc312f808cd86ad90af119d3e915ca45&ascene=1&uin=MTg2ODcwMjIyMQ%3D%3D&devicetype=Windows+7&version=62070158&lang=zh_CN&exportkey=AZmEDneDo7mrw1XjhJ97FN8%3D&pass_ticket=cpN9QLj6v%2Br%2F80g3E9GKZbFNLf7JuKg6Yk5wwA0%2BG7XnzpsQiagyjgUqGy8Td2SH
- 要得到最強的優化器,只需要把RAdam和LookAhead合二為一: https://www.mdeditor.tw/pl/2jM0/zh-tw