지난 포스팅의 [PML intro] Ch6 Information Theory (Sec.6.2 Relative entropy (KL divergence) - 2)에서는 KL 발산의 가장 중요한 성질로 항상 0보다 크거나 같다는 것을 증명하였습니다. 또한, KL 발산이 0이 되기 위해서는 두 분포가 동일해야함도 함께 보였죠. 오늘은 아주 초반에 배웠던 MLE와 KL 발산 사이의 관계성에 대해서 알아보도록 하겠습니다.
저희의 목표를 진짜 분포 $p$가 있다고 가정했을 때 여기에 가장 가까운 분포 $q$를 KL 발산으로 측정하여 찾고 싶다고 두겠습니다. 이러한 목표를 수식으로 적으면 $q^{*} = \text{argmin}_{q} \mathcal{D}_{\mathbb{KL}}(p || q)$가 되죠. 이제 KL 발산의 정의를 풀어서 써보면 다음과 같습니다.
$$\begin{align} \mathcal{D}_{\mathbb{KL}}(p || q) &= \int p(x) \frac{p(x)}{q(x)} \; dx \\ &= \int p(x) \log p(x) \; dx - \int p(x) \log q(x) \; dx \end{align}$$
이를 최적화 목표함수에 대입하면 다음과 같죠.
$$\begin{align} q^{*} &= \text{argmin}_{q} \mathcal{D}_{\mathbb{KL}}(p || q) \\ &= \text{argmin}_{q} \left[ \int p(x) \log p(x) \; dx - \int p(x) \log q(x) \; dx \right] \end{align}$$
여기서 저희는 첫번째 항인 $\int p(x) \log p(x) \; dx$는 $q$와 전혀 상관없는 항임을 알 수 있습니다. 따라서, 실제로 $q^{*}$를 고를 때 영향을 주는 것은 오직 두번째 항 $-\int p(x) \log q(x) \; dx$가 되는 것이죠. 그런데 이는 일반적으로 많이 활용하는 교차 엔트로피 (cross entropy)의 형태와 많이 유사합니다.
하지만 실제 기계학습에서 $p$를 "진짜 세상 분포"로는 알 수 없습니다. 그 대신 데이터셋만을 가지고 있죠. 그래서 저희는 $p$를 데이터를 기반으로한 경험적 분포 (empirical distribution)으로 볼 수 있습니다.
$$p_{D}(x) = \frac{1}{N} \sum_{n = 1}^{N} \delta(x - x_{n})$$
이때, $x_{1}, \dots, x_{n}$은 저희가 지금까지 관찰한 훈련 샘플들이고 $\delta(\cdot)$은 디랙-델타 함수로 정의됩니다. 다음 단계는 디랙-델타 함수의 sifting property를 활용할 수 있습니다. 즉, $\int \delta (x - x_{n})f(x) \; dx = f(x_{n})$을 만족한다는 의미입니다. 이제 KL 발산 수식에 $p$ 대신에 $p_{D}$를 대입해보도록 하겠습니다.
$$\begin{align} \mathcal{D}_{\mathbb{KL}} (p || q) &= \int p_{D}(x) \log \frac{p_{D} (x)}{q(x)} \; dx \\ &= \int p_{D}(x) \log p_{D}(x) \; dx - \int p_{D}(x) \log q(x) \; dx \\ &= -\int p_{D}(x) \log q(x) \; dx + C \end{align}$$
이번에도 여전히 첫번째 항 $\int p_{D}(x) \log p_{D}(x) \; dx $는 $q$와 무관한 상수 $C$라고 볼 수 있습니다. 이제 최종적으로 이식을 정리하면 다음과 같습니다.
\begin{align} - \int p_D(x)\log q(x)\,dx + C &= - \int \left[ \frac{1}{N} \sum_n \delta(x - x_n) \right]\log q(x)\,dx + C \\ &= - \frac{1}{N} \sum_n \int \delta(x - x_n)\log q(x)\,dx + C \\ &= - \frac{1}{N} \sum_n \log q(x_n) + C \end{align}
정리하자면 $\mathcal{D}_{\mathbb{KL}} (p_{D} || q) = - \frac{1}{N} \sum_{n} \log q(x_{n}) + C$라는 것을 알 수 있습니다. 그런데 이 식에서 $-\frac{1}{N} \sum_{n = 1}^{N} \log q(x_{n})$은 사실 평균 NLL임을 알 수 있습니다. 즉, $q$를 모델 분포 그리고 $\{x_{n}\}$을 훈련 데이터셋이라고 본다면 $-\sum_{n} \log q(x_{n})$은 우도를 최대화하는 것과 같은 의미이고 $\frac{1}{N}$을 곱한것은 단지 평균을 낸 것 뿐이죠. 결론적으로 다음 명제들은 모두 동일하게 됩니다.
- 경험분포 $p_{D}$에 대한 KL 발산을 최소화
- 경험분포와 $q$ 사이의 교차 엔트로피의 최소화
- 데이터에 대한 평균 NLL을 최소화
- 우도 최대화 (= MLE)
즉, “MLE = 경험분포와의 KL을 최소화하는 것” 이라는 해석이 나온다. 이러한 결론은 MLE의 한계를 강조합니다. 결국 MLE는 훈련 데이터에 해당하는 지점들에만 KL 발산을 맞추도록 일반화시키도록 압박합니다. 왜냐하면 경험분포 $p_{D}$는 관측 데이터 $\{ x_{n} \}$에만 $\frac{1}{N}$씩 강한 스파이크를 부여해놓고 나머지에는 다 0을 부여하기 때문입니다. 즉, 현실의 진짜 분포는 매끄러운 분포겠지만 $p_{D}$는 딱 $N$개의 점에만 질량이 부여된 분포이기 때문에 진짜 분포를 나타낸다고 보기 힘들죠.
이러한 문제를 해결하는 방법은 크게 두가지가 있습니다. 첫번째는 커널 밀도추정 (Kernel Density Estimation; KDE)로 이는 $p_{D}$를 부드럽게 만드는 방법으로 각 데이터 포인트에 델타 스파이크가 아니라 커널을 통해 주변까지 확률을 퍼뜨리는 방식입니다. 하지만, 이미지 공간과 같이 매우 고차원적이고 복잡한 구조를 가지는 경우 어떤 커널을 사용해야하는 지 모호해집니다. 다른 방법은 영상에 회전, 평행이동, 색감변화, 크롭 등 영상의 정보를 해치지 않는 선에 가벼운 변형을 줌으로써 새로운 샘플을 만들어 내는 기법입니다. 이것이 바로 데이터 증강 (Data Augmentation)입니다.