两个比较少见的概念:单边公差(误差),双边公差(误差)

梯度检验时就会用到这个方法。
梯度检验原理
梯度检验帮我们节省了很多时间,也多次帮我发现 **backprop **实施过程中的 bug,接下<br />来,我们看看如何利用它来调试或检验 **backprop **的实施是否正确。<br /> 实际上,这个式子很好地表示了θ0点导数的[近似值](https://www.zhihu.com/search?q=%E8%BF%91%E4%BC%BC%E5%80%BC&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A1808490360%7D)。所以我们就可以使用这种方法来计算损失函数J(θ)在某点的导数,然后用这个导数和反向传播算法算出来的导数类比,如果二者差距不大,那么我们就可以认为反向传播算法正确,如果二者差距很大,那么我们就认为反向传播算法出现了错误,此时我们就应该寻找错误,而不是继续向下执行神经网络的反向传播算法。
tensorflow API
tensorflow 中 tf.test.compute_gradient_error
梯度检测的注意事项
- 不要在训练中使用梯度检验,它只用于调试
- 如果算法的梯度检验失败,要检查所有项,检查每一项,并试着找出错误具体位置
- 在实施梯度检验时,如果使用正则化,请注意正则项
- 梯度检验不能与 dropout 同时使用
