Cross Entropy와 KL(Kullback–Leibler) Divergence는 머신 러닝과 딥러닝 분야뿐만 아니라 여러 분야에서 사용된다. 특히 분류 문제나 확률 분포를 다루는 모델에서 자주 등장하는 개념이다. 두 개념 모두 확률 분포 간의 차이(Divergence)를 측정하는 방법이라는 공통점이 있지만 목적과 수식 구조, 해석 관점에서는 차이가 있다.
위 주요 개념들에 대해 살펴보기 전에 정보량과 Entropy가 무엇인지 알고 넘어가자.
정보량(Information Quantity)
정보량(Information Quantity)이라는 개념은 다소 추상적으로 느껴지지만, 실제로는 매우 논리적인 수식으로 설명이 가능하다. 정보량을 직관적 이해해 보자.
예를 들어, 어떤 사람이 대학교에서 수업에 지각했는데, 그 지각한 학생에 대한 정보가 아래와 같이 두 가지 방식으로 제공되었다.
- A: 그 학생은 빨간 옷을 입고 있어.
- B: 그 학생은 옷을 입고 있어.
이때, 지각한 사람을 특정하는데 더 도움이 되는 정보는 A이다. 왜냐하면 청강생 대부분은 옷을 입고 있겠지만, 빨간 옷으로 특정하였기 때문이다. 따라서 "빨간 옷"이라는 정보는 더 희귀하고, 더 많은 정보량을 가진다.
이처럼 희귀한 사건일수록 정보량이 크고, 흔한 사건일수록 정보량은 작다. 정보량은 사건의 확률과 반비례 관계를 갖는다. 이 정보량의 수학적 정의는 어떤 사건 \( x \)가 발생할 확률을 \( P(x) \)라고 할 때, 그 사건의 정보량 \( I(x) \)는 다음과 같다.
$$ I(x) = - \log{P(x)} $$
이 식에서 로그의 밑은 2를 사용하는 것이 일반적이며, 이 경우 단위는 bit가 된다.
위 예시를 가지고 와보자.
수업에는 오직 학생들이 빨간 옷과 파란 옷만 입고 있다고 하자. 만약 지각한 학생이 빨간 옷일 확률이 10%라면 다음과 같다.
$$ P(red) = \frac{1}{10} $$
$$ I(red) = -\log_2{0.1} ≈ 3.321 \, bits $$
만약, 빨간 옷이 아니라면, 파란 옷일 것이며 확률은 당연히 90%가 된다. 정보량에 대한 결과는 다음과 같을 것이다.
$$ P(blue) = \frac{1}{90} $$
$$ I(blue) = -\log_2{0.9} ≈ 0.152 \, bits $$
정보량은 사건의 확률과 반비례 관계이므로 더 낮은 확률로 발생하는 정보량이 더 커지는 것을 확인할 수 있다. 또한 당연히 모든 발생할 수 있는 확률들의 합은 1이고 \( 0 \le x \le 1\)가 된다. 참고로 (\( \log1 = 0 \))이다.
Entropy(엔트로피)
Entropy(엔트로피)는 머신러닝과 정보이론에서 불확실성(Uncertainty)과 정보량(Information Quantity)을 수치적으로 측정하는 지표로 사용된다.
위 색깔 예제를 이어가보자.
빨, 주, 노, 초 옷을 입고 있는 10명이 있다고 가정하자. 우리는 이 정보들을 저장할 방법을 고안하는 업무를 맡았다고 가정하자. 우리는 이 정보들을 저장할 때 "빨간 옷을 입은 사람 1", "주황 옷을 입은 사람 1", "빨간 옷을 입은 사람 2"... 이와 같이 저장할 수 있지만 이는 다소 비효율적이다. 만약 이 정보를 이진화해 4가지 색(빨, 주, 노, 초)을 2비트로 표현하면 10명에 대해 20비트만 필요하게 된다.
하지만 각 색의 사전 확률을 알고 있다면, 더 적은 비트로 인코딩할 수 있는 최적 방법이 존재한다. 이때 사용되는 것이 바로 Shannon의 엔트로피 개념이다. 섀넌은 특정 확률분포 \( P(X) \)를 따르는 확률 변수 \( X \)가 있을 때, 확률 변수 \( X \)의 사건 \( x \)를 \( p(x)I(x) \)의 길이로 인코딩하는 것이 기대값을 최소로 만들 수 있음을 보였다. 이때의 확률 변수 \( X \)의 기대값(Expected Value)을 엔트로피라고 한다. 즉, 엔트로피는 이론적으로 가능한 최소 비트 수를 정의한다.
기대값(Expected Value)이란 각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값이다.
$$ \mathbb{E}[X] = \sum_{i}{x_i P(x_i)} $$
- \( X \): 어떤 확률 변수(예: 주사위 눈)
- \( x_i \): 그 확률 변수가 가질 수 있는 i번째 구체적인 값
- \( P(x_i) \): 확률 변수 \( X \)가 \( x_i \) 값을 가질 확률(주사위의 경우 \( \frac{1}{6} \))
주사위 경우에서 기대값은 결국 \( \mathbb{E}[X] = \frac{1}{6}(1+2+3+4+5+6) = 3.5 \)가 된다. 이는 1부터 6까지 고르게 분포된 값들의 평균이 3.5라는 의미이다.
이제 정보량(\( I(x) \))의 기대값(\( \mathbb{E}[X] \))을 계산하면 그 분포의 엔트로피가 된다. 이는 특정 확률 분포를 따르는 사건을 인코딩할 때, 이론적으로 필요한 평균 비트 수를 의미한다. 수식은 다음과 같다.
$$ H(P) = \mathbb{E}_{x \sim P}[I(x)] = - \sum_{x} P(x) \log P(x) $$
위 수식에서 \( I(x) = -\log{P(x)} \)이며 이는 기대값 수식의 \( x_i \)에 대응한다. 또한 \( P(x) \)는 기대값 수식의 \( P(x_i) \)에 대응한다.
빨, 주, 노, 초의 옷을 입은 사람들이 다음과 같은 비율로 존재한다고 하자. 아래는 확률 분포 \( P \)에 해당한다.
- \( P(color) \)
- 빨간색(R): 0.4
- 주황색(O): 0.3
- 노란색(Y): 0.2
- 초록색(G): 0.1
정보량은 다음과 같이 구할 수 있다.
$$ I(R) = -\log_2(0.4) ≈ 1.3219 $$
$$ I(O) = -\log_2(0.3) ≈ 1.7370 $$
$$ I(Y) = -\log_2(0.2) ≈ 2.3219 $$
$$ I(G) = -\log_2(0.1) ≈ 3.3219 $$
이 확률 분포의 엔트로피는 다음과 같이 계산된다.
\begin{aligned}
H(X) &= 0.4 \cdot I(R) + 0.3 \cdot I(O) + 0.2 \cdot I(Y) + 0.1 \cdot I(G) \\
&= 0.4 \cdot 1.3219 + 0.3 \cdot 1.7370 + 0.2 \cdot 2.3219 + 0.1 \cdot 3.3219 \\
&= 1.8464\ \text{bits}
\end{aligned}
여기서 중요한 점은 어떤 확률 분포가 있을 때, \( H(P) \) 보다 낮은 기대값을 가질 수 없다는 점이다. 즉 머신러닝 관점에서 확률 분포 \( P \)를 알고 있다고 했을 때, \( H(P) \)는 Global Minimum이 된다.
추가적으로 엔트로피는 확률 분포의 불확실성을 측정하는 지표로, 확률 분포가 균등할 때(Uniform Distribution) 최대값을 가진다. 이는 어떤 사건이 발생할지 예측하기 가장 어려운 상태로, 불확실성이 가장 큰 상황을 의미한다. 반면, 특정 사건이 높은 확률로 반복적으로 발생하는 편향된 분포에서는 불확실성이 줄어들어 엔트로피가 낮아진다.
위 그래프는 확률 분포에 따른 엔트로피의 차이를 시각화한 것이다.
- Uniform Distribution: 모든 사건이 동일한 확률을 가지며, 불확실성이 최대이므로 엔트로피도 가장 큼.
- Skewed Distribution: 한 사건의 확률이 압도적으로 높고 나머지는 낮아 불확실성이 줄어들어 엔트로피가 낮음.
- Deterministic Distribution: 하나의 사건만 발생하며, 불확실성이 전혀 없기 때문에 엔트로피가 0.
이러한 성질로 인해 엔트로피는 어떤 확률 변수의 정보량의 총량을 나타냄과 동시에 그 분포가 지닌 불확실성의 정도를 정량화할 수 있게 해준다. 이는 정보이론에서 중요한 개념이며, 머신러닝에서는 직접적으로 사용되지 않는 경우도 있지만, 모델의 예측 불확실성이나 정보 획득 등의 맥락에서 응용될 수 있다.
Cross Entropy(교차 엔트로피)
우리는 현실 세계에서 일어나는 현상 중 실제 확률 분포 \( P \)를 모두 알고 있는 것은 쉽지 않다. 내가 당장 10초 뒤에 무슨 일이 일어날 수도 있는 것이고, 우리는 모든 법칙에 대한 이치를 알고 있지는 않기 때문이다. 이 문제는 우리가 머신 러닝에서 현실의 문제를 모델할 때도 똑같이 적용된다.
그럼 우리는 일단 빨, 주, 노, 초의 옷 4가지 종류가 있으니 다음과 같이 맞는지 아닌지는 모르는 확률 분포 \( Q \)를 다음과 같이 정의해 보자.
- \( Q(color) \)
- 빨간색(R): 0.25
- 주황색(O): 0.25
- 노란색(Y): 0.25
- 초록색(G): 0.25
위에서 사용하던 정보량 \( -\log{P(x)} \)는 우리가 임의로 만든 확률 분포 \( Q \)를 사용하여 \( -\log{Q(x)} \)가 되었다. 우리는 지금 실제 확률 분포인 \( P \)에 대한 것은 모르는 상태이다.
여기서 실제 확률 분포(\( P \), Ground Truth)를 우리가 가정한(근사한) 확률 분포 \( Q \)를 이용하여 예측했을 때, 그 예측의 평균적인 정보 손실을 Cross Entropy로 측정할 수 있다.
\begin{aligned}
H(P) &= \mathbb{E}_{x \sim P}[I(x)] \\
&= \mathbb{E}_{x \sim P}[-\log P(x)] \\
&= -\sum_x P(x) \log P(x)
\end{aligned}
$$ H(P, Q) ≡ CE(P,Q) = −∑P(x) \log{Q(x)} $$
왜 \( P(x) \)와 \( \log{Q(x)} \)를 곱한 뒤 합산하면 정보 손실이 될까?
우선 곱하는 이유는 다음과 같다.
\( P(x) \)는 실제 사건이 일어날 확률이다. \( \log{Q(x)} \)는 예측 확률이 낮을수록 손실이 크게 된다. 따라서 이 둘을 곱하는 것은 실제로 일어날 가능성이 있는 사건들 각각에 대해, 모델이 그 사건을 얼마나 잘 예측했는지를 고려한 정보 손실이 된다.
합산은 한 사건만 보는 게 아니라 모든 가능한 사건에 대해 평균적으로 평가한다는 의미를 가진다. 즉, Cross Entropy는 "정답 기준에서 모델이 예측한 정보량은 얼마나 손실이 있나?" 수치화한 것이다.
KL(Kullback–Leibler) Divergence
KL(Kullback–Leibler) Divergence는 두 확률 분포 \( P \)와 \( Q \)의 차이를 수치화한 것이다. 여기서 KL은 Kullback-Leibler의 약자이고, Divergence는 "차이"라는 의미이다. 즉, KL Divergence란 "얼마나 비효율적으로 예측했는가?"를 수치화한 값이다.
이제 위에서 나온 내용들을 정리하면 다음과 같다.
- \( P(x) \): 실제 정답 분포 (우리가 알거나 가정한 분포) = Ground Truth
- \( Q(x) \): 모델이 학습으로 추정한 분포 (예측 분포)
- Entropy(엔트로피): \( H(P) = -∑ P(x) \log P(x) \)
- Cross Entropy(CE, 교차 엔트로피): \( H(P, Q) = -∑ P(x) \log Q(x) \)
이 내용들을 바탕으로 KL Divergence는 다음과 같이 정의된다.
\begin{aligned}
KL(P \parallel Q) &= CE(P, Q) - H(P) \\
&= -\sum_x P(x) \log Q(x) - \left(-\sum_x P(x) \log P(x)\right) \\
&= \sum_x P(x) \log P(x) - \sum_x P(x) \log Q(x) \\
&= \sum_x P(x) (\log P(x) - \log Q(x)) \\
&= \sum_x P(x) \log \frac{P(x)}{Q(x)}
\end{aligned}
만약 \( Q(x) \)가 \( P(x) \)의 분포를 정확하게 알아냈을 때, 다시 말해 \( Q(x) \)와 \( P(x) \)가 완전히 같아졌을 때 \( \log \frac{P(x)}{Q(x)} = \log(1) \)이 되면서 \( KL(P \parallel Q) \) 값이 0이 되고, 이것이 바로 최소가 된다. 반대로 분포가 다르면 KL 값이 커지며 이는 예측이 정답에서 멀어졌다는 의미가 된다.
참고로 멀다고 표현했지만 엄밀이 여기선 거리를 의미하는 것은 아니고 비대칭적인 차이(discrepancy)를 의미한다고 봐야한다.
관련 포스팅
2024.11.13 - [Data Science/ML & DL] - Cross Entropy에 대한 고찰(with Softmax)
참고 자료
https://angeloyeo.github.io/2020/10/27/KL_divergence.html
https://lifeignite.tistory.com/44