EM算法解析

173 阅读3分钟

EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。

下面主要介绍EM的整个推导过程。

回顾优化理论中的一些概念。设zzzzzzzzzzzzzzzzzz

Jensen不等式表述如下:

如果f是凸函数,X是随机变量,那么

Nonezz

特别地,如果zzzzzz

如果用图表示会很清晰:

None

给定的训练样本是zzzzzzzz

None

第一步是对极大似然取对数,第二步是对每个样例的每个可能类别zzzzzzzz

EM是一种解决存在隐含变量优化问题的有效方法。既然不能直接最大化zzzz

对于每一个样例zzzzzzzzzzzzzzzz

可以由前面阐述的内容得到下面的公式:

None

(1)到(2)比较直接,就是分子分母同乘以一个相等的函数。(2)到(3)利用了Jensen不等式,考虑到zz

None

就是

这个过程可以看作是对zzzzzzzzzzzzzzzz

c为常数,不依赖于zzzzzz

None

至此,我们推出了在固定其他参数zzzzzzzzzzzzzzzz

循环重复直到收敛

(E步)对于每一个i,计算

None

(M步)计算

None

那么究竟怎么确保EM收敛?假定zzzzzzzz

None

这一步保证了在给定zz

None

然后进行M步,固定zzzzzzzz

None

我们已经知道了EM的精髓和推导过程,再次审视一下混合高斯模型。之前提到的混合高斯模型的参数zzzzzzzzzz

E步很简单,按照一般EM公式得到:

None

简单解释就是每个样例i的隐含类别zz

在M步中,我们需要在固定zz

None

这是将zzzzzzzz

固定zzzzzz

None

等于0时,得到

None

这就是我们之前模型中的, zz

然后推导zz

Nonezzzz

None

需要知道的是,zz

None

还有一点就是zz

None

等于0,得到

None

也就是说

None

这样就神奇地得到了zzzz

None

Nonezz

如果将样本看作观察值,潜在类别看作是隐藏变量,那么聚类问题也就是参数估计问题,只不过聚类问题中参数分为隐含类别变量和其他参数,这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步估计隐含变量,M步估计其他参数,交替将极值推向最大。EM中还有“硬”指定和“软”指定的概念,“软”指定看似更为合理,但计算量要大,“硬”指定在某些场合如K-means中更为实用(要是保持一个样本点到其他所有中心的概率,就会很麻烦)。

另外,EM的收敛性证明方法确实很牛,能够利用log的凹函数性质,还能够想到利用创造下界,拉平函数下界,优化下界的方法来逐步逼近极大值。而且每一步迭代都能保证是单调的。最重要的是证明的数学公式非常精妙,硬是分子分母都乘以z的概率变成期望来套上Jensen不等式,前人都是怎么想到的。

在Mitchell的Machine Learning书中也举了一个EM应用的例子,明白地说就是将班上学生的身高都放在一起,要求聚成两个类。这些身高可以看作是男生身高的高斯分布和女生身高的高斯分布组成。因此变成了如何估计每个样例是男生还是女生,然后在确定男女生情况下,如何估计均值和方差,里面也给出了公式,有兴趣可以参考。

 

 

转自:

Nonehttp://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html