http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html 写得很详细,对于混合高斯模型中参数的迭代解释的很到位。 ![]() EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。 下面主要介绍EM的整个推导过程。 1. Jensen不等式 回顾优化理论中的一些概念。设f是定义域为实数的函数,如果对于所有的实数x, ![]() ![]() ![]() ![]() Jensen不等式表述如下: 如果f是凸函数,X是随机变量,那么 ![]() 特别地,如果f是严格凸函数,那么 ![]() ![]() 这里我们将 ![]() ![]() 如果用图表示会很清晰: ![]() 图中,实线f是凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。(就像掷硬币一样)。X的期望值就是a和b的中值了,图中可以看到 ![]() 当f是(严格)凹函数当且仅当-f是(严格)凸函数。 Jensen不等式应用于凹函数时,不等号方向反向,也就是 ![]() 2. EM算法 给定的训练样本是 ![]() ![]() 第一步是对极大似然取对数,第二步是对每个样例的每个可能类别z求联合分布概率和。但是直接求 ![]() EM是一种解决存在隐含变量优化问题的有效方法。竟然不能直接最大化 ![]() ![]() 对于每一个样例i,让 ![]() ![]() ![]() ![]() 可以由前面阐述的内容得到下面的公式: ![]() (1)到(2)比较直接,就是分子分母同乘以一个相等的函数。(2)到(3)利用了Jensen不等式,考虑到 ![]() ![]() 就是 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 可以得到(3)。 这个过程可以看作是对 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() c为常数,不依赖于 ![]() ![]() ![]() ![]() 至此,我们推出了在固定其他参数 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() ![]() ![]() ![]() ![]() 这一步保证了在给定 ![]() ![]() 然后进行M步,固定 ![]() ![]() ![]() ![]() ![]() 解释第(4)步,得到 ![]() ![]() ![]() ![]() ![]() 况且根据我们前面得到的下式,对于所有的 ![]() ![]() ![]() 第(5)步利用了M步的定义,M步就是将 ![]() ![]() 这样就证明了 ![]() ![]() 再次解释一下(4)、(5)、(6)。首先(4)对所有的参数都满足,而其等式成立条件只是在固定 ![]() ![]() ![]() ![]() ![]() 如果我们定义 ![]() 从前面的推导中我们知道 ![]() ![]() ![]() ![]() ![]() 3. 重新审视混合高斯模型 我们已经知道了EM的精髓和推导过程,再次审视一下混合高斯模型。之前提到的混合高斯模型的参数 ![]() ![]() ![]() ![]() E步很简单,按照一般EM公式得到: ![]() 简单解释就是每个样例i的隐含类别 ![]() 在M步中,我们需要在固定 ![]() ![]() 这是将 ![]() ![]() ![]() 固定 ![]() ![]() ![]() ![]() 等于0时,得到 ![]() 这就是我们之前模型中的 ![]() 然后推导 ![]() ![]() 在 ![]() ![]() ![]() 需要知道的是, ![]() ![]() 这个优化问题我们很熟悉了,直接构造拉格朗日乘子。 ![]() 还有一点就是 ![]() 求导得, ![]() 等于0,得到 ![]() 也就是说 ![]() ![]() ![]() 这样就神奇地得到了 ![]() 那么就顺势得到M步中 ![]() ![]() ![]() 4. 总结 如果将样本看作观察值,潜在类别看作是隐藏变量,那么聚类问题也就是参数估计问题,只不过聚类问题中参数分为隐含类别变量和其他参数,这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步估计隐含变量,M步估计其他参数,交替将极值推向最大。EM中还有“硬”指定和“软”指定的概念,“软”指定看似更为合理,但计算量要大,“硬”指定在某些场合如K-means中更为实用(要是保持一个样本点到其他所有中心的概率,就会很麻烦)。 另外,EM的收敛性证明方法确实很牛,能够利用log的凹函数性质,还能够想到利用创造下界,拉平函数下界,优化下界的方法来逐步逼近极大值。而且每一步迭代都能保证是单调的。最重要的是证明的数学公式非常精妙,硬是分子分母都乘以z的概率变成期望来套上Jensen不等式,前人都是怎么想到的。 在Mitchell的Machine Learning书中也举了一个EM应用的例子,明白地说就是将班上学生的身高都放在一起,要求聚成两个类。这些身高可以看作是男生身高的高斯分布和女生身高的高斯分布组成。因此变成了如何估计每个样例是男生还是女生,然后在确定男女生情况下,如何估计均值和方差,里面也给出了公式,有兴趣可以参考。 |
[技术| 编程·课件·Linux] 推荐一个EM算法的详细介绍
czc30114
· 发布于 2013-05-24 14:49
· 2238 次阅读
转载文章时务必注明原作者及原始链接,并注明「发表于 软院网 RuanYuan.Net 」,并不得对作品进行修改。