EM(Expectation Maximization)算法是以迭代的方式来解决一类最大似然(maximum likelihood)问题的方法,这类问题通常比较难直接求解,通常需要引入隐变量,在假设隐变量已知的情况下,再求最大似然解,求解时隐变量一般用它的期望代替,这样反复迭代,直到收敛。
现在观测到一个样本集
X
,它对应隐变量集为
Z
,模型参数为
θ
。
要使用最大似然的方法确定模型参数,其log似然函数为:
这里Z是离散的,如果是连续的,把求和改为积分就可以。
从公式中可以看到,ln函数的内容中包含了求和,求和是对于联合概率
p(X,Z|θ)
的,如果直接求解,这将导致非常复杂的运算。
所以我们在这里假设
Z
也是已知的,那么
X,Z
是当前的complete data set,对这个data set来说,似然函数为:
此时这个似然函数可以直接求解。
然而事实并不是那么美好,隐变量 Z 是未知的,关于 Z 的值的信息,只能通过后验概率 p(Z|X,θ) 来获得。于是考虑用 Z 的后验概率的期望,来代替 Z ,然后就可以求解似然函数。
以上是EM算法的主要思路。
EM算法主要分两步:
1,Expectation,求隐变量的后验概率的期望;
2,Maximization,最大化log似然函数。
所以EM算法是期望最大化算法。
对于上述的例子,EM算法的流程如下:
1,初始化一个
θold
2,E-step,计算隐变量后验概率的期望:
3,M-step,将原log似然函数中的隐变量z用它的期望来代替,最大化 E(θ,θold) ,求解 θnew :
用E对
θ
求偏导,令其等于0,即可解出
θnew
.
4,检查是否符合收敛条件(一般是指
θnew
与
θold
相等或十分相近):
如不符合,令
θold=θnew
,回到第2步。
如符合,此时的
θnew
是最优参数
θ∗
,结束。
下一篇GMM高斯混合模型学习笔记(EM算法求解)中将使用EM算法解决实际问题。
主要参考资料:
《Pattern Recognition and Machine Learning》
这两篇博客帮助理解:
http://www.cnblogs.com/zhangchaoyang/articles/2623364.html
http://blog.pluskid.org/?p=81