在深度学习里面,我们算完了梯度可以对其进行检验求导是否正确
在深度网络里面有很多参数,$w^{1}$, $b^{1}$, $w^{2}$, $b^{2}$.... $w^{l}$, $b^{l}$,把他们拼接成一个向量$\theta$。其中l代表第几个隐藏层。
因此J($w^{1}$, $b^{1}$,..., $w^{l}$, $b^{l}$) = J($\theta$)
把$dw^{1}$, $db^{1}$, ..., $dw^{l}$, $db^{l}$ 同样用一个大的向量表示 d$\theta$
J($\theta$)= J($\theta$1, $\theta$2, $\theta$3, $\theta$4, ...)
for each i:
d$\theta_{approx}^{i}$=$\frac{J(\theta1, \theta2, ..., \theta[i]+\varepsilon,... ) - J(\theta1, \theta2, ... \theta[i]-\varepsilon) }{2\varepsilon}$
$\approx d\theta[i]=\frac{\partial J}{\partial \theta}$
检验$\frac{\left \| d\theta_{approx} -d\theta\right \|_{2}}{\left \| d\theta_{approx} \right \|_{2} + \left\|d\theta \right \|_{2}}$
令$\varepsilon=10^{-7}$,如果上式约等于$10^{-7}$ 则梯度的误差很小, 如果小于$10^{-5}$次方则可能有问题。
原文:https://www.cnblogs.com/ylxn/p/12005047.html