为什么双边梯度检查更准确?

机器算法验证 优化 梯度下降 坡度 数字
2022-03-23 14:47:44

Andrew Ng 的机器学习课程的第 5 周,他给出了梯度检查的公式:

一方面的区别:

ΘJ(Θ)J(Θ+ϵ)J(Θ)ϵ

两面的区别:

ΘJ(Θ)J(Θ+ϵ)J(Θϵ)2ϵ

在哪里ϵ是一个小值ϵ104(如果太小,可能会出现数值问题。)

Ng 教授断言,双边差异可以更好地逼近真实梯度。

为什么会这样?

2个回答

看待这一点的一种方法是通过泰勒近似。记住

f(x+Δx)f(x)+Δxf(x)+12Δx2f(x)+16Δx3f(x)+

一侧看起来像这样

f(x+Δx)f(x)Δxf(x)+12Δxf(x)

两侧看起来像这样

f(x+Δx)f(xΔx)2Δxf(x)+16Δx2f(x)

换句话说,两侧发挥对称性,并抵消了平方项在泰勒展开中的贡献。因此,当您挤压时,两侧的误差比一侧的减小得快得多。Δx

对于理论分析,您需要阅读有关数值分析的书。但直觉上,用关于切点对称的两点之间的割线来近似切线似乎是合理的。让我们看一个简单的数值示例,让并且我们对处的导数感兴趣,因此我们知道真实值为零。然后对称的两侧差给出 对于所有通过不对称差异,您可以自己看到该值将是就像一个插图。f(x)=x2x0=0

f(ϵ)f(ϵ)ϵ=(ϵ)2(ϵ)2ϵ=0
ϵ0ϵϵ