EM 알고리즘
EM 알고리즘(expectation-maximization algorithm)은 확률 모델에 관측 불가능한 변수들이 포함되어 있는 경우 최대우도나 최대사후확률 우도를 구하는 방법이다. EM 알고리즘은 기존의 우도를 기반으로 하여 더 좋은 우도를 찾는 계산을 반복하는 구조로 이루어져 있다.
방식 [편집]
관측할 수 있는 확률변수
와 관측할 수 없는 확률변수
, 그리고 모수
가 있을 때,
에 대한 확률분포는
로 주어져 있다. 이 때 최대우도를 계산하고 싶은 경우, 최대화하려는 우도 함수는
로 정의할 수 있다. 하지만 이 우도함수에는 극대점이 여럿 있을 수 있으며, 그러한 값들을 모두 계산하는 것은 계산적 비용이 높다.
EM 알고리즘은 어떠한 모수
를 입력으로 받아서 새로운 모수
를 찾는다. 이 방법은 크게 다음과 같이 E 단계와 M 단계로 나누어 부른다.
E 단계에서는
가 주어졌을 때 새로운
를 사용할 때 우도의 기대값
를 정의한다.
M 단계에서는
를 최대화하는 새로운 모수
를 계산한다.
실제 EM 알고리즘을 사용할 때에는 모수
를 적당한 방법(임의값 등)으로 초기화한 다음,
를 연속적으로 계산하면서 값이 충분히 수렴될때 멈추는 방식을 사용한다.
EM 알고리즘은 극대점을 찾기 때문에, 구한 값이 실제 최대점은 아닐 수 있다. 이를 피하기 위해 여러 개의 임의 초기값에 대해 계산하는 기법이나 담금질 기법 등이 같이 사용될 수 있다.
예제: 정규분포 혼합 모델 (Gaussian Mixture Model) [편집]
두 개의
차원 다변수 정규분포가 혼합되어 있는 경우, 보통 이 모델에서
차원 값을 수집하는 것은 가능하지만 그 값이 두 분포 중 어느 분포에서 나온 것인지는 알 수 없는 경우가 많다. 이 문단에서는 이러한 경우에 대한 EM 알고리즘을 유도한다.
전체
개의 점을 수집하였을 때,
번째 수집되는 값은
로 나타낼 수 있다. 여기에서
는
차원 점을 가리키는 관측 가능한 변수, 그리고
는 두 개의 정규분포 중 어느 분포에서 수집되었는지를 가리키는 관측 불가능한 변수이다.
번째 값이 두 분포 중 어느 분포에서 수집되는지에 대한 확률은
와 독립적이기 때문에,
는
에 관계없는 매개변수로 표현할 수 있다. 이 값을
인 벡터
로 표기하도록 한다(
).
마지막으로, 두 다변수 정규분포를 각각
,
로 표기하기로 한다. 그렇다면 이 모델에서 모수는
가 된다.
이제 우도함수
를 다음과 같이 표현할 수 있다.
여기에서
는 표시함수이고,
는 다변수 정규분포의 확률 밀도 함수이다. 여기에서
를 풀어서 쓰면 다음과 같이 정리된다.
모수
에 대하여
에 대한 확률분포
는 다음과 같이 계산한다.
그러면 E 단계의
함수는 다음과 같이 계산된다.
이제 M 단계를 계산한다.
함수는
에 대한 식과
에 대한 식의 선형 결합이기 때문에,
와
에 대해 독립적으로 최대화를 계산하는 것이 가능하다.
먼저 모수
는 다음과 같이 유도된다.
이 식은 이항분포에서의 최대우도를 계산하는 경우와 동일하며, 따라서 다음과 같이 계산할 수 있다.
다음으로
에 대한 식은 다음과 같다.
이 식은 다변수 정규분포에서의 최대우도를 계산하는 식과 유사하며, 다음과 같이 계산할 수 있다.
도 같은 방식으로 구할 수 있다.
![Q(\boldsymbol\theta|\boldsymbol\theta^{(t)}) = \operatorname{E}_{\mathbf{Z}|\mathbf{X},\boldsymbol\theta^{(t)}}\left[ \log L (\boldsymbol\theta;\mathbf{X},\mathbf{Z}) \right] = \sum_{\mathbf{Z}} p(\mathbf{Z}|\mathbf{X}, \boldsymbol{\theta}^{(t)}) \log L(\boldsymbol\theta;\mathbf{X},\mathbf{Z})](http://upload.wikimedia.org/math/c/0/c/c0c3f46244a34334f35443ca3d9db6da.png)


![L(\boldsymbol\theta;\mathbf{x},\mathbf{z}) = \exp \left\{ \sum_{i=1}^n \sum_{j=1}^2 \mathbb{I}(z_i=j) \big[ \log \tau_j -\tfrac{1}{2} \log |\Sigma_j| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_j)^\top\Sigma_j^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_j) -\tfrac{n}{2} \log(2\pi) \big] \right\}](http://upload.wikimedia.org/math/4/2/f/42f1cc041b783ca466b688e217919338.png)

![\begin{align}Q(\boldsymbol\theta|\boldsymbol\theta^{(t)})
&= \operatorname{E} [\log L(\boldsymbol\theta;\mathbf{x},\mathbf{Z}) ] \\
&= \sum_{i=1}^n \sum_{j=1}^2 T_{j,i}^{(t)} \big[ \log \tau_j -\tfrac{1}{2} \log |\Sigma_j| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_j)^\top\Sigma_j^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_j) -\tfrac{n}{2} \log(2\pi) \big]
\end{align}](http://upload.wikimedia.org/math/d/e/e/deed42d2fe24bba8d44683714de284ef.png)
![\begin{align}\boldsymbol{\tau}^{(t+1)}
&= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}}\ Q(\theta | \theta^{(t)} ) \\
&= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}} \ \left\{ \left[ \sum_{i=1}^n T_{1,i}^{(t)} \right] \log \tau_1 + \left[ \sum_{i=1}^n T_{2,i}^{(t)} \right] \log \tau_2 \right\}
\end{align}](http://upload.wikimedia.org/math/0/1/8/01848174797cfac4ae3385a8c168718f.png)



