本文来自于网易云课堂
指数加权平均
指数加权平均在统计学中也称为指数加权移动平均。为了更好的理解这个术语,我们以温度随天数变化为例介绍。
上图是温度随天数变化的散点图,为了计算温度随天数的变化趋势,我们引入公式:
vt=βvt−1+(1−β)θt,θt是指当天的温度,vt是指当天的移动平均温度
v
t
=
β
v
t
−
1
+
(
1
−
β
)
θ
t
,
θ
t
是
指
当
天
的
温
度
,
v
t
是
指
当
天
的
移
动
平
均
温
度
我们可以近似的将
vt
v
t
看做是
11−β
1
1
−
β
天数的平均温度。
- 取
β
β
为0.9。前一天的权重为0.9,当天的权重为0.1,通过计算可知这大约是10天的而平均温度。如红线所示。
- 取
β
β
为0.98。前一天的权重为0.98,当天的权重为0.02,通过计算可知这大约是50天的而平均温度。如绿线所示。由于平均的天数太多,可以看到曲线更平缓,缺点是曲线向右动。为了平均更多的温度值,公式计算的时候适应的更缓慢一些,以至于出现了一定的延迟。
- 取
β
β
为0.5。前一天的权重为0.5,当天的权重为0.5,通过计算可知这大约是2天的而平均温度。如黄线所示。由于仅平均了2天的气温,平均的数据太少,所以曲线有更多的噪声,更有可能出现异常值,但这个曲线能够更快地适应温度变化。
指数加权平均是怎么起作用的呢?
那么对于
v100
v
100
来说,我们可以得到:
v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+....))
v
100
=
0.1
θ
100
+
0.9
(
0.1
θ
99
+
0.9
(
0.1
θ
98
+
.
.
.
.
)
)
v100=0.1θ100+0.1∗0.9θ99+0.1∗0.92θ98+...
v
100
=
0.1
θ
100
+
0.1
∗
0.9
θ
99
+
0.1
∗
0.9
2
θ
98
+
.
.
.
这个过程和卷积有点相似,用图像来表示的话,就是2个图像相乘,如下图所示。
可以看到其过程是原始数据与指数衰减函数相乘求和,故称之为指数加权平均。那么到底需要多少天的平均呢?实际上,
0.910
0.9
10
大约是0.35,大概等于
1e
1
e
。一般来说,如果有
(1−ϵ)1ϵ=1e
(
1
−
ϵ
)
1
ϵ
=
1
e
,换句话说,下降到初始值的大约
13
1
3
的天数就是选定的数。
偏差修正
当
β
β
取0.98的时候,实际上并不是绿色曲线,而是紫色曲线。可以看到,紫色曲线初始值较低。因为
v0=0
v
0
=
0
,
v1=0.02θ1
v
1
=
0.02
θ
1
,
v2=0.0196θ1+0.02θ2
v
2
=
0.0196
θ
1
+
0.02
θ
2
,这时计算的值并不准。
如何修正呢?可以采用
vt1−βt
v
t
1
−
β
t
来代替
vt
v
t
,例如,对于
v2
v
2
来说,
1−βt
1
−
β
t
= 0.039,那么
v2=0.0196θ1+0.02θ20.039
v
2
=
0.0196
θ
1
+
0.02
θ
2
0.039
,就可以修正偏差。而随着天数的增加,
1−βt
1
−
β
t
逐渐接近为1,基本上不再产生影响,此时绿线和紫线就基本重合了。
在机器学习中,在计算加权指数平均的大部分时候,大家不在乎执行修正偏差,因为大部分人宁愿熬过初始时期,拿到具有偏差的估测然后继续算下去。如果你关心初始偏差,在刚开始计算的时候,偏差修正能帮你获得更准确的估测
动量梯度下降法(momentum)
动量梯度下降法下降速度几乎总是优于标准梯度下降法,基本思想就是计算梯度指数加权平均,并利用该梯度更新你的权重。
当我们采用标准梯度下降法的时候,我们可以看到梯度的来回波动减少了梯度下降法的速度,你就无法使用更大的学习率,因为有可能偏离函数的范围。我们希望的是在纵轴上能减少波动而在横轴上能加速接近中心点。那么动量梯度下降法可以这么实现:
那么会表现出这样的样子: