一.概述
指数加权移动平均(Exponential Weighted Moving Average),简称EMA。
- 算术平均(权重相等)—>加权平均(权重不等)—>移动平均(大约是只取最近的N次数据进行计算)—> 批量归一化(BN)及各种优化算法的基础
- EMA:是以指数式递减加权的移动平均,各数值的加权影响力随时间呈指数式递减,时间越靠近当前时刻的数据加权影响力越大
以伦敦的气温为例:
在计算时可视大概是的每日温度
红色线:
这是十天的平均值,比起绿线和黄线更好地平均了温度。
绿色线:
这就是粗略平均了一下,过去50天的温度,这时作图可以得到绿线。这个高值要注意几点,你得到的曲线要平坦一些,原因在于你多平均了几天的温度,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移,因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,适应地更缓慢一些,所以会出现一定延迟,因为当,相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,所以温度变化时,温度上下起伏,当较大时,指数加权平均值适应地更缓慢一些。
黄色线:
这是平均了两天的温度。由于仅平均了两天的温度,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值,但是这个曲线能够更快适应温度变化。
二.理解EWA
1.到底需要平均多少天的温度
实际上大约为0.35,这大约是,e是自然算法的基础之一。大体上说,如果有,在这个例子中,,所以,约等于,大约是0.34,0.35,换句话说,10天后,曲线的高度下降到,相当于在峰值的。
又因此当的时候,我们说仿佛你在计算一个指数加权平均数,只关注了过去10天的温度,因为10天后,权重下降到不到当日权重的三分之一。
相反,如果,那么0.98需要多少次方才能达到这么小的数值?大约等于,所以前50天这个数值比大,数值会快速衰减,所以本质上这是一个下降幅度很大的函数,你可以看作平均了50天的温度。因为在例子中,要代入等式的左边,,所以为50,我们由此得到公式,我们平均了大约天的温度,这里代替了,也就是说根据一些常数,你能大概知道能够平均多少日的温度,不过这只是思考的大致方向,并不是正式的数学证明。
2.实际执行
将,,等等写成明确的变量,不过在实际中执行的话,你要做的是,一开始将初始化为0,然后在第一天使,然后第二天,更新值,,以此类推,有些人会把加下标,来表示是用来计算数据的指数加权平均数
再说一次,但是换个说法,,然后每一天,拿到第t天的数据,把更新为。
指数加权平均数公式的好处之一在于,它占用极少内存,电脑内存中只占用一行数字而已,然后把最新数据代入公式,不断覆盖就可以了,正因为这个原因,其效率,它基本上只占用一行代码,计算指数加权平均数也只占用单行数字的存储和内存,当然它并不是最好的,也不是最精准的计算平均数的方法。如果你要计算移动窗,你直接算出过去10天的总和,过去50天的总和,除以10和50就好,如此往往会得到更好的估测。但缺点是,如果保存所有最近的温度数据,和过去10天的总和,必须占用更多的内存,执行更加复杂,计算成本也更加高昂。
补充:
三.偏差修正 (Bias correction in exponentially weighted averages)
如果你执行写在这里的公式,在等于0.98的时候,得到的并不是绿色曲线,而是紫色曲线,它的起点比真实的要低很多,不能很好的估计起始位置的温度,此问题称为:冷启动问题,这是由于造成的
解决方案
将所有时刻的 EMA 除以后作为修正后的 EMA。当 t 很小时,这种做法可以在起始阶段的估计更加准确;当 t 很大时,偏差修正几乎没有作用,所以对原来的式子几乎没有影响。注意:我们一般取 β>=0.9,计算 t 时刻偏修正后的EMA时,用的还是 t−1时刻修正前的EMA。
四.EMA的优点及理解
1、EMA 的优点
它占用极少内存
:计算指数加权平均数只占用单行数字的存储和内存,然后把最新数据代入公式,不断覆盖就可以了
。
移动平均线能较好的反应时间序列的变化趋势
,权重的大小不同起到的作用也是不同,时间比较久远的变量值的影响力相对较低,时间比较近的变量值的影响力相对较高
。
2.EMA 在 Momentum 优化算法中应用的理解
假设每次梯度的值都是 g、γ=0.95 ,此时参数更新幅度会加速下降,当n达到150左右,此时达到了速度上限,之后将匀速下降(可参考一中的公式理解)。
假如,在某个时间段内一些参数的梯度方向与之前的不一致时,那么真实的参数更新幅度会变小;相反,若在某个时间段内的参数的梯度方向都一致,那么其真实的参数更新幅度会变大,起到加速收敛的作用。在迭代后期,由于随机噪声问题,经常会在收敛值附近震荡,动量法会起到减速作用,增加稳定性。