EM算法原理及其应用-二

作者 Lucyyang 日期 2018-08-08
EM算法原理及其应用-二

No great thing is created suddenly.

在这节当中,我们将(一)中介绍的EM算法应用在高斯混合模型中,本文重点在于引导读者学习如何使用EM算法,对于其中某些推导的细节请查阅伯克利Bilmes教授的tutorial

高斯混合分布 (GMM)

EM算法在计算模式识别领域中求混合模型参数问题上使用广泛,混合模型一般可以表示为:

$$p(\mathbf{x}|\Theta)=\sum^{M}_ {i=1} \alpha_{1}p_{i}(\mathbf{x}|\theta_{i})$$

其中,左式参数$\Theta= ( \alpha_1, ..., \alpha_M, \theta_{1},...,\theta_{M} ) $,并且有$\sum_{i=1}^{M}\alpha_{i} =1$。系数$\alpha_{i}$是第$i$个分布的权重。即我们有M个密度函数$p_i$并以权重$\alpha_i$进行组合。

如果指定混合分布是高斯混合分布,那么有:

$$P(x_i|\Theta)=\sum_{l=1}^{k}\alpha_{l}N(\mu_{l},\Sigma_{l})$$

其中$\Theta=(\mu_{1},\mu_{2},...\mu_{n},\Sigma_{1},...\Sigma_{n},\alpha_{1},...\alpha_{k-1})$。

http://p19viyjr2.bkt.clouddn.com/Fig1.jpg

EM算法求在GMM中的应用

对于高斯混合分布的参数估计问题可以记为:

$$\log(L( \Theta | X))=\log \prod_{i=1}^{N} p(x_i| \Theta ) = \sum_{i=1}^{N} \log \left(\sum_{j=1}^{M} \alpha_j p_j (x_i| \theta_j) \right)$$

现在我们假设存在隐变量$Y$,尽管$Y$是一个随机变量,但是因为比较简单所以一般我们可以处理。

我们先假设参数为: $$ \Theta^{g} = ( \alpha_{1}^{g} ,..., \alpha_{M}^{g}, \theta_{1}^{g} ,..., \theta_M^{g}) $$

是似然函数的一组合适的参数。给定参数$\Theta^{g}$,我们可以方便地计算$ p_j(x_i| \theta_{i}^{g}) $。根据贝叶斯公式(Bayes's rule),我们可以计算:

$$ p(y_i | x_i,\Theta^{g} )= \frac{ \alpha^g_{y_i} p_{y_i} (x_i| \theta_{y_i}^{g}) }{ p(x_i| \Theta^{g})} = \frac{ \alpha_{y_i}^{g} p_{y_i}(x_i| \theta_{y_i}^{g})}{ \sum_{k=1}^{M} \alpha_{k}^{g} p_k (x_i| \theta_k^{g})}$$

套用E-step公式,并进行化简后有(省略了化简过程):

$$ Q( \Theta, \Theta^{g}) = \sum_{y \in R} log(L( \Theta|X,y)) p(y|x, \Theta^{g})= \sum_{l=1}^{M} \sum_{i=1}^{N} log( \alpha_l p_l (x_i|\theta_{l})) p(l|x_i, \Theta^{g})$$

对上式求导使之为0,经过M-step最大化步的求解(具体的求解过程应用到矩阵论知识,具体请查阅tutorial),可以得到:

$$ \alpha_{l}^{g+1} = \frac{1}{N} \sum_{i=1}^{N} p(l|x_i, \Theta^{g})$$

$$ \mu_l^{g+1} = \frac{ \sum_{i=1}^{N}x_i p(l|x_i,\Theta^{g})} { \sum_{i=1}^{N} p(l|x_i, \Theta^{g})}$$

$$ \Sigma_{l}^{g+1}= \frac{ \sum_{i=1}^{N} p(l|x_i,\Theta^{g}) (x_i - \mu_{l}^{g+1} ) ( x_{i} - \mu_{l}^{g+1} )^{T} }{ \sum_{ i=1 }^{N} p(l|x_i, \Theta^{ g })}$$

代码实现