LLM 관련 논문을 읽다 보면
KL Divergence와 Jensen–Shannon Divergence(JSD)가 자주 등장한다.
둘 다 “분포 비교”라고 설명되지만, 실제로는 쓰이는 목적과 의미가 꽤 다르다.
이 글에서는
KL Divergence는 다음 질문에 답한다.
“진짜 분포가 P일 때,
내가 Q를 믿고 행동하면
얼마나 정보 손실이 생기는가?”
수식은 다음과 같다.
즉, KL은
“Q가 P를 얼마나 잘 따라가고 있는가”
를 보는 지표다.
JSD는 KL을 기반으로 하지만, 질문 자체가 다르다.
“P와 Q는 서로 얼마나 다른 생각을 하고 있는가?”
즉, JSD는
“누가 기준이냐”보다
“얼마나 다르냐”에 초점이 있다.
| 구분 | KL | JSD |
|---|---|---|
| 관점 | 근사 오차 | 분포 차이 |
| 대칭성 | ❌ | ✅ |
| 기준 분포 | 필요 | 불필요 |
| 주 용도 | 학습, 정규화 | 분석, 비교 |
| 안정성 | 낮음 | 높음 |
👉 이 차이 때문에 논문에서 두 지표가 동시에 등장한다.
중요한 포인트 하나:
❗ KL은 ‘임베딩’을 비교하지 않는다.
KL은 오직 ‘확률 분포’만 비교한다.
그래서 LLM에서 KL은 보통 다음 지점에서만 사용된다.
모두 softmax 이후 확률 분포다.
👉 공통점은 하나:
확률이 명시적으로 정의된 지점
자주 생기는 오해:
“임베딩끼리 비교하는 것도 분포 비교 아닌가?”
❌ 아니다
KL / JSD는 임베딩에 직접 쓸 수 없다.
최근 읽은 논문 (Watermarking for Factuality: Guiding Vision-Language Models Toward Truth)에서는 레이어 간 next-token 분포 차이를 분석한다.
여기서 질문은 이거다:
“이 레이어가 최종 레이어를 얼마나 잘 흉내 내는가?” ❌
“이 레이어와 최종 레이어는
생각 방식이 얼마나 다른가?” ⭕
이건 근사 문제가 아니라 비교 문제다.
그래서:
KL은 ‘누가 누구를 얼마나 못 따라가나’를 재고,
JSD는 ‘서로 얼마나 다른 생각을 하나’를 잰다.
이 구분만 명확해도 논문에서 지표 선택 이유가 훨씬 잘 보인다.
KL과 JSD는 둘 다 “분포 비교”지만, 질문 자체가 다르다.
LLM 논문에서
이렇게 읽으면 논문이 훨씬 명확해진다.