梯度检测(代码实现)

梯度检查将确保我们的反向传播工作的预期。我们可以把我们的成本函数的导数近似为:

多θ的矩阵,我们可以近似导数ΘJ如下:

对于ϵ小值(ε)如ϵ= 10−4,保证了正确的数学。如果ϵ的值足够小,我们可以最终数值问题。

因此,我们只添加或减去ε的ΘJ矩阵。在matlab我们可以如下做:

epsilon = 1e-4;
for i = 1:n,
thetaPlus = theta;
thetaPlus(i) += epsilon;
thetaMinus = theta;
thetaMinus(i) -= epsilon;
gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon)
end;

我们以前看到如何计算deltavector。所以一旦我们计算我们的gradapprox向量,我们可以检查gradapprox≈deltavector。

一旦你有了一次你的反向传播算法是正确的,你不需要计算gradapprox再次。代码计算gradapprox会很慢。

原文地址:https://www.cnblogs.com/zhengzhe/p/7326240.html