KL·젠슨-섀넌 발산 계산기 쉽게 이해하기 — 개념과 원리
쿨백-라이블러(KL) 발산은 한 확률분포가 다른 확률분포와 얼마나 다른지를 재는 값이고, 젠슨-섀넌(JS) 발산은 이를 대칭적이고 범위가 정해지도록 바꾼 값입니다. 모델의 예측 분포와 관측 자료를 비교할 때, 학습 데이터와 운영 데이터 사이의 분포 변화를 감지할 때, 생성 모델을 학습할 때 등 정보 이론 전반에서 씁니다. 같은 범주에 대한 확률(또는 개수) 두 목록을 같은 순서로 입력합니다.
계산 방법
- 먼저 각 목록을 합계로 나누어 합이 1이 되도록 정규화합니다.
- KL(P‖Q) = Σ pᵢ log₂(pᵢ ÷ qᵢ) (pᵢ = 0인 항은 건너뜁니다)
- KL(Q‖P) = Σ qᵢ log₂(qᵢ ÷ pᵢ)
- JS(P, Q) = ½ KL(P‖M) + ½ KL(Q‖M), 여기서 M = (P + Q) ÷ 2
밑이 2인 로그를 쓰므로 단위는 비트입니다.
원리
KL(P‖Q)는 실제로는 P를 따르는 자료를 Q에 맞춘 부호로 표현할 때 평균적으로 더 드는 비트 수입니다. 깁스 부등식에 따라 항상 0 이상이며, 두 분포가 같을 때만 0입니다. 다만 대칭이 아니고, P에서 일어날 수 있는 일에 Q가 확률 0을 주면 무한대가 되므로 진정한 거리는 아닙니다. JS는 두 분포를 각각 평균 분포와 비교해 이 두 문제를 해결합니다. 비트 단위의 JS는 항상 0과 1 사이이며, 그 제곱근은 거리의 성질을 만족합니다.
예제 풀이
- P = (0.4, 0.4, 0.2), Q = (0.3, 0.5, 0.2)는 이미 합이 1입니다.
- KL(P‖Q) = 0.4 log₂(4/3) + 0.4 log₂(0.8) + 0.2 log₂(1) = 0.16601 − 0.12877 + 0 = 0.03724비트입니다.
- KL(Q‖P) = 0.3 log₂(0.75) + 0.5 log₂(1.25) + 0 = 0.03645비트로, 방향에 따라 값이 조금 다릅니다.
- M = (0.35, 0.45, 0.2)이고 JS = ½ KL(P‖M) + ½ KL(Q‖M) = 0.00919비트입니다.
결과 해석
0에 가까울수록 두 분포가 거의 같습니다. 보편적인 기준값은 없으므로, 정상이라고 알고 있는 자료 묶음끼리 비교했을 때 나오는 값을 기준으로 삼는 것이 좋습니다. KL(P‖Q)는 P는 큰데 Q가 작은 곳을 특히 크게 벌합니다. 대칭이고 0~1 범위로 고정된 값이 필요하면 JS를 보고하시기 바랍니다.
흔한 실수
- P와 Q의 범주 순서를 다르게 입력하는 경우
- P에는 있는데 Q가 0인 범주가 있을 때 KL을 써서 무한대가 나오는 경우
- 비트(log₂)와 내트(자연로그)를 섞는 경우(1내트 ≈ 1.4427비트)
자주 묻는 질문
KL 발산은 거리인가요?
아닙니다. 대칭이 아니고 삼각 부등식도 성립하지 않습니다. JS 발산의 제곱근은 거리 조건을 만족합니다.
교차 엔트로피와는 어떤 관계인가요?
H(P, Q) = H(P) + KL(P‖Q)이므로, P가 고정되어 있으면 교차 엔트로피를 줄이는 것이 곧 KL을 줄이는 것입니다.
개수를 그대로 넣어도 되나요?
네. 계산기가 각 목록을 정규화하므로 개수는 자동으로 비율로 바뀝니다.
출처: S. Kullback and R. A. Leibler, On information and sufficiency, Annals of Mathematical Statistics, 1951 · J. Lin, Divergence measures based on the Shannon entropy, IEEE Transactions on Information Theory, 1991