← 문제 목록/Group Normalization [medium]
문제 해설

Group Normalization [medium]

정규화 · medium

preview

Group Normalization [medium]

v1 RMSNorm 은 마지막 축 전체로 정규화. GroupNorm (Wu & He 2018) 은 채널을 G 개 그룹으로 나눠 그룹 내부에서 정규화:

Norm정규화 축배치 크기 의존
BatchNorm(N, H, W) per channelO (유리/불리)
LayerNorm(C, H, W) per sampleX
InstanceNorm(H, W) per (sample, channel)X
GroupNorm(C/G, H, W) per (sample, group)X

GroupNorm 은 LayerNorm 과 InstanceNorm 사이에 있음:

  • G=1G = 1 → LayerNorm (전체 채널 한 그룹).
  • G=CG = C → InstanceNorm (각 채널 단독 그룹).
  • 일반적 G=32G = 32.

수식

입력 xx shape (N, C, H, W), GG 그룹 (CCGG 의 배수 가정):

  1. Reshape: (N, G, C/G, H, W).
  2. (n, g) 에 대해 평균 μ\mu 와 분산 σ2\sigma^2 계산 (마지막 세 축).
  3. 정규화: x^=(xμ)/σ2+ϵ\hat{x} = (x - \mu) / \sqrt{\sigma^2 + \epsilon}.
  4. Reshape back: (N, C, H, W).
  5. 채널별 affine: y=x^γ+βy = \hat{x} \cdot \gamma + \beta (γ, β shape (C,)).

왜 GroupNorm?

  • 작은 배치 (batch=1) 에서도 안정 — object detection, segmentation 에 유리.
  • BatchNorm 의 running stats 필요 없음.
  • ResNeXt, Detectron, EfficientNet 등에서 사용.

과제

함수 group_norm(x, gamma, beta, num_groups, eps) 를 완성하세요.

  • x shape (N, C, H, W).
  • gamma, beta shape (C,).
  • num_groups: GG, CC 를 나눠야 함.
  • 반환: (N, C, H, W).

테스트 케이스

#이름검증
1shape 유지
2γ=1, β=0: 각 (n, g) 의 정규화된 값 평균 0, 분산 1
3G=1 → LayerNorm (전체 채널 공유)
4G=C → InstanceNorm (각 채널 독립)
5γ, β 채널별 affine
6상수 입력 → NaN 없음 (eps)
7torch F.group_norm 과 일치
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.