1. 개요[편집]
| 젠센-섀넌 발산 Jensen–Shannon Divergence | |
|---|---|
| 약칭 | JSD, JS 발산 |
| 대칭성 | 대칭 |
| 값의 범위 | 0 이상 ln 2 이하(nat) = 1 bit 이하 |
| 거리인가 | 제곱근이 진짜 거리(metric) |
| 주요 무대 | GAN, 문서 유사도, 계통수, 드리프트 감지 |
젠센-섀넌 발산(Jensen–Shannon divergence, JSD)은 두 확률분포 , 를 일단 반반 섞은 중간분포 을 만든 뒤, 양쪽에서 까지의 쿨백-라이블러 발산을 평균한 값이다.
KL은 쓸모가 많지만 실무에서 사람을 두 번 배신한다. 비대칭이라 와 중 무엇을 보고했는지 명시하지 않으면 표가 무의미해지고, 의 지지집합 밖에서 무한대라 히스토그램 빈 칸 하나에 값이 폭발한다. JSD는 중간분포를 끼워 넣는 것 하나로 두 문제를 동시에 잡는다. 대칭이고, 항상 유한하고, 심지어 위로 유계다.
2. 유계성과 기본 성질[편집]
은 와 를 반반 섞었으므로 이고 다. 로그를 씌우면 각 항이 를 넘을 수 없고, 따라서
가 즉시 나온다. 하한의 등호는 , 상한의 등호는 두 분포의 지지집합이 서로 겹치지 않을 때다. 이 상한의 존재가 실무에서 결정적이다. KL이 로 튀어 나가는 상황(모형이 관측된 사건에 확률 0을 준 경우)에서도 JSD는 조용히 를 반환한다. NaN이 안 뜨는 대신, 나중에 볼 GAN의 기울기 소실이라는 청구서가 따라온다.
엔트로피로 다시 쓰면 구조가 더 선명하다.
즉 섞은 다음의 엔트로피에서 섞기 전 엔트로피의 평균을 뺀 값이고, 엔트로피가 오목함수라 이 값이 항상 0 이상이라는 것이 젠센 부등식의 직접적 귀결이다. 이름 앞에 젠센이 붙은 이유가 바로 이 젠센 간극(Jensen gap) 구조다.
3. 제곱근은 진짜 거리다[편집]
KL과 결정적으로 갈리는 지점. 는 비음수성·대칭성·동일성뿐 아니라 삼각부등식까지 만족한다.
이를 젠센-섀넌 거리(Jensen–Shannon distance)라 부르며, 엔드레스-쉰델린(2003)과 외스터라이허-바이다(2003)가 각각 증명했다. JSD 자체는 삼각부등식을 만족하지 않으므로 제곱근을 씌우는 것이 필수다 — 유클리드 공간에서 거리의 제곱이 거리가 아닌 것과 같은 사정이다.
이게 왜 중요하냐면, 진짜 거리라야 쓸 수 있는 도구가 통째로 열리기 때문이다. 계층적 군집화, -메도이드, 거리 기반 임베딩, 최근접이웃 색인은 전부 삼각부등식을 전제로 가지치기를 한다. KL 행렬을 넣으면 비대칭 때문에 애초에 입력 형식이 안 맞고, 대칭화만 해도 삼각부등식이 없어 가지치기가 틀린 답을 낸다.
4. 상호정보로 읽기, 그리고 일반화[편집]
베르누이 라벨 를 도입하자. 이면 에서, 이면 에서 표본 를 뽑는다고 하고 이라 하면, 의 주변분포는 정확히 이고
가 된다. 해석이 아주 직관적이다. 표본 하나를 보고 그게 어느 쪽에서 나왔는지 알아낼 수 있는 정보량. 두 분포가 같으면 아무 단서도 없으니 0, 지지집합이 완전히 분리되면 한 번만 봐도 확실히 알 수 있으니 1비트. 상한 의 정체가 “라벨 하나의 엔트로피”였던 것이다. 이 표현은 동시에 JSD가 이진 분류기의 성능 상한과 직결된다는 뜻이기도 하다 — GAN의 판별자 이야기가 여기서 시작된다.
일반화도 자연스럽다. 가중치 와 분포 여러 개에 대해
로 두면 되고, 균등 가중이면 상한이 로 늘어난다. 라벨 가 값을 갖는 상호정보라 생각하면 상한의 정체도 그대로다. 유전체학에서 여러 집단의 염기 조성을 한꺼번에 비교하거나, 앙상블 멤버들의 예측 분포가 얼마나 갈라졌는지(“불일치도”)를 재는 데 이 형태가 쓰인다.
5. GAN — 성공과 실패의 같은 원인[편집]
Goodfellow(2014)가 제안한 생성적 적대 신경망의 원래 목적함수에서, 생성자 를 고정하면 최적 판별자는
이다. 이걸 목적함수에 도로 집어넣으면 생성자가 최소화하고 있는 것이 무엇인지 정체가 드러난다.
전역 최소는 일 때 . GAN 학습은 최적 판별자 가정 아래 JSD 최소화라는 이 한 줄이 원논문의 이론적 핵심이었다.
그런데 같은 식이 GAN이 왜 그렇게 안 도는지도 설명한다. 자연 이미지는 고차원 공간의 저차원 다양체 근처에 놓여 있고, 생성자의 출력도 마찬가지다. 두 다양체가 겹칠 확률은 사실상 0이다. 지지집합이 겹치지 않으면 앞서 본 대로 로 포화되고, 상수함수의 기울기는 0이다. 판별자가 잘 학습될수록 생성자에게 갈 신호가 사라지는 유명한 역설이 여기서 나온다. 학습 초기에 판별자를 일부러 덜 학습시키거나 비포화(non-saturating) 손실로 갈아타는 실무 요령은 전부 이 포화를 피하려는 임시방편이다.
근본 처방은 척도 자체를 바꾸는 것이었다. Wasserstein GAN(2017)이 바서슈타인 거리를 도입한 이유가 정확히 이것 — 최적수송 기반 거리는 지지집합이 안 겹쳐도 “얼마나 멀리 떨어져 있는지”에 따라 값이 연속적으로 변해서 기울기가 살아 있다. JSD의 유계성은 수치적으로는 축복이고 최적화적으로는 저주라는 것이 이 사건의 교훈이다.1
6. 실무에서의 쓰임[편집]
- 문서·군집 유사도. 텍스트를 단어 분포로 보고 JSD를 재는 것은 토픽 모델링 이전부터의 고전이다. 코사인 유사도와 달리 확률 해석이 있고, 제곱근이 거리라 군집화에 그대로 꽂을 수 있다.
- 계통수와 미생물 군집. 염기·유전자 조성 분포를 종 사이에서 비교할 때 JSD 거리 행렬로 계통수를 세우는 방식이 널리 쓰인다. 빈도 0인 항목이 흔한 데이터에서 KL이 못 버티는 반면 JSD는 멀쩡하다는 실용적 이유가 크다.
- 분포 드리프트 감지. 배포된 모형의 입력 분포가 학습 시점과 얼마나 달라졌는지 모니터링할 때, 유계라는 성질 덕에 “0.15 넘으면 경보” 같은 절대 임계값을 정할 수 있다. KL로는 임계값을 못 정한다 — 위가 열려 있어서다.
- 변분 추론과의 관계. ELBO는 어디까지나 역방향 KL을 쓰며, JSD로 갈아끼우면 증거 하한 구조가 깨져서 그 자리를 대체하지는 못한다. 다만 JSD 최소화를 목표로 하는 대립적 변분 베이즈(adversarial VB) 계열이 있고, 이들은 밀도비를 판별자로 추정한다는 점에서 GAN과 같은 계보다.2
- 주의점. 표본에서 추정할 때는 여전히 이산화·평활의 함정이 있다. 값이 유한할 뿐, 빈 폭을 바꾸면 숫자가 흔들린다는 사실은 KL과 다르지 않다. 로그 밑을 2로 썼는지 로 썼는지도 반드시 명시해야 한다 — 같은 데이터가 0.693이 되기도 하고 1.0이 되기도 한다.3
7. 관련 문서[편집]
- 쿨백-라이블러 발산 · 젠센 부등식
- 피셔 정보 · 정보 기하
- 변분 추론 · 최대우도추정
- 심층 학습 · 경사하강법
- 가우시안 혼합 모형 · 통계
- 교차 엔트로피 방법 · 총변동거리
8. Footnotes[편집]
-
그래서 “GAN이 안 되면 일단 판별자를 약하게”라는 조언이 몇 년 동안 커뮤니티의 국룰이었다. 이론적으로 최적인 판별자가 실전에서는 학습을 죽인다는 사실은, 목적함수를 유도할 때 쓴 가정이 정작 최적화 동역학을 설명하지 못하는 대표적 사례로 남았다. ↩
-
판별자로 밀도비 를 추정한다는 발상 자체는 GAN보다 훨씬 오래된 밀도비 추정(density ratio estimation) 문헌에 있다. 이 바닥에서 “새 아이디어”는 대개 30년 전 논문의 재발견이거나 GPU가 생겨서 드디어 돌아가게 된 옛 아이디어다. ↩
-
라이브러리마다 기본 밑이 다르다는 것도 함정이다. 어떤 구현은 JSD를, 어떤 구현은 그 제곱근인 JS 거리를 반환한다. 값이 대충 절반쯤 이상해 보이면 계산이 틀린 게 아니라 함수를 잘못 부른 것일 확률이 높다. ↩