
Group Normalization
81번 RMSNorm 은 행 전체를 한 덩어리로 정규화. GroupNorm (Wu & He 2018) 은 중간 선택지 — 채널을 G 개 그룹 으로 쪼개 그룹 내에서만 정규화:
- G=1 → LayerNorm (전체 feature 한 그룹)
- G=D → InstanceNorm (채널 하나당 그룹)
- 중간값 (예: G=32) → GroupNorm
수식
x∈RN×D, D=G⋅Cg (Cg = 그룹 당 채널 수):
- reshape: (N,D)→(N,G,Cg)
- 각 (n,g) 에 대해 last axis 로 μ,σ2
- 정규화: x^=(x−μ)/σ2+ϵ
- reshape back: (N,G,Cg)→(N,D)
- affine: y=γx+β, γ,β shape (D,)
왜 좋은가
- 배치 크기 독립: 객체 검출, 세그멘테이션 (N 작음) 에서 BatchNorm 불안정 → GroupNorm 으로 대체.
- LayerNorm 과 BatchNorm 사이 의 적절한 trade-off.
과제
함수 group_norm(x, gamma, beta, num_groups, eps) 를 완성하세요.
x shape (N, D), D % num_groups == 0 가정.
gamma, beta shape (D,).
- 반환:
(N, D).
- 힌트: reshape 로 그룹 만들기, axis=-1 평균/분산.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | G=1 → LayerNorm과 일치 | |
| 2 | G=D → InstanceNorm (각 원소 × -> 독립) | |
| 3 | shape 유지 | |
| 4 | γ, β 적용 | |
| 5 | 그룹 내 평균 ≈ 0 (γ=1, β=0) | |