현대의 초기화(Xavier/He)와 정규화(BatchNorm)는
폭발/소실되지 않도록 weight를 0 근처의 작은 값으로 초기화한다.

  • Xavier/Glorot 초기화 (2010)
  • He/Kaiming 초기화 (2015, ReLU 최적화)

둘 다 weight의 분산을 매우 작게 설정해서
초기 weight가 0 근처의 작은 random 값이 되도록 설계되었다. 그 이유는:

  • weight가 너무 크면 → forward 값/gradient가 폭발(explode)
  • weight가 너무 작으면 → 값/gradient가 소실(vanish)

따라서 “폭발도 소실도 일어나지 않게 하는 균형점”이
결과적으로 0 근처의 작은 값이 된다.

BatchNorm도 같은 맥락에서:

  • activation의 분포를 정규화하여 gradient가 안정적으로 흐르도록 만든다
  • BN의 gamma, beta도 초기값이 1, 0 = 거의 identity라 입력을 크게 바꾸지 않는다

즉, 초기화 + BN 두 조합 덕분에 깊은 네트워크도 처음부터 거의 ‘변형 없는’ 상태로 시작한다.


Xavier / He 초기화는 “임의의 작은 값”을 어떻게 만드는가

초기 가중치 W를 다음 분포에서 뽑는다.

Xavier 초기화

He(Kaiming) 초기화

여기서 핵심은 분산이 입력/출력 채널 수의 역수라는 점이다. 예를 들어,
입력 채널이 256개라면:

  • He variance = 2/256 = 0.0078125
  • 표준편차 = √0.0078125 ≈ 0.088

→ 가중치 대부분이 -0.1 ~ 0.1 사이에 몰린다.
→ 즉, 거의 0 근처의 작은 값.

이게 “0 근처의 작은 random 값”이 되는 이유다.

왜 분산을 이렇게 작게 잡아야 하나? 신경망은 층을 거치면서 입력이 계속 변환된다.
이때 문제가 생긴다.

  • 가중치가 크면 → 출력이 기하급수적으로 커짐 → 폭발
  • 가중치가 너무 작으면 → 출력이 층을 지날수록 0으로 수렴 → 소실

그래서 forward/backward의 분산이 유지되도록
딱 맞는 분산을 이론적으로 계산한 것이 Xavier/He 초기화다.

왜 “분산을 작게 설정 = 0 근처”가 되는가 정규분포의 형태 자체 때문이다.

정규분포

에서 σ가 작으면 작을수록
대부분의 샘플은 0 근처에 쌓인다.

예:

  • σ = 0.5 → -1~1 사이에 넓게 분포
  • σ = 0.1 → -0.2~0.2 근처에 몰림
  • σ = 0.01 → 거의 0 바로 주변에 몰림 Xavier/He 초기화의 σ는 보통 0.01~0.1 수준이라
    가중치 대부분이 0에 매우 가까운 값이 된다.

결론

“분산을 작게 설정” = 초기 가중치를 뽑는 분포의 폭을 줄여, 값이 0 근처에 몰리게 만드는 것 결과

  • W는 대부분 -0.1 ~ 0.1 정도
  • 깊은 네트워크도 처음에는 입력 x를 거의 변형시키지 않음
  • “초기에는 거의 identity mapping”이 자연스럽게 형성됨