优化算法 - Adagrad、RMSprop、Adam - 梯度下降 - 自适应学习率

为应对稀疏特征训练时参数难更新问题,提出自适应学习率方法。介绍了Adagrad、RMSprop和Adam三种优化算法,Adagrad可自适应更新参数学习速率,但后期学习速率易变小;RMSprop将分母梯度累加换成均方根解决此问题;Adam结合RMSprop和Momentum,收敛较快,对稀疏数据学习效果好。

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

优化算法 - Adagrad、RMSprop、Adam - 梯度下降 - 自适应学习率

为了应对稀疏特征在训练过程中参数难以更新的问题,各位大牛们提出了自适应学习率的方法。下面就对这些优化算法进行一个学习总结。

  • Adagrad

    Adagrad 的核心是加入了一个正则化因子,使得数据较为稀疏的特征的梯度变大,在数据较为稠密的特征的梯度减小,对于不同的参数自动改变梯度的大小。

    普通 SGD 的更新公式为:

    θ t + 1 i = θ t i − μ ⋅ g t , θ i θ_{t+1}^i = θ_t^i - μ·g_{t,θ^i} θt+1i=θtiμgt,θi

    而在 Adagrad 中加入了正则化因子,更新公式为:

    θ t + 1 i = θ t i − ( μ ∑ j = 1 t g j , θ i 2 + ε ) ⋅ g t , θ i θ_{t+1}^i = θ_t^i - (\frac{μ}{\sqrt{\sum_{j=1}^{t}g_{j,θ^i}^2+ε}})·g_{t,θ^i} θt+1i=θti(j=1tgj,θi2+ε μ)gt,θi

    其中,

    ∑ j = 1 t g j , θ i 2 + ε \sqrt{\sum_{j=1}^{t}g_{j,θ^i}^2+ε} j=1tgj,θi2+ε 表示对 θ i θ^i θi t t t 次迭代的梯度的平方进行求和, ε ε ε 表示一个无穷小量,为了防止分母为 0;

    θ t i θ_t^i θti 代表第 i i i 个参数的第 t t t 次迭代; g t , θ i g_{t,θ^i} gt,θi 代表参数 θ i θ_i θi 的第 t t t 次迭代时的梯度;

    此时学习率变为: μ ∑ j = 1 t g j , θ i 2 + ε \frac{μ}{\sqrt{\sum_{j=1}^{t}g_{j,θ^i}^2+ε}} j=1tgj,θi2+ε μ,我们来看一下它是如何对学习速率进行调整的:

    对于数据稀疏的特征来讲,参数每次迭代更新的梯度始终非常小,几乎为 0,那么之前轮次的梯度的和依然很小,当 μ μ μ 除以一个很小的数时值会得到放大,那么此时他的学习速率就变大了。

    对于数据稠密的特征来讲,参数每次迭代更新的梯度较大,那么之前轮次的梯度的和会较大,当 μ μ μ 除以一个较大的数时值会得到缩小,那么此时他的学习速率就变小了。

    (这种分母求和的形式实现了退火过程)。

    所以他可以对于不同的参数以不同的学习速率进行更新,得到了自适应的效果。

    但是它仍然存在问题,分母为前几次的累加和,那么在经过一定次数的迭代后分母的值会变的较大,不管是对于稀疏还是稠密的特征,它们的学习速率都会变得很小,会使得更新速度停滞,不得不提前结束训练。

    为了解决这个问题,人们提出了 RMSprop 方法。

  • RMSprop

    值得注意的是,RMSprop 与 AdaDelta 是同一种方法。

    对于 Adagrad 的问题,RMSprop 将分母梯度累加的形式替换成了 RMS(Root Mean Square),即均方根。

    均方根的增长速度要比梯度累加要慢,所以可以进行更多次的迭代,不至于早早结束训练。

    RMSprop 的更新公式为:

    θ t + 1 i = θ t i − ( μ E [ g t , θ i 2 ] + ε ) ⋅ g t , θ i θ_{t+1}^i = θ_t^i - (\frac{μ}{\sqrt{E[g_{t,θ^i}^2]}+ε})·g_{t,θ^i} θt+1i=θti(E[gt,θi2] +εμ)gt,θi

    E [ g t , θ i 2 ] + ε {\sqrt{E[g_{t,θ^i}^2]}+ε} E[gt,θi2] +ε 为新的正则化因子。

    其中,

    E [ g t , θ i 2 ] = p ⋅ 1 t − 1 ⋅ ∑ j = 1 t − 1 g t − 1 , θ i 2 + ( 1 − p ) ⋅ g t , θ i 2 = p ⋅ E [ g t − 1 , θ i 2 ] + ( 1 − p ) ⋅ g t , θ i 2 \begin{aligned} E[g_{t,θ^i}^2]=&p·\frac{1}{t-1}·\sum_{j=1}^{t-1}g_{t-1,θ^i}^2+(1-p)·g_{t,θ^i}^2\\ =&p·E[g_{t-1,θ^i}^2]+(1-p)·g_{t,θ^i}^2 \end{aligned} E[gt,θi2]==pt11j=1t1gt1,θi2+(1p)gt,θi2pE[gt1,θi2]+(1p)gt,θi2

    p = 0.5 p=0.5 p=0.5 时, E [ g t , θ i 2 ] E[g_{t,θ^i}^2] E[gt,θi2] 为前 t t t 次梯度的均值。

    E [ g t , θ i 2 ] E[g_{t,θ^i}^2] E[gt,θi2] 这种形式:对变量平方求期望的形式也称为二阶矩(对变量求期望的形式称为一阶矩)。

    由此,分母的正则化因子不会过快的增长,所以又可以继续训练了。

    从经验上来讲,参数可以如此设定: ε = 0.001 , p = 0.9 ε=0.001,p=0.9 ε=0.001p=0.9

  • Adam

    接下来总结一下 Adam 方法,这种方法像是 RMSprop + Momentum。

    式子中 i i i 是为了区别不同的参数 θ i \theta_i θi.

    m t i = β 1 m t − 1 i + ( 1 − β 1 ) g t , θ i m_t^i = \beta_1m_{t-1}^i+(1-\beta_1)g_{t,\theta_i} mti=β1mt1i+(1β1)gt,θi

    v t i = β 2 v t − 1 i + ( 1 − β 2 ) g t , θ i 2 v_t^i = \beta_2v_{t-1}^i+(1-\beta_2)g_{t,\theta_i}^2 vti=β2vt1i+(1β2)gt,θi2

    m t i m_t^i mti 是一阶矩,是对 E [ g t , θ i ] E[g_{t,\theta_i}] E[gt,θi] 的估计,相当于 Momentum;

    v t i v_t^i vti 是二阶矩,是对 E [ g t , θ i 2 ] E[g_{t,\theta_i}^2] E[gt,θi2] 的估计,相当于 RMSprop;

    为了考虑 m t i , v t i m_t^i,v_t^i mtivti 在 0 初始值的情况,Adam 加入了偏差校正:

    m t i ^ = m t i 1 − β 1 t \hat{m_t^i}=\frac{m_t^i}{1-\beta_1^t} mti^=1β1tmti

    v t i ^ = v t i 1 − β 2 t \hat{v_t^i}=\frac{v_t^i}{1-\beta_2^t} vti^=1β2tvti

    使得 m t i ^ , v t i ^ \hat{m_t^i},\hat{v_t^i} mti^vti^ 近似为对 E [ g t , θ i ] , E [ g t , θ i 2 ] E[g_{t,\theta_i}],E[g_{t,\theta_i}^2] E[gt,θi]E[gt,θi2] 的无偏估计。

    注意:这里的 β 1 t , β 2 t \beta_1^t,\beta_2^t β1tβ2t 是指 β 1 , β 2 \beta_1,\beta_2 β1β2 t t t 次方!

    最终 Adam 的更新公式为:

    θ t + 1 i = θ t i − ( μ v t i ^ + ε ) ⋅ m t i ^ θ_{t+1}^i = θ_t^i - (\frac{μ}{\sqrt{\hat{v_t^i}+ε}})·\hat{m_t^i} θt+1i=θti(vti^+ε μ)mti^

    从经验上来讲,参数可以如此设定: β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 0 − 8 β_1=0.9,β_2=0.999,ϵ=10^{−8} β1=0.9β2=0.999ϵ=108


在以上算法对稀疏数据的学习效果较好。

Adam 为最常用的优化算法,收敛较快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值