Hang on a sec...

梯度范数与梯度裁剪的详细解释 Gradient Norm and Clipping


1. 梯度范数 (Gradient Norm)

在深度学习中,梯度是一个向量,表示损失函数相对于模型参数的偏导数。对于具有 n 个参数的模型,梯度可以表示为:

$$\nabla L = (\frac{\partial L}{\partial w_1}, \frac{\partial L}{\partial w_2}, …, \frac{\partial L}{\partial w_n})$$

其中 L 是损失函数,w_i 是第 i 个模型参数。

梯度范数是梯度向量的长度,通常使用 L2 范数(欧几里得范数)计算:

$$|\nabla L|2 = \sqrt{\sum{i=1}^n (\frac{\partial L}{\partial w_i})^2}$$

2. 最大梯度范数 (Maximum Gradient Norm)

最大梯度范数是一个预设的阈值,用于限制梯度的大小。我们将其表示为 c。在训练过程中,如果梯度范数超过这个阈值,就会触发梯度裁剪。

3. 梯度裁剪 (Gradient Clipping)

梯度裁剪的目的是防止梯度爆炸问题。当梯度范数超过最大梯度范数 c 时,我们按比例缩小梯度,使其范数等于 c。

裁剪后的梯度计算如下:

$$\nabla L_{clipped} = \min(1, \frac{c}{|\nabla L|_2}) \cdot \nabla L$$

推导过程:

  1. 如果 $|\nabla L|_2 \leq c$,则 $\frac{c}{|\nabla L|_2} \geq 1$,因此 $\min(1, \frac{c}{|\nabla L|_2}) = 1$,梯度保持不变。
  2. 如果 $|\nabla L|_2 > c$,则 $\frac{c}{|\nabla L|_2} < 1$,梯度将被缩放。

缩放后的梯度范数证明:

$$|\nabla L_{clipped}|_2 = |\frac{c}{|\nabla L|_2} \cdot \nabla L|_2 = \frac{c}{|\nabla L|_2} \cdot |\nabla L|_2 = c$$

这证明了裁剪后的梯度范数确实等于预设的最大梯度范数 c。

4. 梯度裁剪的优势

  1. 防止梯度爆炸: 在深层网络或循环神经网络中,梯度可能会变得非常大,导致参数更新过度。梯度裁剪可以防止这种情况发生。

  2. 稳定训练: 通过限制梯度的大小,可以使训练过程更加稳定,减少参数更新的波动。

  3. 改善收敛: 在某些情况下,梯度裁剪可以帮助模型更快地收敛到一个好的解。

5. 实现注意事项

在实践中,梯度裁剪通常在优化器更新参数之前应用。例如,在使用随机梯度下降(SGD)时,更新规则可以表示为:

$$w_{t+1} = w_t - \eta \cdot \nabla L_{clipped}$$

其中 $\eta$ 是学习率,w_t 是 t 时刻的参数值。

需要注意的是,梯度裁剪的阈值 c 是一个超参数,需要根据具体任务和模型结构进行调整。选择一个合适的 c 值对于模型的性能至关重要。


Author: Yiming Shi
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Yiming Shi !
评论
 Previous
Vision Transformer (ViT) -> Towards a Modality-Agnostic Transformer? Vision Transformer (ViT) -> Towards a Modality-Agnostic Transformer?
This blog revisits the underlying principles of the Vision Transformer (ViT) and proposes explorations on extending the Transformer architecture to other modalities. For instance, in tasks such as "Weight2Weight," prior approaches have often simply flattened weights into one-dimensional tensors, without leveraging positional encodings.
2024-09-14
Next 
My Questions and Learnings from Exploring  Process Management My Questions and Learnings from Exploring Process Management
In summary, this post covered my process of learning about process management through analyzing example process data, inspecting detailed process information, understanding basic process monitoring tools and models like SSH, and methods for checking concurrent account usage.
2023-09-07
  TOC