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−μ
그리고 학습 가능한 스케일/시프트 파라미터인 γ와 β를 적용해서,
y=γx^+β
이렇게 함으로써:
- 각 레이어의 입력 분포가 일정하게 유지됨
- 결과적으로 학습이 빠르고 안정적이 됨
- 학습률도 더 크게 사용할 수 있음
- 초기화에 덜 민감해짐
요약하면:
용어 | 의미 |
---|
Covariate shift | 학습과 테스트에서 입력 분포가 바뀌는 현상 |
Internal covariate shift | 딥러닝에서 각 레이어의 입력 분포가 학습 도중 계속 변하는 현상 |
Batch Normalization | 내부 분포 변화를 줄여서 학습을 빠르고 안정적으로 만들어줌 |