ccc-New Optimizers for Deep Learning-Chung Ming Chien(3)

不会涉及到Optimizers 的数学证明!

Some Notations
  • θ t : \theta_t: θt时间步长t的模型参数
  • ▽ L ( θ t ) o r   g t : \triangledown L(\theta_t)or \ g_t: L(θt)or gt: θ t \theta_t θt处的梯度(loss),用于计算 θ t + 1 \theta_{t+1} θt+1
  • m t + 1 : m_{t+1}: mt+1:从第0步累计到第t步的动量(压缩),用于计算 θ t + 1 \theta_{t+1} θt+1

神经网络架构:On-line
在这里插入图片描述
神经网络架构:Off-line
在这里插入图片描述

Different Optimizers
SGD

在这里插入图片描述
首先计算 θ 0 \theta_{0} θ0的gradient,由于要最小的L,所以是往反方向走,依次重复这个步骤直到t时刻 ▽ L ( θ t ) \triangledown L(\theta_t) L(θt)计算达到设定阈值

SGD with Momentum(SGDM)

在这里插入图片描述
引入动量Momentum后,每次除了计算当前点的梯度外,还要将上一次移动的方向考虑进来,这样可以学习接触的范围更大,不一定会卡在局部最低点,形象图表示如下:
在这里插入图片描述

Adagrad

w t + 1 ← w t − η t σ t g t w^{t+1}\leftarrow w^t-\frac{\eta^t}{\sigma^t}g^t wt+1wtσtηtgt
其中, η t \eta^t ηt一般选择 η t + 1 \frac{\eta}{\sqrt{t+1}} t+1 η, σ t \sigma^t σt表示参数w之前偏导数( g i g^i gi)的均方根,所以可以化简:
w t + 1 ← w t − η t + 1 1 t + 1 ∑ i = 0 t ( g i ) 2 g t = w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}\leftarrow w^t-\frac{\frac{\eta}{\sqrt {t+1}}}{\sqrt{\frac{1}{t+1}\sum_{i=0}^{t}(g^i)^2}}g^t\\ =w^t-\frac{\eta}{\sqrt{\sum_{i=0}^{t}(g^i)^2}}g^t wt+1wtt+11i=0t(gi)2 t+1 ηgt=wti=0t(gi)2 ηgt
这里两位老师对算法的说法有一点点区别,这里说明一下:

  • 李宏毅老师上节课用二次函数的最佳间隔分子应该是二次微分举例,让分子为 ∑ i = 0 t ( g i ) 2 \sqrt{\sum_{i=0}^{t}(g^i)^2} i=0t(gi)2 是在不改变计算量的情况下作为二次微分的估计提高效率
  • 这节课的老师表达的是,当之前的偏导计算小的时候增强增加效率,计算大的时候削弱防止错过
RMSProp

w t + 1 ← w t − η v t g t w^{t+1}\leftarrow w^t-\frac{\eta}{\sqrt v_t}g^t wt+1wtv tηgt
其中, v 1 = g 0 2 v_1=g_0^2 v1=g02, v t = α v t − 1 + ( 1 − α ) ( g t − 1 ) 2 v_t=\alpha v_{t-1}+(1-\alpha)(g_{t-1})^2 vt=αvt1+(1α)(gt1)2。目的是解决Adagrad算法中如果开始求的微分很大导致计算特别缓慢的问题

Adam

在这里插入图片描述
m t 1 − β 1 t \frac {m_t}{1-\beta_1^t} 1β1tmt v t 1 − β 2 t \frac {v_t}{1-\beta_2^t} 1β2tvt的计算是为了de-biasing

Optimizers: Real Application

市面上几乎所有的模型都被ADAM和SGDM占有了,具体的有

  • ADAM:Tacotron、Transformer、BER、Big-Gan、MAML…
  • SGDM:Mask R-CNN、YOLO、ResNe…

实际上,自从2014年Adam问世之后,几乎没有更加优秀的Optimizers出现,市场也可以体现这个问题,接下来就重点关注这两个算法!

Adam vs SGDM

在这里插入图片描述
在这篇文章中通过实验证明SGDM并不逊色Adam,通常认为二者特点如下:

  • Adam:fast training, large generalization gap, unstable
  • SGDM:stable, little generalization gap, better convergence

当然,有人尝试先使用收敛快的Adam再切换成稳定的SGDM,称作SWATS算法,简单示意图如下
在这里插入图片描述
但是作者并没有清楚的解释实际优化多少,但也是不错的尝试

Towards Improving Adam

从它的公式中 β 2 \beta_2 β2=0.999与梯度相乘可以得出, v t v_t vt的记忆可以持续1000步。所以如果训练的某个阶段大多数梯度计算都较小,如果突然出现较大的梯度会导致从移动的不够快。基于这个问题有两个改进的算法:

AMSGrad

θ t = θ t − 1 − η v ^ t + ε m t v ^ t = m a x ( v ^ t − 1 , v t ) \theta_t=\theta_{t-1}-\frac{\eta}{\sqrt {\hat v_t}+\varepsilon}m_t \\ \hat v_t=max(\hat v_{t-1},v_t) θt=θt1v^t +εηmtv^t=max(v^t1,vt)
特点:

  • 减少非信息梯度的影响
  • 学习率单调递减
  • 只解决了large learning rates 的问题
AdaBound

θ t = θ t − 1 − C l i p ( η v ^ t + ε ) m ^ t C l i p ( x ) = C l i p ( x , 0.1 − 0.1 ( 1 − β 2 ) t + 1 , 0.1 + 0.1 ( 1 − β 2 ) t ) \theta_t=\theta_{t-1}-Clip(\frac{\eta}{\sqrt {\hat v_t+\varepsilon}})\hat m_t \\ Clip(x)=Clip(x,0.1-\frac{0.1}{(1-\beta_2)t+1},0.1+\frac{0.1}{(1-\beta_2)t}) θt=θt1Clip(v^t+ε η)m^tClip(x)=Clip(x,0.1(1β2)t+10.1,0.1+(1β2)t0.1)
特点:

  • 工程向,不够优美
  • 抽象难懂
Towards Improving SGDM

对它的改进就是加速它收敛的速率,下面介绍几种改进方式:

LR range test

在这里插入图片描述
简单的说就是调整learning rate

Cyclical LR

在这里插入图片描述
周期性的改变learning rate

SGDR

在这里插入图片描述
同上,但是变法略不同

One-cycle LR

在这里插入图片描述
learning rate的变化只有一个cycle,分三个阶段

warm-up的影响
在这里插入图片描述
实验表明,开始的10步没有warm-up会受到较大的扰乱。形象图表示如下:
在这里插入图片描述

基于warm-up改进的RAdam

在这里插入图片描述
训练初期的时候,切换到SGD + Momentum进行预热

RAdam vs SWATS

在这里插入图片描述

k step forward, 1 step back
Lookahead

在这里插入图片描述
可以使用 Lookahead 加强已有最优化方法的性能,Lookahead 首先使用内部循环中的 SGD 等标准优化器,更新 k 次「Fast weights」,然后以最后一个 Fast weights 的方向更新「slow weights」
在这里插入图片描述

  • Lookahead 向高曲率方向振荡时,fast weights 更新在低曲率方向上快速前进,slow weights 则通过参数插值使振荡平滑
  • fast weights 和 slow weights 的结合改进了高曲率方向上的学习,降低了方差,使得 Lookahead 在实践中实现更快的收敛
  • Lookahead 提升收敛效果。当 fast weights 在极小值周围慢慢探索时,slow weight 更新促使 Lookahead 激进地探索更优的新区域,从而使测试准确率得到提升
Can we look into the future?
Nesterov accelerated gradient (NAG)

计算“超前梯度”更新冲量项

Adam in the future:Nadam&SGDM

在这里插入图片描述

Do you really know your optimizer?
A story of L2 regularization…

在这里插入图片描述
是否需要最后面的正则项?

AdamW & SGDW with momentum

在这里插入图片描述
实验证实去掉后效果更好

Something helps optimization…

在这里插入图片描述在这里插入图片描述在这里插入图片描述

learned &Advices

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值