【深度学习基础】系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.指数加权平均
指数加权平均在统计中也叫做指数加权移动平均。通过它可以计算局部的平均值,来描述数值的变化趋势。
接下来通过一个例子来了解指数加权平均。
假设我们现在有一年中每一天的温度数据,将其绘制为散点图如下:
构造等式如下:
- V0=0
- V1=0.9V0+0.1θ1
- V2=0.9V1+0.1θ2
- V3=0.9V2+0.1θ3
- ……
- Vt=0.9Vt−1+0.1θt
其中,θt表示第t天的温度。
然后依旧以天数作为横轴,求得的指数加权平均Vt作为纵坐标,得到如下红线:
我们将上述公式写的更加泛化一点:
Vt=βVt−1+(1−β)θt在之前的例子中,β=0.9。其中Vt可近似理解为最近(11−β)天的平均温度。
现在我们来考虑下β过大和过小时的情况。
👉如果有β=0.98,会得到下图的绿线:
因为β=0.98相当于可近似为近(11−0.98=)50天的平均温度,所以绿线要比红线更为平滑。
此外,因为当天温度的权值只有0.02,所以在温度变化时,绿线适应数据也更缓慢一些,会有一定延迟,因此绿线相比红线出现了右移的情况。
👉如果有β=0.5,会得到下图的黄线:
由于仅平均了两天的温度,所以得到的曲线有更多的噪声,更有可能出现异常值。但是这个曲线能够更快适应温度变化。
综上所述,选择一个不大不小的、合适的β能够更好的计算平均。
2.指数加权平均的作用
假设我们现在计算近100天温度的指数加权平均(β=0.9):
- V100=0.9V99+0.1θ100
- V99=0.9V98+0.1θ99
- V98=0.9V97+0.1θ98
- V97=0.9V96+0.1θ97
- ……
带入可求得:
V100=0.1θ100+0.9V99=0.1θ100+0.1∗0.9θ99+0.92V98=0.1θ100+0.1∗0.9θ99+0.1∗0.92θ98+0.93V97=0.1θ100+0.1∗0.9θ99+0.1∗0.92θ98+......+0.1∗0.999θ1我们可以看到V100是对过去一百天温度的指数加权平均。其权值呈指数衰减:
并且这些权值加起来等于1或接近于1。
但是距离越远的天数权值越小,计算时意义不大,因此通常省略权值小于最大权值e的项。
本例中最大权值为0.1,则:
0.1∗1e≈0.1∗0.910即省略θ90之前的天数,所以对应于第1部分中提到的,V100通常被近似为近(11−0.9=)10天的加权平均温度。
同理,当β=0.98时,有0.9850≈1e,此时,V100被近似为近50天内的气温加权平均值。
根据极限的公式:limx→0(1−x)1x=1e,当x=1−β时,有β11−β≈1e。因此我们就可以总结出指数加权平均可近似为近11−β天的平均温度。
2.1.指数加权平均的优势
相比使用算术平均计算局部平均值,指数加权平均不需要太多存储空间,只需在计算机内存中保留一行数字,并且基本一行代码即可实现,更为高效。虽然算数平均估计的均值更为准确,例如可以直接算出近十天或五十天的气温均值,但这样做的缺点是要保存所有的气温值及其气温值总和,需要更多的内存,更难实现,花费也更高。
因此,指数加权平均在机器学习中被广泛应用。
3.偏差修正
偏差修正会使得指数加权平均估计的更为准确。
在第1部分β=0.98时的例子中,绿线就是做完偏差修正之后的效果。如果没有偏差修正,得到的应该是下图中的紫线:
能注意到紫线的起点较低,但是后续趋势基本和绿线重合。
那为什么会出现这种情况呢?我们来分析一下。
假设第一天的温度是40华氏度,第二天的温度是55华氏度。假设β=0.98,则有:
- V0=0
- V1=0.98V0+0.02θ1=0.02×40=0.8
- V2=0.98V1+0.02θ2=0.98×0.8+0.02×55=1.884
- ……
能看出前几天的估计有很大的偏差。因此我们需要对其进行修正:
Vt1−βtV1修正之后的结果为(0.81−0.981=)40;V2修正之后的结果为(1.8841−0.982≈)47.58。很明显,修正之后的结果更为准确。
并且随着t增加,βt将接近于0,所以当t很大的时候,偏差修正几乎没有作用。这也就是当t很大的时候,紫线基本和绿线重合的原因。但是在初始阶段,偏差修正可以帮助我们更好的预测温度。当然也有部分人不注重初始阶段,因此也可以不使用偏差修正。