Gaussian Mixture Model (GMM)

이정훈·2026년 1월 3일
post-thumbnail

Gaussian Mixture Model (GMM)

1. GMM (Gaussian Mixture Model)

  • 전체 데이터가 KK개의 서로 다른 정규분포(Gaussian)의 혼합으로 생성되었다고 가정하는 모델

  • 정규분포는 다변량 가우시안(정규) 분포를 사용하고 수식은 아래와 같이 μ{\mu}Σ\Sigma를 변수로 가짐

    N(x)=1(2π)D/2Σ1/2exp(12(xμ)TΣ1(xμ))\mathcal{N}(\mathbf{x}) = \frac{1}{(2\pi)^{D/2} |\Sigma|^{1/2}} \exp \left( -\frac{1}{2} (\mathbf{x} - \boldsymbol{\mu})^T \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu}) \right)
  • 비지도 학습으로 rikr_{ik}라는 확률을 스스로 예측하고 다시 자기를 튜닝하는 과정을 수렴할 때까지 반복 (EM Algorithm)

  • GMM은 likelihood를 최대화하는 최적의 GMM 파라미터(π,μ,Σ\pi, \mu, \Sigma)를 찾는 과정 (rikr_{ik}를 아래 수식에 결합)

p(x)=k=1KπkN(xμk,Σk)(whereπk:가중치,μk:평균,Σk:공분산)\begin{aligned} p(x) = \sum_{k=1}^{K} \pi_k \mathcal{N}(x | \mu_k, \Sigma_k) \quad(\text{where} \quad \pi_k: \text{가중치}, \mu_k: \text{평균}, \Sigma_k: \text{공분산} \end{aligned})
  • 정규분포를 따르는 데이터에 대해 비모수적인 Clustering(K-Means)보다 일반화에 높은 성능을 가짐
  • Soft Clustering으로 특정 데이터가 A클러스터일 확률 0.7, B클러스터일 확률 0.3 처럼 확률적인 결과를 가짐

2. 학습 원리: EM 알고리즘

GMM은 아무것도 모르는 상태에서 시작해서, E(Expectation) 단계M(Maximization) 단계를 반복하며 정답을 찾아갑니다.

① 초기화
먼저 지도 위에 무작위로 KK개의 원(가우시간 분포)을 던져놓습니다. 처음에는 위치도 크기도 엉망이겠죠.

② E-Step: "너는 어느 쪽일 확률이 높니?" (기대치 계산)
모든 데이터 포인트에게 물어봅니다.

  • "너는 빨간색 원에 가까우니, 파란색 원에 가까우니?"
  • 이때 "난 빨간색 70%, 파란색 30% 정도인 것 같아"라고 확률(Responsibility)을 부여합니다.
  • 이것이 K-Means와 가장 큰 차이인 'Soft Clustering'입니다.

③ M-Step: "확률을 바탕으로 원을 다시 그려보자" (최대화)
이제 각 원의 정보를 업데이트 합니다.

  • 평균 이동: 빨간색 원은 자기에게 "70% 정도 속한다"고 말한 데이터들의 위치를 참고해서 중심점을 그쪽으로 옮깁니다.
  • 모양 변경: 데이터들이 길쭉하게 늘어서 있다면, 원의 모양을 길쭉한 타원형으로 바꿉니다.

④ 반복 (Convergence)
E-step과 M-step을 계속 반복하다 보면, 원들이 데이터가 밀집된 구역을 정확하게 감싸게 됩니다. 더 이상 원의 위치나 모양이 변하지 않으면 학습이 종료됩니다.

모든 클러스터링은 모델을 평가하기 위해 관측되지 않은 숨겨진 변수, 즉 Latent Variable(잠재 변수)이 필요합니다. GMM에서는 데이터의 정답(Label)이 없기 때문에 파라미터를 한 번에 구할 수 없습니다.
따라서 EM(Expectation-Maximization) 알고리즘을 사용하여 최적의 파라미터를 찾습니다.


3. 단계별 상세 과정

1) E-step (Expectation)

"잠재 변수(Latent Variable) 추정"

  • 현재 설정된 파라미터(θ\theta)를 고정한 상태에서 진행합니다.
  • 각 데이터가 각 클러스터에 속할 확률인 Responsibility (rikr_{ik})를 업데이트합니다.
  • 즉, "현재 분포 기준에서 이 점은 어느 클러스터 것인가?"를 추측하는 단계입니다.

2) M-step (Maximization)

"파라미터 업데이트 (MLE)"

  • E-step에서 구한 Responsibility(rikr_{ik})를 기반으로 파라미터 θ={π,μ,Σ}\theta = \{ \pi, \mu, \Sigma \} 전체를 업데이트합니다.

    • μk,Σk\mu_k, \Sigma_k 업데이트: rikr_{ik}를 가중치로 하여 평균과 분산을 이동시킵니다.
    • πk\pi_k 업데이트: 각 클러스터에 속할 확률(rikr_{ik})의 평균값으로 혼합 계수(Mixing Coefficient)를 갱신합니다. (πk=1Nrik\pi_k = \frac{1}{N} \sum r_{ik})

즉, E-step에서 "각 점의 소속"을 추정했다면, M-step에서는 이를 바탕으로 "모델의 모양(평균, 분산, 클러스터 비율)"을 확정 짓습니다.

  • MLE (Maximum Likelihood Estimation)를 이용하지만, 단순 평균이 아닙니다.
  • Log-Likelihood Function에 Prior인 E[rik]E[r_{ik}]를 반영하여, 이전에 더 적합했던(확률이 높았던) 클러스터(kk)에 가중치를 더 주어 평균과 분산을 이동시킵니다.

4. Pseudo Code (알고리즘 흐름)

전체적인 학습 흐름은 다음과 같습니다.

  1. Initialize θ\theta: 초기 파라미터 (π,μ,Σ\pi, \mu, \Sigma) 설정

  2. Loop (수렴할 때까지 반복):

    • E-step: 현재 θ\theta를 기반으로 rikr_{ik} (Responsibility) 추정

      Estimate r_ik based on θ

    • M-step: 추정된 rikr_{ik}를 기반으로 θ\theta 업데이트



요약

GMM은 "데이터가 여러 개의 정규분포가 섞여 있다"고 가정하며,
E-step에서 '데이터가 어디에 속하는지(rikr_{ik})'를 추측하고,
M-step에서 '그 추측을 믿고 가중치를 두어' 분포의 모양(θ\theta)을 수정하는 과정을 반복합니다.

profile
AngDDo

0개의 댓글