
Jensen-Shannon Divergence [medium]
v1 KL 의 단점:
- 비대칭: DKL(p∥q)=DKL(q∥p) — "거리" 라 부를 수 없음.
- 무한대 위험: qi=0,pi>0 이면 ∞.
Jensen-Shannon Divergence 가 이 둘을 해결:
JSD(p,q)=21DKL(p∥m)+21DKL(q∥m),m=2p+q
성질
| JSD |
|---|
| 대칭 | ✅ JSD(p,q)=JSD(q,p) |
| 유계 (log₂ base) | ✅ JSD∈[0,1] |
| 유한 (0 있어도) | ✅ mi 는 p 또는 q 가 양수면 양수 |
| JSD 은 metric | ✅ 삼각부등식 만족 |
| JSD=0⟺p=q | ✅ |
활용
- GAN 의 원 논문 (Goodfellow 2014) 의 이론적 근거.
- 문서 유사도 (probability distributions over topics).
- 분포 간 거리 계산 전반.
과제
함수 js_divergence(p, q) 를 완성하세요.
p, q: 1D 확률 배열 (합 ≈ 1 가정).
- 반환: Python
float, 비트 단위.
- m=(p+q)/2 에서 mi>0 항만 계산.
- pi=0 또는 qi=0 인 경우도
NaN/inf 없이 유한해야 (by mi>0 조건).
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | JSD(p, p) = 0 | |
| 2 | 대칭: JSD(p, q) = JSD(q, p) | |
| 3 | 유계 [0, 1] (log₂) | |
| 4 | JSD([1,0,0], [0,1,0]) = 1 (max, 상호 배타) | |
| 5 | q 에 0 있어도 finite (0 에 의한 항 건너뛰기) | |
| 6 | JSD 삼각부등식 (metric) | |
| 7 | scipy jensenshannon(p, q, base=2) ^2 과 일치 | |