콘텐츠로 이동

Gradient Clipping

정의

Vanishing Gradient / Exploding Gradient Problem 을 방지하는 기법 중 하나로 BN 을 사용하기 어려운 경우 (RNN 등)에서 자주 사용됨.

  • Gradient를 계산하고 나서,
  • 해당 Gradient의 norm 이 일정 범위를 넘어가지 않도록 thresholding 처리:torch.nn.utils.clip_grad_norm_()
    • 1st arg.: model.parameters()
    • max_norm: default 1.0
  • 또는 Gradient의 각 component가 일정 범위를 넘어가지 않도록 thresholding 처리:torch.nn.utils.clip_grad_value_()
    • 1st arg.: model.parameters()
    • clip_value: default 1.0, [-1.0, +1.0]

code 활용

training 과정 중에 다음의 형태로 사용됨:

...
loss = criterion(pred, label)
loss.backward()
nn.utils.clip_grad_norm_(model.parameters(), max_norm = 1.0)
optimizer.step()
optimizer.zero_grad()
...

Regularization 의 한 기법인 weight constraint 과 비슷하지만,
대상이 다름!! (parameters의 grad 인지 아니면 그 parameters 값 자체를 제한하는지)

References