欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Adam优化器算法详解

Adam优化器算法详解

2024/10/25 8:10:48 来源:https://blog.csdn.net/qq_35229591/article/details/143212844  浏览:    关键词:Adam优化器算法详解

文章目录

  • 什么是 Adam 算法?
  • Adam 算法是如何实现的?
    • 1. Momentum(动量)
    • 2. Root Mean Square Propagation (RMSProp)
  • 参考


什么是 Adam 算法?

Adam算法在论文《Adam: A Method for Stochastic Optimization》中被首次提出,它是一种自适应学习率算法,旨在加速深度神经网络的训练过程,并迅速实现收敛。

Adam算法实际上算是SGD算法的自适应版本,SGD方程式表示如下:

θ = θ − α × g t \theta = \theta - \alpha \times g_{t} θ=θα×gt

θ \theta θ:模型参数(Model Parameters)
α \alpha α:学习率(Learning Rate)
g t g_{t} gt:梯度 (Gradient)

这个更新通过沿梯度的负方向调整参数 θ \theta θ,以达到最小化代价函数的目的。学习率 α \alpha α 决定了每次调整的幅度。

在SGD算法中,学习率 α \alpha α 是恒定不变的,因此我们需要从较高的学习率开始,并通过手动逐步调整或采用某种 Learning Schedule 来改变 α \alpha α。如果一开始的学习率过低,收敛速度会非常缓慢,而如果一开始的学习率过高,可能会错过最小值。

Adam 算法通过为每个参数 θ \theta θ 动态调整学习率 α \alpha α,解决了这个问题,使其相比于使用固定全局学习率的 SGD 算法,能够更快地收敛。


Adam 算法是如何实现的?

Adam优化算法通过自适应调整学习率来提高神经网络的学习效率。我们可以用一个园丁照顾植物的例子来理解这个过程。假设园丁需要同时照顾仙人掌和蕨类植物。仙人掌需要较少的水,而蕨类植物需要更多的水。如果园丁用相同的频率给两种植物浇水,仙人掌可能会因为水太多而受损,而蕨类植物可能因为水不足而枯萎。

因此,园丁会观察每种植物的生长情况,并根据需要调整浇水量。他发现仙人掌的土壤湿度较高,于是减少了给它的浇水量。相反,他注意到蕨类植物的土壤较干燥,因此增加了它的浇水量。通过这种方式,园丁能够满足每种植物的不同需求,使它们健康生长。

同样,Adam优化算法通过根据每个参数的梯度历史调整学习率,从而帮助神经网络更有效地学习。这种自适应的调整机制使得模型训练过程更加高效和稳定。

在了解了上述概念后,我们还需要掌握两个在 Adam 之前的优化算法中的重要概念,这些概念共同构成了 Adam 优化算法的基础。

1. Momentum(动量)

Momentum 就像一个球从山坡上滚下来。球在下坡时会不断积累动量。

简单来说,假设你在一个新的城市里开车,想要找到一家餐馆。你不确定路线,于是打开导航应用。导航告诉你往前走,你就开始慢慢开。过了一会儿,导航更新,还是让你继续往前走,这时你就会更有信心,加快速度。因为导航的指引一直一致,所以你的速度会增加。这种现象就叫做 Momentum(动量)。

在梯度下降中也使用了同样的原理。

v t = γ × v t − 1 + η × g t θ = θ − v t v_{t} = \gamma \times v_{t-1} + \eta \times g_{t} \\ \theta = \theta - v_{t} vt=γ×vt1+η×gtθ=θvt

γ \gamma γ:超参数(介于0~1之间)
η \eta η:学习率(用来朝着梯度的反方向调整参数)
v t v_{t} vt:动量向量(依赖于之前的动量向量 v t − 1 v_{t-1} vt1

更多细节可参考:https://medium.com/@vinodhb95/momentum-optimizer-6023aa445e18

2. Root Mean Square Propagation (RMSProp)

Momentum 通过在先前梯度方向相同的情况下有效地增加学习率。而在RMSProp中,我们会根据每个参数的误差曲面的“陡峭程度”来自适应地调整学习率。对于梯度较大的参数,更新步长会变小,而梯度较小的参数则允许更大的步长。因此,动量法注重在一致的方向上加速,而RMSProp则通过调整步长来控制超调。以下是更新的公式:

E [ g t 2 ] = γ × E [ g t − 1 2 ] + ( 1 − γ ) × g t 2 E[g_{t}^2]=\gamma \times E[g_{t-1}^2] + (1-\gamma) \times g_{t}^2 E[gt2]=γ×E[gt12]+(1γ)×gt2

θ = θ − η E [ g t 2 ] + ϵ × g t \theta = \theta - \frac{\eta}{\sqrt{E[g_{t}^2] + \epsilon}} \times g_{t} θ=θE[gt2]+ϵ η×gt

第一个公式是对梯度平方的加权移动平均,这实际上就是梯度的方差。在更新参数 θ \theta θ 的过程中,学习率会除以梯度平方移动平均的平方根。这意味着,当梯度的方差较大时,我们会降低学习率,因为我们希望更加保守。而当梯度的方差较小时,我们会增加学习率,从而更快地接近最优点。

Adam 通过超参数 β 1 \beta_{1} β1 β 2 \beta_{2} β2 将这两种方法结合起来:
m t = β 1 × m t − 1 + ( 1 − β 1 ) × g t v t = β 2 × v t − 1 + ( 1 − β 2 ) × g t 2 θ = θ − ( α × m t v t + ϵ ) m_{t}=\beta_{1} \times m_{t-1} + (1-\beta_{1}) \times g_{t} \\ v_{t} = \beta_{2} \times v_{t-1} + (1-\beta_{2}) \times g_{t}^2 \\ \theta = \theta - (\alpha \times \frac{m_{t}}{\sqrt{v_{t}+\epsilon}}) mt=β1×mt1+(1β1)×gtvt=β2×vt1+(1β2)×gt2θ=θ(α×vt+ϵ mt)

Adam 还引入了一个热启动(warm start)机制。 t t t 值从 1 变化到 n u m s t e p s num_{steps} numsteps。当起始的 m t − z m_{t-z} mtz v t − 1 v_{t-1} vt1 值为零时,它会对算法进行热启动。公式如下:

m t = β 1 × m t − 1 + ( 1 − β 1 ) × g t v t = β 2 × v t − 1 + ( 1 − β 2 ) × g t 2 m t ^ = m t 1 − β 1 t v t ^ = v t 1 − β 2 t θ = θ − ( α × m t ^ v t ^ + ϵ ) m_{t}=\beta_{1} \times m_{t-1} + (1-\beta_{1}) \times g_{t} \\ v_{t} = \beta_{2} \times v_{t-1} + (1-\beta_{2}) \times g_{t}^2 \\ \hat{m_{t}}=\frac{m_{t}}{1-\beta_{1}^t} \\ \hat{v_{t}}=\frac{v_{t}}{1-\beta_{2}^t} \\ \theta = \theta - (\alpha \times \frac{\hat{m_{t}}}{\sqrt{\hat{v_{t}}+\epsilon}}) mt=β1×mt1+(1β1)×gtvt=β2×vt1+(1β2)×gt2mt^=1β1tmtvt^=1β2tvtθ=θ(α×vt^+ϵ mt^)

α \alpha α:优化的步长
β 1 \beta_{1} β1:动量的衰减率。典型值为 0.9,因为我们希望最近的梯度具有较高的权重。
β 2 \beta_{2} β2:梯度平方的衰减率。典型值为 0.999。这是因为 0.999 可以捕捉梯度的长期记忆。我们需要一个稳定的方差估计值。
ϵ \epsilon ϵ:较小的值可防止被零除。它通常在 1e-8 左右。

这些参数共同作用,使 Adam 能够更快地收敛,同时保持数值稳定性。默认值在大多数情况下都适用,但可以根据需要进行调整。


如果觉得这篇文章有用,就给个👍和收藏⭐️吧!也欢迎在评论区分享你的看法!


参考

  • Complete Guide to the Adam Optimization Algorithm by Rahul Agarwal
  • Momentum optimizer !!! by vinodhkumar baskaran
  • Understanding RMSprop — faster neural network learning by Vitaly Bushaev

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com