엔트로피에서 크로스엔트로피까지 - (5) KL Divergence: 정보 이론의 핵심 거리 척도
들어가며
정보 이론과 통계학의 발전 과정에서 "두 확률 분포가 얼마나 다른가?" 라는 근본적인 질문에 대한 답을 찾기 위한 노력이 지속되었습니다. 1951년, 솔로몬 쿨백 (Solomon Kullback) 과 리처드 라이블러 (Richard Leibler)는 두 확률 분포 사이의 상대 엔트로피 (relative entropy), 즉 KL Divergence 를 제안하여 이 질문에 대한 획기적인 해답을 제시했습니다.
KL Divergence 는 두 확률 분포 $P$ 와 $Q$ 의 차이를 측정하는 정보 이론적 척도입니다. $P$ 를 "기준 분포" 또는 "참 분포", $Q$ 를 "근사 분포" 또는 "모델 분포" 라고 할 때, $D_{KL}(P||Q)$ 는 $Q$ 로 $P$ 를 근사할 때 발생하는 정보량 손실, 또는 $P$ 와 $Q$ 의 "거리" 를 나타냅니다.
시대적 배경: 새로운 측정 방법의 필요성 - 확률 분포 비교의 어려움
당시 통계학자들은 확률 분포를 비교하고 그 차이를 정량화하는 데 어려움을 겪고 있었습니다. 단순한 차이 계산이나 유클리드 거리 (Euclidean distance) 와 같은 기존의 거리 척도는 확률 분포의 특성을 제대로 반영하지 못하고, 정보 이론적 의미를 담기도 어려웠습니다.
동전 던지기 실험을 예로 들어 보겠습니다.
- 공정한 동전의 이상적인 확률 분포: $Q = [앞면: 0.5, \text{ 뒷면: } 0.5]$
- 실제 관측된 확률 분포: $P = [앞면: 0.6, \text{ 뒷면: } 0.4]$
이 두 분포가 얼마나 다를까요? 단순한 차이 계산 $|0.6 - 0.5| + |0.4 - 0.5| = 0.2$ 는 두 분포의 차이를 수치화하는 간단한 방법이지만, 다음과 같은 문제점을 안고 있습니다.
- 확률의 독립성 무시: 확률 분포는 각 사건의 확률 값뿐만 아니라, 사건들 사이의 관계 (독립성, 종속성) 를 포함하는 복합적인 정보입니다. 단순 차이 계산은 이러한 확률 분포의 구조적 정보를 간과합니다.
- 정보 이론적 의미 부재: 단순 차이 값은 정보량, 엔트로피 등 정보 이론적 개념과 직접적인 연관성을 갖지 않습니다. 확률 분포의 차이를 정보량 손실, 비트 수 증가 등 정보 이론적 관점에서 해석하기 어렵습니다.
- 확률 분포 특성 미반영: 확률 분포는 비선형적인 특성을 가질 수 있습니다. 예를 들어, 확률 값이 0에 가까워질수록 정보량은 급격히 증가합니다. 단순 차이 계산은 이러한 비선형성을 제대로 반영하지 못하고, 확률 분포의 미묘한 차이를 감지하기 어려울 수 있습니다.
섀넌의 영감: 정보량에서 시작된 아이디어 - 상대적 정보량 개념 도입
쿨백과 라이블러는 1948년 섀넌이 제안한 정보량 개념에서 영감을 받아, 두 확률 분포 간의 차이를 정의하는 새로운 방법을 고안했습니다. 섀넌의 정보량 $-\log_2 p(x_i)$ 는 사건 $x_i$ 가 갖는 "절대적인" 정보량 을 나타냅니다. 쿨백과 라이블러는 이를 확장하여 분포 $Q$ 를 기준으로 분포 $P$ 의 사건 $x_i$ 가 갖는 "상대적인" 정보량 을 다음과 같이 정의했습니다.
$$
\log_2 \frac{p(x_i)}{q(x_i)} = \log_2 p(x_i) - \log_2 q(x_i)
$$
이 값은 분포 $Q$ 를 "기대" 또는 "기준" 으로 삼았을 때, 실제 분포 $P$ 의 사건 $x_i$ 가 얼마나 "예상 밖" 인지를 나타냅니다. 만약 $p(x_i) = q(x_i)$ 라면, 상대적 정보량은 0 이 됩니다. $p(x_i) > q(x_i)$ 라면, 사건 $x_i$ 는 $Q$ 에 비해 $P$ 에서 더 자주 발생하므로, 양의 상대적 정보량을 가집니다.
반대로 $p(x_i) < q(x_i)$ 라면, 음의 상대적 정보량을 가집니다.
KL Divergence 는 이러한 상대적 정보량을 분포 $P$ 에 대해 평균화 (expected value) 한 값으로 정의됩니다.
$$
D_{KL}(P||Q) = \sum_{i} p(x_i) \log_2 \frac{p(x_i)}{q(x_i)}
$$
수식의 각 부분 의미 심층 분석:
- 확률의 비율 $\frac{p(x_i)}{q(x_i)}$ 사용 이유 (상대적 정보량 측정): 단순한 확률 값의 차이 $p(x_i) - q(x_i)$ 가 아닌, 확률의 비율 $\frac{p(x_i)}{q(x_i)}$ 를 사용하는 것은 상대적인 정보량 차이 를 더 잘 포착하기 위함입니다. 예를 들어, $p=0.001, q=0.002$ 와 $p=0.5, q=0.501$ 의 경우, 단순 차이는 유사하지만, 확률 비율은 큰 차이를 보입니다. 확률 비율은 확률 값의 상대적인 크기 변화 에 민감하게 반응하여, 정보량 차이를 더 정확하게 반영합니다.
- 로그 함수 $\log_2 \frac{p(x_i)}{q(x_i)}$ 사용 이유 (정보량 단위 및 가산성): 확률 비율에 로그 함수를 취하는 것은 정보량 단위를 비트 (bit) 로 표현 하고, 정보량의 가산성 을 확보하기 위함입니다. 로그 함수는 곱셈을 덧셈으로 변환하는 성질을 가지므로, 여러 사건이 독립적으로 발생할 때 전체 KL Divergence 를 각 사건의 KL Divergence 의 합으로 표현할 수 있습니다. 또한 로그 밑수를 2로 사용하여 정보량 단위를 비트로 통일하고, 정보 이론적 해석을 용이하게 합니다.
- $p(x_i)$ 가중 평균 이유 (기댓값): 상대적 정보량 $\log_2 \frac{p(x_i)}{q(x_i)}$ 에 실제 분포 $P$ 의 확률 $p(x_i)$ 를 곱하여 가중 평균하는 것은 실제 분포 $P$ 의 관점에서 평균적인 정보량 손실 을 계산하기 위함입니다. 자주 발생하는 사건 (높은 $p(x_i)$) 에 더 큰 가중치를 부여하고, 드물게 발생하는 사건 (낮은 $p(x_i)$) 에 더 작은 가중치를 부여하여, 전체 분포 $P$ 의 특성을 반영하는 KL Divergence 값을 얻습니다.
예시: 동전 던지기 KL Divergence 계산:
앞서 예시로 든 동전 던지기 실험에서 KL Divergence 를 계산해 보겠습니다.
- 실제 분포 $P = [앞면: 0.6, \text{ 뒷면: } 0.4]$
- 이상적인 분포 $Q = [앞면: 0.5, \text{ 뒷면: } 0.5]$
$$
D_{KL}(P||Q) = 0.6 \log_2 \frac{0.6}{0.5} + 0.4 \log_2 \frac{0.4}{0.5} \approx 0.0291 \text{ bits}
$$
KL Divergence 값은 약 0.0291 비트입니다. 이는 "실제 분포 $P$ 를 이상적인 분포 $Q$ 로 근사할 때, 평균적으로 약 0.0291 비트의 정보량 손실이 발생한다" 또는 "분포 $P$ 와 $Q$ 의 정보량 차이는 약 0.0291 비트이다" 와 같이 해석할 수 있습니다. KL Divergence 값이 작을수록 두 분포가 유사하고, 클수록 두 분포가 다르다는 것을 의미합니다.
크로스 엔트로피와의 관계: 밀접한 연관성 및 활용
KL Divergence 와 크로스 엔트로피는 밀접한 관계를 가지고 있으며, 실제로 머신러닝 분야에서 함께 활용되는 경우가 많습니다. KL Divergence 는 크로스 엔트로피와 엔트로피의 조합으로 표현될 수 있으며, 이는 두 개념의 깊은 연관성을 보여줍니다.
수식 속에 숨겨진 놀라운 관계: KL Divergence = 크로스 엔트로피 - 엔트로피
KL Divergence 수식을 다음과 같이 전개해 보겠습니다.
$$
D_{KL}(P||Q) = \sum_{i} p(x_i) \log_2 \frac{p(x_i)}{q(x_i)}
$$
$$
= \sum_{i} p(x_i) (\log_2 p(x_i) - \log_2 q(x_i))
$$
$$
= \sum_{i} p(x_i) \log_2 p(x_i) - \sum_{i} p(x_i) \log_2 q(x_i)
$$
$$
= - \left( - \sum_{i} p(x_i) \log_2 p(x_i) \right) - \sum_{i} p(x_i) \log_2 q(x_i)
$$
$$
= -H(P) + H(P,Q)
$$
$$
= H(P,Q) - H(P)
$$
수식 전개 결과, KL Divergence 는 크로스 엔트로피 $H(P,Q)$ 에서 엔트로피 $H(P)$ 를 뺀 값 과 같다는 것을 알 수 있습니다.
$$
D_{KL}(P||Q) = H(P,Q) - H(P)
$$
이 관계는 KL Divergence, 크로스 엔트로피, 엔트로피가 서로 밀접하게 연결되어 있으며, 정보 이론적 관점에서 상호 보완적인 역할을 한다는 것을 시사합니다.
이 관계가 왜 중요할까? 머신러닝 손실 함수 최적화 관점
KL Divergence 와 크로스 엔트로피의 관계는 머신러닝, 특히 손실 함수 (loss function) 설계 및 최적화 (optimization) 관점에서 매우 중요한 의미를 갖습니다.
예를 들어, 이진 분류 문제를 다시 생각해 보겠습니다. 실제 레이블 분포 $P$ 는 고정되어 있고, 모델 예측 분포 $Q$ 를 $P$ 에 가깝게 만드는 것이 학습 목표입니다. KL Divergence 와 크로스 엔트로피의 관계식을 다시 살펴보면,
$$
D_{KL}(P||Q) = H(P,Q) - H(P)
$$
여기서 실제 분포 $P$ 는 학습 과정에서 고정된 값 이므로, 엔트로피 $H(P)$ 또한 상수 값 입니다. 따라서 KL Divergence $D_{KL}(P||Q)$ 를 최소화하는 것은 크로스 엔트로피 $H(P,Q)$ 를 최소화하는 것과 동일한 최적화 문제 가 됩니다.
$$
\min_{Q} D_{KL}(P||Q) = \min_{Q} [H(P,Q) - H(P)] = \min_{Q} H(P,Q) - H(P) = \min_{Q} H(P,Q) + \text{constant}
$$
$$
\therefore \min_{Q} D_{KL}(P||Q) \equiv \min_{Q} H(P,Q)
$$
즉, KL Divergence 를 최소화하는 것은 크로스 엔트로피를 최소화하는 것과 같습니다. 머신러닝에서 크로스 엔트로피를 손실 함수로 사용하는 것은, 실제 데이터 분포 $P$ 와 모델 예측 분포 $Q$ 사이의 KL Divergence 를 최소화하여 모델이 실제 분포를 최대한 근사하도록 학습하는 것과 동일한 의미를 갖습니다.
[변분 추론 (Variational Inference) 과 KL Divergence]
변분 오토인코더 (VAE, Variational Autoencoder) 와 같은 생성 모델 (generative model) 에서 KL Divergence 는 핵심적인 역할을 합니다. VAE 는 복잡한 실제 데이터 분포 $P(x)$ 를 간단한 잠재 변수 분포 $Q(z)$ 를 통해 근사하는 모델입니다. VAE 학습 과정에서 인코더 (encoder) 는 $Q(z|x)$ 를 추론하고, 디코더 (decoder) 는 $P(x|z)$ 를 생성합니다.
VAE 의 손실 함수는 재구성 오차 (reconstruction error) 와 함께 정규화 항 (regularization term) 으로 $D_{KL}(Q(z|x) || P(z))$ 를 포함합니다. 이는 추론된 잠재 변수 분포 $Q(z|x)$ 가 사전 분포 (prior distribution) $P(z)$ (보통 가우시안 분포) 에 가깝도록 유도하는 역할을 합니다. KL Divergence 는 VAE 와 같은 변분 추론 모델에서 분포 근사 (distribution approximation) 의 핵심적인 척도로 활용됩니다.
정리하며
KL Divergence 는 두 확률 분포의 차이를 정보량 손실 관점에서 정량화하는 도구이며, 크로스 엔트로피는 KL Divergence 와 엔트로피의 조합으로 표현됩니다. 머신러닝에서 크로스 엔트로피 손실 함수를 최소화하는 것은, 실제 데이터 분포와 모델 예측 분포 사이의 KL Divergence 를 최소화하여 모델이 실제 분포를 최대한 근사하도록 학습하는 것과 같습니다.
KL Divergence 의 특별한 성질: 비대칭성 (Asymmetry) 과 그 의미
KL Divergence 를 깊이 이해하기 위해 주목해야 할 중요한 성질 중 하나는 비대칭성 (asymmetry) 입니다. 이는 KL Divergence 가 일반적인 "거리 척도" 와는 다른 독특한 특징을 갖는다는 것을 의미하며, 머신러닝 및 정보 이론 분야에서 중요한 함의를 지닙니다.
비대칭성: 방향에 따라 값이 달라지는 "비거리" 척도
KL Divergence 의 정의를 다시 한번 살펴보겠습니다.
$$
D_{KL}(P||Q) = \sum_{i} p(x_i) \log_2 \frac{p(x_i)}{q(x_i)}
$$
여기서 분포 $P$ 와 $Q$ 의 순서를 바꾸면 어떻게 될까요? 즉, $D_{KL}(Q||P)$ 를 계산해 보겠습니다.
$$
D_{KL}(Q||P) = \sum_{i} q(x_i) \log_2 \frac{q(x_i)}{p(x_i)}
$$
놀랍게도, 일반적으로 $D_{KL}(P||Q) \neq D_{KL}(Q||P)$ 입니다. KL Divergence 는 대칭성 (symmetry) 을 만족하지 않는 비대칭적인 척도 입니다. 일반적인 거리 척도 (예: 유클리드 거리) 는 대칭성을 만족하여 $d(x,y) = d(y,x)$ 이지만, KL Divergence 는 이러한 성질을 갖지 않습니다. 따라서 엄밀히 말하면 KL Divergence 는 "거리 (distance)" 라기보다는 "비유사도 (divergence)" 또는 "방향성 있는 거리" 에 더 가깝습니다.
왜 비대칭성이 발생하는가? Forward KL vs. Reverse KL:
KL Divergence 의 비대칭성은 수식의 형태에서 비롯됩니다. $D_{KL}(P||Q)$ 와 $D_{KL}(Q||P)$ 는 확률 분포 $P$ 와 $Q$ 의 역할을 다르게 보기 때문에 다른 값을 갖습니다.
- Forward KL ($D_{KL}(P||Q)$): 실제 분포 $P$ 를 기준으로, 모델 분포 $Q$ 로 근사할 때 발생하는 정보량 손실을 측정합니다. $P$ 의 확률 값이 높은 영역에서 $Q$ 도 확률 값을 가져야 손실이 작아집니다. $P$ 를 "덮는 (cover)" 경향 이 있으며, 평균적인 근사 (mean-seeking) 를 선호합니다.
- Reverse KL ($D_{KL}(Q||P)$): 모델 분포 $Q$ 를 기준으로, 실제 분포 $P$ 로 근사할 때 발생하는 정보량 손실을 측정합니다. $Q$ 의 확률 값이 높은 영역에서 $P$ 도 확률 값을 가져야 손실이 작아집니다. $Q$ 안에 $P$ 를 "맞추는 (match)" 경향 이 있으며, 모드 근사 (mode-seeking) 를 선호합니다.
예시를 통한 이해: Gaussian Mixture Model 근사:
실제 분포 $P$ 가 두 개의 뚜렷한 피크 (bimodal) 를 갖는 Gaussian Mixture Model (GMM) 이라고 가정하고, 이를 단일 가우시안 분포 $Q$ 로 근사하는 상황을 생각해 보겠습니다.
# 실제 분포 P: 두 개의 피크를 가진 GMM
P = GaussianMixture(n_components=2)
# 근사 분포 Q1: Forward KL 최적화 (평균적인 분포)
Q1 = Gaussian() # Forward KL minimization -> 평균적인 가우시안 분포
# 근사 분포 Q2: Reverse KL 최적화 (모드에 집중된 분포)
Q2 = Gaussian() # Reverse KL minimization -> 모드에 집중된 가우시안 분포
- Forward KL ($D_{KL}(P||Q_1)$): $Q_1$ 은 $P$ 의 두 피크를 평균적으로 덮는 (cover) 가우시안 분포가 됩니다. $P$ 의 확률이 높은 모든 영역에서 $Q_1$ 도 확률 값을 가지므로, Forward KL 값이 작아집니다.
- Reverse KL ($D_{KL}(Q_2||P)$): $Q_2$ 는 $P$ 의 두 피크 중 하나의 주요 모드에 집중하는 (mode-seeking) 가우시안 분포가 됩니다. $Q_2$ 의 확률이 높은 영역에서 $P$ 도 확률 값을 가지므로, Reverse KL 값이 작아질 수 있습니다. 하지만 $P$ 의 다른 피크 영역은 $Q_2$ 에 의해 제대로 근사되지 못할 수 있습니다.
비대칭성의 실제 의미: 머신러닝 응용
KL Divergence 의 비대칭성은 머신러닝, 특히 생성 모델 (generative model) 및 변분 추론 (variational inference) 분야에서 중요한 의미를 갖습니다.
- 변분 추론 (Variational Inference): VAE 와 같은 변분 추론 모델에서 Forward KL ($D_{KL}(Q(z|x) || P(z))$) 을 사용하는 것은, 추론된 잠재 변수 분포 $Q(z|x)$ 가 사전 분포 $P(z)$ 를 평균적으로 덮도록 (cover) 유도하는 효과를 가집니다. 이는 다양한 잠재 변수 샘플링 을 가능하게 하고, 안정적인 생성 결과 를 얻는 데 도움을 줍니다.
- 생성 모델 (Generative Model): 생성적 적대 신경망 (GAN, Generative Adversarial Network) 과 같은 생성 모델에서 Forward KL 과 Reverse KL 을 선택적으로 활용하여 생성 결과의 특성을 조절할 수 있습니다.
- Forward KL 기반 생성 모델: 다양성 (diversity) 을 강조하는 생성 모델에 적합합니다. 생성된 데이터가 실제 데이터 분포의 다양한 모드를 포괄적으로 덮도록 유도합니다. 하지만 생성된 데이터 품질이 다소 흐릿하거나 평균적인 경향이 있을 수 있습니다.
- Reverse KL 기반 생성 모델: 선명도 (sharpness) 를 강조하는 생성 모델에 적합합니다. 생성된 데이터가 실제 데이터 분포의 주요 모드에 집중하도록 유도합니다. 생성된 데이터 품질은 선명하지만, 다양성이 부족하거나 모드 붕괴 (mode collapse) 문제가 발생할 수 있습니다.
정리하며
KL Divergence 는 두 확률 분포의 차이를 측정하는 강력한 도구이지만, 대칭성을 만족하지 않는 비대칭적인 척도입니다. $D_{KL}(P||Q)$ 와 $D_{KL}(Q||P)$ 는 일반적으로 다른 값을 가지며, Forward KL 과 Reverse KL 은 서로 다른 분포 근사 특성을 나타냅니다.
KL Divergence 의 비대칭성은 머신러닝, 특히 생성 모델 및 변분 추론 분야에서 중요한 의미를 가지며, 모델 학습 목표 및 생성 결과의 특성을 조절하는 데 활용될 수 있습니다. 또한 KL Divergence 는 추가 비트 수, 정보 손실 등 정보 이론적으로 직관적인 해석이 가능하며, 확률 분포 간의 차이를 정량적으로 분석하고 이해하는 데 유용한 도구입니다.