移动平均法
移动平均法,它的思想是根据时间序列资料,逐项递推,依次计算包含一定项数的平均值,用以反应长期趋势,即用一组最近的实际数据值来预测未来的值的一种方法。
简单移动平均各个元素的权重相等,计算公式如下:
Ft=nAt−1+At−2+⋯At−n
加权移动平均
通过赋予不同时间线上的点以不同的权重,来刻画其影响当前时刻值的影响力。计算公式如下:
Ft=w1At−1+wnAt−2+⋯wnAt−n
指数加权移动平均
演化
- 算数平均(权重相等)
→加权平均(权重不等)
→移动平均(大约取最近的N次数据计算)
- EMA指数加权移动平均:以指数递减的形式加权的平均移动。各数值的加权影响力随时间呈指数式递减,时间越靠近当前,权重影响力越大。相较于传统的平均法来说,优势在于不需要保存过去所有的数值,且计算量显著减少。
其公式为:
Vt=βVt−1+(1−β)θt
其含义为,给定超参数β,当前时间步的变量Vt是上一步时间变量V{t-1}和当前时间步另一变量的线形组合。
使用β=0.9,来展开上式,假设V0=0:
V100=0.9V99+0.1θ100
V99=0.9V98+0.1θ99
⋯
V100=0.1θ99+0.1∗0.9θ99+0.1∗0.9∗0.9θ98+0.1∗0.999θ1
可以看出,对于求
V100的值,可以看作是对
θ1至
θ99的加权平均,这里权值是随着指数项在不断衰减。
我们认为,上述操作实际上是平均了10天的结果,因为到0.1*0.9^10的时候,其值已经非常小了,后续的可以近似为0.
这里,平均的天数可以通过下式计算出来:
n=1−β1
更一般的,我们将指数移动加权平均公式展开得:
Vt=βVt−1+(1−β)θt=(1−β)θt+(1−β)βθt−1+β2Vt−2=(1−β)θt+(1−β)βθt−1+(1−β)β2θt−2+β3Vt−3=(1−β)(θt+βθt−1+β2θt−2+⋯+βkθt−k)+βk+1Vt−(k+1)
从上述公式可以看到,θ的权重以指数形式等比例的在衰减,且越靠近当前时间,权重越大。
我们令
n=1−β1,变换一下形式,有,
(1−n1)n=β1−β1。又因为:
limn→∞(1−n1)n=e−1≈0.3679,
所以,当n趋于无穷时,此时β是趋于1的,因为上面的变换形式,此时有
β1−β1=
e−1
在优化算法中,常取β=0.9,这时
βn=β1−β1≈ 0.36,也就是说,当过了
n=1−β1后,曲线的高度下降到了原来的大概三分之一处,且时间步越往前推,权重越小,值越小,所以每次只考虑最近的
n=1−β1天的数据来计算当前时刻的平均值,这也是移动平均的由来。
我们对指数部分求和可以知道,
1+β+β2+βk=1−β1−βk,当k趋于无穷,
βk为0,这就是严格意义上的指数加权移动平均。
动量法
下面通过指数移动加权平均理解动量法:
动量法更新公式:
vt=βvt−1+ηgtxt=xt−1−vt
现在我们对动量法的速度变量做变形,
vt←βvt−1+(1−β)(1−βηtgt)
由指数加权移动平均的形式可知,速度变量Vt实际上是对序列{
(1−βηtgt)}做了指数移动加权平均。
换句话说,动量法在每个时间步的自变量更新量近似于将最近的时间步
n=1−β1的(学习率乘以梯度)做了指数加权移动平均后再除以(1-β)。所以说,在动量法中,自变量在各个方向上的移动幅度不仅取决于当前梯度,还取决于过去时刻的各个梯度在各个方向上是否一致。
这里放上博客中的一张图:深度学习优化函数详解(4)-- momentum 动量法
上面博客解释动量法特别形象,可以参考。
参考:吴恩达深度学习
动手学深度学习,李沐