2020-6-1 吴恩达-改善深层NN-w2 优化算法(2.4 理解指数加权平均--平均值就是达到指数衰减到峰值的三分之一的天数)

274 篇文章 24 订阅
233 篇文章 0 订阅

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.4 理解指数加权平均 Understanding exponentially weighted averages

指数加权平均数,是几个优化算法中的关键一环,这些优化算法能帮助你训练NN。
本节将进一步探讨指数加权平均的本质作用。

上节介绍过指数加权平均数的关键方程如下
v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t-1}+(1-\beta)\theta_t vt=βvt1+(1β)θt

下图是伦敦一年气温图
在这里插入图片描述

上图中, β = 0.9 \beta=0.9 β=0.9得到的结果是红线;如果它更接近于1,比如 β = 0.98 \beta=0.98 β=0.98,结果就是绿线;如果小一点,如果是 β = 0.5 \beta=0.5 β=0.5,结果就是黄线。

现在进一步地分析,来理解如何计算出每日温度的平均值。

根据公式 v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t-1}+(1-\beta)\theta_t vt=βvt1+(1β)θt β = 0.9 \beta=0.9 β=0.9,t值变化,可以得到以下公式

v 100 = 0.9 v 99 + 0.1 θ 100 v_{100}=0.9v_{99}+0.1\theta_{100} v100=0.9v99+0.1θ100
v 99 = 0.9 v 98 + 0.1 θ 99 v_{99}=0.9v_{98}+0.1\theta_{99} v99=0.9v98+0.1θ99
v 98 = 0.9 v 97 + 0.1 θ 98 v_{98}=0.9v_{97}+0.1\theta_{98} v98=0.9v97+0.1θ98

首先看第一个公式,理解 v 100 v_{100} v100是什么。
我们调换一下这两项 0.9 v 99 0.9v_{99} 0.9v99 0.1 θ 100 0.1\theta_{100} 0.1θ100,得到 v 100 = 0.1 θ 100 + 0.9 v 99 v_{100}=0.1\theta_{100}+0.9v_{99} v100=0.1θ100+0.9v99

同理,得到 v 99 = 0.1 θ 99 + 0.9 v 98 v_{99}=0.1\theta_{99}+0.9v_{98} v99=0.1θ99+0.9v98。再代入 v 100 v_{100} v100,得到
v 100 = 0.1 θ 100 + 0.9 ( 0.1 θ 99 + 0.9 v 98 ) v_{100}=0.1\theta_{100}+0.9(0.1\theta_{99}+0.9v_{98}) v100=0.1θ100+0.9(0.1θ99+0.9v98)

同理,把 v 98 v_{98} v98再代入,得到
v 100 = 0.1 θ 100 + 0.9 ( 0.1 θ 99 + 0.9 ( 0.1 θ 98 + 0.9 v 97 ) ) v_{100}=0.1\theta_{100}+0.9(0.1\theta_{99}+0.9(0.1\theta_{98}+0.9v_{97})) v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))

以此类推,把括号展开后,最终可以得到公式
v 100 = 0.1 θ 100 + 0.1 ∗ 0.9 θ 99 + 0.1 ∗ ( 0.9 ) 2 θ 98 + 0.1 ∗ ( 0.9 ) 3 θ 97 + 0.1 ∗ ( 0.9 ) 4 θ 96 + . . . . . . v_{100}=0.1\theta_{100}+0.1*0.9\theta_{99}+0.1*(0.9)^2\theta_{98}+0.1*(0.9)^3\theta_{97}+0.1*(0.9)^4\theta_{96}+...... v100=0.1θ100+0.10.9θ99+0.1(0.9)2θ98+0.1(0.9)3θ97+0.1(0.9)4θ96+......
整个过程就是100天温度数据加和并平均的过程。

所有的这些系数(0.1, 0.1 ∗ 0.9 0.1*0.9 0.10.9 0.1 ∗ ( 0.9 ) 2 0.1*(0.9)^2 0.1(0.9)2,0.1*(0.9)^3, 0.1 ∗ ( 0.9 ) 4 0.1*(0.9)^4 0.1(0.9)4,…),相加起来为1或者逼近1,我们称之为偏差修正,以后会介绍的。因为有了偏差修正,上面的公式才是指数加权平均。

v 100 v_{100} v100中100天的温度数据可以绘制类似下图,t是日期, θ t \theta_t θt是温度
在这里插入图片描述

然后我们构建一个指数衰减函数,从0.1开始,到 0.1 ∗ 0.9 0.1*0.9 0.10.9,到 0.1 ∗ ( 0.9 ) 2 0.1*(0.9)^2 0.1(0.9)2,以此类推,得到如下指数衰减函数。
在这里插入图片描述

计算 v 100 v_{100} v100就是把上面2个图对应的元素逐一相乘,然后求和的过程。

那么需要平均多少天的温度?

我们知道 ( 0.9 ) 10 ≈ 0.35 (0.9)^{10}\approx 0.35 (0.9)100.35,大约为是 1 e \frac 1e e1,e是自然算法的基础之一。

本例中, β = 0.9 \beta=0.9 β=0.9,所以 β 1 1 − β ≈ 0.35 ≈ 1 e \beta^{\frac 1{1-\beta}}\approx 0.35\approx \frac1e β1β10.35e1

换句话说,10天后,曲线的高度下降到大约 1 3 \frac 13 31,即0.35,相当于在峰值的 1 e \frac 1e e1
在这里插入图片描述

我们可以说,当 β = 0.9 \beta=0.9 β=0.9的时候,你计算指数加权平均数,只关注了过去10天的温度。因为10天后,权重下降到不到当日权重的三分之一。

如果 β = 0.98 \beta=0.98 β=0.98需要多少次方才能达到这么小的数值( 1 e \frac1e e1)?

( 0.98 ) 50 ≈ 0.35 ≈ 1 e (0.98)^{50}\approx 0.35\approx \frac1e (0.98)500.35e1,你可以看作平均了50天的温度。

总结一下,你会发现计算指数加权平均,大约平均了 1 1 − β \frac 1{1-\beta} 1β1天温度。也就是上节课中提到过的近似公式,每日温度的指数加权平均值 v t ​ ≈ 1 1 − β ​ θ t ​ v_t​\approx \frac 1{1−β}​θ_t​ vt1β1θt

现在你已经知道根据常数 β \beta β,就能大概知道能够平均多少日的温度。不过这只是思考的大致方向,并不是正式的数学证明。

上节课已经提到过每日温度的指数加权平均值数学公式如下
在这里插入图片描述

归纳一下, v : = β v + ( 1 − β ) θ t v:=\beta v+(1-\beta)\theta_t v:=βv+(1β)θt

有些人会把 v v v加下标,来表示 v v v是计算数据的指数加权平均数。
在这里插入图片描述

所以 v θ : = β v θ + ( 1 − β ) θ t v_\theta:=\beta v_\theta+(1-\beta)\theta_t vθ:=βvθ+(1β)θt

指数加权平均数公式的好处之一在于,它占用极少内存。电脑内存中只占用一行数字而已,然后把最新数据代入公式 v θ : = β v θ + ( 1 − β ) θ t v_\theta:=\beta v_\theta+(1-\beta)\theta_t vθ:=βvθ+(1β)θt,不断覆盖就可以了。正因为这个原因,它基本上只占用一行代码,计算指数加权平均数也只占用单行数字的存储和内存。

当然它并不是最好的,也不是最精准的计算平均数的方法。如果你要计算移动窗,你直接算出过去10天的总和或者过去50天的总和,除以10和50就好,如此往往会得到更好的估测。但缺点是,如果保存所有最近每天的温度数据,和过去10天的总和,必须占用更多的内存,执行更加复杂,计算成本也更加高昂。

在接下来的课程中,我们会计算多个变量的平均值。从计算和内存效率来说,这是一个有效的方法,所以在ML中会经常使用,更不用说只要一行代码,这也是一个优势。

现在你学会了计算指数加权平均数,你还需要知道一个专业概念,叫做偏差修正。下一节课程会讲到它,接着你就可以用它构建更好的优化算法,而不是简单直接的梯度下降法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值