EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。
下面主要介绍EM的整个推导过程。
回顾优化理论中的一些概念。设
Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么
None
特别地,如果
如果用图表示会很清晰:
None
给定的训练样本是
None
第一步是对极大似然取对数,第二步是对每个样例的每个可能类别
EM是一种解决存在隐含变量优化问题的有效方法。既然不能直接最大化
对于每一个样例
可以由前面阐述的内容得到下面的公式:
None
(1)到(2)比较直接,就是分子分母同乘以一个相等的函数。(2)到(3)利用了Jensen不等式,考虑到
None
就是
这个过程可以看作是对
c为常数,不依赖于
None
至此,我们推出了在固定其他参数
循环重复直到收敛
(E步)对于每一个i,计算
None
(M步)计算
None
那么究竟怎么确保EM收敛?假定
None
这一步保证了在给定
None
然后进行M步,固定
None
我们已经知道了EM的精髓和推导过程,再次审视一下混合高斯模型。之前提到的混合高斯模型的参数
E步很简单,按照一般EM公式得到:
None
简单解释就是每个样例i的隐含类别
在M步中,我们需要在固定
None
这是将
固定
None
等于0时,得到
None
这就是我们之前模型中的,
然后推导
None
None
需要知道的是,
None
还有一点就是
None
等于0,得到
None
也就是说
None
这样就神奇地得到了
None
None
如果将样本看作观察值,潜在类别看作是隐藏变量,那么聚类问题也就是参数估计问题,只不过聚类问题中参数分为隐含类别变量和其他参数,这犹如在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