高斯混合模型详细推导
一、高斯混合模型定义
高斯混合模型具有如下概率分布形式:
$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步计算出相应参数即可。