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

时间:2024-04-10 21:37:20

目录

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次迭代梯度下降访问了点神经网络优化:指数衰减计算平均值(滑动平均),那么Polyak平均算法的输出是神经网络优化:指数衰减计算平均值(滑动平均)

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

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

 

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

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

 

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

 

2.1.1 滑动平均

变量神经网络优化:指数衰减计算平均值(滑动平均)在t时刻记为神经网络优化:指数衰减计算平均值(滑动平均)神经网络优化:指数衰减计算平均值(滑动平均)为变量v在t时刻的取值,即在不使用滑动平均模型时神经网络优化:指数衰减计算平均值(滑动平均),在使用滑动平均模型后,神经网络优化:指数衰减计算平均值(滑动平均)的更新公式如下:

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

上式中,神经网络优化:指数衰减计算平均值(滑动平均)神经网络优化:指数衰减计算平均值(滑动平均) 相当于没有使用滑动平均。

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

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

2.1.2 带偏差修正的滑动平均

Andrew Ng在Course 2 Improving Deep Neural Networks中讲到,t时刻变量v的滑动平均值大致等于过去神经网络优化:指数衰减计算平均值(滑动平均)个时刻θ值的平均。这个结论在滑动平均起始时相差比较大,所以有了Bias correction,将神经网络优化:指数衰减计算平均值(滑动平均)除以神经网络优化:指数衰减计算平均值(滑动平均)修正对均值的估计。

加入了Bias correction后,神经网络优化:指数衰减计算平均值(滑动平均)更新公式如下:

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

t越大,神经网络优化:指数衰减计算平均值(滑动平均)越接近1,则公式(1)和(2)得到的结果将越来越近。

  当神经网络优化:指数衰减计算平均值(滑动平均)越大时,滑动平均得到的值越和θ的历史值相关。如果神经网络优化:指数衰减计算平均值(滑动平均),则大致等于过去10个θ值的平均;如果神经网络优化:指数衰减计算平均值(滑动平均),则大致等于过去100个θ值的平均。

 

假设起始神经网络优化:指数衰减计算平均值(滑动平均)神经网络优化:指数衰减计算平均值(滑动平均),之后每个时刻,依次对变量v进行赋值,不使用滑动平均和使用滑动平均结果如下:

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

 

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

图1. 三种变量更新方式

 

2.1.3 结论

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

 

3. 滑动平均的好处

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

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

  例如,设神经网络优化:指数衰减计算平均值(滑动平均),一个更直观的理解,在最后的1000次训练过程中,模型早已经训练完成,正处于抖动阶段,而滑动平均相当于将最后的1000次抖动进行了平均,这样得到的权重会更加robust。

 

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

(1) 优化器:RMSProp、AdaDelta、Adam、AmsGrad等使用衰减率神经网络优化:指数衰减计算平均值(滑动平均)神经网络优化:指数衰减计算平均值(滑动平均)来利用历史梯度累积信息进行参数的更新(SGD、RMSProp、Adam中的参数更新方式对应于本文中的1/2/3种更新方式)

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

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