이전 포스팅에서 저희는 이산 확률변수의 엔트로피에 대해서 다루어보았습니다. 이는 불확실성 (또는 정보량)의 척도로 분포가 균등할 수록 엔트로피가 최대가 되고 하나의 상태에만 몰려 있으며 0이 됩니다. 예를 들어 $K$개의 상태를 가진 균등 분포에서는 엔트로피는 $\mathbb{H}(X) = \log_{2} K$가 됩니다. 이항변수의 경우에는 $- [\theta \log_{2} \theta + (1 - \theta) \log_{2} (1 - \theta) ]$로 표현되는 이항 엔트로피 함수가 등장합니다.
1. 교차 엔트로피(Cross Entropy)
지금까지는 단일 분포에서의 엔트로피를 고려하였지만 서로 다른 두 분포 사이의 엔트로피를 구하는 방법도 있습니다. 이것이 바로 교차 엔트로피(Cross Entropy)이죠. 딥 러닝 관련된 연구 또는 공부를 해보신 분들이라면 매우 익숙한 용어일 것 입니다. 분류 문제를 풀 때 CrossEntropy 함수를 이용해서 손실함수를 계산하기 때문이죠. 일반적으로 분포 $p$와 $q$ 사이의 교차 엔트로피는 다음과 같이 정의됩니다.
$$\mathbb{H}_{\text{ce}} (p, q) = - \sum_{k = 1}^{K} p_{k} \log q_{k}$$
정보이론 관점에서 교차 엔트로피는 분포 $p$로부터 추출된 데이터 샘플을 분포 $q$에 기반한 부호화 방식을 사용해 압축할 때 필요한 기대 비트 수로 해석할 수 있습니다. 이는 $q = p$라고 가정했을 때 최소화되며 이 경우 최적 부호의 기대 비트수는 $\mathbb{H}_{\text{ce}}(p, p) = \mathbb{H}(p)$가 됩니다. 이를 샤논의 원천 부호화 정리(Shannon’s source coding theorem)라고 부릅니다.
딥 러닝에서 교차 엔트로피는 분류 문제에서 활용되는 대표적인 손실함수입니다. 이는 모델이 예측한 확률분포와 실제 정답 레이블(원-핫 벡터) 사이의 차이를 측정합니다. 수식적으로는 정답 클래스의 예측 확률에 $-\log$를 취한 값과 같아서 모델이 정답 클래스에 높은 확률을 줄수록 손실은 감소하고 낮게 줄수록 손실은 커집니다. 따라서, 교차 엔트로피를 최소화한다는 것은 곧 정답 클래스의 확률을 최대화하는 방향으로 모델을 학습한다는 것과 동일한 의미가 됩니다.
2. 결합 엔트로피(Joint Entropy)
방금은 서로 다른 두 분포 사이의 엔트로피를 정의하는 방법에 대해서 보았습니다. 이번에는 두 확률변수 $X$와 $Y$를 가지는 분포에서의 엔트로피를 계산하는 결합 엔트로피(Joint Entropy)에 대해서 알아보도록 하겠습니다. 두 확률변수 $X$와 $Y$의 결합 엔트로피는 다음과 같이 정의됩니다.
$$\mathbb{H}(X, Y) = -\sum_{x, y} p(x, y) \log_{2} p(x, y)$$
예를 들어, 1 ~ 8까지의 정수 $n \in \{ 1, \dots, 8 \}$ 중 하나를 고른다고 가정하겠습니다. $X(n) = 1$은 $n$이 짝수일 때 그리고 $Y(n) = 1$은 $n$이 소수일 때라고 정의하겠습니다. 그러면 다음과 같이 표를 만들 수 있습니다.

이를 기반으로 두 확률변수 $X$와 $Y$의 결합분포는 다음과 같이 쓸 수있죠.

따라서, 결합 분포는 다음과 같이 계산할 수 있습니다.
$$\mathbb{H}(X, Y) = -\left[ \frac{1}{8} \log_{2} \frac{1}{8} + \frac{3}{8} \log_{2} \frac{3}{8} + \frac{3}{8} \log_{2} \frac{3}{8} + \frac{1}{8} \log_{2} \frac{1}{8} \right] = 1.81 \text{ bits}$$
여기서 중요한 점은 주변확률은 균등하다는 점 ($p(X = 1) = p(X = 0) = p(Y = 0) = p(Y = 1) = 0.5$) 입니다. 따라서, $\mathbb{H}(X) = \mathbb{H} = Y$이죠. 그러므로 $\mathbb{H}(X, Y) = 1.81 \text{ bits} < \mathbb{H}(X) + \mathbb{H}(Y) = 2 \text{ bits}$가 됩니다. 사실 이 결합 엔트로피에 대한 상한 부등식은 일반적으로 성립합니다. 만약, $X$와 $Y$가 독립이라면 $\mathbb{H}(X, Y) = \mathbb{H}(X) + \mathbb{H}(Y)$가 되어 식이 성립하죠. 이는 직관적으로도 이해해볼 수 있습니다. 두 변수가 어떤 방식으로든 상관관계를 가진다면 시스템의 자유도(degree of freedom)이 줄어들고 전체 엔트로피가 감소하게 되는 것이죠.
그렇다면 상한은 알았으니 하한은 어떨까요? 만약, $Y$가 $X$에 대한 결정적 함수(deterministic function)이라면 $H(X, Y) = H(X)$가 됩니다. 따라서, $\mathbb{H}(X, Y) \ge \text{max} \{ \mathbb{H}(X), \mathbb{H}(Y) \} \ge 0$이 됩니다. 이는 직관적으로 변수를 더 결합한다고 해서 엔트로피가 줄어들지 않는다는 의미입니다. 불확실성을 줄이려면 단순히 더 많은 미지수를 추가하는 것이 아니라 실제 데이터를 관측해야한다는 것이죠. 지금까지 두 개의 변수만 고려했지만 이를 일반화하여 $n$개의 변수로도 자연스럽게 확장할 수 있습니다.
3. 조건부 엔트로피(Conditional Entropy)
이번에는 어떤 확률변수가 조건으로 주어졌을 때의 엔트로피를 구해보도록 하겠습니다. 이를 조건부 엔트로피(Conditional Entropy)라고 부르죠. $X$가 주어졌을 때 $Y$의 조건부 엔트로피는 가능한 $X$값들에 대해 평균한 뒤 $X$를 본 뒤에도 남아있는 $Y$의 불확실성을 의미합니다. 이를 수식으로 작성하면 다음과 같습니다.
$$\begin{align} \mathbb{H}(Y \mid X) &= \mathbb{E}_{p(X)} \left[ \mathbb{H}(p(Y \mid X)) \right] \\ &= \sum_{x} p(x) \mathbb{H}(p(Y \mid X = x)) \\ &= -\sum_{x} p(x) \left[ \sum_{y} p(y \mid x) \log p(y \mid x) \right] \\ &= - \sum_{x, y} p(x, y) \log p(y \mid x) \\ &= -\sum_{x, y} - p(x, y) \log \frac{p(x, y)}{p(x)} \\ &= -\sum_{x, y} p(x, y) \log p(x, y) + \sum_{x} p(x) \log p(x) \\ &= \mathbb{H}(x, y) - \mathbb{H}(x) \end{align}$$
만약 $Y$가 $X$에 대한 결정적 함수라면 $X$를 알게 되었을 때 $Y$가 완전히 결정되기 때문에 $\mathbb{H}(Y \mid X) = 0$이 됩니다. 반대로 $X$와 $Y$가 서로 독립이라면 $X$를 알아도 $Y$에 대해 아무것도 알 수 없기 때문에 $\mathbb{H}(Y \mid X) = \mathbb{H}(Y)$가 됩니다. 또한, 이전에 결합 엔트로피에서 $\mathbb{H}(X, Y) \le \mathbb{H}(Y) + \mathbb{H}(X)$임을 확인하였기 때문에 $\mathbb{H}(Y \mid X) \le \mathbb{H}(Y)$가 되고 등호는 $X$와 $Y$가 독립일 때만 성립합니다.
이는 평균적으로 데이터를 조건화하는 것이 불확실성을 증가시키지 않는다는 것을 수식적으로 보여주는 것입니다. 다만, "평균적으로"라는 단서가 필요한데 어떤 특정 관측값에서는 오히려 더 "헷갈리는" 경우 $\mathbb{H} (Y \mid x) > \mathbb{H}(Y)$가 있을 수도 있습니다. 그러나 기댓값의 관점에서 보면, 데이터를 관측하는 것은 바람직한 일입니다.
다시 조건부 엔트로피 $\mathbb{H}(Y \mid X) = \mathbb{H}(X, Y) - \mathbb{H}(X)$는 다음과 같이 쓸 수 있습니다.
$$\mathbb{H}(X_{1}, X_{2}) = \mathbb{H}(X_{1}) + \mathbb{H}(X_{2} \mid X_{1})$$
이를 일반화시키면 엔트로피에 대한 연쇄법칙(chain rule for entropy)도 얻을 수 있습니다.
$$\mathbb{H}(X_{1}, \dots, X_{n}) = \sum_{i = 1}^{n} \mathbb{H}(X_{i} \mid X_{1}, \dots, X_{i - 1})$$
4. 퍼플렉시티(Perplexity)
지금까지 보았던 엔트로피를 다른 방식으로 작성한 것이 바로 퍼플렉시티 (Perplexity)입니다. 이산 확률변수 $p$의 퍼플렉시티는 다음과 같이 정의됩니다.
$$\text{perplexity}(p) = 2^{\mathbb{H}(p)}$$
이는 종종 예측 가능성의 척도로 해석할 수 있습니다. 예를 들어, $p$가 $K$개의 상태에 대한 균등 분포라면 퍼플렉시티는 $K$가 됩니다. 퍼플렉시티의 하한은 $2^{0} = 1$이며 이는 분포가 결과를 완벽하게 예측할 때 달성합니다. 이제 데이터 $\mathcal{D}$에 기반한 경험적 분포를 생각해보겠습니다.
$$p_{\mathcal{D}}(x \mid \mathcal{D}) = \frac{1}{N} \sum_{n = 1}^{N} \delta (x - x_{n})$$
저희는 여기서 $p$가 $\mathcal{D}$를 얼마나 잘 예측하는 지 다음과 같이 측정해볼 수 있습니다.
$$\text{perplexity}(p_{\mathcal{D}}, p) = 2^{\mathbb{H}_{\text{ce}}(p_{\mathcal{D}}, p)}$$
퍼플렉시티는 종종 통계적 언어모델(토큰 시퀀스를 생성하는 생성모델)의 품질을 평가하는 데 사용됩니다. 데이터가 길이 $N$개의 하나의 문서 $x$라고 하고 $p$가 단순 유니그램(unigram) 모델이라고 가정했을 때 교차 엔트로피 항은 다음과 같이 계산됩니다.
$$H = -\frac{1}{N} \sum_{n = 1}^{N} \log \log p(x_{n})$$
따라서, 퍼플렉시티는 다음과 같이 계산됩니다.
$$\begin{align} \text{perplexity} (p_{\mathcal{D}}, p) &= 2^{H} \\ &= 2^{-\frac{1}{N} \log \left( \prod_{n = 1}^{N} p(x_{n}) \right)} \\ &= \sqrt[N]{\prod_{n = 1}^{N} \frac{1}{p(x_{n})}} \end{align}$$
이는 때때로 지수화된 교차 엔트로피(exponentiated cross entropy)라고 불립니다. 즉, 이는 역예측확률들의 기하평균에 해당합니다. 언어모델의 경우, 보통 다음 단어를 예측할 때 이전 단어들에 조건을 부여합니다. 예를 들어, 바이그램 모델에서는 1차 마르코프 모형 $p(x_{i} \mid x_{i - 1})$을 사용합니다. 언어모델의 분기계수(brancing factor)는 주어진 단어 뒤에 올 수 있는 가능한 단어 수로 정의하죠. 퍼플렉시티는 가중 평균된 분기계수로 해석할 수 있습니다. 예를 들어, 모델이 맥락과 상관없이 각 단어가 동일한 확률로 나타난다고 가정하면 $p(x_{i} \mid x_{i - 1}) = \frac{1}{K}$가 되고 퍼플렉시티는 $\left( \left( \frac{1}{K} \right)^{N} \right)^{-\frac{1}{N}}= K$가 됩니다. 만약 일부 심볼이 다른 것보다 더 자주 나오고 모델이 이를 정확하게 반영한다면 퍼플렉시티는 $K$보다 작아집니다. 그러나 교차 엔트로피에서 보았다싶이 $\mathbb{H}(p^{*}) \le \mathbb{H}_{\text{ce}} (p^{*}, p)$가 성립하므로 퍼플렉시티를 기저 확률과정 $p^{*}$의 엔트로피 이하로는 줄일 수 없습니다.