深度学习笔记(十)—— 梯度检验[Gradient Checks]
这是深度学习笔记第十篇,完整的笔记目录可以点击这里查看。
梯度检验就是将解析法(也就是用导数公式求解梯度)计算的梯度与用数值法(也就是通过导数定义求解梯度)计算的梯度进行对比,以检验解析法公式的正确性。因为数值法是通过导数定义进行求解,当步长h设置的足够小时,就可以求得较为精确的梯度值,准确性较高,但是存在求解速度慢的缺点。相反,解析法直接按照给定的公式计算梯度就可以了,但是当问题比较复杂时,公式往往难以求出,而且容易出错。于是,就有了梯度检验这个过程了。
1. Use the centered formula
在用数值法计算梯度的时候,使用第二个式子的计算结果会比第一个式子好。
2. Use relative error for the comparison
在对比两种方法求解的梯度误差时,应计算相对误差。
在实践中:
- 相对误差>1e-2 通常意味着年计算的梯度可能是错误的
- 1e-2>相对误差>1e-4 的结果不是很理想
- 相对误差<1e-4 在有kinks(第5点会讲到kinks是指什么)时这个结果通常是可以的。但如果没有kinks(例如使用非线性tanh和softmax),则1e-4过高。
- 1e-7及以下 则表明结果理想
3. Use double precision
使用双精度可以确保计算结果更准确。
4. Stick around active range of floating point
在计算或显示结果时,保持数值在浮点数的精度范围内,才能获得正确结果。如果结果非常小(eg. 1e-12),则考虑将其乘以一定的常数(eg. 1e12)。结果在1.0数量级上最佳。更多信息参考链接。
5. Kinks in the objective
kinks是指目标函数的不可微部分,比如由ReLU(max(0,x))或SVM损失函数、Maxout神经元等函数引入。 在梯度检验过程中要注意的一个不准确的来源就是kinks。解决kinks问题的一个方法是在梯度检验时只使用少量的数据点(Use only few datapoints)进行计算。用很少的数据点进行计算也可以让你的梯度检验更快更有效。
6. Be careful with the step size h
检验时h不一定是越小越好。因为当h非常小时,就有可能会遇到数值精度的问题。在刚开始进行检验的时候,取h为1e-4到1e-6之间进行测试将更容易得到正确的检验结果。更多信息参考维基百科。
7. Gradcheck during a “characteristic” mode of operation
梯度检验是在参数空间中的一个特定(通常是随机的)单点执行的。即使梯度检验在那一点上成功,也不能立即确定梯度是否被正确地全局执行。
8. Don’t let the regularization overwhelm the data
通常情况下,损失函数是数据损失和正则化损失的总和。需要注意的一个危险是正则化损失可能会压盖(overwhelm)数据损失,在这种情况下,梯度将主要来自正则化项(通常具有更简单的梯度表达式)。这可能会掩盖数据损失梯度的错误实现。因此,建议先关闭正则化并单独检查数据损失,然后再独立检查正则化项。执行后者的一种方法是hake代码以消除数据损失的贡献。另一种方法是增加正则化的强度,以确保其效果在梯度检查中不可忽略,这样就能检测到不正确的实现。
9. Remember to turn off dropout/augmentations
在执行梯度检验时,请记住关闭网络中的任何不确定性影响,如丢失(dropout)、随机数据增强(random data augmentations)等。否则,在估计数值梯度时,这些明显会引入巨大的错误。关闭这些部分的缺点是不会对它们进行梯度检查(例如,可能是dropout没有正确地反向传播)。因此,更好的解决方案可能是在计算f(x+h)和f(x−h)之前,以及在计算解析梯度时,强制特定的随机种子(force a particular random seed)。
10. Check only few dimensions
实践中,梯度的大小可以达到百万个参数。在这些情况下,只检验梯度的部分维度并假设其他尺寸是正确的才是可行的。要注意的一个问题是确保为每个单独的参数检查几个维度。在一些应用中,为了方便起见,人们把参数组合成一个大的参数向量。例如,在这些情况下,偏差(bias)只能从整个向量中占用少量参数,因此重要的是不要随机采样,而是要考虑到这一点,并检查所有参数是否获得正确的梯度。
*本博客翻译总结自CS231n课程作业网站,该网站需要翻墙才能访问。
深度学习笔记(十)—— 梯度检验[Gradient Checks]相关推荐
- 深度学习笔记(一)—— 计算梯度[Compute Gradient]
这是深度学习笔记第一篇,完整的笔记目录可以点击这里查看. 有两种方法来计算梯度:一种是计算速度慢,近似的,但很简单的方法(数值梯度),另一种是计算速度快,精确的,但更容易出错的方法,需要 ...
- 深度学习笔记(十四)—— 超参数优化[Hyperparameter Optimization]
这是深度学习笔记第十四篇,完整的笔记目录可以点击这里查看. 训练神经网络会涉及到许多超参数设置.神经网络中最常见的超参数包括: the initial learning rate lea ...
- 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)
<繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...
- 动手深度学习笔记(四十)7.4. 含并行连结的网络(GoogLeNet)
动手深度学习笔记(四十)7.4. 含并行连结的网络(GoogLeNet) 7.4. 含并行连结的网络(GoogLeNet) 7.4.1. Inception块 7.4.2. GoogLeNet模型 7 ...
- 深度学习笔记(十一)—— 完整性检查[Sanity Checks]
这是深度学习笔记第十一篇,完整的笔记目录可以点击这里查看. 在进行高运算量的网络优化之前,可以先考虑进行以下几个检验: 1. Look for correct loss at chanc ...
- 动手深度学习笔记(四十五)8.1. 序列模型
动手深度学习笔记(四十五)8.1. 序列模型 8.1. 序列模型 8.1.1. 统计工具 8.1.1.1. 自回归模型 8.1.1.2. 马尔可夫模型 8.1.1.3. 因果关系 8.1.2. 训练 ...
- 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)
今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...
- 33万字!深度学习笔记在线版发布!
吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...
- 深度学习笔记其三:多层感知机和PYTORCH
深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...
最新文章
- 零基础入门学习Python(25)-集合·
- 使用机器学习方法预测IBM员工流失数据模型
- 虚拟机中安装GHO文件配置说明
- MFC Radio Button 使用 分组 RadioButton 用法
- eclipse集成python插件
- 微信表情暂停使用,漂流瓶功能彻底再见!
- 高斯数据库-GaussDB
- java day07【Scanner类、Random类、ArrayList 类】
- %99的C语言初学者都会犯的错误——奇妙的数组(玄学)
- iphone手机投影到电脑屏幕上
- 完美运营版悬赏任务积分墙源码
- fgetc函数踩过的坑
- linux基因组文件,从基因组注释信息GFF文件中提取所有基因位置信息-AWK
- tflearn的VocabularyProcessor用法:建立中文词汇表和把文本转为词ID序列
- UI设计培训主要学习哪些内容
- PMP第13章知识点回顾,练习题
- Linux文件及日志内容
- [HTTPD] Linux(Apache)Httpd服务器安装,启动及httpd.conf配置详解
- 微信开网页mysql_PC浏览器模拟微信打开网页
- python爬虫和办公自动化培训班
热门文章
- linux中ftp修改绑定目录,Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录...
- New Online judge 1026 排序
- CEO、CTO、CFO、COO公司架构
- Java数据压缩算法——哈夫曼树
- NEC人工智能联合实验室成立
- python tensorflow验证码识别_TensorFlow 验证码识别
- 《自用》endnote 使用
- 达梦数据库,给用户赋予系统权限 Any 时报“授权者没有此授权权限”
- oled模块的驱动芯片和pcb图
- 《办公技巧》用PhotoShop为GIF图添加文字注释