기울기 소실(Gradient Vanishing)과 기울기 폭주(Gradient Exploding)는 딥러닝 모델의 학습 과정에서 자주 발생하는 문제로, 특히 역전파 과정에서 기울기가 지나치게 작아지거나 커지는 현상을 의미한다. 이러한 문제들은 주로 깊은 신경망(Deep Neural Networks)이나 순환 신경망(RNN)에서 발생한다.
이 두 가지 현상은 가중치 업데이트가 효과적으로 이루어지지 않아 학습 속도를 늦추거나 학습이 제대로 이루어지지 않게 만드는 원인이 된다. 이러한 이유로 결국 모델이 최적해에 도달하지 못하게 만든다.
기울기 소실(Gradient Vanishing)
기울기 소실 (Gradient Vanishing)은 역전파(Backpropagation) 과정에서 기울기가 점점 작아져, 초기 레이어(입력층에 가까운 레이어)로 전달될수록 거의 0에 가까워지게 되는 현상이다. 이로 인해 네트워크의 앞쪽 레이어들이 효과적으로 학습되지 않는다.
$$ \frac{\partial L}{\partial W^{(l)}} = \prod_{k=l}^{L} f'(z^{(k)}) $$
여기서 \( f'(z^{(k)}) \)는 활성화 함수의 미분이다. 네트워크가 깊어질수록 이 값이 0에 수렴하게 된다.
발생 원인은 아래와 같다.
- 활성화 함수
: 주로 시그모이드(Sigmoid)나 하이퍼볼릭 탄젠트(Tanh) 같은 함수들은 큰 입력값에 대해 기울기를 매우 작아지게 함 - 깊은 네트워크 구조
: 네트워크가 깊어질수록 역전파 단계에서 기울기가 반복적으로 곱해지며, 이 과정에서 기울기가 지수적으로 줄어들게 됨
위 문제점들은 아래와 같은 방법으로 해결할 수 있다.
- ReLU 계열 활성화 함수 사용
: ReLU나 Leaky ReLU 같은 함수들은 양수 입력에 대해 일정한 기울기를 유지여 기울기 소실 문제 완화 - 가중치 초기화 기법
: Xavier 초기화, He 초기화 등 적절한 가중치 초기화 기법을 사용하여 초기 기울기가 너무 크거나 작지 않게 조절 - Batch Normalization
: 배치 정규화를 통해 각 레이어의 출력이 적절한 분포를 가지도록 유지하여, 기울기가 너무 작아지지 않도록 예방 - 잔차 연결(Residual Connections)
: 입력을 층을 통과한 출력에 더하는 연결을 만들어 기울기 소실을 완화. 이 방식은 층을 통과하는 정보에 "지름길"을 제공하므로, 역전파 시 기울기가 소실되지 않고 보다 쉽게 전달될 수 있음
단, 기울기 소실(Gradient Vanishing)은 Local Minima에 빠지는 원인 중 하나일 수 있지만, 기울기 소실이 Local Minima의 유일한 원인은 아니다. Local Minima는 기울기 소실 이외에도 가중치 초기화가 부적절하거나 신경망이 너무 복잡해지는 등의 다른 원인들도 존재한다.
기울기 폭주(Gradient Exploding)
기울기 폭주 (Gradient Exploding)는 기울기가 지나치게 커져서 모델의 가중치가 매우 큰 값으로 업데이트되며, 이로 인해 학습이 불안정해지고 손실(loss) 값이 발산하게 되는 현상이다. 초기 가중치가 크거나 학습률이 너무 큰 경우 발생할 수 있다.
$$ \frac{\partial L}{\partial W^{(l)}} = \prod_{k=l}^{L} f'(z^{(k)}) $$
발생 원인은 아래와 같다.
- 순환 신경망(RNN)
: RNN 구조에서 time step이 길어질수록 기울기가 반복적으로 곱해지며 기울기 폭주 유발 - 가중치 값이 너무 큰 경우
: 초기화된 가중치가 크거나, 학습률이 큰 경우 폭주가 더 쉽게 발생
위 문제점들은 아래와 같은 방법으로 해결할 수 있다.
- Gradient Clipping
: 역전파 과정에서 기울기가 일정 값을 넘지 않도록 클리핑 하여 기울기 폭주를 방지 - 적절한 가중치 초기화
: 기울기 소실과 마찬가지로, He 초기화 등 적절한 초기화 기법을 사용하여 학습 초기의 기울기를 안정적으로 유지 - 적응형 학습률 옵티마이저 사용
: Adam, RMSprop 등의 옵티마이저는 학습률을 자동으로 조절하여 기울기 폭주를 완화