梯度检查(Gradient Checking)中使用的双边逼近(Two-sided Approximation)方法,也称为中心差分法(Central Difference Method)。
梯度检查的目的
在深度学习中,我们使用反向传播算法(Backpropagation)来计算损失函数关于模型参数的梯度。然而,反向传播的实现复杂,容易出错。
梯度检查是一种数值方法,用于验证反向传播计算出的解析梯度(Analytical Gradient)是否正确。它通过使用函数值的微小变化来数值逼近梯度。

为什么双边逼近更好?
双边逼近的主要优势在于其更高的准确性:
- 误差更小:双边逼近的误差项是
级别的(与
O(ϵ2)cap O open paren epsilon squared close paren𝑂(𝜖2)的平方成正比)。这意味着,如果
ϵepsilon𝜖很小,双边逼近的误差比单边逼近小得多。
ϵepsilon𝜖- 例如,如果
,单边误差约为
ϵ=0.01epsilon equals 0.01𝜖=0.01,而双边误差约为
0.010.010.01。
0.00010.00010.0001
- 例如,如果
- 对称性:它在
点周围对称地采样,更好地捕捉了该点的局部斜率。
θtheta𝜃
梯度检查的实现步骤
在实际应用中,梯度检查涉及将解析梯度与数值梯度进行比较:
- 计算解析梯度:使用反向传播算法计算模型的梯度
。
ganalyticg sub analytic end-sub𝑔analytic - 计算数值梯度:对模型的每个参数
,使用双边逼近公式计算其数值梯度
θitheta sub i𝜃𝑖。
gnumeric,ig sub numeric comma i end-sub𝑔numeric,𝑖 - 比较:计算解析梯度和数值梯度之间的相对差(Relative Difference):
Relative Difference=|ganalytic−gnumeric||ganalytic|+|gnumeric|Relative Difference equals the fraction with numerator the absolute value of g sub analytic end-sub minus g sub numeric end-sub end-absolute-value and denominator the absolute value of g sub analytic end-sub end-absolute-value plus the absolute value of g sub numeric end-sub end-absolute-value end-fraction
RelativeDifference=|𝑔analytic−𝑔numeric||𝑔analytic|+|𝑔numeric|- 判断:
- 如果相对差小于
或
10-710 to the negative 7 power10−7,说明反向传播的实现很可能是正确的。
10-810 to the negative 8 power10−8 - 如果相对差大于
,通常意味着你的反向传播实现可能存在错误(Bug)。
10-510 to the negative 5 power10−5
- 如果相对差小于