指数加权移动平均

一.概述

指数加权移动平均(Exponential Weighted Moving Average),简称EMA。

  • 算术平均(权重相等)—>加权平均(权重不等)—>移动平均(大约是只取最近的N次数据进行计算)—> 批量归一化(BN)及各种优化算法的基础
  • EMA:是以指数式递减加权的移动平均,各数值的加权影响力随时间呈指数式递减,时间越靠近当前时刻的数据加权影响力越大

以伦敦的气温为例: 

v_{t} = \beta v_{t - 1} +(1-\beta )\theta_{t}

在计算时可视v_{t}大概是\frac{1}{(1 -\beta)}的每日温度

红色线:\beta=0.9    

              这是十天的平均值,比起绿线和黄线更好地平均了温度。

绿色线:\beta=0.98    

             这就是粗略平均了一下,过去50天的温度,这时作图可以得到绿线。这个高\beta值要注意几点,你得到的曲线要平坦一些,原因在于你多平均了几天的温度,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移,因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,适应地更缓慢一些,所以会出现一定延迟,因为当\beta=0.98,相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,所以温度变化时,温度上下起伏,当\beta较大时,指数加权平均值适应地更缓慢一些。

黄色线:\beta=0.5 

              这是平均了两天的温度。由于仅平均了两天的温度,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值,但是这个曲线能够更快适应温度变化。

二.理解EWA

1.到底需要平均多少天的温度

实际上{(0.9)}^{10}大约为0.35,这大约是\frac{1}{e},e是自然算法的基础之一。大体上说,如果有1-\varepsilon,在这个例子中,\varepsilon=0.1,所以$1-\varepsilon=0.9${(1-\varepsilon)}^{(\frac{1}{\varepsilon})}约等于\frac{1}{e},大约是0.34,0.35,换句话说,10天后,曲线的高度下降到\frac{1}{3},相当于在峰值的\frac{1}{e}

又因此当\beta=0.9的时候,我们说仿佛你在计算一个指数加权平均数,只关注了过去10天的温度,因为10天后,权重下降到不到当日权重的三分之一。

相反,如果,那么0.98需要多少次方才能达到这么小的数值?{(0.98)}^{50}大约等于\frac{1}{e},所以前50天这个数值比\frac{1}{e}大,数值会快速衰减,所以本质上这是一个下降幅度很大的函数,你可以看作平均了50天的温度。因为在例子中,要代入等式的左边,\varepsilon=0.02,所以\frac{1}{\varepsilon}为50,我们由此得到公式,我们平均了大约\frac{1}{(1-\beta)}天的温度,这里\varepsilon代替了1-\beta,也就是说根据一些常数,你能大概知道能够平均多少日的温度,不过这只是思考的大致方向,并不是正式的数学证明。

2.实际执行

 将v_{0}v_{1}v_{2}等等写成明确的变量,不过在实际中执行的话,你要做的是,一开始将v初始化为0,然后在第一天使v:= \beta v + (1 - \beta)\theta_{1},然后第二天,更新v值,v: = \beta v + (1 -\beta)\theta_{2},以此类推,有些人会把v加下标,来表示v是用来计算数据的指数加权平均数

再说一次,但是换个说法,v_{\theta} =0,然后每一天,拿到第t天的数据,把v更新为v: = \beta v_{\theta} + (1 -\beta)\theta_{t}

指数加权平均数公式的好处之一在于,它占用极少内存,电脑内存中只占用一行数字而已,然后把最新数据代入公式,不断覆盖就可以了,正因为这个原因,其效率,它基本上只占用一行代码,计算指数加权平均数也只占用单行数字的存储和内存,当然它并不是最好的,也不是最精准的计算平均数的方法。如果你要计算移动窗,你直接算出过去10天的总和,过去50天的总和,除以10和50就好,如此往往会得到更好的估测。但缺点是,如果保存所有最近的温度数据,和过去10天的总和,必须占用更多的内存,执行更加复杂,计算成本也更加高昂。

补充:

指数加权移动平均_第1张图片

 

三.偏差修正 (Bias correction in exponentially weighted averages)

{{v}{t}}=\beta {{v}{t-1}}+(1-\beta ){{\theta }_{t}} 

 如果你执行写在这里的公式,在\beta等于0.98的时候,得到的并不是绿色曲线,而是紫色曲线,它的起点比真实的要低很多,不能很好的估计起始位置的温度,此问题称为:冷启动问题,这是由于v_{\theta} =0造成的

解决方案 

将所有时刻的 EMA 除以1-\beta ^{t}后作为修正后的 EMA。当 t 很小时,这种做法可以在起始阶段的估计更加准确;当 t 很大时,偏差修正几乎没有作用,所以对原来的式子几乎没有影响。注意:我们一般取 β>=0.9,计算 t 时刻偏修正后的EMA时,用的还是 t−1时刻修正前的EMA。

四.EMA的优点及理解

1、EMA 的优点

它占用极少内存:计算指数加权平均数只占用单行数字的存储和内存,然后把最新数据代入公式,不断覆盖就可以了

移动平均线能较好的反应时间序列的变化趋势,权重的大小不同起到的作用也是不同,时间比较久远的变量值的影响力相对较低,时间比较近的变量值的影响力相对较高

2.EMA 在 Momentum 优化算法中应用的理解

假设每次梯度的值都是 g、γ=0.95 ,此时参数更新幅度会加速下降,当n达到150左右,此时达到了速度上限,之后将匀速下降(可参考一中的公式理解)。
假如,在某个时间段内一些参数的梯度方向与之前的不一致时,那么真实的参数更新幅度会变小;相反,若在某个时间段内的参数的梯度方向都一致,那么其真实的参数更新幅度会变大,起到加速收敛的作用。在迭代后期,由于随机噪声问题,经常会在收敛值附近震荡,动量法会起到减速作用,增加稳定性。 

指数加权移动平均_第2张图片

你可能感兴趣的:(deep,learning)