深度学习流程(五)之优化器

本文介绍了几种常用的深度学习优化算法,包括SGD、Batch GD和mini-batch,以及它们的问题。接着,讨论了Momentum和Nesterov Momentum如何改善SGD的稳定性与速度。然后,提到了AdaGrad和RMSProp,这两种自适应学习率的算法解决了学习率调整的难题。最后,重点讲述了Adam算法,它结合了RMSProp和Momentum的优点,实现自适应学习率并有效避免了早停问题。这些优化方法在训练神经网络时起着关键作用,帮助模型更快地收敛并找到更好的解决方案。

一、常见的三种梯度下降方法

SGD,Batch GD,mini-batch

SGD 训练速度快,收敛慢

Batch GD 训练慢,收敛快

这三种优化方法存在一些问题:

  1. 选择合适的学习率较为困难
  2. 每个参数的学习率是一样的,没有加以区分
  3. 训练中容易困在鞍点,在这种区域所有的优化方向都是0,没有办法继续优化

二、 Momentum

Momentum 是与 SGD 常为结合的一种方法,其不仅会使用当前的梯度,还会积累以前的梯度以确定走向。vt=η∗vt−1−α∗∇θJ(θ)v_t = \eta * v_{t-1}-\alpha * \nabla_\theta J(\theta)vt=ηvt1αθJ(θ) θ=θ−vt\theta = \theta-v_tθ=θvt 可以看到,这一方法观察了历史梯度 vt−1v_{t-1}vt1 ,如果一致,则当前梯度就会增大,若不一致,当前梯度就会减小。

特点:

  1. 由于不完全依赖当前时刻的梯度方向,训练会比较稳定
  2. 学习更快
  3. 有一定摆脱局部最优的能力(梯度变大直接冲过局部最优值)

三、Nesterov Momentum

整体上看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。

梯度下降法师对每次所处位置上的坡度最大的方向;而牛顿法考虑的不仅是坡度大而且希望走完这一步之后,坡度变得更大(因为目光看的更远)。或者说,牛顿法是用一个二次曲面拟合当前所处位置的局部曲面,而梯度下降则是用平面来拟合。

总的来说,牛顿法看的更为长远,所以少走弯路,SGD 只考虑当前局部的最优,没有全局思想。
vt=γ∗vt−1+α∗∇θJ(θ−γ∗vt−1)v_t =\gamma *v_{t-1} + \alpha * \nabla_\theta J(\theta-\gamma * v_{t-1})vt=γvt1+αθJ(θγvt1) θ=θ−vt\theta =\theta -v_tθ=θvt

四、AdaGrad

对于更新频率较大的参数使用较小的学习率更新,否则用较大的学习率进行更新

gt,ig_{t,i}gt,i 为第 ttt 轮第 iii 个参数的梯度,即 gt,i=∇θJ(θi)g_{t,i}=\nabla_\theta J(\theta_i)gt,i=θJ(θi) et,i=et−1,i+gt,i2e_{t,i} = e_{t-1,i}+g_{t,i}^2et,i=et1,i+gt,i2 θt+1,i=θt,i−αet,i+δ⋅gt,i\theta_{t+1,i}=\theta_{t,i}-\frac{\alpha}{\sqrt{e_{t,i}}+\delta}\cdot g_{t,i}θt+1,i=θt,iet,i+δαgt,i 其中,αet,i+δ\frac{\alpha}{\sqrt{e_{t,i}}+\delta}et,i+δα 为自适应的学习率,由于 et,ie_{t,i}et,i 的存在,梯度更新的越多,学习率就越小,但是其可能出现提前停止。

五、RMSProp

AdaGrad 在理论上有些较好的性质,但是在实践中表现的并不是很好,其根本原因就是随着训练周期的增长,学习率降低的很快,容易导致提前停止。RMSProp算法就在AdaGrad基础上引入了衰减因子,RMSProp在梯度累积的时候,会对“过去”与“现在”做一个平衡,通过超参数进行调节衰减量。
gt,i=∇θJ(θi)g_{t,i}=\nabla_\theta J(\theta_i)gt,i=θJ(θi) et,i=β∗et−1,i+(1−β)∗gt,i2e_{t,i} = \beta *e_{t-1,i} + (1-\beta)* g_{t,i}^2et,i=βet1,i+(1β)gt,i2 θt+1,i=θt,i−αet,i+δ⋅gt,i\theta_{t+1,i}=\theta_{t,i}-\frac{\alpha}{\sqrt{e_{t,i}}+\delta}\cdot g_{t,i}θt+1,i=θt,iet,i+δαgt,i
其中,β\betaβ 常取作 0.1。

六、Adam

自适应学习率,每次迭代学习率都有个确定的范围。
mt=β1mt−1+(1−β1)gtm_t=\beta_1 m_{t-1}+(1-\beta_1)g_tmt=β1mt1+(1β1)gt vt=β2vt−1+(1−β2)gt2v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2vt=β2vt1+(1β2)gt2 mt^=mt1−β1t\hat{m_t}=\frac{m_t}{1-\beta_1^t}mt^=1β1tmt vt^=vt1−β2t\hat{v_t}=\frac{v_t}{1-\beta_2^t}vt^=1β2tvt θt−1=θt−αvt^+δ⋅mt^\theta_{t-1}=\theta_t-\frac{\alpha}{\sqrt{\hat{v_t}}+\delta}\cdot \hat{m_t}θt1=θtvt^+δαmt^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值