深度学习优化器中的变形金刚:Ranger21

简介: 深度学习优化器中的变形金刚: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) 是最常用的优化器之一,许多发表论文提供了各种增量以及对改算法的创新改进,因为这些单独的改进 通常是可组合的,这也是作者选其作为核心基础的原因。


40.png


AdamW通常会给模型带来更低的训练loss和测试误差。除此之外,在固定相同的训练loss的情况下,AdamW也有更好的泛化性能。具体对比解释可以参考该笔记;https://zhuanlan.zhihu.com/p/329877052


2.2 Adaptive Gradient Clipping:自适应梯度裁剪


由于过多梯度的反向传播,小批量零星的“高损失”可能会破坏随机梯度下降的稳定性。 这是较小批量和较高学习率的常见问题。 为了解决这个问题,可以使用梯度裁剪,确保梯度保持在给定阈值以下:


41.png


理论研究表明,梯度裁剪有助于优化器平缓过渡损失的非平滑区域并加速收敛。 但是,原始梯度裁剪会影响训练的稳定性,并且找到一个好的阈值需要根据模型深度、批量大小和学习率进行精心调整。


Ranger21使用自适应梯度裁剪来克服这些缺点。 在自适应梯度裁剪中,裁剪阈值会动态更新,保证梯度范数与参数范数的单位比率成正比。公式如下:


42.png


是一个常数,默认值为,避免冻结零的初始化参数,默认情况下为 10−2 并且 r 表示我们正在处理层的某个维度参数而不是整个层的参数。


2.3 Gradient Centralization


高性能网络优化算法梯度中心化(GC, gradient centralization),能够加速网络训练,提高泛化能力以及兼容模型fine-tune。


43.png


梯度中心化对损失函数施加了约束,并充当正则化器,据作者说,该算法使训练更加平滑。 在实验中,当在包含全连接层和/或卷积层的网络上使用它时,我们观察到改进的泛化、更平滑的训练曲线和更快的收敛。


2.4 Positive-Negative Momentum:正负动量


Momentum 用于现代深度学习优化器,既可以消除训练噪声,又可以降低优化器卡在损失图的鞍点和梯度消失部分的风险。 Positive-Negative Momentum 算法如下:


44.png


正负动量的关键思想是保留两组一阶矩估计,一组用于奇数迭代,一组用于偶数迭代。 优化过程中应用的矩是两组的平均值,一个为当前动量估计分配正权重,一个为前一个动量估计分配负步长。根据 原论文,这模拟了将参数相关的各向异性噪声添加到梯度中,有助于逃避鞍点并将优化器推向更平坦的最小值,理论上可以产生更好的泛化。

在本篇论文的测试中,作者能够通过实验验证正负动量确实可以提高各种数据集的性能,并以互补的方式与 Ranger21 中使用的其他算法进行集成。


2.5 Norm loss:权重软正则化


在 AdamW 风格的优化器中,权重衰减按照下面公式计算(其中 η 是学习率,λ 是缩放权重衰减的参数,θ 是我们正在优化的参数)并在更新步骤期间从参数中减去


45.png


Norm Loss来自今ICPR 2020论文Preprint: Norm Loss: An efficient yet effective regularization method for deep neural networks,核心公式如下。给定权重矩阵,它考虑了权重矩阵的欧几里德范数,使得权重矩阵被推向一个单位范数,这与传统的权重衰减不同,传统的权重衰减一直将权重推向零。




2.6 Stable Weight Decay


AdamW 风格的权重衰减使用优化器的学习率来对衰减进行加权。然而,实际步长不仅是学习率的函数,也是 的函数,它代表了梯度大小。 因此,实际步长在迭代过程中发生变化,并且当 v^︁t 下降到零时,为训练的第一次迭代校准的权重衰减对于以后的迭代来说太大了。


为了解决这个问题,ICLR 2021 公开论文:Stable Weight Decay Regularization提出了 Stable Weight Decay。


47.png


在论文的测试中,作者发现稳定权重衰减为我们在视觉任务上提供了显着的泛化改进,即稳定权重衰减允许自适应优化器在视觉任务上匹配并超过 SGD 效果。此外,论文观察到它可以与 Norm Loss 无缝集成,并且这两种方法的好处是相加的,因为它们从不同的角度处理权重正则化。


48.png


2.6 Linear learning rate warm-up


最初的 Ranger 优化器基于 Rectified Adam 优化器 ,该优化器试图修复 Adam 在第一次迭代中由于大量更新而遇到的一些不稳定问题。 本篇论文引入了一个更简单的替代方案,仅依赖于学习率的预热,β2是第二动量参数,由于此规划器可以产生对于较短的训练迭代次数来说太大的预热,我们另外将其重置为第一次热身迭代


49.png


在论文测试中,我们发现这种预热策略与 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)。


50.png


3 Ranger21


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


51.png


由于集成了各种算法于一体,官方实现代码篇幅还是很长的,大家可以直接打开链接查看;


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 通常能够在不影响泛化的情况下加速学习并实现更高的验证精度


52.png


5 参考资料


相关文章
|
17天前
|
机器学习/深度学习 算法 开发者
探索深度学习中的优化器选择对模型性能的影响
在深度学习领域,优化器的选择对于模型训练的效果具有决定性作用。本文通过对比分析不同优化器的工作原理及其在实际应用中的表现,探讨了如何根据具体任务选择合适的优化器以提高模型性能。文章首先概述了几种常见的优化算法,包括梯度下降法、随机梯度下降法(SGD)、动量法、AdaGrad、RMSProp和Adam等;然后,通过实验验证了这些优化器在不同数据集上训练神经网络时的效率与准确性差异;最后,提出了一些基于经验的规则帮助开发者更好地做出选择。
|
4月前
|
存储 机器学习/深度学习 算法
Adam-mini:内存占用减半,性能更优的深度学习优化器
论文提出一种新的优化器Adam-mini,在不牺牲性能的情况下减少Adam优化器的内存占用。
158 10
Adam-mini:内存占用减半,性能更优的深度学习优化器
|
7月前
|
机器学习/深度学习 存储 自然语言处理
深度探索自适应学习率调整:从传统方法到深度学习优化器
【5月更文挑战第15天】 在深度学习的复杂网络结构与海量数据中,学习率作为模型训练的关键超参数,其调整策略直接影响着模型的收敛速度与最终性能。传统的学习率调整方法,如固定学习率、学习率衰减等,虽然简单易行,但在多样化的任务面前往往显得力不从心。近年来,随着自适应学习率技术的兴起,一系列创新的优化器如Adam、RMSProp和Adagrad等应运而生,它们通过引入自适应机制动态调整学习率,显著改善了模型的训练效率与泛化能力。本文将深入剖析传统学习率调整方法的原理与局限性,并详细介绍当前主流的自适应学习率优化器,最后探讨未来可能的发展方向。
|
3天前
|
机器学习/深度学习 数据采集 传感器
基于深度学习的图像识别技术在自动驾驶中的应用研究####
本文旨在探讨深度学习技术,特别是卷积神经网络(CNN)在自动驾驶车辆图像识别领域的应用与进展。通过分析当前自动驾驶技术面临的挑战,详细介绍了深度学习模型如何提升环境感知能力,重点阐述了数据预处理、网络架构设计、训练策略及优化方法,并展望了未来发展趋势。 ####
25 6
|
6天前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
26 8
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
10天前
|
机器学习/深度学习 数据采集 测试技术
深度学习在图像识别中的应用
本篇文章将探讨深度学习在图像识别中的应用。我们将介绍深度学习的基本原理,以及如何使用深度学习进行图像识别。我们将通过一个简单的代码示例来演示如何使用深度学习进行图像识别。这篇文章的目的是帮助读者理解深度学习在图像识别中的作用,并学习如何使用深度学习进行图像识别。