BatchNorm 이해: 왜 정규화가 학습을 안정하게 만들까
딥러닝에서 같은 모델이라도 초기화나 학습률에 따라 학습이 잘 되기도 하고 갑자기 흔들리기도 한다. BatchNorm은 이런 흔들림을 줄여서 더 큰 learning rate를 써도 안정적으로 학습되게 돕는 대표적인 정규화 기법이다.
처음 BatchNorm을 보면 단순히 평균 0, 분산 1로 맞추는 기술처럼 보일 수 있다. 하지만 더 중요한 역할은 각 레이어가 너무 다른 스케일의 입력을 받지 않게 해서 최적화를 훨씬 다루기 쉬운 상태로 만든다는 데 있다.
또 BatchNorm은 무조건 표준화만 하는 것이 아니라, \(\gamma\)와 \(\beta\)를 통해 필요한 스케일과 이동을 다시 학습한다. 즉 "일단 안정한 기준으로 맞춘 뒤, 필요한 표현력은 다시 회복하게 하는 장치"라고 이해하는 편이 정확하다.
1. 핵심 수식
앞부분은 미니배치 평균과 분산으로 입력을 정규화하는 단계이고, 뒤의 \(\gamma, \beta\)는 정규화된 값을 다시 학습 가능한 형태로 조정하는 파라미터다.
이 구조를 보면 왜 BatchNorm이 단순한 전처리가 아니라 레이어 안에 들어가는 학습 모듈인지 알 수 있다. 정규화로 학습을 안정하게 만들고, 동시에 학습 가능한 파라미터로 유연성을 유지한다.
2. 왜 필요한가
- 레이어를 지날수록 activation 스케일이 커지거나 작아지는 문제를 줄인다.
- 학습 초기에 gradient가 너무 불안정해지는 상황을 완화한다.
- 실무에서는 더 빠른 수렴과 튜닝 난이도 감소로 이어지는 경우가 많다.
3. 직관
어떤 학생이 매 시험마다 점수 스케일이 다르면 실력을 비교하기 어렵다. BatchNorm은 점수를 평균 0, 분산 1 근처로 맞춰 놓고 비교하게 만드는 것과 비슷하다. 그 위에 \(\gamma, \beta\)를 두는 이유는 "무조건 평균 0, 분산 1이 정답은 아니므로" 모델이 필요한 스케일을 다시 배울 수 있게 하려는 것이다.
4. train 모드와 eval 모드
- 학습 중에는 현재 미니배치의 평균과 분산을 사용한다.
- 추론 중에는 학습 동안 누적한 running mean, running var를 사용한다.
이 차이를 모르면 train/eval 전환 시 성능이 갑자기 이상해지는 이유를 설명할 수 없다.
5. 장점과 한계
- 장점: 수렴 안정화, 더 큰 learning rate 허용, 깊은 네트워크 학습 용이
- 한계: 배치가 너무 작으면 통계량이 불안정할 수 있음
- 대안: 작은 배치 환경에서는 LayerNorm, GroupNorm이 더 잘 맞는 경우가 있음
6. 코드와 연결
import torch.nn as nn
layer = nn.BatchNorm1d(num_features=128)
여기서 num_features는 채널 또는 feature 차원을 뜻한다. 모델은 내부적으로 배치 통계량을 계산하고, 학습 가능한 \(\gamma, \beta\)를 함께 업데이트한다.
7. 체크리스트
- 왜 BatchNorm이 학습 안정화를 돕는지 설명할 수 있는가?
- train/eval 모드 차이를 말할 수 있는가?
- 작은 배치에서 BatchNorm이 왜 불안정한지 설명할 수 있는가?