梯度检查要做的是将W[1],b[1],⋯ ,W[L],b[L]W^{[1]},b^{[1]},\cdots,W^{[L]},b^{[L]}W[1],b[1],⋯,W[L],b[L]这些矩阵构造成一维向量,然后将这些一维向量组合起来构成一个更大的一维向量θ\thetaθ。这样的cost functionJ(W[1],b[1],⋯ ,W[L],b[L])J(W^{[1]},b^{[1]},\cdots,W^{[L]},b^{[L]})J(W[1],b[1],⋯,W[L],b[L])可以表示成J(θ)J(\theta)J(θ)
然后将反向传播过程通过梯度下降算法得到的dW[1],db[1],⋯ ,dW[L],db[L]dW^{[1]},db^{[1]},\cdots,dW^{[L]},db^{[L]}dW[1],db[1],⋯,dW[L],db[L]按照一样的顺序构造成一个一维向量dθd\thetadθ。dθd\thetadθ的维度与θ\thetaθ一致
接着利用J(θ)J(\theta)J(θ)对每个θi\theta_iθi算近似梯度,其值与反向传播算法得到的dθid\theta_idθi相比较,检查是否一致。例如,对于第iii个元素,近似梯度为:
计算完所有θi\theta_iθi的近似梯度后,可以计算dθapproxd\theta_{approx}dθapprox与dθd\thetadθ的欧氏(Euclidean)距离来比较二者的相似度。公式如下:
如果欧氏距离越小,例如10−710^{-7}10−7,甚至更小,则表明dθapproxd\theta_{approx}dθapprox与dθd\thetadθ越接近,即反向梯度计算是正确的,没有bugs。如果欧氏距离较大,例如10−510^{-5}10−5,则表明梯度计算可能出现问题,需要再次检查是否有bugs存在。如果欧氏距离很大,例如10−310^{-3}10−3,甚至更大,则表明dθapproxd\theta_{approx}dθapprox与dθd\thetadθ差别很大,梯度下降计算过程有bugs,需要仔细检查
Last updated 6 years ago