Layer Normalization (레이어 정규화) 설명
Layer Normalization은 딥러닝 모델, 특히 Transformer에서 아주 중요한 역할을 합니다.
1. Layer Normalization이란?
레이어 정규화는 각 데이터 포인트(토큰) 안의 모든 특성(feature)을 정규화(normalize)하는 기법입니다.
예시
- 어떤 토큰이 512차원의 벡터로 표현되어 있다고 하면,
그 512개의 값에 대해서 평균과 표준편차를 계산해서 정규화합니다.
2. 왜 필요한가요?
- 모델이 깊어질수록 값의 분포가 불안정해지기 쉽습니다. (예: gradient vanishing or exploding)
- 정규화를 통해 학습이 더 빠르고 안정적으로 진행될 수 있게 도와줍니다.
3. 어떻게 계산하나요?
다음은 하나의 벡터 x=[x1,x2,...,xd]에 대해 LayerNorm을 적용하는 수식입니다:
μ=d1i=1∑dxi
σ=d1i=1∑d(xi−μ)2
LayerNorm(x)=γ⋅σ+ϵ(x−μ)+β
- μ, σ: 평균과 표준편차
- γ, β: 학습 가능한 파라미터 (스케일과 쉬프트)
- ϵ: 숫자가 0으로 나누어지는 걸 방지하기 위한 아주 작은 값
4. BatchNorm과의 차이점
항목 | Batch Normalization | Layer Normalization |
---|
기준 | 배치(batch) 전체 | 한 개의 토큰 기준 |
적용 위치 | CNN, 일반 MLP 등 | RNN, Transformer 등 |
장점 | 통계적으로 안정적 | 배치 크기에 영향 안 받음 |
Transformers에서는 항상 LayerNorm을 사용합니다. 왜냐하면 문장마다 길이가 다르고, 배치마다 시퀀스가 다양하기 때문입니다.