Untitled

[머신 러닝/군집화] 가우시안 혼합 모델 (Gaussian Mixture Model, GMM) 본문

지능형시스템/머신 러닝

[머신 러닝/군집화] 가우시안 혼합 모델 (Gaussian Mixture Model, GMM)

CHML 2018. 4. 6. 20:32

Gaussian Mixture Model (GMM)은 이름 그대로 Gaussian 분포가 여러 개 혼합된 clustering 알고리즘이다. 현실에 존재하는 복잡한 형태의 확률 분포를 [그림 1]과 같이 $K$개의 Gaussian distribution을 혼합하여 표현하자는 것이 GMM의 기본 아이디어이다. 이때 $K$는 데이터를 분석하고자 하는 사람이 직접 설정해야 한다.


[그림 1] 여러 Gaussian distribution의 혼합 분포


주어진 데이터 $x$에 대해 GMM은 $x$가 발생할 확률을 [식 1]과 같이 여러 Gaussian probability density function의 합으로 표현한다.



[식 1]에서 mixing coefficient라고 하는 $\pi_k$는 $k$번째 Gaussian distribution이 선택될 확률을 나타낸다. 따라서, $\pi_k$는 아래의 두 조건을 만족해야 한다.



GMM을 학습시킨다는 것은 주어진 데이터 $X = \{x_1, x_2, ..., x_N\}$에 대하여 적절한 $\pi_k, \mu_k, \Sigma_k$를 추정하는 것과 같다.


2. GMM을 이용한 classification

GMM을 이용한 classification은 주어진 데이터 $x_n$에 대해 이 데이터가 어떠한 Gaussian distribution에서 생성되었는지를 찾는 것이다. 이를 위해 responsibility $\gamma(z_{nk})$를 [식 4]와 같이 정의한다.



[식 4]에서 $z_{nk} \in \{0,1\}$는 $x_n$이 주어졌을 때 GMM의 $k$번째 Gaussian distribution이 선택되면 1, 아니면 0의 값을 갖는 binary variable이다. 즉, $z_{nk}$가 1이라는 것은 $x_n$이 $k$번째 Gaussian distribution에서 생성되었다는 것을 의미한다. GMM을 이용한 classification은 $x_n$이 주어졌을 때, $k$개의 $\gamma(z_{nk})$를 계산하여 가장 값이 높은 Gaussian distribution을 선택하는 것이다. 

학습을 통해 GMM의 모든 parameter $\pi, \mu, \Sigma$의 값이 결정되었다면, 베이즈 정리(Bayes' theorem)을 이용하여 $\gamma(z_{nk})$를 다음과 같이 계산할 수 있다.



$\pi_k$와 $p(z_{nk}=1)$은 모두 $k$번째 Gaussian distribution이 선택될 확률을 나타내기 때문에 [식 5]에서는 $p(z_{nj}=1)$가 $\pi_j$로 치환되었다.


3. Expectation-maximization algorithm (EM algorithm)을 이용한 GMM의 학습

일반적으로 GMM은 주어진 데이터 $X = \{x_1, x_2, ..., x_N\}$에 대해 EM 알고리즘을 적용하여 GMM을 구성하는 parameter인 $\pi, \mu, \Sigma$를 추정한다. Parameter를 추정하기 위해 먼저 [식 6]과 같이 log-likelihood $\mathcal{L}(X;\theta)$를 정의한다.



직관적으로 likelihood는 어떠한 모델에서 데이터 $X = \{x_1, x_2, ..., x_N\}$가 생성되었을 확률을 나타낸다. [식 6]에서 정의한 log-likelihood는 기본적인 likelihood와 동일한 의미를 가지며, 계산상의 편의를 위해 likelihood에 log를 취한 형태이다. 따라서, log-likelihood를 최대화하는 $\pi, \mu, \Sigma$ 추정하는 것은 주어진 데이터 $X$를 가장 잘 표현하는 GMM을 구성하는 것과 동일한 의미를 갖는다.

이를 위해 각각의 $\pi_k, \mu_k, \Sigma_k$에 대해 $\mathcal{L}(X;\theta)$를 편미분한다. Log-likelihood를 최대화하기 위한 $\mu_k$의 추정 과정은 아래와 같다.




$\Sigma_k$는 다음과 같이 계산된다.




GMM의 마지막 parameter인 $\pi_k$는 [식 3]의 조건을 만족하면서 log-likelihood를 최대화해야 한다. 따라서, $\pi_k$는 라그랑주 승수법 (Lagrange multiplier method)을 이용하여 추정하며, 라그랑지안 $J(X;\theta, \lambda)$는 [식 9]와 같다



$J(X;\theta, \lambda)$를 $\pi_k$에 대해 편미분하면 다음과 같이 $\lambda$를 계산할 수 있다.




위의 과정을 통해 계산한 $\lambda$를 이용하여 다음과 같이 $\pi_k$를 추정할 수 있다.




GMM의 parameter 추정을 위한 EM 알고리즘의 E-step에서는 모든 데이터와 Gaussian distribution에 대해 $\gamma(z_{nk})$를 계산한다. 그 다음, M-step에서는 [식 7, 8, 11]을 이용하여 모든 Gaussian distribution에 대한 $\pi, \mu, \Sigma$를 추정한다. 이러한 E-step과 M-step을 일정 횟수 또는 수렴할 때까지 반복한다.


4. 구현

EM 알고리즘을 이용한 GMM의 parameter는 아래의 [알고리즘 1]과 같이 추정된다.



입력받은 데이터 $X = \{x_1, x_2, ..., x_N\}$에 대한 classification은 [알고리즘 2]와 같이 수행된다.





16 Comments
  • 프로필사진 정성엽 2018.11.23 14:58 잘 이해 안되던 내용인데 설명이 잘 되어있네요!! 감사합니다
  • 프로필사진 평안 2018.12.09 00:53 와 정말 이해가기 쉽게 설명되어있네요. 여러 자료 참고해가며 공부했는데 여기서 다 이해하고 갑니다!! 정말 감사합니다
  • 프로필사진 이동현 2019.01.18 17:57 이해가 쉽게 잘 쓰였습니다! 여담이지만, 식 (6)의 loglikelihood 가 저렇게 쓰이려면 분포로부터 x_i 가 각각 독립적으로 추출(sampling)되었다는 전제가 있어야 하겠네요
  • 프로필사진 김이해 2020.03.08 14:48 설명 감사드립니다!!
    한가지 질문이 있습니다.
    Σk 의 의미는 무엇이죠??
  • 프로필사진 CHML 2020.03.09 09:15 신고 GMM은 k개의 Gaussian distribution으로 복잡한 형태의 확률 분포를 표현하는 모델입니다. 따라서, $\sum_k$는 GMM을 구성하는 모든 Gaussian distribution에 대한 계산을 의미합니다. 예를 들어, 본문의 식 (1)에서는 $\sum_k$를 기반으로 GMM에서 데이터 $x$가 발생할 확률을 계산하고 있습니다.
  • 프로필사진 zorba 2020.04.14 15:15 위엣분이 설명 어렵게 해주셨네요
    ∑k 는 Multidimensional 에서 Gaussian Distribution 표준편차 행렬입니다.
  • 프로필사진 CHML 2020.04.14 15:23 신고 zorba // 아... 제가 $\sum_k$를 $\sum_{k=1}^{K}$로 잘못 이해해서 설명을 했었네요. $\sum_k$는 GMM에서 $k$번째 Gaussian distribution의 표준편차입니다. 이전의 제 댓글은 잘못된 설명입니다.
  • 프로필사진 으악 어려워 2020.07.16 08:55 제가 잘 이해한건지 궁금해서 댓글 남겨봅니다!
    만약 100개의 점이 4개의 Gaussian Mixture model의 데이터 값으로 주어졌다고 가정하면,
    1. 4개의 평균, 분산, Σ을 초기화해준다.
    2. NK개의 γ(Z_nk)를 계산해준다.(E step)
    3. 이를 바탕으로 4개의 평균, 분산, Σ을 다시 계산해준다.
    4. 2~3을 수렴조건이나 T회 반복할때까지 반복한다.
    이게 맞는것인가요? 마지막 줄에있는 {x1,...,xN}의 classification 과정은 어떤 과정인지 궁금합니다!
  • 프로필사진 으악 어려워 2020.07.16 08:58 classification 과정이 꼭 필요한 과정인지 궁금합니다! 처음에 주어진 데이터의 변형을 일으키는 것 같은데, 이 과정을 통하면 수렴성이 더 빨라지거나 하는 장점이 있나요..?
  • 프로필사진 으악 어려워 2020.07.16 10:09 그리고 variance 식에 있는 전치 T에 대해서도 궁금한 점이 있습니다 ㅠㅠ!! 어짜피 x_n-mu_k은 벡터가 아닌 실수값을 가질텐데 전치행렬로 표시하는 이유가 있나요..? 감사합니다 ㅠㅠ!
  • 프로필사진 으악 어려워 2020.07.16 11:51 오랫동안 생각해봤는데, 주어진 데이터의 형태가 (x_i, y_i)형태인가요? x좌표에 대응되는 y좌표의 값들을 순서쌍으로 묶어둔 1×2형태의 matrix로 주어지는 것이겠죠?
  • 프로필사진 CHML 2020.07.17 18:43 신고 말씀하신 classification 과정은 Algorithm 2인가요? 맞다면, 이것은 평균과 분산의 학습이 아니라 학습된 모델에 새로운 데이터가 입력될 때 수행되는 예측 과정입니다.
  • 프로필사진 CHML 2020.07.17 18:45 신고 학습 과정에서 주어지는 데이터는 (x, y)이지만 모델에는 x만 입력됩니다. 그리고 이 글은 x가 다차원 벡터인 것을 가정하고 작성했기 때문에 x - mu 또한 다차원 벡터입니다.
  • 프로필사진 Hi 2020.12.30 01:19 좋은 자료와 설명 감사합니다. 혹시 포스팅하시면서 참고하신 문헌을 좀 알 수 있을지요?!
  • 프로필사진 Soo 2021.03.16 06:00 안녕하세요. 글 너무 잘 읽었습니다.
    혹시 참고 문헌을 알 수 있을까요?
    감사합니다.
  • 프로필사진 CHML 2021.07.25 17:57 신고 참고 문헌은 따로 없지만, Christopher Bishop의 Pattern Recognition and Machine Learning이라는 책을 보시면 본문의 내용을 더 쉽게 이해하실 수 있을듯합니다.
댓글쓰기 폼