Batch Normalization(BN)이 해결하려는 "covariate shift", 특히 internal covariate shift에 대한 설명입니다.

1. Covariate Shift란?

Covariate shift는 다음과 같은 상황을 의미해요:

  • 학습할 때와 테스트할 때, 입력 데이터의 분포(P(x))는 변하지만,
    목표 함수(P(y|x))는 변하지 않는 경우.

예를 들어:

  • 학습 때는 밝은 낮 사진만 보고 고양이를 분류하는 모델을 학습시켰는데,
  • 테스트 때는 어두운 밤 사진이 들어온다면 → 입력 분포는 바뀐 것이죠.
    이런 걸 covariate shift라고 해요.

2. Internal Covariate Shift란? (BN이 해결하려는 것)

이건 딥러닝 내부에서 일어나는 covariate shift예요.

  • 네트워크가 깊어질수록, 앞쪽 레이어가 바뀌면,
    그 영향을 뒤쪽 레이어가 받게 되며 입력 분포가 계속 변하게 됨.
  • 즉, 각 레이어의 입력 분포가 학습 도중 계속 바뀌는 현상.

이게 왜 문제냐면:

  • 뒤쪽 레이어가 계속 바뀌는 분포에 적응하느라 학습이 느리고 불안정해질 수 있어요.

3. Batch Normalization은 어떻게 도움이 되나요?

BN은 각 미니배치의 입력을 정규화시켜줘요:

x^=xμσ\hat{x} = \frac{x - \mu}{\sigma}

그리고 학습 가능한 스케일/시프트 파라미터인 γγββ를 적용해서,

y=γx^+βy = \gamma \hat{x} + \beta

이렇게 함으로써:

  • 각 레이어의 입력 분포가 일정하게 유지됨
  • 결과적으로 학습이 빠르고 안정적이 됨
  • 학습률도 더 크게 사용할 수 있음
  • 초기화에 덜 민감해짐

요약하면:

용어의미
Covariate shift학습과 테스트에서 입력 분포가 바뀌는 현상
Internal covariate shift딥러닝에서 각 레이어의 입력 분포가 학습 도중 계속 변하는 현상
Batch Normalization내부 분포 변화를 줄여서 학습을 빠르고 안정적으로 만들어줌
profile
AI developer

0개의 댓글