콘텐츠로 이동

정규화 기법 (Normalization Techniques)

핵심 요약: 정규화(Normalization)는 층마다 값의 범위를 맞춰주는 기법이다. 활성화 값이 너무 크거나 작아지는 것을 방지하여 학습을 안정적이고 빠르게 만든다. CNN에는 BatchNorm, Transformer에는 LayerNorm, 최신 LLM에는 RMSNorm이 주로 사용된다.

정규화(Normalization)는 신경망의 중간 활성화 값을 안정화하여 학습을 빠르고 안정적으로 만드는 기법이다. 층이 깊어질수록 각 층의 입력 분포가 변하는 문제(Internal Covariate Shift)를 완화하며, 더 높은 학습률을 사용할 수 있게 하고, 약한 정규화(regularization) 효과도 제공한다. Batch Normalization을 시작으로 다양한 변형이 등장했으며, 아키텍처에 따라 적합한 정규화 기법이 다르다.

일상적 비유: BatchNorm은 학교에서 반 전체 시험 점수를 표준화하는 것과 같다. 전체 학생(배치)의 평균과 분산을 기준으로 각 학생의 점수를 조정한다. 반면 LayerNorm은 각 학생의 과목별 점수를 표준화하는 것이다. 한 학생이 수학 95점, 국어 60점이면, 그 학생 내에서 점수를 정규화한다. 다른 학생이 몇 명인지(배치 크기)는 전혀 상관없다.


정규화 기법의 발전은 딥러닝 아키텍처의 변화와 궤를 같이한다.

  1. Ioffe & Szegedy (2015) — Batch Normalization: “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”라는 논문으로 발표되었다. 학습 시 각 미니배치의 통계(평균, 분산)를 이용해 활성화를 정규화하는 기법이다. BatchNorm의 등장은 딥러닝 실무에 혁명적 변화를 가져왔다. 학습률을 10배 이상 높일 수 있게 되었고, 초기화에 대한 민감도가 크게 줄어 더 깊은 네트워크의 학습이 실용적으로 가능해졌다.

  2. Ba et al. (2016) — Layer Normalization: BatchNorm이 배치 크기에 의존하고 RNN에 적용하기 어려운 한계를 해결하기 위해 제안되었다. 배치가 아닌 단일 샘플의 모든 feature에 대해 정규화하므로, 배치 크기와 무관하게 동작한다. 이후 Transformer 아키텍처(Vaswani et al., 2017)에서 표준 정규화 기법으로 채택되면서 중요성이 크게 부각되었다.

  3. RMSNorm의 부상: LayerNorm에서 평균을 빼는 연산(centering)을 생략하고 RMS만으로 정규화하는 간소화 버전이다. LLaMA, Gemma 등 최신 대규모 언어 모델(LLM)에서 채택되면서 새로운 표준으로 자리잡고 있다. 계산 효율성이 높고, 실험적으로 LayerNorm과 성능 차이가 거의 없다는 점이 채택의 이유이다.


4개의 활성화 값 [10,20,30,40][10, 20, 30, 40]을 정규화하는 과정을 따라가 보자.

  1. 평균(Mean) 계산: μ=10+20+30+404=25\mu = \frac{10 + 20 + 30 + 40}{4} = 25
  2. 표준편차(Standard Deviation) 계산: σ=(1025)2+(2025)2+(3025)2+(4025)24=225+25+25+2254=12511.18\sigma = \sqrt{\frac{(10-25)^2 + (20-25)^2 + (30-25)^2 + (40-25)^2}{4}} = \sqrt{\frac{225+25+25+225}{4}} = \sqrt{125} \approx 11.18
  3. 정규화(Normalize): 각 값에서 평균을 빼고, 표준편차로 나눈다
    • (1025)/11.181.34(10 - 25) / 11.18 \approx -1.34
    • (2025)/11.180.45(20 - 25) / 11.18 \approx -0.45
    • (3025)/11.180.45(30 - 25) / 11.18 \approx 0.45
    • (4025)/11.181.34(40 - 25) / 11.18 \approx 1.34
  4. 결과: [10,20,30,40][10, 20, 30, 40][1.34,0.45,0.45,1.34][-1.34, -0.45, 0.45, 1.34]

정규화 후 값들은 평균 0, 표준편차 1 근처에 분포하게 된다. 이렇게 값의 스케일(Scale)을 맞춰주면, 각 층이 안정적인 범위의 입력을 받아 학습이 훨씬 원활해진다.

Ioffe & Szegedy (2015)가 제안한 가장 대표적인 정규화 기법이다.

수식: x^=xμBσB2+ϵ\hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} y=γx^+βy = \gamma \hat{x} + \beta

  • μB\mu_B, σB2\sigma_B^2: 미니배치 내 평균과 분산
  • γ\gamma, β\beta: 학습 가능한 Scale(크기 조절)과 Shift(이동) 파라미터
  • ϵ\epsilon: 수치 안정성을 위한 작은 값

γ\gammaβ\beta가 필요한가: 정규화만 하면 네트워크의 표현력이 제한될 수 있다. 학습 가능한 파라미터를 통해 네트워크가 정규화를 “되돌릴” 수 있도록 한다. 즉, 네트워크가 필요하다면 원래 분포를 복원할 수 있다.

추론 시: 미니배치가 없으므로, 학습 중 누적한 이동 평균(running mean/variance)을 사용한다.

효과:

  • 더 높은 학습률 허용 → 빠른 수렴
  • 약한 정규화 효과 (미니배치의 노이즈로 인해)
  • 기울기 소실/폭발 완화

한계:

  • 배치 크기에 의존 (배치 크기가 작으면 통계치가 불안정)
  • RNN에 적용하기 어려움 (시퀀스 길이가 달라 배치 통계가 불안정)

Ba et al. (2016)이 제안하였다.

수식은 Batch Normalization과 동일하지만, 정규화 축이 다르다. 단일 샘플의 모든 feature에 대해 정규화한다.

장점:

  • 배치 크기에 무관
  • RNN/Transformer에 적합

Transformer에서의 위치:

  • Post-LN: 잔차 연결 후에 정규화 → 원래 Transformer 방식 (Vaswani et al., 2017)
  • Pre-LN: 잔차 연결 전에 정규화 → 학습 안정성 향상, 현재 더 일반적

2. Layer Normalization (층 정규화) 다이어그램

Wu & He (2018)이 제안하였다.

채널을 GG개의 그룹으로 나누어 각 그룹 내에서 정규화한다.

GN: 채널을 G개 그룹으로 나눔, 각 그룹 내에서 정규화\text{GN: 채널을 G개 그룹으로 나눔, 각 그룹 내에서 정규화}

특수 케이스:

  • G=1G = 1: Layer Normalization과 동일
  • G=CG = C (채널 수): Instance Normalization과 동일

장점: 배치 크기에 무관하면서도 CNN에 적합. 특히 배치 크기가 작은 경우(object detection, segmentation)에 Batch Normalization보다 우수하다.

각 채널, 각 샘플에 대해 독립적으로 정규화한다.

주요 사용처: Style Transfer — 스타일 정보(평균, 분산)를 제거하여 콘텐츠만 남긴다.

x^=xRMS(x)γ,where RMS(x)=1ni=1nxi2\hat{x} = \frac{x}{\text{RMS}(x)} \cdot \gamma, \quad \text{where } \text{RMS}(x) = \sqrt{\frac{1}{n}\sum_{i=1}^{n} x_i^2}

핵심 차이: Layer Normalization에서 평균 빼기(centering)를 생략하고, RMS(Root Mean Square, 제곱평균제곱근)만으로 정규화한다. RMS는 값들의 제곱 평균의 제곱근으로, 값의 전체적인 “크기”를 나타낸다.

장점: Layer Normalization보다 계산 효율적 (평균 계산 생략)

사용처: LLaMA, Gemma 등 최신 LLM에서 채택


4차원 텐서 (N,C,H,W)(N, C, H, W)에서 각 기법이 어떤 축을 정규화하는지:

기법정규화 축직관
Batch Norm(N,H,W)(N, H, W) — 배치 내 동일 채널”같은 특징을 가진 모든 샘플에 대해”
Layer Norm(C,H,W)(C, H, W) — 한 샘플의 모든 특징”한 샘플 내의 모든 특징에 대해”
Instance Norm(H,W)(H, W) — 한 채널, 한 샘플”한 특징 맵 내에서”
Group Norm(C/G,H,W)(C/G, H, W) — 그룹 내 채널들”관련된 채널 그룹 내에서”

정규화 축 비교 다이어그램

기법배치 의존적합 아키텍처계산 비용특이 사항
Batch Norm있음CNN (큰 배치)중간running stats 관리 필요
Layer Norm없음Transformer, RNN중간Pre-LN vs Post-LN
Group Norm없음CNN (작은 배치)중간G 선택 필요 (보통 32)
Instance Norm없음Style Transfer낮음스타일 정보 제거
RMSNorm없음LLM낮음centering 생략

언제 사용하는가 다이어그램

배치 크기 2에서 BatchNorm이 망가진 사례

섹션 제목: “배치 크기 2에서 BatchNorm이 망가진 사례”

의료 영상(medical imaging) 분야에서는 GPU 메모리 한계로 인해 배치 크기가 극도로 작은 경우가 흔하다. 3D MRI 볼륨 데이터를 처리할 때 배치 크기를 2로 설정해야 하는 상황이 실제로 발생한다.

문제 상황: 3D U-Net 기반의 뇌 종양 세그멘테이션 모델을 학습시키면서 BatchNorm을 사용했다. 배치 크기가 2인 상태에서 미니배치의 평균과 분산은 단 2개의 샘플로 추정되므로 극도로 불안정했다. 학습 손실이 진동하면서 수렴하지 않았고, 더 큰 문제는 추론 시에도 나타났다. 학습 중 누적한 running statistics가 실제 데이터 분포를 제대로 반영하지 못해, 학습 시와 추론 시의 성능 차이가 크게 벌어졌다.

해결: BatchNorm을 GroupNorm(G=32)으로 교체했다. GroupNorm은 채널을 그룹으로 나누어 각 그룹 내에서 정규화하므로 배치 크기에 전혀 의존하지 않는다. 교체 후 학습이 안정적으로 수렴했고, 학습-추론 간 성능 갭도 사라졌다. Wu & He (2018)의 논문에서도 배치 크기 2에서 GroupNorm이 BatchNorm 대비 Dice score 기준 약 10% 이상 높은 성능을 보인다고 보고되었다.

실무 가이드라인:

  • 배치 크기 < 16이면 BatchNorm 대신 GroupNorm 사용을 고려할 것
  • 배치 크기 1이면 BatchNorm은 수학적으로 정의되지 않으므로 반드시 다른 방법 사용
  • Instance Normalization(G=C)은 Style Transfer에 적합하지만, 일반적인 비전 과제에서는 GroupNorm이 더 안정적

  1. 학습/추론 모드 전환 누락: Batch Normalization을 사용할 때, PyTorch에서 model.train()model.eval() 전환을 잊으면 추론 시 배치 통계를 사용하여 결과가 불안정해진다. 이것은 가장 흔한 실수 중 하나이다.

  2. “Batch Normalization은 Internal Covariate Shift를 해결한다”: 원논문의 동기였으나, 후속 연구(Santurkar et al., 2018)는 BN의 효과가 손실 표면의 평활화(smoothing)에 더 가깝다고 분석했다.

  3. 배치 크기 1에서 Batch Norm 사용: 배치 크기가 1이면 배치 통계가 의미 없다. 이 경우 Group Norm이나 Layer Norm을 사용해야 한다.

  4. 정규화 순서 무시: Conv → BN → ReLU가 일반적이지만, 연구에 따라 Conv → ReLU → BN이 더 나은 경우도 있다. Pre-LN vs Post-LN 선택도 성능에 영향을 준다.

  5. 정규화와 정규화(regularization) 혼동: Normalization(분포 정규화)과 Regularization(과적합 방지)은 다른 개념이다. 한국어에서 모두 “정규화”로 번역되어 혼동이 잦다.