深度學習優化器Ranger: a synergistic optimizer using RAdam (Rectified Adam), Gradient Centralization and LookAhead筆記

Patty Wu
7 min readNov 20, 2020

--

今年人工智慧年會中,偶然聽到講師呼籲大家,都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分配的自由度:

  1. 樣本數很小(rho很小) → 要熱身 → 關閉開關 → 耍廢
  2. 樣本數夠大(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的更新,會把它拉回準確率更高的區塊,增加訓練的穩定度。

優點

  1. 增加訓練的穩定性。
  2. 減少tune超參數的工作量:就算是用default設定,也能顯著的改善SGD和Adam的結果。
  3. 更快的收斂速度,更小的計算開銷。

Ranger

好的,上面介紹完兩種不同的優化器,它們用不同角度改進了優化器,我們選擇RAdam作為LookAhead中的優化器,就可以實踐Ranger了。

參數

下方是Ranger參數,除了Adam本來的參數外,也新增了RAdam和LookAhead的參數:

  1. alpha:LookAhead中,更新slow權重時的step size
  2. k:LookAhead,每k個mini-batch更新一次slow權重
  3. N_sma_threshold:RAdam中的自由度rho,≤rho要熱身,>rho要修正adptive learning rate。雖然論文中default是4,不過這邊作者覺得採用5效果比較好。

gc則是後來更新的Ranger版本採用的新優化技術:Gradient Centralization,藉由將梯度均值中心化成0,來提升訓練穩定性。

以上就是Ranger的介紹,如果對你有幫助,歡迎不吝嗇的多拍幾下手~

或是哪裡有理解錯誤,也歡迎指正討教。

--

--

No responses yet