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

2. 为什么双边逼近更好?
双边逼近的主要优势在于其更高的准确性:
- 误差更小:双边逼近的误差项是𝑂(𝜖2)级别的(与𝜖的平方成正比)。这意味着,如果𝜖很小,双边逼近的误差比单边逼近小得多。
- 例如,如果𝜖=0.01,单边误差约为0.01,而双边误差约为0.0001。



- 例如,如果𝜖=0.01,单边误差约为0.01,而双边误差约为0.0001。
- 对称性:它在θ(音theta)点周围对称地采样,更好地捕捉了该点的局部斜率。
可使用泰勒公式加以证明。这里不再详述。
3.梯度检查的实现步骤
在实际应用中,梯度检查涉及将解析梯度与数值梯度进行比较:
1)计算解析梯度:使用反向传播算法计算模型的梯度𝑔analytic

2)计算数值梯度:对模型的每个参数𝜃𝑖,使用双边逼近公式计算其数值梯度𝑔numeric,𝑖。

3)比较:计算解析梯度和数值梯度之间的相对差(Relative Difference):

Relative Difference = | 𝑔analytic − 𝑔numeric | / | 𝑔analytic | + | 𝑔numeric |
4)判断:
-
- 如果相对差小于10−7或10−8,说明反向传播的实现很可能是正确的。

- 如果相对差大于10−5,通常意味着你的反向传播实现可能存在错误(Bug)。

- 如果相对差小于10−7或10−8,说明反向传播的实现很可能是正确的。
浙公网安备 33010602011771号