常见优化器

本文探讨了传统梯度优化的不足,介绍了动量算法、NAG算法、AdaGrad、RMSProp和Adam等自适应优化方法,强调了它们如何通过动态调整学习率和动量来改善收敛性能,特别关注稀疏数据和复杂非凸函数的优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传统梯度优化不足

θ ← θ − λ g \theta\leftarrow\theta-\lambda g θθλg
学习率恰当时,可以收敛到全面最优点(凸函数)或局部最优点(非凸函数)
不足:学习率不易找。由于学习率保持不变,可能卡在鞍点位置。

动量算法

动量算法每下降一步都是有前面下降方向的一个累积和当前点的梯度方向组合而成。
计算速度:
v ← α v − λ g v\leftarrow \alpha v-\lambda g vαvλg
更新参数:
θ ← θ + v \theta\leftarrow\theta+v θθ+v
在这里插入图片描述

NAG算法(Nesterov Accelerated Gradient)

按照历史梯度向前走一小步,按照前面一小步位置的“超前梯度”来做梯度合并:
在这里插入图片描述
先往前走一步,在靠前一点的位置(C点)看到梯度,然后按照那个位置来修正这一步的梯度方向。

这种预更新方法能够防止大幅震荡,不会错过最小值,并会对参数更新更加敏感。
与之前不同的是在超前点更新梯度。(B点vsC点)
动量法更关注梯度下降方法的优化,如果能从方向和学习率同时优化,效果或许更理想。
j
接下来介绍几种自适应优化方法。

AdaGrad算法

通过参数来调整合适的学习率,是能独立地自动调整模型参数的学习率,对稀疏参数进行大幅更新和对频繁参数进行小幅更新。因此,Adagrad方法非常适合处理稀疏数据。
但还有些不足,可能因其累积梯度平方导致学习率过早或过量地减少导致。
核心计算:

  1. 对每个batch更新梯度得到g
  2. 累积平方梯度: r ← r + g ⊙ g r\leftarrow r+g\odot g rr+gg ⊙ \odot 代表逐元运算】
  3. 计算速度: △ θ ← − λ δ + r ⊙ g \triangle \theta\leftarrow-\frac{\lambda}{\delta+\sqrt{r}}\odot g θδ+r λg
  4. 更新参数: θ ← θ + △ θ \theta\leftarrow\theta+\triangle\theta θθ+θ

RMSProp算法

针对AdaGrad的改进。针对梯度平方和累计越来越大的问题,RMSProp指数加权的移动平均代替梯度的平方和。RMSProp为了使用移动平均,还引入了一个新的超参数 ρ \rho ρ,用来控制移动平均的长度范围。

  1. 对每个batch更新梯度得到g
  2. 累积平方梯度: r ← ρ r + ( 1 − ρ ) g ⊙ g r\leftarrow \rho r+(1-\rho) g\odot g rρr+(1ρ)gg
    ⊙ \odot 代表逐元运算】
  3. 计算速度: △ θ ← − λ δ + r ⊙ g \triangle \theta\leftarrow-\frac{\lambda}{\delta+\sqrt{r}}\odot g θδ+r λg
  4. 更新参数: θ ← θ + △ θ \theta\leftarrow\theta+\triangle\theta θθ+θ
    实践中已被证明有用。

Adam算法

Adaptive Moment Estimation本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。
核心:

  1. 更新梯度得到g
  2. 更新有偏一阶矩估计: s ← ρ 1 s + ( 1 − ρ 1 ) g s\leftarrow \rho_1 s+(1-\rho_1)g sρ1s+(1ρ1)g
  3. 更新有偏二阶矩估计: r ← ρ 2 r + ( 1 − ρ 2 ) g ⊙ g r\leftarrow \rho_2 r+(1-\rho_2)g\odot g rρ2r+(1ρ2)gg
  4. 修正一阶矩偏差: s ^ = s 1 − ρ 1 t \hat{s}=\frac{s}{1-\rho_1^t} s^=1ρ1ts (t为时间步)
  5. 修正二阶矩偏差: r ^ = s 1 − ρ 2 t \hat{r}=\frac{s}{1-\rho_2^t} r^=1ρ2ts
  6. 累积平方梯度: r ← ρ r + ( 1 − ρ ) g ⊙ g r\leftarrow \rho r+(1-\rho) g\odot g rρr+(1ρ)gg
  7. 计算参数更新: △ θ ← − λ δ + r ⊙ g \triangle \theta\leftarrow-\frac{\lambda}{\delta+\sqrt{r}}\odot g θδ+r λg
  8. 更新参数: θ ← θ + △ θ \theta\leftarrow\theta+\triangle\theta θθ+θ

RMSprop、Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习率。使用SGD时,必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值