Situation Overview
MLE에 대해 이해하기에 앞서 먼저 주어진 상황과 notation을 이해해 보자. 먼저 Figure 1의 왼쪽을 보면 $\mathbf {x}_{i} \sim P_{data}$ 표시가 있는데, $\mathbf {x}_{i}$는 우리가 가지고 있는 training data이다. 만약 강아지 사진을 1000장 가지고 있으면 n = 1000이 된다. 총데이터를 한 번에 dataset $D=\{\mathbf{x}_{1}, \dots\, , \mathbf {x}_{n}\}$ 또는 $D=\{\mathbf{x}^{(1)}, \dots\, ,\mathbf {x}^{(n)}\}$로 표시한다. $P_{data}$는 우리가 가지고 있는 데이터가 따르는 true distribution이며, 우리의 데이터는 이 분포에서 i.i.d.(independent and identically distributed)로 샘플링되었다고 가정한다. $P_{\theta}$는 우리가 모델링한 분포이며 $\theta$를 parameter로 한 분포이다. 예를 들어 gaussian 분포를 우리의 모델로 선택한다면 $\theta = (\mathbf {\mu}, \mathbf {\Sigma})$가 된다. 우리는 모든 가능한 $(\mathbf {\mu}, \mathbf{\Sigma})$에서 특정 $(\mathbf{\mu}, \mathbf {\Sigma})$를 갖는 모델을 선택한다. 이를 수학적으로 표현하자면 모든 가능한 parameter 조합을 가진 model family $M$에서 하나의 경우($\theta$)를 선택($\theta \in M$)한다고 표현할 수 있다.
Objective of Learning
우리의 목적은 우리의 모델 $P_{\theta}$가 실제 분포인 $P_{data}$와 같게 되는 것이다. 위 강아지 예시에 의하면 두 분포가 같아야 $\mathbf{x}_{\text{new}} \sim P_{\theta}$ 를 통해 sampling을 했을 때 $\mathbf{x}_{\text{new}}$가 강아지와 같을 것이고, 실제 강아지의 이미지를 $P_{\theta}$에 넣었을 때 높은 확률 밀도 값을 얻을 수 있기 때문이다. 그러면 우리는 $P_{data}$를 알 수 있나? 불행하게도 아니다. 여기엔 2가지 이유가 존재한다. 첫째 우리가 $P_{data}$로부터 얻을 수 있는 data 개수는 제한(limited samples)되어있다. 이로 인해 우리는 $P_{data}$를 정확히 표현하는 $P_{\theta}$를 얻지 못하며, 대략적인 예측(approximation) 값만 얻을 수 있다. 두 번째로, $\mathbf{x}$의 모든 경우의 수에 대해 확률을 모두 계산하는 것은 computationally intensive 하다. 위 2가지 이유를 이해하기 어려울 수 있는데, 아래 예시를 보면 쉽게 이해할 수 있다.
Figure 2는 $P_{data}$를 얻을 수 없는 하나의 예시이다. 이 예시에서 $\mathbf{x}$의 차원은 28x28 image (MNIST)이고 binary 값을 가진다. 이러한 단순한 예시에도 모든 가능한 경우의 수가 대략 10^236개이다. 우리가 가지고 있는 data가 10^7개 (1000만 개)여도 모든 경우의 수에 비하면 limited samples라 할 수 있다. 따라서 우리는 모든 경우에 대한 $P_{data}$를 알 수 없고, 우리가 갖고 있는 data(limited samples)를 가지고 $P_{\theta}$가 $P_{data}$를 완벽히 표현하는 것은 불가능하다.
What's the best?
그럼 어떤 $P_{\theta}$가 $P_{data}$를 잘 표현한 분포일까? 정답은 Figure 1에 있다. 우리의 model family $M$에서 실제 $P_{data}$와 거리(차이, $d(P_{data}, P_{\theta})$)가 가장 작은 parameter set $\theta$를 가진 분포 $P_{\theta}$를 best approximation이라고 할 수 있을 것이다. 그러면 두 확률 분포의 거리는 어떻게 측정하는 걸까?
KL-Divergence
두 확률 분포 p, q의 거리는 보통 Kullback-Leibler divergence(KL-divergence)를 이용해 표현한다. 이를 밑의 식으로 표현할 수 있다.
$$ D(p\|q) = \mathbf{E}_{\mathbf{x} \sim p} \left[\log \frac{p(\mathbf{x})}{q(\mathbf{x})} \right] = \sum_{\mathbf{x}}p(\mathbf{x})\log\frac{p(\mathbf{x})}{q(\mathbf{x})} $$
확률 변수 $\mathbf{x}$는 discrete 하다고 가정한다면, 모든 $\mathbf{x}$에 대한 log 값에 대한 합으로 쓸 수 있다. 만약 continuous 하다면 합을 적분값으로 바꿔주면 된다. KL-divergence는 Jensen's inequality 식을 이용하면 항상 0보다 크다는 것을 알 수 있다. 이때 KL-divergence가 0이 될 때는 두 분포 $p$, $q$가 서로 같을 때이다. $\log$값에 $p=q$임을 넣으면 모든 값이 0이 나오는 것을 통해 확인할 수 있다. 또한 $D(p\|q)$와 $D(q\|p)$가 달라 asymetric 한 특징을 갖고 있다. 위 식에 $P_{data}$, $P_{\theta}$를 넣어 아래의 식처럼 쓸 수 있다.
$$D(P_{data} \| P_{\theta}) = \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log \frac{P_{data}(\mathbf{x})}{P_{\theta}(\mathbf{x})} \right] = \sum_{\mathbf{x}} P_{data}(\mathbf{x}) \log \frac{P_{data}(\mathbf{x})}{P_{\theta}(\mathbf{x})}$$
이 식을 전개하면, 아래와 같다.
$$D(P_{data} \| P_{\theta}) = \mathbf{E}_{\mathbf{x} \sim P_{\text{data}}} \left[\log P_{data}(\mathbf{x}) \right] - \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log P_{\theta}(\mathbf{x}) \right]$$
첫 번째 term은 우리가 $P_{data}$를 알지 못하기에 직접 evaluation을 할 순 없지만, 확실한 건 우리의 모델인 $P_{\theta}$에 independent한 어떠한 상수라는 것이다. 우리가 원하는 것은 $P_{data}$와 $P_{\theta}$가 서로 비슷해지는 것이므로, 이 둘의 KL-divergence를 최소화해야 한다. 이를 수식으로 쓰면 아래와 같다.
\begin{align} \arg \min_{P_{\theta}} D(P_{data} \| P_{\theta}) &= \arg \min_{P_{\theta}} (\text{const.} - \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log P_{\theta}(\mathbf{x}) \right]) \\&= \arg \max_{P_{\theta}} \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log P_{\theta}(\mathbf{x}) \right] \end{align}
여기서 중요한 점은 우리가 $P_{data}$ 값을 모르더라도 $P_{data}$와 $P_{\theta}$의 차이인 KL-divergence을 minimization 하는 것을 $\log P_{\theta}$의 expectation인 expected log-likelihood를 maximization 하는 것을 통해 수행할 수 있다는 것이다. 하지만 우리는 실제 true distribution에서 얻은 data를 모두 가지고 있을 수 없으므로 이론적으로는 expectation값을 얻을 수 없다. 그렇다면 어떻게 expected log-likelihood를 근사할 수 있을까?
Monte Carlo Estimation
어떤 분포 $p$에서 얻은 샘플들 $\mathbf{x}$에 대한 $g(\mathbf{x})$의 expectation을 구하는 것을 식으로 나타내면 아래와 같다.
$$ \mathbf{E}_{\mathbf{x} \sim p} \left[g(\mathbf{x}) \right] = \sum_{\mathbf{x}} p(\mathbf{x})g(\mathbf{x})$$
위 식은 $\mathbf{x}$가 discrete 할 때 $g(\mathbf{x})$의 expectation을 구한 것이다. 이때 모든 가능한 $\mathbf{x}$에 대해 sum 또는 integral을 해주어야 하므로 현실적으로 불가능하다. Monte Carlo Estimation은 모든 가능한 $\mathbf{x}$가 아닌 우리가 가진 train data로 이를 근사한다. 만약 우리가 $p$에서 총 $T$개의 samples($\mathbf{x}^{(1)}$, .. ,$\mathbf{x}^{(T)}$)를 갖고 있다고 가정하자. 이때 $g(\mathbf{x})$의 expectation은 아래와 같이 근사할 수 있다.
$$ \mathbf{E}_{\mathbf{x} \sim p} \left[g(\mathbf{x}) \right] = \frac{1}{T} \sum_{t=1}^{T} g(\mathbf{x}^{(t)})$$
이 근사치는 $T$의 개수가 커질수록 실제 expectation과 가까워진다. $p$를 $P_{data}$, $g(\mathbf{x})$를 $\log P_{\theta}(\mathbf{x})$라고 하고 식을 정리하면 아래와 같다.
$$ \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log P_{\theta}(\mathbf{x}) \right] = \frac{1}{|D|} \sum_{\mathbf{x} \in D} \log {P_{\theta}}(\mathbf{x}) $$
여기서 $D$는 맨 처음 언급한 모든 training data를 묶은 집합이다. 이로써 우리는 $P_{data}$를 직접 evaluation을 하지 못해도 위의 식(expected log-likelihood)을 maxmizing 하여 KL-divergence를 minimizing 할 수 있다.
다시 처음 질문으로 들어와서 우리가 가질 수 있는 전체 모델인 model family $M$에서 어떤 model이 최고의 모델일까? 최고의 모델은 $P_{data}$와 $P_{\theta}$의 차이인 KL-divergence를 최소화하는 모델일 것이고, 이는 expected log-likelihood를 최대화하는 모델이다. 그러므로 우리는 최고의 모델을 찾기 위해 expected log-likelihood를 최대화할 수 있는 parameter set $\theta$를 찾아야 한다. 이를 식으로 나타내면 아래와 같고, 이러한 최적화 방법을 maximum likelihood learning이라고 한다.
$$ \mathbf{E}_{\mathbf{x} \sim P_{data}} \left[\log P_{\theta}(\mathbf{x}) \right] = \frac{1}{|D|} \sum_{\mathbf{x} \in D} \log P_{\theta}(\mathbf{x})$$
엄밀히 말하자면, 우리가 가지고 있는 모든 data에 대한 모델의 likelihood는 각 데이터에 대한 모델 값의 곱이며, 이를 수식으로 표현하면 아래와 같다.
$$ P_{\theta}(\mathbf{x}^{1}, \dots\,, \mathbf{x}^{T}) = \prod_{\mathbf{x} \in D} P_{\theta}(\mathbf{x}) $$
하지만, 곱으로 이루어져 있는 식으로 learning을 하는 것보다 덧셈으로 이루어져 있는 식을 최적화 하는 게 훨씬 쉽기 때문에 많은 경우 log-likelihood를 최적화한다. log는 단조증가함수이기 때문에 $\log P_{\theta}(\mathbf{x})$ 값을 최적화하는 것과 $P_{\theta}(\mathbf{x})$를 최적화하는 것은 같다고 볼 수 있다.
e.g. Gaussian
간단한 예시를 통해 MLE를 수행해보자. 모델이 multivariate gaussian distribution이라고 가정하자. 결과부터 말하자면, 단일 gaussian distribution처럼 간단한 분포에 대해서는 log-likelihood를 최대화하는 parameter set을 analytical 하게 구할 수 있다. 즉, 최적의 해 closed form 형태로 나온다. 분포를 수식으로 나타내면 아래와 같다.
\begin{align} P_{\theta}(\mathbf{x}) &= \mathcal{N}(\mathbf{x}; \mathbf{\mu}, \mathbf{\Sigma})\\ &= \frac{1}{(2\pi)^{d/2}|\mathbf{\Sigma}|^{1/2}} \exp(-\frac{1}{2}(\mathbf{x} - \mathbf{\mu})^{\text{T}}\mathbf{\Sigma}^{-1}(\mathbf{x} - \mathbf{\mu}))\end{align}
여기서 parameter set $\theta = (\mathbf{\mu}, \mathbf{\Sigma})$이다. $P_{data}$에서 $N$개의 샘플(train data) $D = \{\mathbf{x}^{(1)}, \dots\,, \mathbf{x}^{(N)}\}$ 를 가지고 있다고 가정하자. 그럼 전체 train data에 대한 모델의 likelihood는 아래와 같이 쓸 수 있다.
$$ P(D ; \mathbf{\mu}, \mathbf{\Sigma}) = \prod_{n=1}^{N} \mathcal{N}(\mathbf{x}^{(n)}; \mathbf{\mu}, \mathbf{\Sigma})$$
이를 log-likelihood로 변형시키면 다음과 같다.
$$ L(\mathbf{\mu}, \mathbf{\Sigma}) = \log P(D ; \mathbf{\mu}, \mathbf{\Sigma}) = \sum_{n=1}^{N} \mathcal{N}(\mathbf{x}^{(n)}; \mathbf{\mu}, \mathbf{\Sigma}) $$
log-likelihood를 maximize하기 위해서는 $\frac{\partial L}{\partial \mathbf{\mu}} = 0$과 $\frac{\partial L}{\partial \mathbf{\Sigma}} = 0$을 풀면 된다. 위 편미분의 해가 closed form으로 존재한다. 해를 각각 $\hat{\mathbf{\mu}}$, $\hat{\mathbf{\Sigma}}$로 나타내면 다음과 같다.
$$ \hat{\mathbf{\mu}} = \frac{1}{N} \sum_{n=1}^{N} \mathbf{x}^{(n)} \\ \hat{\mathbf{\Sigma}} = \frac{1}{N} \sum_{n=1}^{N} ((\mathbf{x}^{(n)} - \mathbf{\mu})(\mathbf{x}^{(n)} - \mathbf{\mu})^{\text{T}})$$
이처럼 모델 분포를 gaussian 분포로 했을 때는 최적의 parameter 값을 한 번에 구할 수 있다.
실제론 true distribution은 매우 복잡하기에 이와 비슷한 분포를 추론하기 위해서는 당연히 모델의 분포도 복잡해져야 할 것이다. 모델의 분포가 복잡해진다면 어떻게 될까? 모델의 분포가 복잡하고 매우 많은 parameter를 가진 경우에도 최적의 값이 closed form 형태로 나올까? 당연히 그렇지 않다. 당장 모델의 분포를 gaussian 1개로 특정하는 것이 아닌 k개의 gaussian의 합으로 나타내는 Gaussian Mixture Model(GMM)으로 나타낸다면, 이 모델의 최적 값은 closed form 형태가 아니기에 MLE를 수행하기 위해 EM-algorithm이라는 기법을 이용해야 한다. 모델을 Neural Network로 확장하여 더 복잡한 분포라고 가정하면, 지금보다 parameter 수가 몇 십배, 몇 백배가 될 수 있으며 이때는 각 parameter에 대한 gradient를 이용하여 gradient ascent를 수행하여 최적의 값을 찾게 된다. 굉장히 효율적이고 널리 쓰이는 방법이지만 이 방법은 전체 parameter set에서 항상 최적의 값인 global optimum을 보장해주지 않는다는 단점을 갖고 있다. 즉, gradient ascent 통해 얻은 $\theta$값이 전체에서 제일 큰 값을 갖게 하는 $\theta$가 아닐 수도 있다는 뜻이다. 이렇듯 딥러닝에서 많은 최적화 기법이 MLE에 기반을 두고 있으며 이를 효율적으로 계산을 하기 위한 아이디어들인 경우가 많다. 그러므로 딥러닝 모델을 training 하는 과정을 이해하기 위해 MLE는 꼭 필요한 지식이라고 할 수 있다.
Reference