指数加权平均的公式很简单,下面几行就可以表示:
v0=0;
v1=βv0+(1−β)θ1;
v2=βv1+(1−β)θ2;
……;
vn=βv(n−1)+(1−β)θn;
其中vn是我们计算得到的估计值,而θn是我们样本数据中的实际值,β是一个加权参数,介于0、1之间,在实际使用时常取0.9
所谓指数加权平均用于对一串数据取平均值,而这个平均值并不是简单的n+1v0+v1+……+vn,而是对每个vn加上不同的权重,形如指数形式,再取均值,就是所谓的指数加权平均。
举个例子,当β=0.9时:
v0=0;
v1=0.9v0+0.1θ1;
v2=0.9v1+0.1θ2;
……;
vn=0.9v(n−1)+0.1θn;
这时可能会出现下面的疑惑:
明明是要求平均,为什么实际值θn只占0.1,而另一个不知道什么数却占了0.9,难道估算估计值是当前时刻的实际值θn不应该占比较大吗?
其实并不能这样理解,只要将上面的式子逐个带入下面的式子,注意的是,所有的θn都是已知项,可以得到:
v0=0;
v1=0.1θ1;
v2=0.9∗0.1θ1+0.1θ2;
v3=(0.9)2∗0.1θ1+0.9∗0.1θ2+0.1θ3;
v4=(0.9)3∗0.1θ1+(0.9)2∗0.1θ2+0.9∗0.1θ3+0.1θ4;
……;
这样可以很明显的看出规律来,其实:
vn=(0.9)n−1∗0.1θ1+(0.9)n−2∗0.1θ2+……+0.1θn;
所以我们计算出来的vn实际上是包含了以前所有的结果的。对于v20,各参数的数值如下图:
就是说v20=0.0122θ1+0.0135θ2+……+0.09θ19+0.1θ20图标上的各数值就是加在各个θn上的权重,可以看到加在θ20上的权重最大,也就是计算出来的估计值v20中实际值θ20的占比最大。
那么如果说θ20是对20个数据的估计,那么θn就是对n个数据的估计吗?
是可以这么认为的,但是其实当n很大时,前面的θ1、θ2等起的作用就很小了,就对v20来说,θ20上的权重几乎是θ1上的9倍,这是我们如果忽略θ1其实对结果也没有太大的影响,所以我们进一步规定,如果权重低于θn的e1,那么我们就认为该数值在平均中起很小的作用。这样,上图我们可以将v20看做是红线以上的10个数据的指数加权平均,就是说β=0.9时,指数加权平均考虑了估计点附近的10个数据。(这个结论对于β=0.9是恒成立的,因为解(0.9)n−1∗0.1>0.1∗e1可得n>10.49≈10)
那么对于β=0.98可以看做是多少个数据的平均呢?根据公式1−β1=1−0.981=50可以很明显的看出,此时是前面50个数据的平均。也就是说β越大,当前的实际值在后面的估计值中占比越少,同样,指数加权平均也可以让数据保持相对的稳定。
搞懂了指数加权平均,后面的Adam、Momentum算法也就更加容易理解了。
相关文章:
-
2021-05-08
-
2021-12-27
-
2022-01-17
-
2021-12-13
-
2022-12-23
-
2021-12-19
-
2021-11-20
-
2021-05-22