2020-5-25 吴恩达-改善深层NN-w1 深度学习的实用层面(1.12 梯度的数值逼近(使用双边误差)--实现梯度检验需要)

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

1.12 梯度的数值逼近 Numerical approximation of gradients

在实施反向传播backprop时,有一个测试叫做梯度检验,它的作用是确保backprop正确实施。因为有时候你虽然写下了反向传播方程式,却不能100%确定执行backprop的所有细节都是正确的。

梯度检验就是为了验证我们的梯度下降算法是否正确,当验证正确后,进行训练时
记得关闭它!

为了逐渐实现梯度检验,本节课我们首先说说如何计算梯度的数值逼近。下节课,我们将讨论如何在backprop中执行梯度检验,以确保backprop正确实施。
在这里插入图片描述

观察上图。
这是 f ( θ ) = θ 3 f(\theta)=\theta^3 f(θ)=θ3函数。横轴上有3个坐标, θ − ϵ = 0.99 \theta-\epsilon=0.99 θϵ=0.99, θ = 1 \theta=1 θ=1 θ + ϵ = 1.01 \theta+\epsilon=1.01 θ+ϵ=1.01 ϵ = 0.01 \epsilon=0.01 ϵ=0.01

1\ 双边误差
在这里插入图片描述

按照上图,更准确的梯度预估,我们会利用图中大三角形的高和宽(蓝色线)的比值,这样更接近于的 θ \theta θ导数。(逼近误差小)

这个大三角形同时考虑(包含)了两个绿色小三角形。所以我们得到的不是一个单边公差(one sided difference,即 θ \theta θ θ + ϵ \theta+\epsilon θ+ϵ 之间误差)而是一个双边公差(即 θ − ϵ \theta - \epsilon θϵ θ + ϵ \theta+\epsilon θ+ϵ 之间误差)。
在这里插入图片描述

观察上图中绿色三角形

  • 高, f ( θ + ϵ ) − f ( θ − ϵ ) f(\theta+\epsilon) - f(\theta-\epsilon) f(θ+ϵ)f(θϵ)
  • 宽, 2 ϵ 2\epsilon 2ϵ

因为 f ( θ ) = θ 3 f(\theta)=\theta^3 f(θ)=θ3,所以高宽比值 f ( θ + ϵ ) − f ( θ − ϵ ) 2 ϵ = ( 1.01 ) 3 − ( 0.99 ) 3 2 ∗ 0.01 = 3.0001 \frac {f(\theta+\epsilon) - f(\theta-\epsilon)}{2\epsilon}=\frac{(1.01)^3-(0.99)^3}{2*0.01}=3.0001 2ϵf(θ+ϵ)f(θϵ)=20.01(1.01)3(0.99)3=3.0001

f ( θ ) f(\theta) f(θ)导数 g ( θ ) = 3 θ 2 g(\theta)=3\theta^2 g(θ)=3θ2,当 θ = 1 \theta=1 θ=1时候, g ( θ ) = 3 g(\theta)=3 g(θ)=3

可以发现高宽比值 f ( θ + ϵ ) − f ( θ − ϵ ) 2 ϵ \frac {f(\theta+\epsilon) - f(\theta-\epsilon)}{2\epsilon} 2ϵf(θ+ϵ)f(θϵ)非常接近导数 g ( θ ) g(\theta) g(θ)逼近误差approximation error为0.0001。

2\ 单边误差
在这里插入图片描述

我们可以看一下,如果只用 f ( θ + ϵ ) f(\theta+\epsilon) f(θ+ϵ) f ( θ ) f(\theta) f(θ)之间的小三角形的高宽比来预估 θ \theta θ导数, f ( θ + ϵ ) − f ( θ ) ϵ = ( 1.01 ) 3 − ( 1 ) 3 0.01 = 3.0301 \frac {f(\theta+\epsilon) - f(\theta)}{\epsilon}=\frac{(1.01)^3-(1)^3}{0.01}=3.0301 ϵf(θ+ϵ)f(θ)=0.01(1.01)3(1)3=3.0301

此时逼近误差为0.0301,比双边误差要大,证明使用双边误差的方法更逼近导数

在微积分中, f ( θ ) = θ 3 f(\theta)=\theta^3 f(θ)=θ3导数的正式定义是
f ′ ( θ ) = lim ⁡ ϵ → 0 f ( θ + ϵ ) − f ( θ − ϵ ) 2 ϵ f'(\theta)=\lim_{\epsilon \to 0} \frac {f(\theta+\epsilon) - f(\theta-\epsilon)}{2\epsilon} f(θ)=ϵ0lim2ϵf(θ+ϵ)f(θϵ)

对于一个非零的 ϵ \epsilon ϵ,它的逼近误差可以写成 O ( ϵ 2 ) O(\epsilon^2) O(ϵ2),其实是一些常量乘以 ϵ 2 \epsilon^2 ϵ2,常量有时是1。

如果使用逼近误差 O ( ϵ ) O(\epsilon) O(ϵ),当 ϵ < 1 \epsilon<1 ϵ<1时候 , ϵ \epsilon ϵ ϵ 2 \epsilon^2 ϵ2大很多。

在执行梯度检验时,我们使用双边误差,即 f ( θ + ϵ ) − f ( θ − ϵ ) 2 ϵ \frac {f(\theta+\epsilon) - f(\theta-\epsilon)}{2\epsilon} 2ϵf(θ+ϵ)f(θϵ),而不使用单边误差,因为它不够准确。

本节讲了如何使用双边误差来判断函数 g ( θ ) g(\theta) g(θ)是否正确实现了函数f的偏导,下节我们可以使用这个方法来检验反向传播是否得以正确实施。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值