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

高斯混合模型

输入: 观测数据y1, y2, ... yN 高斯混合模型

输出: 高斯混合模型参数

步骤: 1. 取参数的初值开始迭代 2. E步:依据当前模型参数,计算分模型k对观测数据yj的响应度

γ^jk=akϕ(yjθk)k=1Kakϕ(yjθk)\hat \gamma_{jk} = \frac{a_k\phi(y_j|\theta_k)}{\sum_{k=1}^Ka_k\phi(y_j|\theta_k)}
  1. M步:计算新一轮迭代的参数模型

    μ^k=j=1Nγ^jkyjj=1Nγ^jkσ^2=j=1Nγ^jk(yjμk)j=1Nγ^jka^k=j=1Nγ^jkN\begin{aligned} \hat \mu_k = \frac{\sum_{j=1}^N\hat \gamma_{jk}y_j}{\sum_{j=1}^N\hat \gamma_{jk}} \\ \hat \sigma^2 = \frac{\sum_{j=1}^N\hat \gamma_{jk}(y_j-\mu_k)}{\sum_{j=1}^N\hat \gamma_{jk}} \\ \hat a_k = \frac{\sum_{j=1}^N\hat \gamma_{jk}}{N} \end{aligned}
  2. 重复(2)(3),直至收敛。

E应该求Q函数,为什么求γ^jk\hat \gamma_{jk}?

在混合高斯模型中,完整的Q函数为:

Q(θ,θ(i))=k=1K(j=1N(Eγjk)logak+j=1N(Eγjk)(log12πlogσk12σk2(yjμk)2))Q(\theta, \theta^{(i)}) = \sum_{k=1}^K\left(\sum_{j=1}^N(E\gamma_{jk})\log a_k + \sum_{j=1}^N(E\gamma_{jk})\left(\log \frac{1}{\sqrt{2\pi}} - \log \sigma_k - \frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\right)\right)

从公式可以看出,除了θ\theta以为,还要求EγjkE\gamma_{jk},令:

γ^jk=Eγjk\hat \gamma_{jk} = E\gamma_{jk}

Q函数求出来后,求要对θ\theta求导,以解出θnew\theta^{new} 解出发现θnew\theta^{new}只与EγjkE\gamma_{jk},所以求出EγjkE\gamma_{jk}即可进行M步。

Last updated