一、高斯混合模型定義
高斯混合模型具有如下概率分布形式:
$P(y|\theta)=\sum\limits_{k=1}^{K}\alpha_k\phi(y|\theta_k)$ (9.24)
其中,$\alpha$是系數,$\alpha_k\geqslant0$,$\sum\limits_{k=1}^{K}\alpha_k=1$;$\phi(y|\theta_k)$是高斯分布,$\theta_k=(\mu_k,\sigma_{k}^{2})$,
$\phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}exp\left(-\frac{(y-\mu_k)^2}{2\sigma_{k}^{2}}\right)$ (9.25)
為第$k$個高斯分布。
二、確定模型的對數似然函數
設想觀測數據$y_j$,$j=1,2,\cdots,N$是這樣產生的:首先依概率$\alpha_k$選擇第k個高斯分布模型$\phi(y|\theta_k)$;然后依第$k$個分模型的概率分布$\phi(y|\theta_k)$生成觀測數據$y_j$。反映觀測數據$y_j$來自第$k$個分模型的數據是未知的,$k=1,2,\cdots,K$,以隱變量$\gamma_{jk}$表示,其定義如下:
$\gamma_{jk}=1,\ if\ y_j\ from\ \phi_k\\ \gamma_{jk}=0,\ else$ (9.27)
$\gamma_{jk}$是0-1隨機變量。
模型的對數似然函數為
$logP(y|\theta)=log\prod\limits_{j=1}^{N}[\sum\limits_{k=1}^{K}\alpha_k\phi(y_j|\theta_k)]=\sum\limits_{j=1}^{N}log\sum\limits_{k=1}^{K}\alpha_k\phi(y_j|\theta_k)$ (9.28)
由於該式子包含累和的對數的形式,直接用極大似然法處理很困難,在這里采用EM算法進行參數求解。
三、EM算法的E步:確定Q函數
$Q(\theta,\theta^{(i)})=\sum\limits_{Z}P(Z|Y,\theta^{(i)})logP(Y,Z|\theta)=\sum\limits_{k=1}^{K}\sum\limits_{j=1}^{N}P(\gamma_{jk}|y_j,\theta^{(i)})log\alpha_k\phi(y_j|\theta_k)$
由於$P(\gamma_{jk}|y_j,\theta^{(i)})$表示在觀測數據和該次迭代參數的條件下,數據$y_j$來自高斯分布$k$的概率,因此易得
$P(\gamma_{jk}|y_j,\theta^{(i)})=\frac{\alpha_k^{(i)}\phi(y_j|\theta_k^{(i)})}{\sum\limits_{k=1}^{K}\alpha_k^{(i)}\phi(y_j|\theta_k^{(i)})}=\hat{\gamma_{jk}}$
$\hat{\gamma_{jk}}$表示分模型$k$對觀測數據$j$的響應度, 所以
$Q(\theta,\theta^{(i)})=\sum\limits_{k=1}^{K}\left\{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}log\alpha_k+\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}\left[log\left(\frac{1}{\sqrt(2\pi)}\right)-log\sigma_k-\frac{1}{2\sigma_{k}^{2}}(y_j-\mu_k)^2\right]\right\}\\=\sum\limits_{k=1}^{K}n_klog\alpha_k+\sum\limits_{k=1}^{K}\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}\left[log\left(\frac{1}{\sqrt{2\pi}}\right)-log\sigma_k-\frac{1}{2\sigma_{k}^{2}}(y_j-\mu_k)^2\right]$ (9.29)
其中$n_k=\sum_{j=1}^{N}\hat{\gamma_{jk}}$。
四、EM算法的M步
迭代的M步是求函數$Q(\theta,\theta^{(i)})$對$\theta$的極大值,即求新一輪迭代的模型參數:
$\theta^{(i+1)}=argmaxQ(\theta,\theta^{(i)})$
用$\hat{\mu_k}$,$\hat{\sigma_k^2}$及$\hat{\alpha_k}$,$k=1,2,\cdots,K$,表示$\theta^{(i+1)}$的各參數。求$\hat{\mu_k}$,$\hat{\sigma_k^2}$只需將式(9.29)分別對$\hat{\mu_k}$,$\hat{\sigma_k^2}$求偏導數並令其為0,即可得到;求$\hat{\alpha_k}$是在$\sum\limits_{k=1}^{K}\alpha_k=1$條件下求偏導數並令其為0得到的。結果如下:
$\hat{\mu_k}=\frac{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}y_j}{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}}$ (9.30)
$\hat{\sigma_{k}^{2}}=\frac{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}(y_j-\mu_k)^2}{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}}$ (9.31)
$\hat{\alpha_k}=\frac{\sum\limits_{j=1}^{N}\hat{\gamma_{jk}}}{N}$ (9.32)
重復以上計算,直到對數似然函數值不再有明顯的變化為止。
實際計算中M步只需計算$\hat{\gamma_{jk}}$,E步計算出相應參數即可。