What is Gradient Clipping
Gradient Clipping이란 Exploding Gradient를 방지하기 위한 테크닉의 하나이다.
Backpropagation을 통해 계산된 Gradient를 $g$, threshold를 $c$라고 했을 때, Gradient Clipping에 대한 수식은 다음과 같다.
$ g \leftarrow c \cdot \frac{g}{\vert\vert g \vert\vert} \text{, if } \vert\vert g \vert\vert \geq c$
$ \frac{g}{\vert\vert g \vert\vert} $는 $g$를 L2 Norm이 1인 unit vector로 만들어주기 때문에
새로 만들어진 $g$는 L2 Norm을 c로 제한해주게 되고,
따라서 gradient가 너무 커져 학습이 제대로 되지 않는 것을 방지할 수 있게 도와준다.
How to implement
Pytorch를 기준으로, 이미 구현돼 있는 `torch.nn.utils.clip_grad_value`를 사용하면 Gradient Clipping을 손쉽게 적용할 수 있다.
https://pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_value_.html
torch.nn.utils.clip_grad_value_ — PyTorch 2.4 documentation
Shortcuts
pytorch.org
# 예시
import torch
torch.nn.utils.clip_grad_value_(model.parameters(), clip_value=c)
Reference
https://kh-kim.gitbook.io/natural-language-processing-with-pytorch/00-cover-6/05-gradient-clipping
그래디언트 클리핑 | Natural Language Processing with PyTorch
그래디언트 클리핑 RNN은 BPTT를 통해 시간에 역행하여 기울기를 구합니다. 매 time-step마다 RNN의 파라미터에 기울기가 더해지므로, 출력의 길이에 따라 기울기의 크기가 달라집니다. 즉, 길이가 길
kh-kim.gitbook.io
https://towardsdatascience.com/what-is-gradient-clipping-b8e815cdfb48
What is Gradient Clipping?
A simple yet effective way to tackle Exploding Gradients
towardsdatascience.com
'ML,DL' 카테고리의 다른 글
밑러닝 - (3) (0) | 2025.01.16 |
---|---|
밑러닝 - (2) (2) | 2024.11.14 |
밑러닝 (1) - CH.2 (0) | 2024.04.22 |
Ensemble - Bagging, Boosting, Stacking (0) | 2023.03.08 |
Optimization - Cross validation, Bias & Variance, Bootstrapping (0) | 2023.03.08 |