C.W.K.
Stream
Lesson 05 of 05 · published

Chain Rule 이 물 때: Vanishing & Exploding Gradient

~8 min · vanishing-gradient, exploding-gradient, depth

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

Deep 의 숨은 비용

Chain rule 따라 100-layer 망의 입력 gradient = 100 국소 도함수의 . 그 도함수들이 시스템적으로 1 보다 작으면 (sigmoid 의 max 도함수 0.25 처럼), 곱이 빨리 줄어: . Gradient 가 사실상 0 — 망이 초기 layer 전혀 학습 안 함. Vanishing gradient 문제.

반대도 일어남: 국소 도함수가 1 보다 크면 곱이 폭발. Exploding gradient 가 학습 destabilize, 가끔 NaN.

해결책

  • sigmoid/tanh 대신 ReLU — 도함수 = 1 (양수 입력) 대신 분수. Chain 곱 안 줄임.
  • Residual 연결 (ResNet) — 입력 다시 더해, gradient 가 skip path 통해 layer 우회 흐름.
  • Batch normalization — 활성을 sane 범위 유지, 도함수 drift X.
  • Gradient clipping — gradient norm 을 임계값 cap, 폭발 방지.
  • 더 나은 초기화 (Xavier, He) — 즉시 vanish/explode 안 일으키는 weight 시작.
왜 deep net 이 수십 년 작동 안 함. Sigmoid, tanh 활성이 초기 신경망 지배; 도함수가 0.25, 1 로 bounded. 많은 layer stack = gradient vanish. 2012 ImageNet 혁명이 새 아이디어가 아니라 — ReLU, GPU compute, 더 큰 데이터가 마침내 depth 가 보상받게.

트랙 보상

이제 AI 에 등장하는 방식으로 미분학 읽음: 도함수 = 학습에 어디로 갈지 말하는 기울기; 적분 = 가끔; chain rule = 모든 신경망의 척추. Vanishing/exploding gradient = chain rule 이 무는 거. 다음: backprop, 이 모두의 규율 적용.

Code

Gradient vanish 보기·python
import torch

# Sigmoid 로 vanishing gradient 데모
x = torch.tensor(1.0, requires_grad=True)
y = x
for _ in range(20):
    y = torch.sigmoid(y)         # 연속 20 sigmoid
y.backward()
print(f"20 sigmoid 후 dy/dx: {x.grad.item():.2e}")
# 매우 작은 수 — gradient 거의 vanish

External links

Exercise

데모 반복, torch.sigmoid 대신 torch.relu. 결과 x.grad 비교. 왜 ReLU 가 deep net 에 훨씬 친절?
Hint
ReLU 의 도함수 = 양수 입력에 1. 20개 stack 해도 gradient 1 (또는 0, 어느 입력이든 음수 갔으면). 곱셈 축소 X.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.