梯度检验

作者: 阡陌哥哥 | 来源:发表于2018-08-27 10:23 被阅读9次

为何进行梯度检验?

神经网络算法使用反向传播计算目标函数关于每个参数的梯度,可以看做解析梯度。由于计算过程中涉及到的参数很多,反向传播计算的梯度很容易出现误差,导致最后迭代得到效果很差的参数值。

为了确认代码中反向传播计算的梯度是否正确,可以采用梯度检验(gradient check)的方法。通过计算数值梯度,得到梯度的近似值,然后和反向传播得到的梯度进行比较,若两者相差很小的话则证明反向传播的代码是正确无误的。

对于一个函数来说,通常有两种计算梯度的方式:

数值梯度(numerical gradient);
解析梯度(analytic gradient);

我们都知道,求梯度类似于求导数,所以可以通过理解解析导数和数值导数,进而理解什么是解析梯度,什么是数值导数。



数值梯度的优点是容易编程实现,不要求函数可微,然而,数值梯度缺点很明显,通常是近似解,同时求解速度很慢,因此在设计机器学习目标函数时,通常设计成可微的函数,可以快速地求解其解析梯度,同时这个梯度是确切解。

梯度的数值检验(Numerical Gradient Checking)

数值检验估计梯度的方法类似于求数值导数的方式。

对梯度的估计采用的方法是在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。即对于某个特定的 θ,我们计算出在 θ-ε 处和 θ+ε 的代价值(ε是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 θ 处的代价值。


J(θ)是代价函数

当 θ 是一个向量时,我们则需要对偏导数进行检验。最后我们还需要与通过反向传播方法计算出的偏导数进行检验对比。

梯度检测方法的开销是非常大的,比反向传播算法的开销都大,所以一旦用梯度检测方法确认了梯度下降算法算出的梯度(或导数)值是正确的,那么就及时关闭它。

参考资料:
https://blog.csdn.net/kyang624823/article/details/78900043
http://bbs.keinsci.com/thread-1169-1-1.html

相关文章

  • 梯度检验

    为何进行梯度检验? 神经网络算法使用反向传播计算目标函数关于每个参数的梯度,可以看做解析梯度。由于计算过程中涉及到...

  • 神经网络实践之梯度检验

    前言 在机器学习的应用层面中,学习了神经网络中梯度检验的相关知识,本篇文章,将会用python实现梯度检验并将其应...

  • 梯度检验(Gradient checking)

    在计算梯度下降的时候,虽然代价函数越来越小,但是预测效果并不理想,这是其中有些小错误,我们需要修正。有一种方法就是...

  • DeepLearning

    梯度检验 爆炸-》裁剪 权重初始化 指数加权平均(对于时间序列数据)减少噪音 偏差修正(避免前期数值太小) mo...

  • 2019-02-11至2019-02-17本周总结

    这周主要完成的学习任务是常见的概率分布、区间估计、假设检验、线性回归、梯度下降和逻辑回归的原理以及公式推导【这部分...

  • 机器学习-吴恩达笔记5

    在本章中主要介绍的内容包含: 神经网络的代价函数 前向传播法 反向传播法 梯度检验 构建神经网络的基本步骤 讲真的...

  • 深入浅出--梯度下降法及其实现

    梯度下降的场景假设梯度梯度下降算法的数学解释梯度下降算法的实例梯度下降算法的实现Further reading 本...

  • 梯度下降和梯度上升

    梯度上升与梯度下降 - HIT-security - 博客园 不管梯度下降还是梯度上升,随着迭代的进行,梯度都是在...

  • (三)线性回归--梯度下降

    一、梯度下降 二、代码的实现 (一.梯度下降) 导包 构建数据 梯度下降 使用梯度下降,可视化 (二。梯度下降矩阵...

  • 24、其他形态学操作

    基本梯度 内外梯度

网友评论

    本文标题:梯度检验

    本文链接:https://www.haomeiwen.com/subject/atlziftx.html