Chapter 3 New Optimizers for Deep Learning

相关知识

参数说明

\theta _{t}:时间步长t的模型参数

\bigtriangledown L(\theta _{t})/g_{t}:在\theta _{t}处的梯度,用于计算\theta _{t+1}

m_{t+1}:时间步长0到时间步长t累积的动量

相关理论

(1)on-line(在线):在一个时间步长中,模型中每来一组数据,就进行修正模型。

 (2)off-line(离线):在每个时间步长中,将所有数据注入到模型之中。

SGD

https://blog.csdn.net/qwertyuiop0208/article/details/126348658

SGD with momentum(SGDM)

\theta ^{0}开始,其动量为v^{0}=0。由“当前的动量v由上一次迭代动量和当前梯度决定,即\theta ^{1}=\theta ^{0}+v^{1}”可得:v^{1}=-\eta \bigtriangledown L(\theta ^{0})v^{2}=-\lambda \eta \bigtriangledown L(\theta ^{0})-\eta \bigtriangledown L(\theta ^{1})

可知:t迭代的动量是前t-1迭代的梯度的加权和。\lambda为衰减权重。SGDM相比于SGD的差别在于,参数更新时,不仅仅减去了当前迭代的梯度,还减去了前t-1迭代的梯度的加权和。由此可见,SGDM中,当前迭代的梯度和之前迭代的累积梯度,都会影响参数更新。

如图中,加入动量后,我们可以看到,参数更新就不会停在当前梯度较小的点了。

 Adagrad

\theta _{t}=\theta _{t-1}-\frac{\eta }{\sqrt{\sum_{i=0}^{t-1}(g_{i})^{2}}}g_{t-1},与SGD的区别是,学习率除以前t-1迭代的梯度的平方和,故称为自适应梯度下降。与SGDM相比,考虑了随着时间的推移调整学习速度。

其刚开始迭代时,学习率较大,可以快速收敛,而后来学习率逐渐减小,可以使得模型更容易找到最优点。

RMSProp

\theta _{t}=\theta _{t-1}-\frac{\eta }{\sqrt{v_{t}}}g_{t-1},v_{1}=g_{0}^{2},v_{t}=\alpha v_{t-1}+(1-\alpha )(g_{t-1})^{2},其中\alpha为衰减因子。

Adagrad相比,加入了迭代衰减,不会因为后面梯度小而改变不了学习率,与当前迭代越近的梯度,对当前影响越大。

Adam

Adam是SGDM和RMSProp的结合,它基本解决了之前提到的梯度下降的一系列问题,比如随机小样本、自适应学习率、容易卡在梯度较小点等问题。

优化

Adam和SGDM的结合

Adam vs SGDM:

Adam——训练快,泛化差异大,不稳定,可能不收敛

SGDM——训练慢,泛化差异小,稳定,更好的收敛

因此,针对如何更好的结合两者的优点,提出“SWATS”:

开始使用Adam进行更快的训练,直到符合一些标准后,选择SGDM使模型收敛。

Adam的改进

 在训练的最后阶段,大多数梯度是小的和无信息的,而一些小批量很少提供大的信息梯度。

 改进:\widehat{v}_{t}=max(\widehat{v}_{t-1},v_{t}),记作AMSGrad。

优点:减小了较小梯度的影响;移除因最大操作而导致的去偏置;单调递减学习速率

SGDM的改进

SGDM收敛过慢,且没有使用自适应学习率的问题。

改进:让学习率在一定范围内变大和变小的方法,记作Cyclical LR。

优点:学习率由LR范围测试决定;通过改变学习速率来避免局部最小值。

总结

RAdamSWATS
灵感训练开始时的梯度失真导致不准确的自适应学习率不收敛、泛化能力差、SGDM训练慢
做法使用预热学习率来减少不准确的自适应学习率的影响结合Adam和SGDM的优点,先使用Adam,再使用SDM
转换从SGDM到Adam的转换从Adam到SGDM的转换
转换的原因\widehat{v}_{t}方差的近似值在训练开始没效为了更好的收敛
转换的点当近似值变得有效人为定义

其他优化器

Lookahead

Lookahead是所有优化器的通用包装器。

参数迭代k步后,再退回来一步。以新的起点重新开始迭代,这样可以增加收敛稳定性,防止跑飞。

上图中的Optim可以是任何优化器。

 

 Nesterov accelerated gradient(NAG)

m_{t} = \lambda m_{t-1}+\eta \bigtriangledown L(\theta _{t-1}-\lambda m_{t-1})

\theta _{t}^{'}=\theta _{t}-\lambda m_{t}=\theta _{t-1}-m_{t}-\lambda m_{t}=\theta _{t-1}-\lambda m_{t}-\lambda m_{t-1}-\eta \bigtriangledown L(\theta _{t-1}-\lambda m_{t-1})=\theta _{t-1}^{'}-\lambda m_{t}-\eta \bigtriangledown L(\theta _{t-1}^{'})

因此m_{t}=\lambda m_{t-1}+\eta \bigtriangledown L(\theta _{t-1}^{'})

NAG同Momentum一样,都是利用历史梯度来更新参数。

加入L2正则

加入weight decay

 

优化器的应用

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值