深度学习的实用层面 —— 1.14 关于梯度检验实现的标记
这里主要介绍在神经网络中实施梯度检验的实用技巧和注意事项。
首先,不要在训练中使用梯度检验,它只用于调试,意思是计算所有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(θ)=m1i=1∑L(y^[i],y[i])+2mλi=1∑∣∣w[l]∣∣22dθ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 关于梯度检验实现的标记相关推荐
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化...
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...
- 吴恩达深度学习笔记5-Course2-Week1【深度学习的实用层面】
改善深层神经网络:超参数调试.正则化以及优化 深度学习的实用层面 一.训练.验证.测试集 样本数据分成以下三个部分: 训练集(train set): 用于对模型进行训练. 验证集(hold-out c ...
- 3.深度学习的实用层面
第一周:深度学习的实用层面 项目进展得一个关键性得因素就是划分高质量得训练集,验证集,测试集.这有助于提高循环迭代得效率.验证集也称为development set 也称为dev set. 验证集主要 ...
- 吴恩达【优化深度神经网络】笔记01——深度学习的实用层面
文章目录 引言 一.训练集/验证集/测试集(Train/Dev/Test sets) 1. 数据集选择 2. 补充:交叉验证(cross validation) 二.偏差和方差(Bias/Varian ...
- 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
1.1 Train/dev/test sets 在构建一个神经网络的时候我们往往需要设计很多参数,如:layers,learning rates ,acivation functions,hidden ...
- 吴恩达《优化深度神经网络》精炼笔记(1)-- 深度学习的实用层面
AI有道 不可错过的AI技术公众号 关注 吴恩达的深度学习专项课程的第一门课<神经网络与深度学习>的所有精炼笔记我已经整理完毕.迷路的小伙伴请见文章末尾的推荐阅读: 在接下来的几次笔记中, ...
- Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
红色石头的个人网站:redstonewill.com Andrew Ng的深度学习专项课程的第一门课<Neural Networks and Deep Learning>的5份笔记我已经整 ...
- 深度学习的实用层面 —— 1.10 梯度消失与梯度爆炸
训练神经网络,尤其是深度神经网络所面临的一个问题是梯度消失或者梯度爆炸,也就是说,当你训练深度网络时导数或坡度有时会变得非常大或非常小,甚至以指数方式变小,这加大了训练的难度,这里我们将会了解梯度爆炸 ...
- 深度学习的实用层面 —— 1.3 机器学习基础
初始化模型之后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或者训练数据的性能,如果偏差的确很高,甚至无法拟合训练集,那么你要做的就是选择一个新网络,比如含有更多隐层或者隐藏单元的网络,或 ...
最新文章
- wifi管理系统_KJ725(A)精确人员定位管理系统实现对井下人员和车辆的精确定位
- Java笔记(十九) 反射
- docker基础用法
- if delete annotation.xml in project folder, not local service folder
- python 倒排索引(Inverted Index)
- DHTML中window的使用
- 为了车票而奔波着.....
- Java 8 Optional
- (记录)操作多层Iframe嵌套内的元素
- 【优化求解】基于matlab改进的遗传算法求解带约束的优化问题【含Matlab源码 1773期】
- MD5加密----------
- H5大转盘抽奖,概率可以控制,可直接使用
- 数据流-移动超平面(HyperPlane)构造
- 修改idea的头部文档注释信息
- CSS菜鸟教程自学2,Text文本
- 网络游戏是如何开发的?
- POI动态导出多层表头的EXCEL文件
- 美国访问学者申请签证存款证明相关事宜
- 语音识别之HTK入门(二)
- 新一代iPhoneSE支持5G,有望搭载A15仿生芯片