梯度的数值逼近
大O表示法-表示逼近误差
用双边误差检验应该比单边误差检验更加合理,计算出的值更加接近导数的真实值
梯度检验(Grad check)
梯度检验的步骤:
-
首先将每一层的w,b进行连接和组合来组成一个巨大的向量,所以这时J的参数就只有一个大θ
-
然后用for遍历大θ对大θ中的每一个θ做梯度数值逼近计算,最终得到一个向量dθapprox (这里应该可以使用numpy进行向量化计算,不用for循环遍历)
-
然后用欧式距离衡量向量dθapprox与向量dθ的相似性,如果计算出欧式距离处于一个较小的值
那么我们的梯度检验就获得了成功,如果没有,就说明在反向传播的过程中某一个导数的计算出现了问题
这时就需要我们去debug
使用梯度检验的注意事项:
- 不要将其用到训练过程中 只是用来debug
- 检验出来反向传播梯度计算有问题后,就应该查看源代码定位问题
- 记住cost function的正则化项
- 不要和dropput(随机失活)方法一起使用
- 一般来说其会在经过一些训练后使用或者随机初始化后也可以用于检验一下