요약
**L2 정규화 (Ridge Regularization)**는 손실 함수에 가중치의 제곱합을 더해 큰 가중치에 페널티를 부여한다. 모델이 특정 feature에 과도하게 의존하는 것을 방지하여 과적합을 줄인다. Weight Decay라고도 불린다.
본문
수식
- : 정규화 강도 (하이퍼파라미터)
- : 모델의 가중치
왜 효과가 있는가?
- 큰 가중치 억제: 가중치가 클수록 페널티 증가 → 가중치가 작아지는 방향으로 학습
- 일반화 향상: 특정 feature에 과의존 방지 → 새로운 데이터에 더 잘 일반화
- 수치 안정성: 가중치가 극단적으로 커지는 것 방지
L1 vs L2 정규화
| 측면 | L1 (Lasso) | L2 (Ridge) | ||
|---|---|---|---|---|
| 페널티 | $\sum | w_i | $ | |
| 효과 | Sparse (일부 가중치 → 0) | 전체적으로 작은 가중치 | ||
| Feature selection | ✓ | ✗ | ||
| 미분 가능 | ✗ (0에서 불연속) | ✓ |
Weight Decay와의 관계
- SGD에서 L2 정규화 = Weight Decay (수학적으로 동일)
- Adam에서는 미묘하게 다름 → AdamW가 올바른 Weight Decay 구현
# PyTorch에서 L2 정규화
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-4)
# Adam 사용 시 AdamW 권장
optimizer = torch.optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)
λ 선택 가이드
| λ 값 | 효과 |
|---|---|
| 너무 작음 | 정규화 효과 미미, 과적합 가능 |
| 적절함 | 과적합 방지 + 성능 유지 |
| 너무 큼 | Underfitting, 모델이 너무 단순해짐 |
일반적으로 1e-4 ~ 1e-2 범위에서 시작하여 validation 성능으로 튜닝한다.
기하학적 해석
L2 정규화는 가중치 공간에서 원점 근처로 가중치를 당기는 힘으로 해석할 수 있다. 이는 가중치 벡터의 norm을 줄이는 효과가 있다.
참고
- L2 Norm은 벡터의 유클리드 길이를 측정한다
- 임베딩 모델의 Frozen vs Fine-tuning 전략
- L1 정규화 (Lasso)
- Dropout (다른 정규화 기법)
- Batch Normalization