본문 바로가기

ML

Batch Normalization, Layer Normalization

 

딥러닝 모델이 깊어질수록 학습이 불안정해지는 문제가 발생합니다. 각 층을 통과하면서 활성화 값의 분포가 계속 바뀌기 때문인데, 이를 내부 공변량 변화(Internal Covariate Shift)라고 합니다. 배치 정규화(BN)와 계층 정규화(LN)는 각 층의 입력을 일정한 분포로 '정규화'하여 이 문제를 해결하고, 학습을 안정적이고 빠르게 만드는 핵심적인 기법입니다.

공통 표기법 정의

  • $x$: 정규화 계층에 들어오는 입력(pre-activation). 텐서(Tensor) 형태입니다.
  • $m$: 미니배치(minibatch)의 크기. 즉, 한 번의 경사 하강 단계에서 사용되는 데이터 샘플의 수입니다.
  • $d$: 특징(feature) 차원의 크기. 예를 들어, 자연어 처리 모델(Transformer)에서는 임베딩 벡터의 크기(hidden size)에 해당합니다.
  • $\mu$ 와 $\sigma^2$: 각각 입력 $x$의 평균과 분산을 의미합니다. 어떤 축을 기준으로 계산하는지에 따라 BN과 LN이 구분됩니다.
  • $\gamma$ 와 $\beta$: 학습 가능한(learnable) 파라미터입니다. $\gamma$는 정규화된 값의 크기(scale)를, $\beta$는 이동(shift)을 조절합니다. 정규화로 인해 손실될 수 있는 표현력을 복원하는 역할을 합니다.
  • $\epsilon$: 분모가 0이 되는 것을 방지하기 위한 매우 작은 양수(e.g., $10^{-5}$)입니다.

1. 배치 정규화 (Batch Normalization, BN)

BN의 핵심 아이디어는 "미니배치 내 동일한 특징(채널)끼리 모아서 정규화하자"는 것입니다. CNN의 합성곱 층을 통과한 출력 텐서가 (N, C, H, W) 형태일 때, BN은 각 채널(C)별로 N, H, W에 해당하는 모든 값들의 평균과 분산을 계산합니다.

1-1. BN의 수식 정의 (훈련 시)

미니배치 $\mathcal{B} = \{x_1, x_2, \dots, x_m\}$에 대해, 각 특징(feature) 차원별로 평균과 분산을 계산합니다.
1단계: 미니배치 평균 및 분산 계산 $$ \mu_{\mathcal{B}} = \frac{1}{m} \sum_{i=1}^m x_i $$ $$ \sigma_{\mathcal{B}}^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_{\mathcal{B}})^2 $$
2단계: 정규화 $$ \hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma_{\mathcal{B}}^2 + \epsilon}} $$
3단계: 스케일 및 이동 $$ y_i = \gamma \hat{x}_i + \beta $$
여기서 $x_i$는 $i$번째 데이터 샘플의 특정 채널(특징)에 해당하는 활성화 값들을 의미합니다. $\gamma$와 $\beta$는 채널(특징)마다 독립적인 값을 가집니다.

1-2. 추론(Inference) 시의 BN

테스트나 실제 서비스 환경(추론)에서는 미니배치 단위로 평균/분산을 구하는 것이 비효율적이거나 불가능할 수 있습니다(예: 샘플 1개만 입력). 따라서 BN은 훈련 과정 동안 각 미니배치에서 계산된 평균과 분산의 지수 이동 평균(exponential moving average)을 따로 저장해 둡니다.
$$ \mu_{\text{running}} \leftarrow (1-\alpha)\mu_{\text{running}} + \alpha\mu_{\mathcal{B}} $$ $$ \sigma^2_{\text{running}} \leftarrow (1-\alpha)\sigma^2_{\text{running}} + \alpha\sigma^2_{\mathcal{B}} $$
추론 시에는 이 고정된 $\mu_{\text{running}}$과 $\sigma^2_{\text{running}}$을 사용하여 정규화를 수행합니다. $$ \hat{x} = \frac{x - \mu_{\text{running}}}{\sqrt{\sigma^2_{\text{running}} + \epsilon}} $$

1-3. 확률론적 해석: 좋은 노이즈, 암시적 정규화

훈련 시 사용하는 $\mu_{\mathcal{B}}$와 $\sigma^2_{\mathcal{B}}$는 전체 데이터셋의 실제 평균/분산이 아닌, 현재 미니배치로부터 '추정'한 값입니다. 어떤 미니배치가 뽑히느냐에 따라 이 값들은 매번 미세하게 달라집니다. 이 '불확실성' 또는 '흔들림'이 모델의 출력에 일종의 노이즈(noise)로 작용합니다.
이 노이즈는 모델이 특정 미니배치에 과적합되는 것을 방지하는 암시적 정규화(implicit regularization) 효과를 줍니다. 이는 마치 드롭아웃(dropout)처럼 훈련을 약간 더 어렵게 만들어 모델의 일반화 성능을 높이는 것과 유사합니다.

1-4. 최적화 관점: 손실 함수의 평탄화

BN은 각 특징의 스케일을 강제로 조정하여, 어떤 특징은 값이 매우 크고 어떤 특징은 매우 작은 문제를 해결합니다. 이는 손실 함수(loss function)의 표면을 울퉁불퉁한 등고선에서 원형에 가깝게 만들어 줍니다. 이를 전처리(preconditioning) 효과라고 하며, 경사 하강법이 더 안정적이고 빠르게 최적점을 찾아가도록 돕습니다.

1-5. BN의 한계

  • 작은 미니배치 크기: 배치 크기가 작아지면 $\mu_{\mathcal{B}}$, $\sigma^2_{\mathcal{B}}$ 추정치가 매우 불안정해져 성능이 저하됩니다.
  • 순차 데이터(RNNs): 각 시점(time step)마다 활성화 값의 분포가 다를 수 있는데, 이를 모든 시점에 걸쳐 동일한 정규화를 적용하기가 까다롭습니다.

2. 계층 정규화 (Layer Normalization, LN)

LN은 BN의 한계를 극복하기 위해 제안되었습니다. 핵심 아이디어는 "배치와 상관없이, 각 데이터 샘플 내부에서 정규화하자"는 것입니다. Transformer 모델에서 (N, T, D) 형태의 텐서가 있을 때, LN은 각 시퀀스의 각 토큰(N, T 각각)에 대해 D 차원 벡터 내부에서 평균과 분산을 계산합니다.

2-1. LN의 수식 정의

하나의 데이터 샘플 $x = (x_1, \dots, x_d)$에 대해 다음과 같이 계산됩니다.
1단계: 샘플 내부의 평균 및 분산 계산 $$ \mu_L = \frac{1}{d} \sum_{j=1}^d x_j $$ $$ \sigma_L^2 = \frac{1}{d} \sum_{j=1}^d (x_j - \mu_L)^2 $$
2-3단계: 정규화 및 스케일/이동 $$ y_j = \gamma_j \frac{x_j - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} + \beta_j $$
LN은 다른 데이터 샘플을 전혀 참조하지 않으므로, 훈련 시와 추론 시의 계산 방식이 동일합니다. 또한, 미니배치 크기에 영향을 받지 않는다는 큰 장점이 있습니다.

2-2. 수학적 속성: 결정론적 정규화

LN은 확률적인 요소가 없습니다. 한 샘플 $x$에 대해 정규화된 출력 $\hat{x}$의 통계적 속성은 항상 일정합니다.
조건부 평균은 정확히 0입니다. $$ \sum_{j=1}^d \hat{x}_j = \sum_{j=1}^d \frac{x_j - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} = \frac{1}{\sqrt{\sigma_L^2 + \epsilon}} \sum_{j=1}^d (x_j - \mu_L) = \frac{1}{\sqrt{\sigma_L^2 + \epsilon}} \left( \sum x_j - d\mu_L \right) = 0 $$
조건부 분산은 거의 1입니다. (정확히는 $1 - \frac{\epsilon}{\sigma_L^2+\epsilon}$) $$ \frac{1}{d}\sum_{j=1}^d (\hat{x}_j - 0)^2 = \frac{1}{d}\sum_{j=1}^d \frac{(x_j - \mu_L)^2}{\sigma_L^2 + \epsilon} = \frac{\sigma_L^2}{\sigma_L^2 + \epsilon} \approx 1 $$
이처럼 LN은 배치에 따른 '흔들림' 없이 각 샘플을 결정론적으로(deterministically) 정규화합니다.

2-3. 최적화 관점: 안정적인 그래디언트 흐름

LN은 입력의 스케일 변화에 거의 영향을 받지 않습니다(scale-invariant). 예를 들어, 입력 $x$에 상수 $s$를 곱해도 LN의 출력은 거의 변하지 않습니다. 이 성질은 층을 거치면서 활성화 값의 크기가 폭발하거나 사라지는 현상을 막아주며, 그래디언트가 깊은 층까지 안정적으로 흐르도록 돕습니다. 이것이 RNN이나 Transformer처럼 매우 깊은 구조에서 LN이 선호되는 이유입니다.


3. BN과 LN의 핵심 비교

항목 배치 정규화 (BatchNorm) 계층 정규화 (LayerNorm)
정규화 대상 미니배치 내의 동일 특징(채널) 단일 데이터 샘플 내의 모든 특징
의존성 미니배치에 강하게 의존 미니배치와 무관 (샘플 독립적)
훈련 vs 추론 계산 방식이 다름 (이동 평균 사용) 계산 방식이 동일
주요 효과 암시적 정규화 (노이즈 주입 효과) 안정적인 그래디언트 흐름 보장
주요 사용처 CNN (컴퓨터 비전) - 큰 배치 사이즈 필요 RNN, Transformer (자연어 처리) - 배치 사이즈 무관

'ML' 카테고리의 다른 글

Autoencoder  (0) 2025.08.18
KL Divergence, MLE  (0) 2025.08.17
Transformer와 Attention  (0) 2025.08.17
K-means clustering, K-NN  (0) 2025.08.17
드롭아웃 (dropout)의 수학적·확률론적 해석  (0) 2025.08.17