KL 발산·JS 발산 계산기
두 확률분포의 KL 발산을 양쪽 방향으로 함께 내어 대칭이 아니라는 것을 눈으로 보이고, JS 발산·교차엔트로피·총변동거리까지 같이 계산합니다. 0인 칸을 위한 라플라스 평활도 넣을 수 있습니다.
쉼표·공백으로 구분 — 지금 5칸. 합이 1이 아니어도 됩니다
칸 수가 P와 같아야 합니다 — 지금 5칸
모든 칸에 α를 더한 뒤 정규화합니다. 0인 칸 때문에 무한대가 나올 때 씁니다
KL(P‖Q) — Q로 P를 설명할 때 더 드는 값
0.77524 bit
반대 방향 KL(Q‖P)는 0.67113 bit · 칸 5개
| 칸 | pᵢ | qᵢ | KL(P‖Q) 몫 | KL(Q‖P) 몫 |
|---|---|---|---|---|
| 1 | 0.3 | 0.05 | 0.77549 | -0.12925 |
| 2 | 0.25 | 0.1 | 0.33048 | -0.13219 |
| 3 | 0.2 | 0.2 | 0 | 0 |
| 4 | 0.15 | 0.3 | -0.15 | 0.3 |
| 5 | 0.1 | 0.35 | -0.18074 | 0.63257 |
M = (P+Q)/2, JSD = ½KL(P‖M) + ½KL(Q‖M) = 0.166849 bit
H(P,Q) = H(P) + KL(P‖Q) = 2.22821 + 0.77524 = 3.00345값이 도수여도 됩니다. 합으로 나누어 확률로 만든 뒤 계산합니다.
계산 방법
- 1분포 P와 Q의 값을 칸 수가 같도록 넣습니다. 도수여도 되고 확률이어도 됩니다.
- 2KL(P‖Q)와 KL(Q‖P)를 나란히 봅니다. 두 값이 다르다는 것이 이 계산기의 요점입니다.
- 30인 칸 때문에 무한대가 나오면 라플라스 평활 α를 1쯤 넣습니다.
- 4대칭인 값이 필요하면 JS 발산을, 거리로 쓰려면 √JSD를 봅니다.
자주 묻는 질문
Q를 참이라 믿고 부호화했을 때 실제 분포가 P라서 더 쓰게 되는 정보량입니다. 식은 KL(P‖Q) = Σ pᵢ·log(pᵢ/qᵢ)이고, 로그 밑이 2면 단위가 비트입니다. 두 분포가 같을 때만 0이고 그 밖에는 늘 양수입니다.
안 됩니다. 대칭이 아니고 삼각부등식도 만족하지 않기 때문입니다. KL(P‖Q)와 KL(Q‖P)는 몇 배씩 차이 나기도 하며, P=[½,½]·Q=[0.9,0.1]·R=[0.99,0.01]이면 KL(P‖R) 2.329가 KL(P‖Q)+KL(Q‖R) 0.945보다 큽니다. 그래서 정식 이름도 거리가 아니라 발산입니다.
목적이 정합니다. KL(P‖Q)를 줄이면 P가 있는 곳을 Q가 모두 덮으려 해서 Q가 넓게 퍼지고, KL(Q‖P)를 줄이면 Q가 P의 봉우리 하나에만 붙습니다. 변분추론은 대개 뒤쪽을, 최대가능도 학습은 앞쪽을 씁니다. 논문이나 코드에서 KL을 볼 때는 인자 순서를 먼저 확인하세요.
qᵢ가 0인데 pᵢ가 0이 아닌 칸이 있기 때문입니다. log(pᵢ/0)이 무한대라 합계가 통째로 발산합니다. 반대로 pᵢ가 0인 칸은 0·log0 = 0으로 세지 않습니다. 표본에서 만든 도수분포라면 0은 대개 「불가능」이 아니라 「아직 못 봤다」이므로 라플라스 평활을 씁니다.
보통 1을 씁니다. 모든 칸에 α를 더한 뒤 정규화하므로 0이던 칸도 작은 확률을 갖게 되어 무한대가 사라집니다. α를 크게 할수록 두 분포가 균등분포 쪽으로 끌려가 발산이 작아지므로, 표본이 클 때 큰 α를 쓰면 실제 차이를 지워 버립니다.
두 분포의 평균 M = (P+Q)/2를 가운데 두고 ½KL(P‖M) + ½KL(Q‖M)로 재기 때문에 대칭이고 늘 유한합니다. 밑이 2면 0 이상 1 이하로 유계이며, 겹치는 곳이 전혀 없을 때 정확히 1이 됩니다. √JSD는 삼각부등식까지 만족하는 진짜 거리입니다.
H(P,Q) = H(P) + KL(P‖Q)입니다. H(P)는 자료가 정한 상수라 학습으로 바꿀 수 없으므로, 분류 모델에서 교차엔트로피 손실을 줄이는 것과 KL(P‖Q)를 줄이는 것이 정확히 같은 일이 됩니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- KL은 대칭이 아니고 삼각부등식도 만족하지 않아 거리가 아닙니다. 두 방향을 모두 냅니다.
- qᵢ가 0인데 pᵢ가 0이 아니면 KL이 무한대가 됩니다. 평활 α로 피할 수 있습니다.
- pᵢ가 0인 칸은 0·log0 = 0으로 세지 않습니다.
- 값이 도수여도 됩니다. 합으로 나누어 확률로 만든 뒤 계산합니다.
- JS 발산은 밑이 2일 때만 0~1로 유계입니다.
- 두 분포의 칸이 같은 사건에 대응해야 뜻이 있습니다. 순서를 맞춰 넣으세요.
- 칸은 200개까지 다룹니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.