Gaussian Mixture Model(GMM)
이번 포스팅에서는 이전 포스트에서 Bayesian에 대한 기초 설명을 넘어서, Model에 대한 이야기를 진행합니다.
데이터를 설명하기 위해서는 모델이 필요합니다. $Gaussian$은 가장 간단하면서도 많은 것을 설명해주는 모델입니다.
$Gaussain Mixture Model$은 여러 개의 $Gaussain$에 대한 합으로 모델을 표현한 것 입니다. 일차원에서는 아래와 같은 그림으로 표현할 수 잇습니다.
수식에서는 3개의 $Guassian$을, 그림에서는 2개의 $Guassain$을 사용한 $GMM$ 모델입니다.
$$
p(x|\theta) = \pi_1\mathcal{N}(x|\mu_1, \Sigma_1)+\pi_2\mathcal{N}(x|\mu_2, \Sigma_2)+ \pi_3\mathcal{N}(x|\mu_2, \Sigma_3)\\\\
\theta={\pi_1,\pi_2,\pi_3,\mu_1,\mu_2,\mu_3, \Sigma_1,\Sigma_2,\Sigma_3}\
$$
그림의 모델에서는 $\sigma_2$값이 더 작기 때문에, 평균 $\mu_2$에 더욱 몰려있습니다. 따라서 높이를 맞추기 위해서는 더 큰 Normalizae Term이 필요합니다.
Training GMM
주어진 데이터에 대해서 GMM 모델을 학습시킨다는 것은, 모델의 파라미터가 X의 확률인 Likelihood를 최대로 높이는 것 입니다. 따라서 $\{x_1, \cdots, x_N\}$ 데이터가 있을 때, $M$개의 Gaussian의 합으로 이루어진 GMM은 아래 식을 만족합니다.
$$
\max_\theta p(X|\theta) = \prod_{i=1}^{N}(\pi_1\mathcal{N}(x_i|\mu_1, \Sigma_1)+\cdots) \\\\
\text{subject to } \sum_{i=1}^M\pi_i = 1, \pi_k \geq 0; k=1, \cdots, M
$$
Introduction : latent variable
GMM 모델을 학습시키는 이유는 이를 바탕으로 새로운 데이터가 주어졌을 때, 어떠한 Class에 속하는지 찾는 경우가 많습니다. 이를 좀더 일반적으로 쓴다면, $t$라는 Source로부터 $X$ 데이터가 추론되었을 때, 반대로 $X$ 데이터로부터 source인 $t$를 찾는 것 입니다.
모델 파라미터$\theta$와 Source $t$의 관계를 확률로 나타내고, 각각의 Class가 Guassian 분포를 따른다고 가정하면, $t, \theta$로부터 데이터의 likelihood를 계산할 수 있습니다. Class의 갯수 자체가 GMM의 Guassian의 갯수가 됩니다.
$$
p(t=c|\theta)= \pi_c \\\\
p(x|\theta, t=c)= \mathcal{N}(x|\mu_c, \Sigma_c) \\\\
$$
$$
p(x|\theta) = \sum_{c=1}^Np(x|t=c, \theta)p(t=c|\theta)
$$
이러한 계산을 위해서는 두 가지 정보가 필요합니다. 모델과 Source에 대한 정보입니다.
그러나 우리가 할 수 있는 일은 모델을 알고 있을 때, 클래스를 유추해내는 것 또는 클래스를 알고 있을 때 모델을 유추해 내는 것 입니다. 즉 두 가지 정보가 데이터로 연관되어 있기 때문에, 서로 추론이 가능합니다.
How to estimate parameters $\theta$, when the source given.
- 만일 소스 $t$ 가 주어진다면, 여기에 맞는 Gaussian의 파라미터를 계산할 수 있습니다.
데이터각 각 클래스에 속한다면Deterministic하게 다음과 같이 계산할 수 있습니다.
$$
p(x|t=1, \theta) = \mathcal{N}(x|\mu_1, \sigma_1^2) \\\\
\mu_1 = \frac{\sum_{\text{blue i}}x_i}{\text{# of {blue} points}} \\\\
\sigma_1^2 = \frac{\sum_{\text{blue i}}(x_i-\mu_1)^2}{\text{# of {blue} points}}
$$
조금 다른게, 데이터가 특정 클래스에 속할 확률이 주어진다면 Stochastic 하게 모델의 파라미터를 찾을 수 있습니다.
$$
\mu_1 = \frac{\sum_{i}p(t_i=1|x_i,\theta)x_i}{p(t_i=1|x_i,\theta)} \\\\
\sigma_1^2 = \frac{p(t_i=1|x_i,\theta)(x_i-\mu_1)^2}{p(t_i=1|x_i,\theta)}
$$
How to find source, when model parameters are given.
이번에는 모델의 파라미터가 주어졌을 때, 데이터가 속한 확률을 계산하는 방법입니다.
파란색과 핑크색 Gaussian처럼, 데이터에 대한 확률이 Gaussian(Class에 대해서)으로 주어졌을 때, 데이터의 Class의 확률을 구하는 경우 입니다. 각 점에 대해서 Class에 속하는 확률을 구하는 문제입니다.
Given $p(x|t=1, \theta) = \mathcal{N}(-2,1)$
Find $p(t=1|x,\theta)$
$$
p(t=1|x,\theta) = \frac{p(x|t=1, \theta)p(t=1|\theta)}{Z}
$$
EM algorithm
Chicken and egg problem
위에서 설명한 것처럼, Source와 Model의 파라미터는 서로 유추하는 관계를 지니고 있기에 마치 닭과 계란처럼 누가 먼저냐고 싸우는 것과 비슷합니다. 모델의 파라미터를 안다면 데이터의 클래스에 대한 확률을 구할 수 있고 반대로 클래스가 주어진다면 모델의 파라미터를 추론할 수 있습니다. 이러한 반복적인 성질을 활용한 것이 EM algorithm입니다. 이에 대한 설명은 다음에 이어나가겠습니다.
References
[1] Coursera www.coursera.org/learn/bayesian-methods-in-machine-learning/home/welcome