优化器集合¶
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 控制有效学习率的增加,从而在收敛的理论保证上实现更好的性能。
- 来源:
- 伪代码: