机器学习笔记——梯度检测方法概念和原理

本文为博主原创文章,未经授权禁止转载。
我再csdn也同步发布了本文,欢迎大家访问 https://blog.csdn.net/umbrellalalalala/article/details/80249485

什么是梯度检测


概述
实现神经网络的反向传播算法含有许多细节,在编程实现中很容易出现一些
微妙的bug,但往往这些bug并不会影响你的程序运行,而且你的损失函数看样子也在不断变小。但最终,你的程序得出的结果误差将会比那些无bug的程序高出一个数量级


当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误(比如难以发现的bug),虽然在训练过程中,代价函数在变小,但最终的结果可能并不是最优解。

所以我们采用一种叫梯度检测的思想,它可以通过估计梯度(或导数)的近似值来估算我们的梯度下降算法算出的梯度(或导数)是否为正确的。

梯度检测的原理


梯度检测会估计梯度(或导数)值,然后和你程序计算出来的梯度(导数)的值
进行对比,以判断程序算出的梯度(导数)值是否正确


这里写图片描述

上图中,我们关注\(θ_0\)点的函数的导数,即\(θ_0\)点切线(图中蓝线)的斜率,现在我们在\(θ_0-ε\)\(θ_0+ε\)两点连一条线(图中红线),我们发现红线的斜率和蓝线斜率很相似。
红线的斜率可以用以下式子表示:
\(\frac{J(θ_0+ε)-J(θ_0-ε)}{2ε}\)
实际上,以上的式子很好地表示了\(θ_0\)点导数的近似值。

在实际的应用中,θ往往是一个向量,梯度下降算法要求我们对向量中的每一个分量进行偏导数的计算,对于偏导数,我们同样可以用以下式子进行近似计算:
\(\frac{J(θ_1+ε,θ_2,θ_3...θ_n)-J(θ_1-ε,θ_2,θ_3...θ_n)}{2ε}\)
上式很好地估计了损失函数对\(θ_1\)的偏导数。

使用时的注意事项

梯度检测方法的开销是非常大的,比反向传播算法的开销都大,所以一旦用梯度检测方法确认了梯度下降算法算出的梯度(或导数)值是正确的,那么就及时关闭它。
一般来说ε的值选\(10^{-4}\),注意并不是越小越好。


Enjoy the symphony of the storm. ——umbrellalalalala

转载于:https://www.cnblogs.com/umbrellalalalala/p/9012676.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值