BatchNorm 이해: 왜 정규화가 학습을 안정하게 만들까

난이도: 중급

태그: foundations,batchnorm,정규화,학습안정화

BatchNorm은 "값의 분포가 레이어를 지날수록 너무 흔들리지 않게 만들어 학습을 편하게 하는 장치"라고 이해하면 된다.

딥러닝에서 같은 모델이라도 초기화나 학습률에 따라 학습이 잘 되기도 하고 갑자기 흔들리기도 한다. BatchNorm은 이런 흔들림을 줄여서 더 큰 learning rate를 써도 안정적으로 학습되게 돕는 대표적인 정규화 기법이다.

처음 BatchNorm을 보면 단순히 평균 0, 분산 1로 맞추는 기술처럼 보일 수 있다. 하지만 더 중요한 역할은 각 레이어가 너무 다른 스케일의 입력을 받지 않게 해서 최적화를 훨씬 다루기 쉬운 상태로 만든다는 데 있다.

또 BatchNorm은 무조건 표준화만 하는 것이 아니라, \(\gamma\)와 \(\beta\)를 통해 필요한 스케일과 이동을 다시 학습한다. 즉 "일단 안정한 기준으로 맞춘 뒤, 필요한 표현력은 다시 회복하게 하는 장치"라고 이해하는 편이 정확하다.

1. 핵심 수식

x^=xμBσB2+ϵ,y=γx^+β

앞부분은 미니배치 평균과 분산으로 입력을 정규화하는 단계이고, 뒤의 \(\gamma, \beta\)는 정규화된 값을 다시 학습 가능한 형태로 조정하는 파라미터다.

이 구조를 보면 왜 BatchNorm이 단순한 전처리가 아니라 레이어 안에 들어가는 학습 모듈인지 알 수 있다. 정규화로 학습을 안정하게 만들고, 동시에 학습 가능한 파라미터로 유연성을 유지한다.

2. 왜 필요한가

3. 직관

어떤 학생이 매 시험마다 점수 스케일이 다르면 실력을 비교하기 어렵다. BatchNorm은 점수를 평균 0, 분산 1 근처로 맞춰 놓고 비교하게 만드는 것과 비슷하다. 그 위에 \(\gamma, \beta\)를 두는 이유는 "무조건 평균 0, 분산 1이 정답은 아니므로" 모델이 필요한 스케일을 다시 배울 수 있게 하려는 것이다.

4. train 모드와 eval 모드

이 차이를 모르면 train/eval 전환 시 성능이 갑자기 이상해지는 이유를 설명할 수 없다.

5. 장점과 한계

6. 코드와 연결

import torch.nn as nn

layer = nn.BatchNorm1d(num_features=128)

여기서 num_features는 채널 또는 feature 차원을 뜻한다. 모델은 내부적으로 배치 통계량을 계산하고, 학습 가능한 \(\gamma, \beta\)를 함께 업데이트한다.

7. 체크리스트