深度學習優化器中的變形金剛:Ranger21

論文題目:RANGER21: A SYNERGISTIC DEEP LEARNING OPTIMIZER
論文鏈接:https://arxiv.org/pdf/2106.13731.pdf

1 Ranger21 - 將最新的深度學習組件集成到單個優化器中

由於優化器對神經網絡的性能至關重要,因此每年都會發表大量關於該主題的創新論文。 然而,雖然這些發表論文中的大多數都提供了對現有優化算法的增量改進,它們傾向於作爲新的優化器而不是可組合算法呈現。 因此,許多有價值的改進在最初的論文中很少見。 利用這一未開發的潛力(之前論文都沒有對現有優化器進行組合),這篇論文引入了 Ranger21,這是一種新的優化器,它結合了 AdamW 和八個組件,這些組件由作者在審查和測試論文思想和效果後後精心挑選的。論文實驗發現發現由此產生的優化器顯着提高了驗證準確性和訓練速度、更平滑的訓練曲線,甚至能夠在沒有批量歸一化層的情況下在 ImageNet2012 上訓練 ResNet50,解決 AdamW 系統地停留在糟糕的初始狀態的問題。

2 核心組件

Ranger 21深度學習優化器整合了以下優化思想,尤其是:

  • 使用 AdamW 優化器作爲其核心(或者,可選的 MadGrad)
  • Adaptive gradient clipping:自適應梯度裁剪
  • Gradient centralization:梯度中心化
  • Positive-Negative momentum:正負動量
  • Norm loss:權重軟正則化
  • Stable weight decay:穩定權重衰減
  • Linear learning rate warm-up:線性學習率預熱
  • Explore-exploit learning rate schedule:搜索性的學習率規劃器
  • Lookahead
  • Softplus transformation:激活函數
  • Gradient Normalization:梯度歸一化

2.1 AdamW (adaptive moment estimation):核心優化器

由於 Adam(W) 是最常用的優化器之一,許多發表論文提供了各種增量以及對改算法的創新改進,因爲這些單獨的改進 通常是可組合的,這也是作者選其作爲核心基礎的原因。


AdamW通常會給模型帶來更低的訓練loss和測試誤差。除此之外,在固定相同的訓練loss的情況下,AdamW也有更好的泛化性能。具體對比解釋可以參考該筆記;https://zhuanlan.zhihu.com/p/329877052

2.2 Adaptive Gradient Clipping:自適應梯度裁剪

由於過多梯度的反向傳播,小批量零星的“高損失”可能會破壞隨機梯度下降的穩定性。 這是較小批量和較高學習率的常見問題。 爲了解決這個問題,可以使用梯度裁剪,確保梯度保持在給定閾值以下:



理論研究表明,梯度裁剪有助於優化器平緩過渡損失的非平滑區域並加速收斂。 但是,原始梯度裁剪會影響訓練的穩定性,並且找到一個好的閾值需要根據模型深度、批量大小和學習率進行精心調整。

Ranger21使用自適應梯度裁剪來克服這些缺點。 在自適應梯度裁剪中,裁剪閾值會動態更新,保證梯度範數與參數範數的單位比率成正比。公式如下:


\epsilon是一個常數,默認值爲10^{-3},避免凍結零的初始化參數,τ默認情況下爲 10−2 並且 r 表示我們正在處理層的某個維度參數而不是整個層的參數。

2.3 Gradient Centralization

高性能網絡優化算法梯度中心化(GC, gradient centralization),能夠加速網絡訓練,提高泛化能力以及兼容模型fine-tune。


梯度中心化對損失函數施加了約束,並充當正則化器,據作者說,該算法使訓練更加平滑。 在實驗中,當在包含全連接層和/或卷積層的網絡上使用它時,我們觀察到改進的泛化、更平滑的訓練曲線和更快的收斂。

2.4 Positive-Negative Momentum:正負動量

Momentum 用於現代深度學習優化器,既可以消除訓練噪聲,又可以降低優化器卡在損失圖的鞍點和梯度消失部分的風險。 Positive-Negative Momentum 算法如下:



正負動量的關鍵思想是保留兩組一階矩估計,一組用於奇數迭代,一組用於偶數迭代。 優化過程中應用的矩是兩組的平均值,一個爲當前動量估計分配正權重,一個爲前一個動量估計分配負步長。根據 原論文,這模擬了將參數相關的各向異性噪聲添加到梯度中,有助於逃避鞍點並將優化器推向更平坦的最小值,理論上可以產生更好的泛化。

在本篇論文的測試中,作者能夠通過實驗驗證正負動量確實可以提高各種數據集的性能,並以互補的方式與 Ranger21 中使用的其他算法進行集成。

2.5 Norm loss:權重軟正則化

在 AdamW 風格的優化器中,權重衰減按照下面公式計算(其中 η 是學習率,λ 是縮放權重衰減的參數,θ 是我們正在優化的參數)並在更新步驟期間從參數中減去


Norm Loss來自今ICPR 2020論文Preprint: Norm Loss: An efficient yet effective regularization method for deep neural networks,核心公式如下。給定權重矩陣\||c_{o}\||,它考慮了權重矩陣的歐幾里德範數,使得權重矩陣被推向一個單位範數,這與傳統的權重衰減不同,傳統的權重衰減一直將權重推向零。

2.6 Stable Weight Decay

AdamW 風格的權重衰減使用優化器的學習率來對衰減進行加權。然而,實際步長不僅是學習率的函數,也是 \hat{v}_{t} 的函數,它代表了梯度大小。 因此,實際步長在迭代過程中發生變化,並且當 v^︁t 下降到零時,爲訓練的第一次迭代校準的權重衰減對於以後的迭代來說太大了。

爲了解決這個問題,ICLR 2021 公開論文:Stable Weight Decay Regularization提出了 Stable Weight Decay。


在論文的測試中,作者發現穩定權重衰減爲我們在視覺任務上提供了顯着的泛化改進,即穩定權重衰減允許自適應優化器在視覺任務上匹配並超過 SGD 效果。此外,論文觀察到它可以與 Norm Loss 無縫集成,並且這兩種方法的好處是相加的,因爲它們從不同的角度處理權重正則化。

2.6 Linear learning rate warm-up

最初的 Ranger 優化器基於 Rectified Adam 優化器 ,該優化器試圖修復 Adam 在第一次迭代中由於大量更新而遇到的一些不穩定問題。 本篇論文引入了一個更簡單的替代方案,僅依賴於學習率的預熱,β2是第二動量參數,由於此規劃器可以產生對於較短的訓練迭代次數來說太大的預熱,我們另外將其重置爲第一次t_{warmup}熱身迭代


在論文測試中,我們發現這種預熱策略與 Rectified Adam 相似,避免了第一階段的步長過大
迭代,同時實現起來要簡單得多。

2.8 Explore-Exploit learning rate schedule
Wide-minima Density Hypothesis and the Explore-Exploit Learning Rate Schedule:論文指出寬最小值比窄最小值更好地泛化。 在本文中,通過詳細的實驗,不僅證實了寬極小值的泛化特性,我們還爲寬極小值的密度可能低於窄極小值的密度的新假設提供了經驗證據。 此外,在這一假設的推動下設計了一個新穎的探索-利用學習率計劃。 在各種圖像和自然語言數據集上,與其原始手動調整的學習率基線相比,同時表明我們的探索-利用計劃可以使用原始訓練預算將絕對準確度提高 0.84% 或高達 57% 減少訓練時間,同時達到原始論文的準確性。
2.9 Lookahead
Lookahead2,一種由保持權重的指數移動平均值組成的技術,每 k 步(默認爲 5)更新並替換爲當前權重。 爲了實現 Lookahead,可以在通常的優化步驟結束時應用算法 3(其中 βlookahead 是移動平均線的動量,默認爲 0.5)。

3 Ranger21

Ranger21 是上述所有組件的組合:


由於集成了各種算法於一體,官方實現代碼篇幅還是很長的,大家可以直接打開鏈接查看;
https://github.com/lessw2020/Ranger21/blob/main/ranger21/ranger21.py


class Ranger21(TO.Optimizer):
    def __init__(
        self,
        params,
        lr,
        lookahead_active=True,
        lookahead_mergetime=5,
        lookahead_blending_alpha=0.5,
        lookahead_load_at_validation=False,
        use_madgrad=False,
        use_adabelief=False,
        softplus=True,
        beta_softplus=50,
        using_gc=True,
        using_normgc=True,
        gc_conv_only=False,
        normloss_active=True,
        normloss_factor=1e-4,
        use_adaptive_gradient_clipping=True,
        agc_clipping_value=1e-2,
        agc_eps=1e-3,
        betas=(0.9, 0.999),  # temp for checking tuned warmups
        momentum_type="pnm",
        pnm_momentum_factor=1.0,
        momentum=0.9,
        eps=1e-8,
        num_batches_per_epoch=None,
        num_epochs=None,
        use_cheb=False,
        use_warmup=True,
        num_warmup_iterations=None,
        warmdown_active=True,
        warmdown_start_pct=0.72,
        warmdown_min_lr=3e-5,
        weight_decay=1e-4,
        decay_type="stable",
        warmup_type="linear",
        warmup_pct_default=0.22,
        logging_active=True,
    ):

4 實驗結果與總結

許多論文對現有優化器進行了增量改進,將它們呈現爲新的優化器,而不是可以組合的模塊。 本篇論文爲了充分利用正在進行的深度學習優化研究,意識到這種模塊化很重要,所以設計 Ranger21 是爲了突出從這種組合中獲得的好處:測試並將多個獨立的改進組合成一個明顯優於其單個部分的單一優化器。

通過結合許多子領域(例如動量、損失和重量衰減)的改進,論文發現 Ranger21 能夠訓練其他優化器根本無法訓練的模型,例如 Normalizer-Free Resnet50。 更重要的是,對於給定的模型,Ranger21 通常能夠在不影響泛化的情況下加速學習並實現更高的驗證精度


5 參考資料

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