神经网络优化:指数衰减计算平均值(滑动平均)

目录

1. 神经网络优化中的滑动平均

2. 滑动平均详解---用滑动平均估计局部均值

2.1 三种参数更新方式的比较

2.1.1 滑动平均

2.1.2 带偏差修正的滑动平均

2.1.3 结论

3. 滑动平均的好处

4. 滑动平均在神经网络中的应用


转自:https://blog.csdn.net/qq_18888869/article/details/83009504

 

1. 神经网络优化中的滑动平均

Polyak平均会平均优化算法在参数空间访问中的几个点。如果t次迭代梯度下降访问了点(\theta ^{(1)},...,\theta^{(t)}),那么Polyak平均算法的输出是\widehat{\theta}^{(t)}=\frac{1}{t}\sum_{i}\theta ^{(i)}

当应用Polyak平均于非凸问题时,通常会使用指数衰减计算平均值:

                      \widehat{\theta }^{(t)} = \alpha \widehat{\theta}^{(t-1)}+(1-\alpha ) \theta ^{(t)}               

 

2. 滑动平均详解---用滑动平均估计局部均值

  滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关(可以看成是变量过去一段时间取值的均值)。

 

2.1 三种参数更新方式的比较

 

2.1.1 滑动平均

变量v在t时刻记为v_{t}\theta _{t}为变量v在t时刻的取值,即在不使用滑动平均模型时v_{t}=\theta _{t},在使用滑动平均模型后,v_{t}的更新公式如下:

 v^{(t)} = \alpha {v}^{(t-1)}+(1-\alpha ) \theta ^{(t)}         (1)

上式中,\alpha \in [0,1)\alpha =0 相当于没有使用滑动平均。

例如:\alpha 取0.9

2.1.2 带偏差修正的滑动平均

Andrew Ng在Course 2 Improving Deep Neural Networks中讲到,t时刻变量v的滑动平均值大致等于过去\frac{1}{1-\alpha }个时刻θ值的平均。这个结论在滑动平均起始时相差比较大,所以有了Bias correction,将v^{(t)}除以1-\alpha^{t}修正对均值的估计。

加入了Bias correction后,v^{(t)}更新公式如下:

                                                                v^{(t)} =\frac{ \alpha {v}^{(t-1)}+(1-\alpha ) \theta ^{(t)}}{1-\alpha ^{t}}        (2)

t越大,1-\alpha ^{t}越接近1,则公式(1)和(2)得到的结果将越来越近。

  当\alpha越大时,滑动平均得到的值越和θ的历史值相关。如果\alpha =0.9,则大致等于过去10个θ值的平均;如果\alpha =0.99,则大致等于过去100个θ值的平均。

 

假设起始v^{0}=0\alpha=0.9,之后每个时刻,依次对变量v进行赋值,不使用滑动平均和使用滑动平均结果如下:

 

图1. 三种变量更新方式

 

2.1.3 结论

相比对变量直接赋值而言,滑动平均得到的值在图像上更加平缓光滑,抖动性更小,不会因为某次的异常取值而使得滑动平均值波动很大

 

3. 滑动平均的好处

(1) 占内存少,不需要保存过去10个或者100个历史θ值,就能够估计其均值。(当然,滑动平均不如将历史值全保存下来计算均值准确,但后者占用更多内存和计算成本更高)

(2) 对于 mini-batch gradient decent,可以尝试滑动平均,毕竟 mini-batch gradient decent 对参数的更新也存在抖动。

  例如,设decay=0.999,一个更直观的理解,在最后的1000次训练过程中,模型早已经训练完成,正处于抖动阶段,而滑动平均相当于将最后的1000次抖动进行了平均,这样得到的权重会更加robust。

 

4. 滑动平均在神经网络中的应用

(1) 优化器:RMSProp、AdaDelta、Adam、AmsGrad等使用衰减率\gamma1-\gamma来利用历史梯度累积信息进行参数的更新(SGD、RMSProp、Adam中的参数更新方式对应于本文中的1/2/3种更新方式)

(2) BN:训练阶段的BN每次计算一个batch的均值作为进行这个batch的归一化

              测试阶段使用全体样本的均值,但是无法计算出全体样本的均值,所以在训练阶段用滑动平均计算batch的累积均值来作为全体均值的估计,测试阶段直接使用训练阶段滑动平均得到的结果。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值