我是深度学习的初学者。我想到了“梯度检查”的概念。
我只是想知道它是什么以及它如何帮助改进培训过程?
为什么我们需要梯度检查?
反向传播作为一种算法有很多细节,并且实现起来可能有点棘手。一个不幸的特性是,有很多方法可以在后支撑中产生微妙的错误。因此,如果您使用梯度下降或其他一些优化算法来运行它,它实际上看起来像是在工作。而你的成本函数 J of theta 可能最终会在梯度下降的每次迭代中减少。但这可能被证明是正确的,即使您的反向传播实现中可能存在一些错误。因此,看起来 J of theta 正在减小,但您最终可能会得到一个比无错误实现具有更高错误级别的神经网络。您可能只是不知道有一个微妙的错误会导致您的性能下降。那么,对此我们能做些什么呢?有一种称为梯度检查的想法可以消除几乎所有这些问题。
什么是梯度检查?
我们描述了一种对代码计算的导数进行数值检查的方法,以确保您的实现是正确的。执行导数检查过程可以显着提高您对代码正确性的信心。
简而言之,如果我不得不说梯度检查是一种调试你的反向传播算法。梯度检查基本上执行导数检查程序。
如何实现梯度检查?
你可以找到这个程序here http://ufldl.stanford.edu/tutorial/supervised/DebuggingGradientChecking/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)