3. EM算法-高斯混合模型GMM


1. EM算法-數學基礎

2. EM算法-原理詳解

3. EM算法-高斯混合模型GMM

4. EM算法-高斯混合模型GMM詳細代碼實現

5. EM算法-高斯混合模型GMM+Lasso

1. 前言

GMM(Gaussian mixture model) 混合高斯模型在機器學習、計算機視覺等領域有着廣泛的應用。其典型的應用有概率密度估計、背景建模、聚類等。

2. GMM介紹

高斯混合模型(Gaussian Mixed Model)指的是多個高斯分布函數的線性組合,理論上GMM可以擬合出任意類型的分布,通常用於解決同一集合下的數據包含多個不同的分布的情況。
image

3. GMM原理解析

根據我們之前EM算法-原理詳解,我們已經學習了EM算法的一般形式:

\[Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j})\;\;\;\;(1) \]

\[\sum\limits_{z}Q_i(z^{(i)}) =1 \]

\[L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|\theta)} \]

現在我們用高斯分布來一步一步的完成EM算法。

設有隨機變量\(\boldsymbol{X}\),則混合高斯模型可以用下式表示:

\[p(\boldsymbol{x}|\boldsymbol{\pi},\boldsymbol{\mu},\boldsymbol{\Sigma})=\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k) \]

\[\sum_{k=1}^K\pi_k=1 \]

\[0<\pi_k<1 \]

其中\(\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)\)稱為混合模型中的第\(k\)個分量(component)。可以看到\(\pi_k\)相當於每個分量\(\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)\)的權重

3.1 引入隱變量

我們引入一個隱變量\(z_{ik}\)\(z_{ik}\)的含義是樣本\(x_i\)來自第\(k\)個模型的數據分布。

\[z_{ik}= \left \{\begin{array}{cc} 1, & if\ data\ item\ i\ comes\ from\ component\ k\\ 0, & otherwises \end{array}\right. \]

則有

\[P(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) = \prod_{k=1}^K\prod_{i=1}^N[\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)]^{z_{ik}}=\prod_{k=1}^K\pi_k^{n_k}\prod_{i=1}^N[\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)]^{z_{ik}}\;\;\;\;(2) \]

其中\(n_k=\sum\limits_{i=1}^Nz_{ik}\)\(\sum\limits_{k=1}^Kn_k=N\)

再對(2)進一步化簡得到:

\[P(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)=\prod_{k=1}^K\pi_k^{n_k}\prod_{i=1}^N[\frac{1}{\sqrt{2\pi}\boldsymbol{\Sigma_k}}exp(-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k})]^{z_{ik}} \]

取對數log后:

\[logP(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)=\sum_{k=1}^Kn_klog\pi_k+\sum_{i=1}^Nz_{ik}[log(\frac{1}{\sqrt{2\pi}})-log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k}] \]

3.2 確定E步極大似然函數

計算最大似然估計\(L(\theta,\theta^{(j)})\),\(j\)是第\(j\)次EM的過程,下式子中的\(E_Q\)是(1)中\(Q\)函數的期望值

\[L(\theta,\theta^{(j)})=E_Q[logP(x,z|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)] \]

\[L(\theta,\theta^{(j)})=E_Q[\sum_{k=1}^Kn_klog\pi_k+\sum_{i=1}^Nz_{ik}[\frac{D}{2}log(2\pi)-\frac{1}{2}log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k}]] \]

\[L(\theta,\theta^{(j)})=\sum_{k=1}^K[\sum_{i=1}^N(E_Q(z_{ik}))log\pi_k+\sum_{i=1}^NE_Q(z_{ik})[\frac{D}{2}log(2\pi)-\frac{1}{2}log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k}]] \]

我們記\(\gamma_{ik}=E_Q(z_{ik})\)\(n_k=\sum\limits_{i=1}^N\gamma_{ik}\)可以算出

\[L(\theta,\theta^{(j)})=\sum_{k=1}^Kn_k[log\pi_k+(\frac{D}{2}log(2\pi)-\frac{1}{2}(log(\boldsymbol{\Sigma_k})-\frac{{(x_i-\boldsymbol{\mu}_k})^2}{2\boldsymbol{\Sigma}_k})] \]

因為\(\frac{D}{2}log(2\pi)\)是常數,忽略不計

\[L(\theta,\theta^{(j)})=\sum_{k=1}^Kn_k[log\pi_k-\frac{1}{2}(log(\boldsymbol{\Sigma_k})+\frac{{(x_i-\boldsymbol{\mu}_k})^2}{\boldsymbol{\Sigma}_k})] \]

\[\gamma_{ik}=\frac{\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)}{\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)} \]

3.3 確定M步,更新參數

M步的過程是最化大\(L(\theta, \theta^{j})\),求出\(\theta^{(j+1)}\)

\[\theta^{j+1} = arg \max \limits_{\theta}L(\theta, \theta^{j}) \]

因為有

\[n_k=\sum_{i=1}^N\gamma_{ik} \]

通過\(L(\theta, \theta^{j})\)\(\mu_k\)\(\Sigma_k\)求偏倒等於0得到

\[\mu_k=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}x_i \]

\[\Sigma_k=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k)^2 \]

\[\pi_k=\frac{n_k}{N} \]

4. GMM算法流程

輸入:觀測數據\(x_1,x_2,x_3,...,x_N\)

輸出:GMM的參數

  1. 初始化參數
  2. E步:根據當前模型,計算模型\(k\)\(x_i\)的影響

\[\gamma_{ik}=\frac{\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)}{\sum_{k=1}^K\pi_k\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k)} \]

  1. M步:計算\(\mu_{k+1},\Sigma_{k+1}^2,\pi_{k+1}\)

\[n_k=\sum_{i=1}^N\gamma_{ik} \]

\[\mu_{k+1}=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}x_i \]

\[\Sigma_{k+1}^2=\frac{1}{n_k}\sum_{i=1}^N\gamma_{ik}(x_i-\mu_k)^2 \]

\[\pi_{k+1}=\frac{n_k}{N} \]

  1. 重復2,3兩步直到收斂


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM