Notice
Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

Gaussian Mixture Model 개인 공부용 본문

ML & DL & RL

Gaussian Mixture Model 개인 공부용

yesungcho 2025. 2. 16. 15:17

참고 포스팅 :

https://angeloyeo.github.io/2021/02/08/GMM_and_EM.html

https://untitledtblog.tistory.com/133

 

GMM을 이해하기 전에 우선적으로 먼저 이해해야하는 것이 바로 Maximum likelihood (최대우도법) 개념이다.

 

우리는 특정 데이터가 있고 label이 있는 경우, 그 데이터들이 가지는 분포를 추적할 수 있는데, 예를 들어 아래와 같이 빨간색 데이터와 파란색 데이터가 있을 때 저 높이 값이 최대가 되게 하는 분포를 찾을 수 있다.

다음 두 그림을 보면, 위쪽과 아래쪽을 비교했을 때, 아래쪽이 보다 데이터의 특성을 잘 반영하는 분포를 찾았다고 할 수 있다. 즉, 저 오른쪽의 수식 값 (높이)이 더 큰 것이다. 즉 더 높이가 최대가 되게 하는 분포를 찾는 것이 MLE의 정의다.

 

여기서는 가우시안 분포를 가정하기 때문에 저 높이가 최대가 되게 하는 평균과 분산 값을 찾는 것이 MLE의 목적이다.

 

하지만 저런 사전 label (빨강, 파랑)이 주어지지 않는 경우라면 어떨까?

 

이런 경우는 이전 case와 달리 분포를 바로 tracking하는 것이 어려울 수 있다. 따라서 이를 해결하기 위한 방법 중 하나로 사용되는 전략이 바로 GMM이다.

 

GMM은 기본 전제가 “복잡한 분포 (알려지지 않은 분포)를 근사하기 위한 다수의 가우시안 분포의 혼합을 사용할 수 있다”는 것이다. 즉, 데이터 내에서는 여러 가우시안 분포의 mixture를 통해 큰 분포를 근사할 수 있다는 점이다. 논리는 아래 그림과 같다.

그렇다면 이를 어떻게 수행할까. 개념부터 하나씩 살펴보자.

우선 아래 그림을 다시 보면 label도 없기 때문에 우리는 분포를 추적하기 어렵다.

 

따라서 먼저 간단하게 labeling을 임의로 줄 수 있다 (Expectation Step).

그런 다음 분포를 계산하여 MLE가 최대가 되게하는 분포를 찾는다 (Maximization Step).

그리고 다시 labeling을 그 분포에 맞게 수정하고 다시 MLE를 계산한다, … 즉, 이런 E-M step의 과정을 반복하여 본 데이터를 가장 잘 설명하는 (MLE가 최대가 되게 하는) 최적의 분포를 찾는다.

 

이 과정이 바로 GMM의 과정이며 구체적으로 Expectation-Maximization 알고리즘의 동작 방식이다.

 

그럼 이를 수식적으로 이해해보자. 다음과 같이 X 데이터가 주어질 때, 각 데이터 xik개의 가우시안 분포 중 하나에서 생성되었다고 가정한다.

 

데이터를 다음과 같이 표시할 때,

여기서 ϕ 값은 혼합 계수로 **각 가우시안이 선택될 확률 (즉 전체 데이터에서 k에 속할 확률, 일종의 prior)**을 의미하고, summation 값은 1이 된다.

N은 가우시안 분포를 의미하고 μ Σ 값은 각각 평균과 분산 값을 나타낸다.

즉 보면 xi 에 대한 확률 분포는 k개의 가우시안 분포의 weight summation으로 구성된다.

그리고 본 p 값을 최대가 되게 하는 파라미터 θ는 각각 π, μ, Σ 값이 된다.

 

이를 바탕으로 최종 GMM의 Objective function은 아래와 같다.

 

 

바로 본 MLE function을 최대화하는 θ 값을 찾는 것을 목적으로 한다. 하지만 본 함수를 미분할 경우, 직접 closed-form으로 최적의 θ 를 찾는 것이 어렵기 때문에 EM Algorithm을 통해 최적해를 근사한다.

 

 

E-Step

우선, 현재의 파라미터 θ에서 각 데이터 xik 번째 가우시안에서 선택될 확률 (책임도, Responsibility)을 계산한다. 이를 수식으로 계산하면 다음과 같다.

 

데이터 xi가 주어질 때, 이 데이터는 k번째 가우시안에 선택될 확률을 구하고자 할 때, 이를 베이즈 정리에 의거해서 우항처럼 정리할 수 있다. 이 때 zixi가 속할 가우시안 군집을 나타내는 latent variable로 표현할 수 있다. 이 때, xi k에 있다고 했을 때의 likelihood (높이 값)과, 이를 전체 k의 군집의 비율 (prior)로 곱한 값이 분자가 되고, 모든 k에 대한 likelihood x prior (분자) 값으로 정규화를 시켜주면, 위의 xi k 에서 올 최종 responsiblity를 계산할 수 있다. 이를 구체적으로 파라미터로 수식을 표현하면 아래와 같다.

 

 

즉 분자에서 π 값이 prior가 되고 N의 정규 분포 값이 likelihood가 된다. 그리고 분모의 모든 K에 대한 분자 값이 바로 evidence가 된다.

이렇게 E-step을 통해 xik에서 왔다고 했을 때의 책임도를 계산하였다. 그러면 이게 정말로 좋은 분포인지를 확인하는 과정을 M-step을 통해 거친다.

 

M-step

E-step에서 구한 책임도를 가지고 θ값을 업데이트한다.

여기서는 θ값을 구성하는 π, μ, Σ가 각각 업데이트된다.

  • 먼저 각 군집에 속할 확률의 평균을 계산해서 π 값 업데이트

  • 각 군집 k의 새로운 평균은 책임도를 가중치로 사용하여 μ 업데이트

  • 각 군집 k의 새로운 분산은 책임도를 가중치로 사용하여 Σ 업데이트

즉 최종적으로 아래의 MLE task를 아래와 같이 θ를 반복적으로 업데이트함으로써 모형이 수렴된다.

 

이 과정으로 학습이 수행되는 것이 바로 GMM 알고리즘이다!