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

我们首先画出函数f,标记为f(θ)f(\theta)f(θ),f(θ)=θ3f(\theta)=\theta^3f(θ)=θ3,假设θ=1\theta=1θ=1。不增大θ\thetaθ的值,而是在θ\thetaθ右侧设置一个θ+ε\theta+\varepsilonθ+ε,在θ\thetaθ左侧设置一个θ−ε\theta - \varepsilonθ−ε,因此θ=1\theta=1θ=1,θ+ε=1.01\theta+\varepsilon=1.01θ+ε=1.01,θ−ε=0.99\theta - \varepsilon=0.99θ−ε=0.99。

在函数图中画一个三角形,计算高和宽的比值,就是更准确的坡度预估。

选择f函数在θ−ε\theta-\varepsilonθ−ε上的这个点,用大三角形的高比上宽,较大三角形的高宽比值更接近于θ\thetaθ的导数,把右上角的小三角形下移,好像有了两个三角形,右上角一个,左下角一个。我们通过这个绿色大三角形同时考虑了这两个小三角形,所以我们得到的不是一个单边公差而是一个双边公差。

写一下计算公式,θ+ε\theta+\varepsilonθ+ε这个点对应的函数值为f(θ+ε)f(\theta+\varepsilon)f(θ+ε),θ−ε\theta-\varepsilonθ−ε这个点对应的函数值为f(θ−ε)f(\theta-\varepsilon)f(θ−ε),这个三角形的高度是f(θ+ε)−f(θ−ε)f(\theta+\varepsilon)-f(\theta-\varepsilon)f(θ+ε)−f(θ−ε),三角形的宽度为2ε2\varepsilon2ε,高宽比值为f(θ+ε)−f(θ−ε)2ε\frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon}2εf(θ+ε)−f(θ−ε)​它的期望值接近g(θ)g(\theta)g(θ)。

传入参数值f(θ)=θ3f(\theta)=\theta^3f(θ)=θ3,θ+ε=1.01\theta+\varepsilon=1.01θ+ε=1.01,1.013−0.9932∗0.01=3.0001\frac{1.01^3-0.99^3}{2*0.01}=3.00012∗0.011.013−0.993​=3.0001,而g(θ)=3θ2=3g(\theta)=3\theta^2=3g(θ)=3θ2=3,所以这两个g(θ)g(\theta)g(θ)值非常接近,逼近误差为0.0001.

只考虑单边公差,即从θ\thetaθ到θ+ε\theta+\varepsilonθ+ε之间的误差,g(θ)g(\theta)g(θ)的值为3.0301,逼近误差是0.03而不是0.0001,所以使用双边误差的方法更逼近导数,其结果接近3。在梯度检验和反向传播中使用该方法时,最终它与运行两次单边公差的速度一样。

导数的官方定义是针对值很小的ε\varepsilonε:f′(θ)=lim⁡ε→0f(θ+ε)−f(θ−ε)2εf'(\theta)=\lim_{\varepsilon \rightarrow 0}\frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon}f′(θ)=ε→0lim​2εf(θ+ε)−f(θ−ε)​对于一个非零的ε\varepsilonε,它的逼近误差可以写成O(ε2)O(\varepsilon^2)O(ε2),ε\varepsilonε的值非常小。如果ε=0.01\varepsilon=0.01ε=0.01,ε2=0.0001\varepsilon^2=0.0001ε2=0.0001,大写符号O的含义是指逼近误差其实是一些常量乘于ε2\varepsilon^2ε2,但它的确是很准确的逼近误差,所以大写O的常量有时是1,。

然而如果我们用另外一个公式f(θ+ε)−f(θ)ε\frac{f(\theta+\varepsilon)-f(\theta)}{\varepsilon}εf(θ+ε)−f(θ)​逼近误差就是ε\varepsilonε,当ε\varepsilonε小于1时,实际上ε\varepsilonε比ε2\varepsilon^2ε2大很多,所以这个公式的近似值没有上面公式准确。所以在执行梯度检验时,我们使用双边误差,即f(θ+ε)−f(θ−ε)2ε\frac{f(\theta+\varepsilon)-f(\theta-\varepsilon)}{2\varepsilon}2εf(θ+ε)−f(θ−ε)​而不使用单边公差,因为它不够准确。

深度学习的实用层面 —— 1.12 梯度的数值逼近相关推荐

  1. 深度学习的实用层面 —— 1.10 梯度消失与梯度爆炸

    训练神经网络,尤其是深度神经网络所面临的一个问题是梯度消失或者梯度爆炸,也就是说,当你训练深度网络时导数或坡度有时会变得非常大或非常小,甚至以指数方式变小,这加大了训练的难度,这里我们将会了解梯度爆炸 ...

  2. 深度学习的实用层面 —— 1.13 梯度检验

    假设你的网络中含有下列参数W[1]W^{[1]}W[1]和b[1]b^{[1]}b[1],W[2]W^{[2]}W[2]和b[2]b^{[2]}b[2],一直到W[L]W^{[L]}W[L]和b[L] ...

  3. 吴恩达深度学习笔记5-Course2-Week1【深度学习的实用层面】

    改善深层神经网络:超参数调试.正则化以及优化 深度学习的实用层面 一.训练.验证.测试集 样本数据分成以下三个部分: 训练集(train set): 用于对模型进行训练. 验证集(hold-out c ...

  4. 3.深度学习的实用层面

    第一周:深度学习的实用层面 项目进展得一个关键性得因素就是划分高质量得训练集,验证集,测试集.这有助于提高循环迭代得效率.验证集也称为development set 也称为dev set. 验证集主要 ...

  5. 吴恩达【优化深度神经网络】笔记01——深度学习的实用层面

    文章目录 引言 一.训练集/验证集/测试集(Train/Dev/Test sets) 1. 数据集选择 2. 补充:交叉验证(cross validation) 二.偏差和方差(Bias/Varian ...

  6. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化...

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...

  7. 吴恩达老师深度学习视频课笔记:深度学习的实用层面

            训练.验证和测试数据集(training.development and test sets):训练神经网络时,我们需要作出很多决策,如神经网络分多少层(layers).每层含有多少个 ...

  8. 吴恩达《优化深度神经网络》精炼笔记(1)-- 深度学习的实用层面

    AI有道 不可错过的AI技术公众号 关注 吴恩达的深度学习专项课程的第一门课<神经网络与深度学习>的所有精炼笔记我已经整理完毕.迷路的小伙伴请见文章末尾的推荐阅读: 在接下来的几次笔记中, ...

  9. Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面

    红色石头的个人网站:redstonewill.com Andrew Ng的深度学习专项课程的第一门课<Neural Networks and Deep Learning>的5份笔记我已经整 ...

最新文章

  1. log4net 无法输出日志,跟踪发现IsErrorEnabled等,都是Flase
  2. 第3章 简单爬虫架构
  3. 操作系统:Linux 环境变量配置的 6 种方法!
  4. linux下mysql-5.5.15安装详细步骤
  5. jQuery的hide() 、show() 、toggle()
  6. 联通最全最新路由表【两种表示方式都在】
  7. 技术人创业之心不死!
  8. java需要了解的几个算法
  9. python 安装虚拟环境
  10. 【LKJ】LKJ弧形限速小结
  11. Win10 Word背景默认是绿色的怎么取消?
  12. 计算机软件退税公式,软件产品增值税即征即退税额的计算方法 会计看过来!...
  13. 保持简单----纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
  14. Python微信防撤回,基于itchat模块
  15. 生成二维码并将Bitmap保存成图片
  16. /oa/web应用程序中的服务器错误修复,如何处理OA系统在线阅读或编辑文档时weboffice控件提示“文件存取错误”的问题?...
  17. Amazon vs Google 云服务
  18. Android SDK AndroidStudio 国内可用的镜像/代理地址
  19. Landsat5数据下载中国地区1991年
  20. CF 787 E. Replace With the Previous, Minimize

热门文章

  1. __try,__except,__finally,__leave
  2. MacOSX系统下HomeBrew安装指定版本的软件 IntelliJ IDEA 设置多个Go语言版本开发
  3. C语言,利用函数调用统计输出素数并统计素数和
  4. BUAA-OO-2019 第三单元总结
  5. Hexo博客搭建与部署
  6. 【HTML】iframe嵌套界面自适应,可高度自由收缩
  7. Let‘s Encrypt 免费Https证书
  8. mysql数据库information_schema库中的表说明
  9. 电线bat_电线之间的新功能
  10. 为什么要在JavaScript中使用静态类型? 我们是否应该使用它们?