기울기 소실(Vanishing Gradient)

•
2026년 10월 18일 발행•2026년 10월 18일 수정
요약

역전파 과정에서 기울기가 층이나 시점을 거치며 지수적으로 작아져 앞쪽 파라미터가 학습되지 않는 현상

중급
역전파와 연쇄 법칙, 활성화 함수의 미분에 대한 이해가 필요하며, 층별 기울기 흐름을 수식으로 해석하고 학습 불안정의 원인을 진단할 수 있어야 한다.

#개념

기울기 소실(Vanishing Gradient)은 신경망을 역전파로 학습할 때 출력층에서 입력층 쪽으로, 또는 현재 시점에서 먼 과거 시점 쪽으로 갈수록 기울기의 크기가 지수적으로 작아져 앞쪽 파라미터가 거의 갱신되지 않는 현상이다. 반대로 기울기가 지수적으로 커지는 현상을 기울기 폭주(Exploding Gradient)라 하며, 두 현상은 같은 원인에서 비롯되므로 함께 다룬다.
원인은 역전파(Backpropagation)가 연쇄 법칙(Chain Rule)으로 층별 미분값을 곱한다는 데 있다. 층 $l$의 출력을 $h_l = \phi(W_l h_{l-1})$이라 하면 $\frac{\partial L}{\partial h_1} = \frac{\partial L}{\partial h_n} \prod_{l=2}^{n} \frac{\partial h_l}{\partial h_{l-1}}$이고, 각 항은 $\mathrm{diag}(\phi'(z_l)) W_l$ 형태다. 이 야코비 행렬들의 크기가 대체로 1보다 작으면 곱이 층 수에 따라 지수적으로 줄고, 1보다 크면 지수적으로 커진다.
활성화 함수의 포화(Saturation)는 이 문제를 키운다. 시그모이드의 미분은 $\sigma'(z) = \sigma(z)(1 - \sigma(z))$로 최댓값이 0.25에 불과해, 가중치가 크지 않다면 10개 층만 지나도 기울기가 $0.25^{10} \approx 10^{-6}$ 수준까지 작아질 수 있다. tanh는 원점에서 미분값이 1이지만 입력의 절댓값이 커지면 출력이 ±1에 붙으면서 미분값이 0에 가까워지므로, 뉴런이 포화 영역에 머무를수록 기울기가 사라진다.
깊은 순방향 신경망에서는 가중치 초기화의 분산도 결정적이다. 분산이 너무 작으면 층을 지날 때마다 활성값과 기울기가 함께 줄고, 너무 크면 활성값이 포화 영역으로 밀려나거나 기울기가 폭주한다. 글로로(Xavier Glorot)와 벤지오(Yoshua Bengio)는 2010년 실험에서 시그모이드 신경망의 상위 층이 학습 초기에 포화되고 층별 기울기 분산이 크게 달라지는 현상을 관찰하고, 이를 바로잡는 초기화 방법을 제안했다.
순환 신경망(Recurrent Neural Network, RNN)에서는 문제가 더 심각하다. 같은 가중치 행렬 $W_{hh}$가 매 시점 반복 곱해지므로 $T$ 시점 떨어진 기울기는 대략 $W_{hh}$를 $T$번 곱한 형태가 되고, 그 크기는 행렬의 최대 특잇값이 1보다 작은지 큰지에 따라 소실되거나 폭주한다. 호흐라이터(Sepp Hochreiter)가 1991년 학위 논문에서 이를 처음 체계적으로 분석했고, 1994년 벤지오 등은 정보를 안정적으로 저장하는 조건과 기울기 소실이 본질적으로 맞물려 있음을 보였다.
두 현상은 모델 구조와 데이터에 따라 겉으로는 단순한 학습 부진처럼 보일 수 있어, 학습률이나 데이터 문제와 구분해서 진단하는 것이 중요하다. 소실은 학습이 조용히 멈추는 형태로, 폭주는 학습이 갑자기 무너지는 형태로 드러나는 경우가 많다. 학습 곡선과 내부 통계에서 관찰되는 대표적인 증상은 다음과 같다.
기울기 소실·폭주의 증상
  • 손실 정체: 학습 초기부터 손실이 거의 줄지 않거나 아주 느리게 줄어든다. 출력층 근처만 학습되고 입력층 근처의 가중치는 초기값에서 거의 변하지 않는다.
  • 층별 기울기 노름 격차: 앞쪽 층의 기울기 노름이 뒤쪽 층보다 수십~수천 배 작게 기록된다.
  • 장기 의존성 학습 실패: 순환 신경망이 가까운 시점의 패턴만 학습하고, 수십 시점 이전의 입력이 출력에 미치는 영향을 반영하지 못한다.
  • 손실 발산과 NaN: 기울기 폭주가 일어나면 손실이 갑자기 튀거나 가중치가 Inf·NaN이 되어 학습이 중단된다.
진단할 때는 학습 중 층별 기울기 노름과 가중치 갱신 비율(갱신량 노름을 가중치 노름으로 나눈 값)을 로깅하고, 활성값의 분포를 히스토그램으로 확인하는 방법이 일반적이다. 활성값이 0이나 ±1 근처에 몰려 있다면 포화를, 특정 시점 이후 기울기 노름이 급증한다면 폭주를 의심할 수 있다. 원인을 확인한 뒤에는 다음과 같은 해결책을 조합해 적용한다.
주요 해결책
  • ReLU 계열 활성화 함수: 양수 구간에서 미분값이 1(또는 1에 가까운 값)인 ReLU, Leaky ReLU, GELU 등을 사용해 포화로 인한 감쇠를 줄인다.
  • Xavier·He 초기화: 층의 입출력 노드 수에 맞춰 가중치 분산을 정해 층을 지나도 활성값과 기울기의 분산이 유지되게 한다.
  • 정규화 층: 배치 정규화나 레이어 정규화로 각 층 입력의 분포를 일정하게 맞춰 포화를 막고 학습을 안정화한다.
  • 잔차 연결(Residual Connection): 층의 입력을 출력에 더하는 지름길을 두어 기울기가 항등 경로로 직접 전달되게 한다.
  • 게이트 순환 구조: LSTM과 GRU처럼 덧셈으로 갱신되는 상태와 게이트를 두어 순환 신경망의 장기 기울기 흐름을 보존한다.
  • 기울기 클리핑(Gradient Clipping): 기울기 노름이 임계값을 넘으면 크기를 줄여 폭주를 막는다.
  • 계층별 사전 학습: 층을 하나씩 비지도 방식으로 먼저 학습한 뒤 전체를 미세 조정해 좋은 초기값에서 출발한다.
ReLU는 $\max(0, z)$로 정의되어 양수 입력에서 미분값이 항상 1이므로 층을 거듭해도 기울기가 감쇠하지 않는다. 다만 입력이 계속 음수인 뉴런은 기울기가 0이 되어 다시 살아나지 못하는 죽은 ReLU 문제가 생길 수 있어, 음수 구간에 작은 기울기를 주는 Leaky ReLU나 매끄러운 형태의 GELU, SiLU가 함께 쓰인다. 트랜스포머 계열 모델은 대부분 GELU나 SwiGLU 같은 변형을 사용한다.
초기화는 층마다 신호의 분산을 보존하는 것이 목표다. Xavier 초기화(Xavier Initialization)는 $\mathrm{Var}(W) = \frac{2}{n_{in} + n_{out}}$으로 순방향 신호와 역방향 기울기의 분산을 절충하며, tanh나 시그모이드에 적합하다. He 초기화(He Initialization)는 ReLU가 입력의 절반을 0으로 만든다는 점을 반영해 $\mathrm{Var}(W) = \frac{2}{n_{in}}$을 사용하며, ReLU 계열의 깊은 신경망에서 표준으로 쓰인다.
배치 정규화(Batch Normalization)는 미니배치 단위로 층 입력을 평균 0, 분산 1로 맞춰 활성값이 포화 영역으로 밀려나지 않게 하고, 레이어 정규화(Layer Normalization)는 샘플 단위로 정규화해 순환 신경망과 트랜스포머에 적합하다. 잔차 연결은 $h_{l+1} = h_l + F(h_l)$ 형태라 $\frac{\partial h_{l+1}}{\partial h_l} = I + \frac{\partial F}{\partial h_l}$이 되어, 기울기가 항등 항을 통해 감쇠 없이 전달된다. 이 구조 덕분에 ResNet은 100층이 넘는 신경망을 안정적으로 학습할 수 있었다.
순환 신경망에서는 장단기 메모리(Long Short-Term Memory, LSTM)가 대표적인 해결책이다. LSTM은 셀 상태를 $c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t$처럼 덧셈으로 갱신하므로, 망각 게이트 $f_t$가 열려 있는 동안 기울기가 여러 시점에 걸쳐 거의 그대로 전달된다. 게이트 값은 데이터에 따라 학습되므로, 모델은 어떤 정보를 오래 기억하고 어떤 정보를 빨리 잊을지를 스스로 조절한다.
기울기 클리핑은 주로 폭주에 대응하는 기법이다. 전체 기울기 벡터 $g$의 노름이 임계값 $\tau$를 넘으면 $g \leftarrow \tau \frac{g}{\lVert g \rVert}$로 방향은 유지하고 크기만 줄인다. 2013년 파스카누(Razvan Pascanu) 등이 순환 신경망 학습에서 효과를 분석하면서 널리 퍼졌고, 현재는 LSTM과 대규모 언어 모델 학습에서 기본 설정처럼 쓰인다. 클리핑은 이미 작아진 기울기를 키우지는 못하므로 소실 문제의 해결책은 아니다.
2006년 전후에는 제한 볼츠만 머신이나 오토인코더로 층을 하나씩 사전 학습한 뒤 전체 신경망을 미세 조정하는 방식이 깊은 신경망 학습의 돌파구였다. 이후 ReLU, 적절한 초기화, 정규화, 잔차 연결이 보급되면서 처음부터 끝까지 한 번에 학습하는 방식이 가능해졌고, 계층별 사전 학습은 실무에서 거의 쓰이지 않게 되었다. 실제 현대 아키텍처는 여러 해결책을 다음과 같이 조합해 사용한다.
아키텍처별 해결책 조합
  • 합성곱 신경망(ResNet 계열): He 초기화, ReLU, 배치 정규화, 잔차 연결을 함께 사용해 수백 층 깊이에서도 안정적으로 학습한다.
  • 트랜스포머: 잔차 연결과 레이어 정규화를 기본 블록으로 쓰고, GELU 계열 활성화, 학습률 워밍업, 기울기 클리핑을 더한다. 정규화를 잔차 경로 앞에 두는 Pre-LN 구조가 깊은 모델에서 더 안정적이다.
  • 순환 신경망: LSTM이나 GRU를 사용하고, 기울기 클리핑과 절단 시간 역전파로 긴 시퀀스의 폭주와 메모리 사용을 제어한다.
수치 정밀도도 관련이 있다. FP16 혼합 정밀도 학습에서는 표현 가능한 최소값보다 작은 기울기가 0으로 반올림되는 언더플로가 생겨 구조와 무관하게 기울기가 사라질 수 있다. 이를 막기 위해 손실에 큰 배율을 곱해 역전파한 뒤 다시 나누는 손실 스케일링을 사용하며, 지수 범위가 넓은 BF16을 쓰면 이 문제가 크게 줄어든다.
기울기 소실은 1990년대부터 2000년대 중반까지 깊은 신경망 학습을 가로막은 핵심 장애물이었고, 이를 극복한 일련의 기법이 오늘날 딥러닝의 기반이 되었다. 새로운 모델을 설계하거나 학습이 불안정할 때 기울기가 각 층과 시점을 어떻게 흐르는지 점검하는 습관은 여전히 문제 해결의 출발점이다.

#관련 용어

역전파
연쇄 법칙으로 손실 함수의 기울기를 출력층에서 입력층 방향으로 계산하는 알고리즘
활성화 함수
뉴런의 출력에 비선형성을 부여하는 함수로, 미분값의 크기가 기울기 흐름을 좌우하는 요소
기울기 폭주
역전파 과정에서 기울기가 지수적으로 커져 학습이 발산하는 현상
배치 정규화
미니배치 단위로 층 입력의 분포를 정규화해 학습을 안정화하는 기법
잔차 연결
층의 입력을 출력에 더해 기울기가 항등 경로로 전달되게 하는 구조
장단기 메모리(LSTM)
게이트와 셀 상태로 순환 신경망의 기울기 소실을 완화한 구조

#직무 연관도

DA
Data Analyst
희박
딥러닝 모델 학습이 실패하거나 지연되는 원인을 이해하는 배경 지식
DS
Data Scientist
밀접
깊은 신경망과 순환 구조를 설계하고 학습 불안정의 원인을 진단하는 데 필수적인 개념
DE
Data Engineer
보통
학습 파이프라인에서 기울기 노름 모니터링, 클리핑, 혼합 정밀도 설정을 통해 학습 안정성을 확보

#사용 사례

의료자율주행금융인터넷 서비스제조
개요
기울기 소실과 폭주는 깊은 신경망을 학습하는 모든 산업에서 마주치는 문제다. 의료 영상 분석과 자율주행 인식 모델처럼 깊은 합성곱 신경망을 쓰는 경우 잔차 연결과 정규화로 대응하고, 금융 시계열이나 제조 센서 데이터처럼 긴 시퀀스를 다루는 경우 LSTM과 기울기 클리핑을 사용한다. 인터넷 서비스의 대규모 언어 모델 학습에서도 기울기 노름 모니터링과 클리핑이 기본 설정으로 쓰인다.
사례
의료 영상 분할을 위해 시그모이드 활성화의 30층 합성곱 신경망을 학습했으나 손실이 줄지 않자, 층별 기울기 노름을 확인해 기울기 소실을 진단하고 ReLU, He 초기화, 배치 정규화, 잔차 연결을 적용해 학습을 정상화한다.

#참고 자료

#추천 포스트

© 2024 diki All rights reserved.