机器学习算法的调试 —— 梯度检验(Gradient Checking)
来源:互联网 发布:免费手机电视直播软件 编辑:程序博客网 时间:2024/06/05 08:34
反向传播算法很难调试得到正确结果,尤其是当实现程序存在很多难于发现的bug 时。举例来说,索引的缺位错误(off-by-one error)会导致只有部分层的权重得到训练(for(i=1; i<=m; ++i)
被漏写为 for(i=1; i<m; ++i)
),再比如忘记计算偏置项。这些错误会使你得到一个看似十分合理的结果(但实际上比正确代码的结果要差)。因此,仅从计算结果上来看,我们很难发现代码中有什么东西遗漏了。本节中,我们将介绍一种对求导结果进行数值检验的方法,该方法可以验证求导代码是否正确。另外,使用本节所述求导检验方法,可以帮助你提升写正确代码的信心。
数学原理
考虑我们想要最小化以
我们不妨以 Sigmoid 函数为例,也即
回忆导数的数学定义:
由此我们可得梯度校验的数值校验公式:
这便是梯度检验的原理。在实际应用中,我们常将
编程实现
import numpy as npdef sigmoid(z): return 1./(1+np.exp(-z))def sigmoid_prime(z): return sigmoid(z)*(1-sigmoid(z))def check_gradient(f, x0, epsilon): return (f(x0+epsilon) - f(x0-epsilon))/2/epsilonif __name__ == '__main__': x0 = np.array([1, 2, 3]) epsilon = 1e-4 print(sigmoid_prime(x0)) # [ 0.19661193 0.10499359 0.04517666] print(check_gradient(sigmoid, x0, epsilon)) # [ 0.19661193 0.10499359 0.04517666]
References
[1] 梯度检验与高级优化
0 0
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- 斯坦福机器学习-week5 学习笔记(1)——神经网络训练BP算法与Gradient checking
- 可扩展机器学习——梯度下降(Gradient Descent)
- 机器学习之梯度下降算法Gradient Descent
- 随机梯度下降(Stochastic Gradient Descend, SGD)算法在大规模数据机器学习问题的使用
- [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
- (转载) [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
- ufldl学习笔记与编程作业:Debugging: Gradient Checking(梯度检测)
- 机器学习——梯度下降算法
- 机器学习—梯度下降算法
- 第一周-机器学习-梯度下降(gradient descent)
- 机器学习(一)回归(regression)、梯度下降(gradient descent)
- 机器学习笔记2--梯度下降(Gradient decent)
- 【机器学习】笔记--梯度提升(Gradient boosting)
- 【机器学习】笔记--梯度提升(Gradient boosting)
- 自然连接和等值连接的区别
- 正则表达式知识详解之替换 (java版示例)
- SURVIVAL SHOOTER TUTORIAL之Player Health & UI & Enemy Attack [6]
- 深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析
- TCP/IP协议详解 卷一 --------UDP
- 机器学习算法的调试 —— 梯度检验(Gradient Checking)
- Mac使用brew安装boost库
- 贪吃蛇项目总结
- 常用Petri网模拟软件工具简介
- easyui扩展:datagrid鼠标经过提示单元格内容(6)
- iOS提交审核:您的 App 正在使用广告标识符 (IDFA)
- .NET使用ZXing.NET生成中间带图片的二维码
- 专项测试之SQL调优
- MFC打开文件夹读取图片