728x90
반응형
기울기 소실과 폭발(Gradient Vanishing and Exploding)은 layer가 깊은 신경망을 훈련하는 동안 발생할 수 있는 문제입니다. 기울기 소실과 관련된 포스팅은 다음 링크에 있습니다.
여기서는 기울기 폭발과 관련된 내용들을 정리하였습니다.
기울기 폭발(Gradient Exploding)
- 역전파 과정에서 출력층에서 입력층으로 갈수록 기울기가 커지는 현상
- 가중치들이 너무 커지면서 발산되는 현상
해결 방법
- 그래디언트 클리핑(Gradient Clipping)
- 가중치 초기화(Weight initialization)
1. 그래디언트 클리핑(Gradient Clipping)
- 기울기의 폭발의 막기 위해 기울기의 값을 자르는 것
- 특정 threshold를 넘지 않도록 값을 잘라 크기를 감소시키는 것(여기서 threshold는 gradient가 가질 수 있는 최대 L2-norm)
- clipping을 하지 않을 경우, gradient가 너무 커져 global minimum에 도달하지 못함
- clipping을 할 경우, global minumum에 안정적으로 도달함
- 사용 방법 → torch.nn.utils의 clip_grad_norm 함수 사용
import torch.nn.utils as torch_utils
torch_utils.clip_grad_value_(model.parameters(), max_grad_norm=5.0, clip_value=1.0)
2. 가중치 초기화(Weight initialization)
- 초기값을 0으로 초기화하면 역전파 계산 시, 모든 가중치의 값이 똑같이 갱신 → 적절한 가중치로 초기화하는 것이 중요함
1) 세이비어 초기화(Xavier Initialization) = 글로럿 초기화(Glorot initialization)
- 이전 layer의 노드 수와 다음 layer의 노드 수에 따라 가중치를 결정하는 방법
방법1) uniform 분포를 따르는 방법
방법2) normal 분포를 따르는 방법
- sigmoid나 tanh같은 S자 형태의 활성화 함수와 사용하는 것이 좋음(원점 대칭인 tanh함수와 더 잘 어울림) → ReLU함수와 사용하면 성능이 좋지 않음
2) He 초기화(He initialization)
- ReLU함수와 함께 자주 사용
- 다음 층의 뉴런 수를 반영하지 않음
방법1) uniform 분포를 따르는 방법
방법2) normal 분포를 따르는 방법
반응형
'Computer Science(CS) > ML,DL' 카테고리의 다른 글
컬러 모델(Color Model) - RGB, CMYK, HSI, YCbCr, YIQ, Yuv (0) | 2023.03.30 |
---|---|
스태킹 앙상블(Stacking Ensemble)이란? (0) | 2023.03.27 |
기울기 소실(Gradient Vanishing) (0) | 2023.03.23 |
히스토그램 평활화(Histogram Equalization) - HE, AHE, CLAHE 비교 (0) | 2023.03.23 |
댓글