Batch Normalization(BN)과 Layer Normalization(LN)은 모두 딥러닝에서 학습을 안정화하고 빠르게 하기 위한 정규화 기법이지만, 작동 방식과 사용 목적에 차이가 있어요.
항목 | Batch Normalization | Layer Normalization |
---|---|---|
정규화 대상 | 배치(batch) 단위의 feature별 통계 | 레이어(layer) 단위의 feature 전체 통계 |
계산 축 | (N, C, H, W)에서 N (batch axis)을 기준 | 각 샘플별로 feature 전체 (C, H, W 포함) |
예시로, 입력이 (batch_size, features)
일 때:
항목 | Batch Normalization | Layer Normalization |
---|---|---|
사용 위치 | CNN, 이미지 처리 등에서 많이 사용 | RNN, NLP 등에서 많이 사용 |
배치 크기 | 큰 배치에 적합 | 작은 배치나 배치 사이즈가 1인 경우도 안정적 |
입력 데이터 (2개의 샘플, 각 샘플은 3차원 벡터):
x1 = [1.0, 2.0, 3.0]
x2 = [4.0, 5.0, 6.0]
전체 배치:
1번 feature: [1.0, 4.0] → 평균 2.5, 표준편차 1.5
2번 feature: [2.0, 5.0] → 평균 3.5, 표준편차 1.5
3번 feature: [3.0, 6.0] → 평균 4.5, 표준편차 1.5
x1_BN = [(1.0-2.5)/1.5, (2.0-3.5)/1.5, (3.0-4.5)/1.5] = [-1.0, -1.0, -1.0]
x2_BN = [(4.0-2.5)/1.5, (5.0-3.5)/1.5, (6.0-4.5)/1.5] = [1.0, 1.0, 1.0]
x1 평균: (1+2+3)/3 = 2.0, 표준편차 = 0.816
x2 평균: (4+5+6)/3 = 5.0, 표준편차 = 0.816
x1_LN = [(1-2)/0.816, (2-2)/0.816, (3-2)/0.816] = [-1.22, 0.0, 1.22]
x2_LN = [(4-5)/0.816, (5-5)/0.816, (6-5)/0.816] = [-1.22, 0.0, 1.22]