分类: DB2/Informix
2015-05-16 20:19:30
原文地址:EM算法 作者:jiangwen127
EM算法是机器学习中一个很重要的算法,即期望最大化算法,主要包括以下两个步骤:
E步骤:estimate the expected
values
M步骤:re-estimate parameters
迭代使用EM步骤,直至收敛。
我觉得可以有一些比较形象的比喻说法把这个算法讲清楚。比如说食堂的大师傅炒了一 份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多 的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。EM算法就是这样,假设我们估计 知道A和B两个参数,在开始状态下二者都是未知的,并且知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以 此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
EM 算法是 Dempster,Laind,Rubin 于 1977 年提出的求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行 MLE 估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据,截尾数据,带有讨厌数据等所谓的不完全数据(incomplete data)。
L(Θ; X )= log p(X |Θ) = ∫log p(X ,Y |Θ)dY ;
Lc(X;Θ) =log p(X,Y |Θ) ;
下面给出一个很经典的EM算法的应用
机器翻译中要计算未对齐句对的翻译概率,我们可以采用EM算法获取
P(f|e) =Sigma(P(a, f|e)),一共有如下3种对齐方式
初始化设定 t(x|b)=t(x|c)=t(y|b)=t(y|c)=1/2
对齐1:p(a,f|e)=1/2*1/2=1/4
对齐2:p(a,f|e)=1/2*1/2=1/4
对齐3:p(a,f|e)=1/2
继续计算
对齐1:p(a|e,f)=(1/4)/(1/4+1/4)=1/2
对齐2:p(a|e,f)=(1/4)/(1/4+1/4)=1/2
对齐3:p(a|e,f)=(1/2)/(1/2)=1
tc(x|b)=1/2
tc(x|c)=1/2
tc(y|b)=1+1/2=3/2
tc(y|c)=1/2
完成E步骤,利用E步骤获取的信息重新估计参数
t(x|b)=(1/2)/(1/2+3/2)=1/4
t(x|c)=(1/2)/(1/2+1/2)=1/2
t(y|b)=(3/2)/(1/2+3/2)=3/4
t(y|c)=(1/2)/(1/2+1/2)=1/2
完成M步骤,重复上面的EM步骤,直至收敛
以上只是简单的EM算法的使用,在机器翻译,语言识别等领域应用比较广泛,多用于训练
最大似然估计的求解请参看概率论,是在获取某个样本的情况下,进行参数估计的一种方法