배치 정규화(BatchNorm)는 2015년 구글의 세르게이 이오페와 크리스천 세게디가 제안한 기법으로, 「각 층의 입력을 매 배치마다 평균 0·표준편차 1로 정규화하는」 방식입니다.
이 단순한 아이디어가 깊은 신경망 학습을 극적으로 안정시켰습니다.
배경에는 「내부 공변량 변화(internal covariate shift)」라는 문제가 있습니다.
신경망의 깊은 층은 앞 층의 출력을 입력으로 받는데, 학습이 진행되면서 앞 층의 출력 분포가 계속 바뀝니다.
깊은 층 입장에서는 매번 다른 분포의 입력에 적응해야 하니 학습이 느리고 불안정해집니다.
BatchNorm은 매 층의 입력을 「오늘 모인 미니배치의 평균과 표준편차」로 정규화해 분포를 일정하게 유지해 줍니다.
비유하자면 「학생들에게 매번 다른 양의 음식을 주는 대신, 매번 같은 양의 식판으로 통일해 주는 일」과 같습니다.
BatchNorm의 효과는 극적입니다.
학습 속도가 빨라지고, 더 큰 학습률을 안전하게 쓸 수 있으며, 일종의 정규화 효과까지 더해져 드롭아웃의 필요성을 일부 대체합니다.
CNN에서는 거의 표준으로 자리잡았습니다.
단점도 있습니다.
배치 크기가 너무 작으면(1~4) 통계 추정이 불안정해 효과가 떨어집니다.
그래서 작은 배치 환경에서는 LayerNorm(층마다 정규화), GroupNorm(그룹별 정규화) 같은 대안이 쓰입니다.
특히 Transformer 계열은 LayerNorm을 표준으로 씁니다.
한 줄 요약
BatchNorm은 매 층의 입력을 미니배치 통계로 정규화해 학습을 빠르고 안정적으로 만듭니다.
Transformer는 LayerNorm을, 작은 배치에서는 GroupNorm을 대신 씁니다.
더 알아볼 것
- LayerNorm vs BatchNorm — Transformer가 선택한 길
- RMSNorm — Llama가 채택한 더 단순한 변형
- BN의 학습/추론 모드 전환