본문 바로가기

ML,DL

Gradient Clipping

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