指数加权平均(EWA)

平时跑模型只知道直接上Adam Optimizer,但具体原理却不甚理解,于是把吴恩达老师的深度学习课翻出来看,记录一下关于动量优化算法的基础-EMA相关内容。

指数加权平均的概念

平时我们计算平均值,就是简单地将所有数据加起来之后与数据总数求商。对于一部分数据来说,这样的平均值以及可以反应数据的趋势,例如某单位的平均年龄,身高等。
但是对于某些数据来说,就不能简单取这样的平均值来观察数据特征了,吴恩达老师课上举的气温就是一个很好的例子,天气跟所属的季节相关性很大,也就是应当更加关注近期的数据。
指数加权平均值就是这样一种加权均值的计算方法,只不过其权值呈现出指数衰减的趋势。
以课上例子为例,给出计算方法:
指数加权平均(EWA)
v0=0v_0 = 0
vt=βvt1+(1β)θtv_t = \beta v_{t-1} + (1 - \beta)\theta_t

其中,θt\theta_t代表当天气温,β[0,1]\beta \in[0,1]是可调的超参数,稍后就能看到它的作用。vtv_t代表到当天为止的温度均值。图中,蓝色散点代表真实温度,红色曲线由计算的均值构成。可以看到拟合得还是不错的。

按照递推式,计算前几项:
v1=βv0+(1β)θ1v_1 = \beta v_0 +(1-\beta) \theta_1
v2=βv1+(1β)θ2v_2 = \beta v_1 +(1-\beta) \theta_2
v3=βv2+(1β)θ3v_3 = \beta v_2 + (1-\beta) \theta_3

将递推展开,代入前面项:

v1=(1β)θ1v_1 = (1-\beta)\theta_1
v2=β(1β)θ1+(1β)θ2v_2 = \beta(1-\beta)\theta_1 + (1-\beta)\theta_2
v3=β2(1β)θ1+β(1β)θ2+(1β)θ3v_3 = \beta^2(1-\beta)\theta_1 + \beta(1-\beta)\theta_2 + (1-\beta)\theta_3

还可以一直写下去,但这里已经可以看到,每一天的预测值都是到当天为止的加权平均,并且其权值随着天数的增加呈指数衰减。β\beta实际上可以看作是衰减的速度,其值越小则衰减得越快,也就代表着均值越依赖于最近的值而不是早期的值。

指数加权平均(EWA)
上图蓝色曲线为β=0.95\beta=0.95的指数衰减,橙色为β=0.9\beta = 0.9,绿色为β=0.5\beta=0.5,横轴是时间轴,可以看到,在第一百天绿色的曲线几乎只关注到了前十天左右的数据,而在往前的数据权重近乎为零。所以实际上随着序列增长,指数加权平均总是关注一个局部的数据。
吴恩达也给出了一个估计公式。仍以气温为例,某天的气温可以看做最近11β\frac{1}{1-\beta}天的均值。

总的来说,EMA让当前状态综合前面的状态的累积且重点关注最近的数据。是带有动量的优化算法的基础思想。