非监督特征学习与深度学习(四)----调试:梯度检查
来源:互联网 发布:phpcms源码 编辑:程序博客网 时间:2024/06/01 09:36
注:本文转载自https://github.com/ysh329/Chinese-UFLDL-Tutorial
因为github上的makedown格式显示的不够完全,看的非常不方便,因此放到CSDN上比较好查阅学习。
调试:梯度检查(Debugging: Gradient Checking)
迄今为止,在 MATLAB 中已经实现了通过计算目标函数的导数来计算梯度的算法(这种求梯度的方法叫做解析解)。在后续章节中,将看到更复杂的模型(例如神经网络的反向传播算法)。对于这些模型,梯度的计算会变得难以调试,并难以得到正确结果。有时,代码中的微小错误也可以使模型学习到东西,尽管表现稍稍不如完全正确的代码。因此,即使代码中微小的错误,也难说对最终结果有不好的影响。在本节中,将描述一种在数值层面(这种求梯度的方法叫做数值解)上检查你的代码在导数计算部分的正确性。通过用数值解来验证导数求得的梯度结果,可以增加您在代码正确性上的信心。
译者注:
解析解
指能够根据题意,得出在一定条件下的能够以数学表达式直接表达出来的的解。而数值解
指在题中所给出的条件下难以用数学表达式表达出来,或者能够表达出来但需要每个给定自变量值下的数字结果,而通过计算(手算或计算机计算)的出来的以表格或图形表示的结果。数值解
一般是近似结果,它与微分方程的真实结果有偏差(参考: 百度知道 )。
假设想要最小化带有参数 minFunc
或其它优化算法,在此之前已实现了某个
怎样检查
再来回顾一下导数的数学定义:
因此,对任何特定的
在实践中,设置
译者注:
舍入误差
,由于计算机的字长有限,进行数值计算的过程中,对计算得到的中间结果数据要使用“四舍五入”或其他规则取近似值,因而使计算过程有误差。这种误差称为舍入误差(参考: 百度百科 )。
因此,对给定目标函数的导数
以这两个值彼此的接近程度将取决于
现在,考虑一下参数
假设有目标函数
现在,可以从数值上(数值解的角度),对第
梯度检查代码(Gradient checker code)
本次练习,将尝试实现上述方法来检查您的线性回归(Linear Regression)和逻辑斯特回归(Logistic Regression)函数的梯度。另外,您也可以使用提供的 ex1/ grad_check.m
文件(其中带有的参数与 minFunc
类似),对众多随机选择的
- 非监督特征学习与深度学习(四)----调试:梯度检查
- 非监督特征学习与深度学习(十一)----优化方法:随机梯度下降
- 非监督特征学习与深度学习(十)----池化
- 非监督特征学习与深度学习(九)----使用卷积进行特征提取
- 非监督特征学习与深度学习(五)----Softmax 回归(Softmax Regression)
- 非监督特征学习与深度学习(一)----线性回归
- 非监督特征学习与深度学习(二)----逻辑回归
- 非监督特征学习与深度学习(三)----向量化
- 非监督特征学习与深度学习(七)----多层神经网络
- 非监督特征学习与深度学习(八)----神经网络向量化
- 非监督特征学习与深度学习(十二)---- 卷积神经网络
- Deep Learning 学习随记(四)自学习和非监督特征学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- SSH -- 建立本地GIT仓库和Github的连接
- Mysql学习之路03-列属性
- 前端编辑器-webstrom使用交谈
- 数据库恢复挂起
- 关掉Windows10的计划自动重启行之有效的方法
- 非监督特征学习与深度学习(四)----调试:梯度检查
- 转载:快排时间复杂度分析
- 大端 小端
- 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。
- Maven的6种依赖范围
- 主函数调用子函数返回局部变量的问题及子函数的局部变量在函数结束后是否会销毁变量的内容
- mui解决跳转到页面返回不刷新问题
- timestamp转换成Date格式
- Ubuntu在启动器添加程序