토니의 연습장

LayerNorm 과 BatchNorm 본문

AI 일반/모델, 아키텍처, 구현

LayerNorm 과 BatchNorm

bellmake 2025. 5. 28. 15:38

요약

  • BatchNorm: 배치 전체 통계 기반, CNN에 특화, 큰 배치에서 최고의 성능
  • LayerNorm: 샘플별 통계 기반, 시퀀스·토큰 모델에 필수, 작은 배치에도 안정
  1. 이미지 분류·객체 검출(CNN 계열)
    • 배치 크기가 충분하다면 → BatchNorm
    • 배치가 매우 작거나 온라인 추론 위주라면 → GroupNorm 또는 LayerNorm 고려
  2. 자연어 처리·시퀀스 모델
    • Transformer, RNN 계열 → LayerNorm
    • 특히 auto-regressive 생성(decoding) 시 causal 구조와 잘 맞음
  3. 일반 MLP
    • 배치 독립성이 필요하면 → LayerNorm
    • 배치 통계가 풍부하면 → BatchNorm

 


왜 LayerNorm을 쓰는가?

  • 배치 크기 독립성
    • BatchNorm은 배치 전체의 통계량을 사용하지만, LayerNorm은 각 샘플별로 통계량을 계산합니다.
    • 작은 배치나 배치 크기가 1인 상황에서도 안정적으로 동작
  • 순차 모델·Transformer에 적합
    • RNN, Transformer 같은 시퀀스 모델에서는 시퀀스 길이에 따라 배치 크기가 달라지거나, 인퍼런스 시 단일 토큰씩 처리할 때도 일관된 정규화가 필요
  • 내부 공변량 변화(Internal Covariate Shift) 억제
    • 각 레이어의 입력 분포 변화가 커지면 학습이 불안정해지는데, LayerNorm은 활성값 분포를 일정하게 유지시켜 학습 속도를 높이고 안정성을 개선
  • 그레디언트 흐름 개선
    • 깊은 네트워크에서도 기울기 소실(vanishing)이나 폭주(exploding)를 다소 완화

언제 쓰이나?

  • Transformer의 각 서브레이어(어텐션, 피드포워드) 직후
  • RNN/LSTM/GRU 같은 순환신경망(RNN) 내부
  • MLP 등 일반 피드포워드 네트워크에서도, 배치 의존성을 줄이고 싶을 때

이처럼 LayerNorm은 배치 크기나 시퀀스 길이에 관계없이 개별 샘플의 임베딩 전체 분포를 정규화하여, 딥러닝 모델의 안정적이고 빠른 수렴을 돕는 핵심 기법입니다.

정규화 축(axis) 배치(batch) 차원 + 공간(spatial) 차원(보통 CNN의 채널별) 마지막(feature) 차원(각 샘플별 임베딩 전체)
통계 사용 범위 Mini-batch 전체의 평균·분산 각 샘플(인스턴스) 내부의 평균·분산
배치 의존성 O (배치 크기·분포에 민감) X (배치 크기에 상관없이 동작)
학습 중 파라미터 γ, β (채널별) γ, β (임베딩 차원별)
추론 모드 학습 시 축적한 이동 평균·분산 사용 학습과 동일하게 각 샘플에서 계산
주요 용도 이미지 분류·객체 검출 등 CNN 계열 Transformer, RNN/LSTM, MLP 등 순차·토큰 모델
장점 • 강력한 일반화 효과
• 훈련 속도↑
• 작은 배치나 배치 크기=1에서도 안정
• 시퀀스 모델에 적합
단점 • 배치 크기 작으면 통계 불안정
• 순차 처리 모델에 부적합
• 배치 전체 통계 활용 못 함
• 공간적 정규화 불가

 

 

BatchNorm vs LayerNorm

1. BatchNorm

  • 어디서 쓰나?
    • 주로 CNN(Convolutional Neural Network)의 각 채널(feature map)별로, 배치 전체에서 평균·분산을 계산해 정규화.
    • 예: nn.BatchNorm2d, nn.BatchNorm1d 등.
  • 장점
    • 배치 단위 통계가 풍부할 때 매우 강력한 정규화 효과
    • 내부 공변량 변화(Internal Covariate Shift) 억제
    • 큰 배치에서는 빠른 수렴 및 일반화 성능 향상
  • 주의
    • 작은 배치(예: batch size=1)나 온라인 추론(한 샘플씩 처리) 시 통계가 부정확 → 성능 저하
    • 순차적 생성(auto-regressive decoding) 모델에 바로 쓰기 어려움

2. LayerNorm

  • 어디서 쓰나?
    • Transformer, RNN/LSTM 같은 시퀀스 모델의 토큰 임베딩이나 MLP 레이어 후에 사용
    • nn.LayerNorm 으로 구현
  • 장점
    • 배치 크기에 독립적 → 작은 배치나 1샘플씩 처리해도 안정적
    • 시퀀스 길이에 관계없이 동일한 정규화
    • Residual 구조와 결합 시 학습 안정성 향상
  • 주의
    • 배치 전체 통계 활용 못 하므로, CNN의 공간적 정보 정규화에는 적합하지 않음
    • 배치 단위 통계가 풍부할 때 BatchNorm만큼 극적인 성능 향상을 기대하기 어려움

'AI 일반 > 모델, 아키텍처, 구현' 카테고리의 다른 글

Transformer vs LLaMA 모델 비교  (0) 2025.06.17
pytorch 구현함수 내부  (0) 2025.06.17
causal mask  (1) 2025.05.28
Model workflow  (1) 2025.01.14
loss 값 저장 및 출력  (7) 2025.01.14