[Deep Learning] 딥러닝 학습의 3대 변수: 소실, 사망, 그리고 감쇠

nomadicsoul·2026년 3월 23일

deeplearning

목록 보기
10/20

모델이 깊어질수록 우리는 기울기가 사라지거나 뉴런이 응답하지 않는 문제에 직면합니다. 이를 해결하기 위한 '설계'와 '규제'가 어떻게 맞물리는지 살펴봅시다.


1. Gradient Vanishing (기울기 소실)

"층이 깊어질수록 앞쪽(입력층)으로 전달되는 에너지가 증발하는 현상"

  • 수식적 원인: 역전파 시 체인 룰(Chain Rule)에 의해 기울기가 계속 곱해집니다.
    Lw1=Lyyhnh2h1h1w1\frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial h_n} \cdot \dots \cdot \frac{\partial h_2}{\partial h_1} \cdot \frac{\partial h_1}{\partial w_1}
    만약 Sigmoid 함수(σ\sigma)를 쓰면 σ(x)\sigma'(x)의 최댓값은 0.25입니다. 층이 10개만 되어도 0.25100.000000950.25^{10} \approx 0.00000095가 되어, 앞쪽 가중치(w1w_1)는 사실상 업데이트가 멈춥니다.
  • 해결: 미분값이 1인 ReLU를 사용하거나, 기울기를 그대로 전달하는 ResNet(Skip Connection) 구조를 도입합니다.

2. Dying ReLU (죽은 ReLU)

"뉴런이 음수 영역에 갇혀, 영원히 '0'만 출력하고 깨어나지 못하는 현상"

  • 수식적 원인: ReLU 함수 f(x)=max(0,x)f(x) = \max(0, x)의 특성 때문입니다.
    f(x)={1if x>00if x<0f'(x) = \begin{cases} 1 & \text{if } x > 0 \\ 0 & \text{if } x < 0 \end{cases}
    어떤 이유(높은 학습률 등)로 특정 뉴런의 가중치가 크게 변해 입력값 xx가 항상 음수가 되면, 기울기가 0이 됩니다. 기울기가 0이면 가중치가 업데이트되지 않으므로, 그 뉴런은 영원히 죽은 상태가 됩니다.
  • 해결: 음수에서도 미세한 기울기를 주는 Leaky ReLU(0.01x0.01x)를 쓰거나, 초기 가중치 설정(He Initialization)을 정교하게 합니다.

뉴런 사망(Neuron Death)

학습 과정에서 특정 뉴런의 가중치가 업데이트되지 않아, 어떤 입력이 들어와도 항상 0만 출력하고 기울기(Gradient)도 0이 되어버린 상태.


3. Weight Decay (가중치 감쇠)

"과적합을 막기 위해 가중치의 크기를 스스로 깎아내는 다이어트"

  • 수식적 원리 (L2 Regularization): 손실 함수에 가중치의 제곱합을 더해, 가중치가 커지는 것에 '벌금'을 매깁니다.
    Ltotal=Ldata+λ2w2L_{total} = L_{data} + \frac{\lambda}{2} \|w\|^2
    이를 미분하여 가중치를 업데이트하면:
    wt+1=wtη(Ldata+λwt)=(1ηλ)wtηLdataw_{t+1} = w_t - \eta (\nabla L_{data} + \lambda w_t) = \mathbf{(1 - \eta \lambda) w_t} - \eta \nabla L_{data}
    보시다시피 업데이트 전에 가중치 wtw_t일정 비율(1ηλ1-\eta\lambda)만큼 먼저 깎고 시작합니다.
  • 해결: 모델이 특정 데이터에만 너무 민감하게 반응(Overfitting)하지 않도록 일반화 성능을 높입니다.

딥러닝의 인과관계: 해결책이 낳은 꼬리물기와 그 해법

딥러닝의 학습 과정은 단순히 알고리즘을 적용하는 것이 아니라, 발생하는 부작용들을 차례로 진압해 나가는 과정입니다.

1단계: [문제] Gradient Vanishing → [해결] ReLU 도입

  • 현상: Sigmoid 같은 함수는 층이 깊어지면 기울기가 사라짐.
  • 해결 (Solution):
    • ReLU(max(0,x)\max(0, x)) 활성화 함수를 사용하여 양수 영역에서 기울기를 1로 고정, 에너지를 끝까지 전달함.
    • 추가 해결책) ResNet(Skip Connection)을 사용하여 기울기가 층을 건너뛰어 직접 전달되게 함.

2단계: [부작용] Dying ReLU 발생 → [해결] Leaky ReLU & 초기화

  • 현상: ReLU를 썼더니 음수 영역에서 기울기가 0이 되어 뉴런이 영구적으로 사망함.
  • 해결
    • Solution 1) Leaky ReLU(max(0.01x,x)\max(0.01x, x))나 ELU 등을 사용하여 음수에서도 미세한 기울기가 흐르게 함.
    • Solution 2) He Initialization 가중치 초기화 기법을 사용해 초기 입력값이 음수로 쏠리지 않도록 조절함.
    • Solution 3) Batch Normalization을 적용해 입력값의 분포를 0 근처로 모아 뉴런이 골고루 활성화되게 함.

3단계: [부작용] 가중치 폭주(Explosion) → [해결] Weight Decay

  • 현상: 가중치가 너무 커지면 모델이 불안정해지고, 입력값이 ReLU의 음수 끝단으로 튕겨 나가 Dying ReLU를 가속화함.
  • 해결 (Solution):
    • Adam (L2 Regularization): 규제 성분을 손실 함수에 더해 '기울기'에 포함시킵니다. 하지만 이 방식은 Adam의 학습률 조절 메커니즘(vtv_t)과 규제 성분이 서로 엉켜서, 가중치를 줄이는 효율이 떨어지는 수학적 모순이 발생합니다.
    • AdamW (Decoupled Weight Decay): 규제 성분을 기울기 계산에서 완전히 분리(Decouple)합니다. 학습률 조정은 데이터 오차로만 하고, 가중치는 마지막 단계에서 직접 깎아내어 규제 효과를 극대화합니다. (현대 딥러닝의 표준)

4단계: [주의] 과도한 규제 → [해결] 하이퍼파라미터 튜닝

  • 현상: Weight Decay(λ\lambda)가 너무 강하면 가중치가 소멸하여 다시 Gradient Vanishing 같은 학습 정체가 일어남.
  • 해결 (Solution): Learning Rate Scheduler와 함께 λ\lambda 값을 미세 조정(Tuning)하여, 규제와 학습 속도 사이의 황금 밸런스를 찾음.
단계직면한 문제 (Problem)발생 원인 (Root Cause)핵심 해결 방법 (Solution)해결의 결과 및 다음 과제
Step 1Gradient Vanishing (기울기 소실)Sigmoid 등 활성화 함수의 미분값이 너무 작음 (<0.25< 0.25)ReLU, ResNet, Batch Norm기울기 통로 확보 성공 \rightarrow (Step 2로 이동)
Step 2Dying ReLU (뉴런 사망)ReLU를 썼더니 음수 영역에서 기울기가 0으로 고정됨Leaky ReLU, He 초기화죽은 뉴런 소생 완료 \rightarrow (Step 3으로 이동)
Step 3Weight Explosion (가중치 폭주/과적합)가중치가 너무 커져 모델이 불안정해지고 오버피팅됨Weight Decay (Adam / AdamW)모델 안정성 및 일반화 향상 \rightarrow (Step 4로 이동)
Step 4Learning Stagnation (학습 정체)Weight Decay가 너무 강해 가중치가 소멸(Vanishing 재발)LR Scheduler, 규제 강도 조절최적의 수렴 지점(Optimal Point) 도달

왜 연속적으로 일어나는 과정인가요?

  1. Step 1 \rightarrow 2 (해결이 만든 부작용): 기울기가 사라지는 걸 막으려고 ReLU를 도입했더니, 반대로 음수 쪽 문을 꽉 닫아버리는 Dying ReLU가 생겼습니다.
  2. Step 2 \rightarrow 3 (안정화를 위한 조치): 뉴런을 살려놓으니 이제 가중치가 너무 커져서 모델이 제멋대로 날뛰기 시작합니다. 이를 진정시키기 위해 Weight Decay라는 다이어트 약을 처방합니다.
  3. Step 3 \rightarrow 4 (과유불급의 조절): 다이어트 약(규제)이 너무 세면 몸(가중치)이 아예 사라져 버립니다. 그래서 마지막에는 학습률 스케줄러규제 강도를 미세하게 튜닝하며 황금 밸런스를 찾는 것으로 마무리됩니다.

요약 구조

개념문제/목표수식적 핵심해결/조절책
Vanishing기울기 증발gradients<1\prod \text{gradients} < 1ReLU, ResNet, Batch Norm
Dying ReLU뉴런 사망f(x<0)=0f'(x < 0) = 0Leaky ReLU, 작은 Learning Rate
Weight Decay과적합 방지w(1ηλ)ww \leftarrow (1-\eta\lambda)wAdamW, L2 Regularization

결론: 훌륭한 딥러닝 모델을 만들려면 ReLU로 에너지를 살리고, Weight Decay로 가중치 폭주를 막으며, 초기화와 정규화를 통해 기울기가 모든 층에 골고루 흐르게 설계해야 합니다.

profile
꾸준히

0개의 댓글