1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
2.3 指数加权平均 Exponentially weighted averages
有些优化算法比梯度下降法快,要理解这些算法,你需要用到指数加权平均,在统计中也叫做指数加权移动平均。
本节将介绍指数加权平均。后面会再介绍相关算法。
上图是伦敦一年的气温数据。
θ
1
\theta_1
θ1,1月1号,华氏40度,摄氏4度。后面依次是每天的气温。
右边是数据图。靠近原点是年初,靠近横轴右边是年末。
我们要计算气温趋势,也就是温度的局部平均值,或者说移动平均值。
设
v
0
=
0
v_0=0
v0=0。每天需要使用0.9的加权数之前的数值加上当日温度的0.1倍。所以,
第一天气温,
v
1
=
0.9
v
0
+
0.1
θ
1
v_1=0.9v_0+0.1\theta_1
v1=0.9v0+0.1θ1
第二天气温,
v
2
=
0.9
v
1
+
0.1
θ
2
v_2=0.9v_1+0.1\theta_2
v2=0.9v1+0.1θ2
第三天气温,
v
3
=
0.9
v
2
+
0.1
θ
3
v_3=0.9v_2+0.1\theta_3
v3=0.9v2+0.1θ3
以此类推,某天 v v v值的等于前一天 v v v值的0.9加上当日温度的0.1。
如此计算,然后用红线作图的话,便得到以下的结果。
上图就是移动平均值,或者说每日温度的指数加权平均值。
总结上面的公式
v
t
=
0.9
v
t
−
1
+
0.1
θ
t
v_t=0.9v_{t-1}+0.1\theta_t
vt=0.9vt−1+0.1θt,把0.9这个常数变成
β
\beta
β,那么0.1就是
1
−
β
1-\beta
1−β,最终公式就是
v
t
=
β
v
t
−
1
+
(
1
−
β
)
θ
t
v_t=\beta v_{t-1}+(1-\beta)\theta_t
vt=βvt−1+(1−β)θt
由于以后我们要考虑的原因,在计算时可视
v
t
≈
1
1
−
β
θ
t
v_t \approx \frac 1{1-\beta}\theta_t
vt≈1−β1θt。下一节课会解释这个公式。
所以,
β
=
0.9
\beta=0.9
β=0.9,那就是过去10天的平均值,也就是上图中的红线。
如果
β
=
0.98
\beta=0.98
β=0.98,
1
1
−
β
=
50
\frac 1{1-\beta}=50
1−β1=50,那就是过去50天的平均值,我们在下图中用绿色线表示。
观察上图,50天平均值绿色线要比10天平均值红色线要平坦一些。原因在于你多平均了几天的温度,所以这个曲线,波动更小,更加平坦。
缺点是曲线进一步右移。因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,变的更缓慢一些,所以会出现一定延迟。
根据公式 v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t-1}+(1-\beta)\theta_t vt=βvt−1+(1−β)θt,当 β \beta β很大(非常接近1),例如: β = 0.98 \beta=0.98 β=0.98,相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,指数加权平均值相应的变化更缓慢一些。
如果是另一个极端值,比如说
β
=
0.5
\beta=0.5
β=0.5,
1
1
−
β
=
2
\frac 1{1-\beta}=2
1−β1=2,就是平均了2天的温度。我们在下图中用黄色线表示。
观察上图,由于仅平均了两天的温度,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值。但是这个曲线能够更快适应温度变化。
指数加权平均数
经常被使用,它在统计学中被称为指数加权移动平均值,我们就简称为指数加权平均数。
β
\beta
β是一个很重要的参数。
通过调整参数
β
\beta
β,或者说后面的算法学习,可以取得不同的效果。往往其中有某个值效果最好。例如,上面中间值
β
=
10
\beta=10
β=10时得到的红色曲线,比起绿线(变化太缓慢,有延迟)和黄线(变化太剧烈,有噪音)更好地平均了温度。