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.5 指数加权平均的偏差修正 Bias correction in exponentially weighted average
上2节课学习了如何计算指数加权平均数,其中提到了一个技术名词叫做偏差修正。它可以让平均数运算更加准确,本节课我们来看看它是怎么运行的。
上图在前面已经介绍过。
- 红色曲线是在 β = 0.9 \beta=0.9 β=0.9情况下加权平均
- 绿色曲线是在 β = 0.98 \beta=0.98 β=0.98情况下加权平均
但是,如果把 β = 0.98 \beta=0.98 β=0.98代入上图中的公式 v t = β v t 1 + ( 1 − β ) θ t v_t=\beta v_{t_1}+(1-\beta)\theta_t vt=βvt1+(1−β)θt,那么得到的会是上图中紫色的曲线。注意:紫色曲线的(左侧)起点较低。
我们来看看这是怎么回事情。
计算移动平均数的时候,初始化
v
0
=
0
v_0=0
v0=0,
v
1
=
0.98
v
0
+
0.02
θ
1
=
0.02
θ
1
v_1=0.98v_0+0.02\theta_1=0.02\theta_1
v1=0.98v0+0.02θ1=0.02θ1。
如果第一天温度是华氏40度
θ
1
=
40
\theta_1=40
θ1=40,那么
v
1
=
8
v_1=8
v1=8,得到的值会小很多,所以第一天温度的估测不准。
v 2 = 0.98 v 1 + 0.02 θ 2 = 0.98 x 0.02 θ 1 + 0.02 θ 2 = 0.0196 θ 1 + 0.02 θ 2 v_2=0.98v_1+0.02\theta_2=0.98x0.02\theta_1+0.02\theta_2=0.0196\theta_1+0.02\theta_2 v2=0.98v1+0.02θ2=0.98x0.02θ1+0.02θ2=0.0196θ1+0.02θ2。,假设 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2都是正数,计算 v 2 v_2 v2后要远小于 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2,所以 v 2 v_2 v2不能很好估测出第一天和第二天的温度。
有个办法可以修改这一估测,让估测变得更好,更准确,特别是在估测初期。
办法就是不使用公式
v
t
=
β
v
t
1
+
(
1
−
β
)
θ
t
v_t=\beta v_{t_1}+(1-\beta)\theta_t
vt=βvt1+(1−β)θt,改用
v
t
1
−
β
t
\frac {v_t}{1-\beta^t}
1−βtvt。
例如:第二天 t = 2 t=2 t=2, v 2 1 − β 2 = 0.0196 θ 1 + 0.02 θ 2 1 − 0.9 8 2 = 0.0196 θ 1 + 0.02 θ 2 0.0396 \frac {v_2}{1-\beta^2}=\frac{0.0196\theta_1+0.02\theta_2}{1-0.98^2}=\frac{0.0196\theta_1+0.02\theta_2}{0.0396} 1−β2v2=1−0.9820.0196θ1+0.02θ2=0.03960.0196θ1+0.02θ2
其实,上面公式的本质就是
θ
1
\theta_1
θ1和
θ
2
\theta_2
θ2的加权平均数,并去除了偏差。
观察上图,你会发现
- 在开始学习阶段,你才开始预测热身练习,偏差修正可以帮助你更好预测温度,结果从紫线变成绿线。
- 随着 t t t增加, β t \beta^t βt接近于0,所以当 t t t很大的时候,偏差修正几乎没有作用,此时紫线基本和绿线重合了。
ML中,在计算指数加权平均数的大部分时候,大家不在乎执行偏差修正,因为大部分人宁愿熬过初始时期,拿到具有偏差的估测,然后继续计算下去。如果你关心初始时期的偏差,在刚开始计算指数加权移动平均数的时候,偏差修正能帮助你在早期获取更好的估测。