←上一篇 ↓↑ 下一篇→
1.11 神经网络的权重初始化 回到目录 1.13 梯度检验

梯度的数值逼近 (Numerical Approximation of Gradients)

在实施backprop时,有一个测试叫做梯度检验,它的作用是确保backprop正确实施。因为有时候,你虽然写下了这些方程式,却不能100%确定,执行backprop的所有细节都是正确的。为了逐渐实现梯度检验,我们首先说说如何计算梯度的数值逼近,下节课,我们将讨论如何在backprop中执行梯度检验,以确保backprop正确实施。

我们先画出函数 fff ,标记为 f(θ)f(\theta)f(θ) , f(θ)=θ3f(\theta)=\theta^3f(θ)=θ3 ,先看一下 θ\thetaθ 的值,假设 θ=1\theta=1θ=1 ,不增大 θ\thetaθ 的值,而是在 θ\thetaθ 右侧,设置一个 θ+ϵ\theta+\epsilonθ+ϵ ,在 θ\thetaθ 左侧,设置 θ−ϵ\theta-\epsilonθ−ϵ 。因此 θ=1\theta=1θ=1 , θ+ϵ=1.01\theta+\epsilon=1.01θ+ϵ=1.01 , θ−ϵ=0.99\theta-\epsilon=0.99θ−ϵ=0.99 ,跟以前一样, ϵ\epsilonϵ 的值为0.01,看下这个小三角形,计算高和宽的比值,就是更准确的梯度预估,选择 fff 函数在 θ−ϵ\theta-\epsilonθ−ϵ 上的这个点,用这个较大三角形的高比上宽,技术上的原因我就不详细解释了,较大三角形的高宽比值更接近于 θ\thetaθ 的导数,把右上角的三角形下移,好像有了两个三角形,右上角有一个,左下角有一个,我们通过这个绿色大三角形同时考虑了这两个小三角形。所以我们得到的不是一个单边公差而是一个双边公差。

我们写一下数据算式,图中绿色三角形上边的点的值是 f(θ+ϵ)f(\theta+\epsilon)f(θ+ϵ) ,下边的点是 f(θ−ϵ)f(\theta-\epsilon)f(θ−ϵ) ,这个三角形的高度是 f(θ+ϵ)−f(θ−ϵ)f(\theta+\epsilon)-f(\theta-\epsilon)f(θ+ϵ)−f(θ−ϵ) ,这两个宽度都是 εεε ,所以三角形的宽度是 2ϵ2\epsilon2ϵ ,高宽比值为 f(θ+ϵ)−f(θ−ϵ)2ϵ\frac{f(\theta+\epsilon)-f(\theta-\epsilon)}{2\epsilon}2ϵf(θ+ϵ)−f(θ−ϵ)​ ,它的期望值接近 g(θ)g(\theta)g(θ) , f(θ)=θ3f(\theta)=\theta^3f(θ)=θ3 传入参数值, f(θ+ϵ)−f(θ−ϵ)2ϵ=(1.01)3−(0.99)32∗0.01\frac{f(\theta+\epsilon)-f(\theta-\epsilon)}{2\epsilon}=\frac{(1.01)^3-(0.99)^3}{2*0.01}2ϵf(θ+ϵ)−f(θ−ϵ)​=2∗0.01(1.01)3−(0.99)3​ ,大家可以暂停视频,用计算器算算结果,结果应该是3.0001,而前面一张幻灯片上面是,当 θ=1\theta=1θ=1 时, g(θ)=3θ2=3g(\theta)=3\theta^2=3g(θ)=3θ2=3 ,所以这两个值非常接近,逼近误差为0.0001,前一张幻灯片,我们只考虑了单边公差,即从 θ\thetaθ 到 θ+ϵ\theta+\epsilonθ+ϵ 之间的误差, g(θ)g(\theta)g(θ) 的值为3.0301,逼近误差是0.03,不是0.0001,所以使用双边误差的方法更逼近导数,其结果接近于3,现在我们更加确信, g(θ)g(\theta)g(θ) 可能是 fff 导数的正确实现,在梯度检验和反向传播中使用该方法时,最终,它与运行两次单边公差的速度一样,实际上,我认为这种方法还是非常值得使用的,因为它的结果更准确。

这是一些你可能比较熟悉的微积分的理论,如果你不太明白我讲的这些理论也没关系,导数的官方定义是针对值很小的 ϵ\epsilonϵ ,导数的官方定义是 f′(θ)=f(θ+ϵ)−f(θ−ϵ)2ϵf^\prime(\theta)=\frac{f(\theta+\epsilon)-f(\theta-\epsilon)}{2\epsilon}f′(θ)=2ϵf(θ+ϵ)−f(θ−ϵ)​ ,如果你上过微积分课,应该学过无穷尽的定义,我就不在这里讲了。

对于一个非零的 ϵ\epsilonϵ ,它的逼近误差可以写成 O(ϵ2)O(\epsilon^2)O(ϵ2) ,εεε 值非常小,如果 ϵ=0.01\epsilon=0.01ϵ=0.01 , ϵ2=0.0001\epsilon^2=0.0001ϵ2=0.0001 ,大写符号 OOO 的含义是指逼近误差其实是一些常量乘以 ϵ2\epsilon^2ϵ2 ,但它的确是很准确的逼近误差,所以大写 OOO 的常量有时是1。然而,如果我们用另外一个公式逼近误差就是 O(ϵ)O(\epsilon)O(ϵ) ,当 ϵ\epsilonϵ 小于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(θ) ,是否正确实现了函数 fff 的偏导,现在我们可以使用这个方法来检验反向传播是否得以正确实施,如果不正确,它可能有bug需要你来解决。

课程PPT



←上一篇 ↓↑ 下一篇→
1.11 神经网络的权重初始化 回到目录 1.13 梯度检验

1.12 梯度的数值逼近-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授相关推荐

  1. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  2. 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)

    第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...

  3. 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.12 梯度的数值逼近 回到目录 1.14 关于梯度检验实现的注记 梯度检验 (Gradient Checking) 梯度检验帮我们节省了很多时间,也多次帮我发现backp ...

  4. 0.0 目录-深度学习第二课《改善神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  5. 1.11 神经网络的权重初始化-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.10 梯度消失与梯度爆炸 回到目录 1.12 梯度的数值逼近 神经网络的权重初始化 (Weight Initialization for Deep Networks) 上 ...

  6. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  7. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  8. 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授

    文章目录 目录 第五课 第四课 第三课 第二课 第一课 目录 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1. ...

  9. 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

最新文章

  1. php 伪静态 page-18.html,PHP 伪静态实现技术原理讲解
  2. 李开复对话Yoshua Bengio:AI技术的下一个突破
  3. conda的导入导出
  4. 慕课网 深入浅出javascript 笔记
  5. ubuntu sever 命令行 使用 u盘
  6. 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
  7. 分布式实时计算—从霍普金大学数据错误谈谈如何保证实时计算数据准确性
  8. 学javascript 必须了解 typeof 和 instanceof
  9. 钉钉微应用怎么进入_蓝凌携手钉钉走进越秀地产,零距离热聊企业数字化转型...
  10. 不均衡数据集采样2——BorderlineSMOTE算法(过采样)
  11. 【白皮书分享】2022年新品营销白皮书-阿里妈妈.pdf(附下载链接)
  12. 编程基本功:工作完成之后,还有做好、做精、做美、做顶、做宗等境界
  13. java batik_Java Batik框架画SVG图 JSVGCanvas
  14. CSI笔记【4】:信道估计/Channel Estimation
  15. 用js如何实现获取验证码
  16. 传说中的PHPWORD的安装
  17. VScode 直接运行ts文件
  18. mysql插入记录时违反唯一索引的处理
  19. 【Linux】Ubuntu下搜狗拼音输入法
  20. 解决:无法访问此网站网址为 https://weread.qq.com/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 ERR_INSUFFICIENT_RESOURCES

热门文章

  1. JAVA学习笔记系列4-Eclipse版本选择
  2. 2017-2018网络攻防第二周
  3. phpstorm配置Xdebug进行调试PHP教程
  4. hdu1394 Minimum Inversion Number 线段树和树状数组
  5. Windows的设备驱动框架
  6. DOS 批处理命令学习1
  7. 学习旧岛小程序 (4)封装api 请求
  8. springboot4.1.1的log4j2配置
  9. 使用jpcap获取网卡硬件
  10. RocketMQ最佳实战