高斯混合模型详细推导

一、高斯混合模型定义

  高斯混合模型具有如下概率分布形式:

$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$个高斯分布。

 

二、估计高斯混合模型参数的EM算法

  1.明确隐变量,写出模型的对数似然函数

  设想观测数据$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步计算出相应参数即可。

猜你喜欢

转载自www.cnblogs.com/ningjing213/p/10392175.html