요약
L2 Norm은 벡터의 "길이"를 측정하는 방법으로, **유클리드 거리(Euclidean distance)**라고도 한다. 피타고라스 정리의 n차원 확장이다.
본문
정의
벡터 에 대해:
예시
x = (3, 4)
||x||₂ = √(3² + 4²) = √(9 + 16) = √25 = 5
Norm의 종류
| Norm | 공식 | 특징 |
|---|---|---|
| L1 (Manhattan) | $\sum | x_i |
| L2 (Euclidean) | 기하학적 거리 | |
| L∞ (Max) | $\max | x_i |
| Lp (일반화) | $(\sum | x_i |
주요 용도
1. 벡터 정규화 (Unit Vector)
x_normalized = x / np.linalg.norm(x, ord=2)
# 결과: ||x_normalized||₂ = 1
2. 유사도 측정
- 두 벡터 간 거리:
- 임베딩 벡터 비교, KNN 등에서 사용
3. 머신러닝 정규화
- L2 Regularization: 손실 함수에 추가
- 가중치가 커지는 것을 방지
4. Gradient Clipping
# gradient의 L2 norm이 max_norm을 넘으면 스케일 다운
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
L1 vs L2 Norm 기하학적 해석
L1: 마름모 형태 (축을 따라 이동)
L2: 원 형태 (직선 거리)
- L1 = 맨해튼 거리 (격자 도로)
- L2 = 직선 거리 (새가 나는 거리)
코드
import numpy as np
x = np.array([3, 4])
# L2 Norm 계산
l2_norm = np.linalg.norm(x, ord=2) # 5.0
l2_norm = np.sqrt(np.sum(x**2)) # 동일
# 단위 벡터 변환
unit_vector = x / l2_norm # [0.6, 0.8]
참고
- L2 정규화는 가중치 크기에 페널티를 부여해 과적합을 방지한다
- Frobenius Norm: 행렬에 대한 L2 Norm 확장
- Cosine Similarity: 정규화된 벡터의 내적