1.13 梯度检验(Gradient checking)

  • 梯度检查要做的是将W[1],b[1],,W[L],b[L]W^{[1]},b^{[1]},\cdots,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(θ)J(\theta)

  • 然后将反向传播过程通过梯度下降算法得到的dW[1],db[1],,dW[L],db[L]dW^{[1]},db^{[1]},\cdots,dW^{[L]},db^{[L]}按照一样的顺序构造成一个一维向量dθd\thetadθd\theta的维度与θ\theta一致

  • 接着利用J(θ)J(\theta)对每个θi\theta_i算近似梯度,其值与反向传播算法得到的dθid\theta_i相比较,检查是否一致。例如,对于第ii个元素,近似梯度为:

dθapprox[i]=J(θ1,θ2,,θi+ε,)J(θ1,θ2,,θiε,)2εd\theta_{approx}[i]=\frac{J(\theta_1,\theta_2,\cdots,\theta_i+\varepsilon,\cdots)-J(\theta_1,\theta_2,\cdots,\theta_i-\varepsilon,\cdots)}{2\varepsilon}
  • 计算完所有θi\theta_i的近似梯度后,可以计算dθapproxd\theta_{approx}dθd\theta的欧氏(Euclidean)距离来比较二者的相似度。公式如下:

dθapproxdθ2dθapprox2+dθ2\frac{||d\theta_{approx}-d\theta||_2}{||d\theta_{approx}||_2+||d\theta||_2}
  • 如果欧氏距离越小,例如10710^{-7},甚至更小,则表明dθapproxd\theta_{approx}dθd\theta越接近,即反向梯度计算是正确的,没有bugs。如果欧氏距离较大,例如10510^{-5},则表明梯度计算可能出现问题,需要再次检查是否有bugs存在。如果欧氏距离很大,例如10310^{-3},甚至更大,则表明dθapproxd\theta_{approx}dθd\theta差别很大,梯度下降计算过程有bugs,需要仔细检查

Last updated