優化器集合¶
PyTorch 官方優化器¶
Adadelta¶
- 描述:
Adadelta 是一種強健的學習率方法,可以應用於多種情況。與 SGD 相比,該方法的計算開銷微乎其微,同時提供每個維度的學習率,在 MNIST 和大規模語音識別數據集上顯示出良好的結果。
- 來源:
- 偽代碼:
Adagrad¶
- 描述:
AdaGrad 是一類用於隨機優化的子梯度算法。屬於該家族的算法類似於二階隨機梯度下降,並對優化函數的 Hessian 進行近似。AdaGrad 的名稱來源於自適應梯度。直觀上,它根據問題的估計幾何形狀為每個特徵調整學習率;特別是,它傾向於為不頻繁的特徵分配更高的學習率,確保參數更新更少依賴頻率而更多依賴相關性。
- 來源:
Adaptive Subgradient Methods for Online Learning and Stochastic Optimization.
- 偽代碼:
Adam¶
- 描述:
Adam 是一種高效的隨機優化方法,只需要一階梯度且內存需求較小。該方法根據梯度的一階和二階矩的估計為不同參數計算個體自適應學習率。
- 來源:
- 偽代碼:
AdamW¶
- 描述:
帶有解耦權重衰減的 Adam。這一簡單修改顯著提高了 Adam 的泛化性能,使其在圖像分類數據集上能夠與帶動量的 SGD 競爭(在這些數據集上,之前通常是後者表現更好)。
- 來源:
- 偽代碼:
SparseAdam¶
- 描述:
SparseAdam 實現了適合稀疏梯度的 Adam 算法的掩碼版本。SparseAdam 通過掩蓋與梯度中零值對應的參數和動量更新來近似 Adam 算法。
- 來源:
Adamax¶
- 描述:
AdamW 是基於無窮範數的 Adam 變體。
- 來源:
- 偽代碼:
ASGD¶
- 描述:
平均隨機梯度下降,適用於大規模數據集。
- 來源:
SGD¶
- 描述:
隨機梯度下降(簡稱 SGD)是一種常用於機器學習的迭代方法,在每次選擇隨機權重向量後優化梯度下降。
- 來源:
- 偽代碼:
RAdam¶
- 描述:
RAdam 是 Adam 的一種修正版本,不僅明確修正了方差且理論上是合理的,而且與啟發式的預熱方法相比也表現良好。
- 來源:
- 偽代碼:
Rprop¶
- 描述:
RProp,或稱為彈性反向傳播,是多層前饋網絡監督學習中廣泛使用的算法。反向傳播學習算法的基本概念是重複應用鏈式法則,以計算網絡中每個權重對任意誤差的影響。
- 來源:
A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm.
- 偽代碼:
RMSprop¶
- 描述:
當我們處理非常大的數據集並需要進行小批量權重更新時,RProp 算法表現不佳。因此,科學家提出了一種新算法 RMSProp,它可以覆蓋比 RProp 更多的場景。
- 來源:
- 偽代碼:
NAdam¶
- 描述:
就像 Adam 本質上是帶動量的 RMSprop,Nadam 是帶有 Nesterov 動量的 Adam。經驗上,Nadam 在減少訓練和驗證損失方面明顯優於其他算法,包括其母算法 Adam。
- 來源:
- 偽代碼:
LBFGS¶
- 描述:
LBFGS 是一種優化器,實施了有限記憶 Broyden-Fletcher-Goldfarb-Shanno (LBFGS) 算法,特別適用於參數數量相對於數據點數量較少的問題。
- 來源:
- 偽代碼:
自定義優化器¶
A2GradExp¶
- 描述:
帶指數移動平均的自適應 ASGD。
- 來源:
Optimal Adaptive and Accelerated Stochastic Gradient Descent.
- 偽代碼:
A2GradInc¶
- 描述:
帶增量移動平均(平方權重)的自適應 ASGD。
- 來源:
Optimal Adaptive and Accelerated Stochastic Gradient Descent.
- 偽代碼:
A2GradUni¶
- 描述:
帶均勻移動平均的自適應 ASGD。
- 來源:
Optimal Adaptive and Accelerated Stochastic Gradient Descent.
- 偽代碼:
AccSGD¶
- 描述:
一種加速的隨機梯度方法,在解決最小二乘回歸的隨機近似問題中,首次實現了比平均 SGD 更快的最小最大速率。
- 來源:
On the insufficiency of existing momentum schemes for Stochastic Optimization.
- 偽代碼:
AdaBelief¶
- 描述:
AdaBelief 是首個同時實現三個目標的優化器:像自適應方法一樣快速收斂、像 SGD 一樣良好的泛化,以及在複雜設置(如 GANs)中的訓練穩定性。
- 來源:
AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients.
- 偽代碼:
AdaBound¶
- 描述:
受 SGD 強泛化能力的激勵,AdaBound 是一種優化器,結合了 Adam 和 SGD 的優點,並具有動態限制的學習率。它在多個標準基準上顯示出良好的效果,同時保持了自適應方法的有利特性,如快速的初始進展和對超參數的不敏感性。
- 來源:
Adaptive Gradient Methods with Dynamic Bound of Learning Rate.
- 偽代碼:
AdaMod¶
- 描述:
AdaMod 旨在解決通常與 Adam 優化器相關的非收斂問題。通過對個體學習率施加自適應上限,AdaMod 確保它們不會超過歷史數據支持的水平,從而提高性能。這種方法已通過廣泛的實證測試在多種深度學習應用中得到了驗證,特別是在複雜網絡架構(如 DenseNet 和 Transformer)上顯示出顯著的有效性。
- 來源:
Adaptive and Momental Bounds for Adaptive Learning Rate Methods.
- 偽代碼:
Adafactor¶
- 描述:
Adafactor 是一種高效的優化算法,旨在解決訓練大型神經網絡時經常遇到的內存限制。它在機器翻譯等熱門任務上實現了與 Adam 相當的性能,同時對累加器的額外空間需求呈亞線性。這使得在內存有限的硬件上能夠訓練顯著更大的模型。
- 來源:
Adafactor: Adaptive Learning Rates with Sublinear Memory Cost.
- 偽代碼:
Adahessian¶
- 描述:
AdaHessian 納入了近似的 Hessian 對角線,結合空間平均和動量來對梯度向量進行預處理。這會自動重新縮放梯度向量,從而產生更好的下降方向。AdaHessian 的一個關鍵創新是將 Hessian 對角線的空間平均與時間上的指數移動平均結合。這使我們能夠平滑噪聲較大的局部 Hessian 信息,避免誤導。
- 來源:
ADAHESSIAN: An Adaptive Second Order Optimizer for Machine Learning.
- 偽代碼:
AdamP¶
- 描述:
AdamP 解決了尺度不變權重范數過度增長的問題,這一現象可能導致次優性能。使用基於動量的優化器(如 SGD 和 Adam)時,這一問題尤為普遍,它們廣泛用於訓練大多數深度學習模型。包含歸一化層的網絡(如 ResNet)往往表現出大量的尺度不變權重。
- 來源:
Slowing Down the Weight Norm Increase in Momentum-based Optimizers.
- 偽代碼:
AggMo¶
- 描述:
AggMo 是對經典動量的簡單擴展,易於實現,並且在現代深度學習任務中幾乎沒有計算開銷。經驗上,AggMo 即使在使用大阻尼系數時也能保持穩定,並因此享有更快的收斂速度。
- 來源:
- 偽代碼:
Apollo¶
- 描述:
Apollo 是一種簡單且計算效率高的準牛頓算法,用於非凸隨機優化。該方法旨在解決大規模優化問題,尤其是涉及大數據集和/或高維參數空間的機器學習與深度神經網絡。
- 來源:
- 偽代碼:
DiffGrad¶
- 描述:
DiffGrad 將當前和前一個迭代的梯度差異(即短期梯度變化信息)與 Adam 優化技術結合,以根據優化階段控制學習率。
- 來源:
DiffGrad: An Optimization Method for Convolutional Neural Networks.
- 偽代碼:
LARS¶
- 描述:
LARS 是一種為每一層量身定制學習率的優化器,在大批量訓練卷積網絡中至關重要。它克服了傳統大學習率方法相關的發散問題,尤其是在初始訓練階段。LARS 已有效用於將 AlexNet 和 ResNet-50 的訓練規模提升至 32K 的批量大小而不損失準確度。
- 來源:
- 偽代碼:
Lamb¶
- 描述:
LAMB 支持自適應元素級更新和逐層學習率。LAMB 是一種通用優化器,適用於小批量和大批量訓練。LAMB 還是第一個能夠在使用 RESNET-50 進行 ImageNet 訓練時實現最先進準確度的大批量自適應求解器。
- 來源:
Large Batch Optimization for Deep Learning: Training BERT in 76 minutes.
- 偽代碼:
MADGRAD¶
- 描述:
MADGRAD 是 AdaGrad 自適應梯度方法家族中的一種新型優化方法。MADGRAD 在多個領域的深度學習優化問題上表現出色,包括視覺中的分類和圖像到圖像任務,以及自然語言處理中的遞歸和雙向掩碼模型。
- 來源:
- 偽代碼:
NovoGrad¶
- 描述:
NovoGrad 是一種自適應 SGD 方法,其梯度通過逐層的二階矩進行歸一化,並具有解耦的權重衰減。經驗上,NovoGrad 在大批量訓練中表現出色,所需內存僅為 Adam 的一半。
- 來源:
Stochastic Gradient Methods with Layer-wise Adaptive Moments for Training of Deep Networks.
- 偽代碼:
PID¶
- 描述:
PID 優化器利用梯度的當前、過去和變化信息來更新網絡參數,極大地減少了 SGD 動量的過衝問題,加快了深度神經網絡的學習過程。
- 來源:
A PID Controller Approach for Stochastic Optimization of Deep Networks.
- 偽代碼:
QHAdam¶
- 描述:
QHM 和 QHAdam 計算成本低,易於理解,且易於實現。它們可以作為多種情況下動量/NAG 和 Adam 的優秀替代品。QHM 以高效和易於訪問的方式恢復了許多其他算法。參數掃描實驗和案例研究表明,QH 算法能夠輕鬆超越其基礎版本。
- 來源:
- 偽代碼:
QHM¶
- 描述:
QHM 和 QHAdam 計算成本低,易於理解,且易於實現。它們可以作為多種情況下動量/NAG 和 Adam 的優秀替代品。QHM 以高效和易於訪問的方式恢復了許多其他算法。參數掃描實驗和案例研究表明,QH 算法能夠輕鬆超越其基礎版本。
- 來源:
- 偽代碼:
Ranger¶
- 描述:
Ranger 能夠訓練其他優化器無法訓練的模型,比如無歸一化的 Resnet50。對於給定的模型,Ranger 通常能夠加速學習並實現更高的驗證準確率,而不損害泛化能力。
- 來源:
- 偽代碼:
RangerQH¶
- 描述:
結合了準雙曲動量和 Hinton 預見。
- 來源:
RangerVA¶
- 描述:
Ranger 深度學習優化器 - 結合了 RAdam + Lookahead + 校準的自適應學習率。
- 來源:
Calibrating the Adaptive Learning Rate to Improve Convergence of ADAM.
SGDP¶
- 描述:
SGDP 解決了尺度不變權重范數過度增長的問題,這一現象可能導致次優性能。使用基於動量的優化器(如 SGD 和 Adam)時,這一問題尤為普遍,它們廣泛用於訓練大多數深度學習模型。包含歸一化層的網絡(如 ResNet)往往表現出大量的尺度不變權重。
- 來源:
AdamP: Slowing Down the Slowdown for Momentum Optimizers on Scale-invariant Weights.
- 偽代碼:
SGDW¶
- 描述:
使用解耦權重衰減的動量 SGD。這一簡單修改明確地將權重衰減因子的最佳選擇與標準 SGD 的學習率設置解耦。
- 來源:
- 偽代碼:
SWATS¶
- 描述:
SWATS 是一種簡單的策略,當滿足觸發條件時,從 Adam 切換到 SGD。該切換設計為自動進行,不引入更多超參數。
- 來源:
Improving Generalization Performance by Switching from Adam to SGD.
- 偽代碼:
Shampoo¶
- 描述:
Shampoo 是一種新的結構感知預處理算法,用於在張量空間上進行隨機優化。Shampoo 維護一組預處理矩陣,每個矩陣在一個維度上操作,同時在剩餘維度上收縮。
- 來源:
- 偽代碼:
Yogi¶
- 描述:
Yogi 是為了實現 SGD 的自適應性而開發的。Yogi 控制有效學習率的增加,從而在收斂的理論保證上實現更好的性能。
- 來源:
- 偽代碼: