前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习常用优化器汇总整理

深度学习常用优化器汇总整理

原创
作者头像
大鹅
修改2021-09-12 14:59:46
1.8K0
修改2021-09-12 14:59:46
举报

1. 背景

为机器学习项目选择好的优化器不是一项容易的任务。流行的深度学习库(如 PyTorch 或 TensorFLow)提供了多种优化器选择,它们各有优缺点。并且,选择不合适的优化器可能会对机器学习项目产生很大的负面影响。这使得选择优化器成为构建、测试和部署机器学习模型过程中的关键一环。

2. 常用优化器

文中用 w 代表参数,g 代表梯度,α为每个优化器的全局学习率,t 代表时间步(time step)。

2.1 SGD 随机梯度下降

w_{t+1}=w_t-a·g_t

在随机梯度下降算法(SGD)中,优化器基于小批量估计梯度下降最快的方向,并朝该方向迈出一步。由于步长固定,因此 SGD 可能很快停滞在平稳区(plateaus)或者局部最小值上。

2.2 带动量的SGD momentum

v_{t+1}=\beta·v_t+g_t
w_{t+1}=w_t-a·v_{t+1}

其中β<1。当带有动量时,SGD 会在连续下降的方向上加速(这就是该方法被称为「重球法」的原因)。这种加速有助于模型逃脱平稳区,使其不易陷入局部极小值。

2.3 AdaGrad

G_t=\sum^t_{i=1}g_i·g_i^T
w_{t+1}=w_t-a·diag(G)^{\frac{1}{2}}·g_t

AdaGrad 是首批成功利用自适应学习率的方法之一。AdaGrad 基于平方梯度之和的倒数的平方根来缩放每个参数的学习率。该过程将稀疏梯度方向放大,以允许在这些方向上进行较大调整。结果是在具有稀疏特征的场景中,AdaGrad 能够更快地收敛。

2.4 RMSprop

v_{t+1}=\beta·v_t+(1-\beta)·g_t^2
w_{t+1}=w_t-\frac{a}{\sqrt{v_{t+1}}+e} ·g_t

RMSprop其理念类似于 AdaGrad,但是梯度的重新缩放不太积极:用平方梯度的移动均值替代平方梯度的总和。RMSprop 通常与动量一起使用,可以理解为 Rprop 对小批量设置的适应。

2.5 Adam

m_{t+1}=\beta_1·m_t+(1-\beta_1)·g_t
v_{t+1}=\beta_2·v_t+(1-\beta_2)·g_t^2
m_{t+1}=\frac{m_{t+1}}{1-\beta_1^t}
w_{t+1}=w_t-(\frac{a}{\sqrt{v_{t+1}}+e}·m_{t+1}+\lambda·w_t)

Adam 将 AdaGrad、RMSprop 和动量方法结合到一起。下一步的方向由梯度的移动平均值决定,步长大小由全局步长大小设置上限。此外,类似于 RMSprop,Adam 对梯度的每个维度进行重新缩放。

Adam 和 RMSprop(或 AdaGrad)之间一个主要区别是对瞬时估计 m 和 v 的零偏差进行了矫正。Adam 以少量超参数微调就能获得良好的性能著称。

2.6 AdamW

Loshchilov 和 Hutter 在自适应梯度方法中确定了 L2 正则化和权重下降的不等式,并假设这种不等式限制了 Adam 的性能。然后,他们提出将权重衰减与学习率解耦。实验结果表明 AdamW 比 Adam(利用动量缩小与 SGD 的差距)有更好的泛化性能,并且对于 AdamW 而言,最优超参数的范围更广。

2.7 LARS

LARS 是 SGD 的有动量扩展,可以适应每层的学习率。LARS 最近在研究界引起了关注。这是由于可用数据的稳定增长,机器学习的分布式训练也变得越来越流行。这使得批处理大小开始增长,但又会导致训练变得不稳定。有研究者(Yang et al)认为这些不稳定性源于某些层的梯度标准和权重标准之间的不平衡。因此他们提出了一种优化器,该优化器基于「信任」参数η<1 和该层梯度的反范数来重新调整每层的学习率。

2.8 FTRL

w_{t+1}=\arg \min_w \left ( g_{1:t}\cdot w + \frac{1}{2}\sum_{s=1}^t \sigma_s ||w-w_s||_2^2 + \lambda_1||w||_1 \right )

主要用于CTR预测的在线训练,成千上万维度导致大量稀疏特征。一般希望模型参数更加稀疏,但是简单的L1正则无法真正做到稀疏,一些梯度截断方法(TG)的提出就是为了解决这个问题,在这其中FTRL是兼备精度和稀疏性的在线学习方法。

FTRL的基本思想是将接近于0的梯度直接置零,计算时直接跳过以减少计算量。

这里给出工程上的伪代码,里面的四个参数是可调的。

权声明:本文为CSDN博主「蕉叉熵」的原创文章,遵循CC 4.0 BY-

3. 总结

如果数据是稀疏的,就用自适用方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情况下的效果是相似的。

Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum,

随着梯度变的稀疏,Adam 比 RMSprop 效果会好。

整体来讲,Adam 是最好的选择

很多论文里都会用 SGD,没有 momentum 等。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点

如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

Ref

https://www.cnblogs.com/guoyaohua/p/8542554.html

https://mp.weixin.qq.com/s/WjwkYzZpBGGKGfmGvwNi4Q

https://cloud.tencent.com/developer/article/1118673

https://zhuanlan.zhihu.com/p/58236906

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 常用优化器
    • 2.1 SGD 随机梯度下降
      • 2.2 带动量的SGD momentum
        • 2.3 AdaGrad
          • 2.4 RMSprop
            • 2.5 Adam
              • 2.6 AdamW
                • 2.7 LARS
                  • 2.8 FTRL
                    • https://zhuanlan.zhihu.com/p/58236906
                • 3. 总结
                • Ref
                相关产品与服务
                腾讯云 TI 平台
                腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档