这里主要介绍在神经网络中实施梯度检验的实用技巧和注意事项。

首先,不要在训练中使用梯度检验,它只用于调试,意思是计算所有i值的dθapprox[i]d\theta_{approx^{[i]}}dθapprox[i]​是一个非常漫长的计算过程,为了实施梯度下降,你必须使用backprop来计算dθd\thetadθ,并使用backprop来计算导数,只有调试的时候,才会计算它,来确认数值是否接近dθd\thetadθ。完成后,你会关闭梯度检验,梯度检验的每一个迭代过程都不执行它,因为它太慢了。

第二点,如果算法的梯度检验失败,要检查所有项,检查每一项,试着找出bug,也就是说,如果dθapprox[i]d\theta_{approx^{[i]}}dθapprox[i]​和dθd\thetadθ的值相差很大,我们要做的就是查找不同的值,看看是哪个导致dθapprox[i]d\theta_{approx^{[i]}}dθapprox[i]​和dθd\thetadθ的值相差这么多。

第三点,在实施梯度检验时,如果使用正则化,请注意正则项,如果代价函数为J(θ)=1m∑i=1L(y^[i],y[i])+λ2m∑i=1∣∣w[l]∣∣22J(\theta)=\frac{1}{m}\sum_{i=1}L(\hat{y}^{[i]},y^{[i]})+\frac{\lambda}{2m}\sum_{i=1}||w^{[l]}||^2_2J(θ)=m1​i=1∑​L(y^​[i],y[i])+2mλ​i=1∑​∣∣w[l]∣∣22​dθd\thetadθ等于与θ\thetaθ相关的J函数的梯度,记住一定要包括正则项。

第四点,梯度验证不能与dropout同时使用,因为每次迭代过程中,dropout会随机消除隐层单元的不同子集,难以计算dropout在梯度下降上的代价函数J,因此dropout可作为优化代价函数J的一种方法,但是代价函数J被定义为对所有指数极大的节点子集求和,而在任何迭代过程中,这些节点都有可能被消除,所以很难计算代价函数J。这里只是对成本函数做抽样,用dropout每次随机消除不同的子集,所以很难用梯度检验来双重检验dropout的计算,所以一般不同时使用梯度检验和dropout。但如果你想这样做,可以把dropout中的keep.prob设置为1,然后打开dropout并寄希望于dropout的实施是正确的。

我们还可以做点别的,比如修改节点丢失的模式,确认梯度检验是正确的。建议关闭dropout用梯度检验进行双重检查,在没有dropout的情况下,你的算法至少是正确的,然后打开dropout。

最后一点,也是比较微妙的一点,现实中几乎不会出现这种去情况,当w和b接近0时,在随机初始化时梯度下降的实施是正确的。但是在运行梯度下降时,w和b变得更大,可能只有在w和b接近0时,backprop的实施才是正确的。但是当w和b变大时,它会变得越来越不准确。

需要做一件事,就是在随机初始化过程中,运行梯度检验,然后再训练网络,w和b会有一段时间远离0,如果随机初始化值比较大,反复训练网络之后,再重新运行梯度检验。

深度学习的实用层面 —— 1.14 关于梯度检验实现的标记相关推荐

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

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

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

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

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

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

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

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

  5. 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面

    1.1 Train/dev/test sets 在构建一个神经网络的时候我们往往需要设计很多参数,如:layers,learning rates ,acivation functions,hidden ...

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

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

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

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

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

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

  9. 深度学习的实用层面 —— 1.3 机器学习基础

    初始化模型之后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或者训练数据的性能,如果偏差的确很高,甚至无法拟合训练集,那么你要做的就是选择一个新网络,比如含有更多隐层或者隐藏单元的网络,或 ...

最新文章

  1. wifi管理系统_KJ725(A)精确人员定位管理系统实现对井下人员和车辆的精确定位
  2. Java笔记(十九) 反射
  3. docker基础用法
  4. if delete annotation.xml in project folder, not local service folder
  5. python 倒排索引(Inverted Index)
  6. DHTML中window的使用
  7. 为了车票而奔波着.....
  8. Java 8 Optional
  9. (记录)操作多层Iframe嵌套内的元素
  10. 【优化求解】基于matlab改进的遗传算法求解带约束的优化问题【含Matlab源码 1773期】
  11. MD5加密----------
  12. H5大转盘抽奖,概率可以控制,可直接使用
  13. 数据流-移动超平面(HyperPlane)构造
  14. 修改idea的头部文档注释信息
  15. CSS菜鸟教程自学2,Text文本
  16. 网络游戏是如何开发的?
  17. POI动态导出多层表头的EXCEL文件
  18. 美国访问学者申请签证存款证明相关事宜
  19. 语音识别之HTK入门(二)
  20. 新一代iPhoneSE支持5G,有望搭载A15仿生芯片

热门文章

  1. Web前端 HTML 优化启动性能
  2. Cassandra 简介
  3. Top命令找出CPU占用较高的Java线程信息
  4. NAT (PAT)地址转换技术(讲解+配置)
  5. 计算机网络-网络应用
  6. 学习iOS最权威的网站
  7. Maven 项目在 Eclipse 的创建配置
  8. 【Python】政府工作报告词云
  9. 【C语言】用函数实现两个数排序(指针作函数参数)
  10. clickhouse的常见问题以及和mysql相关特性对比