EM算法(转载)

来源:互联网 发布:js style.left无效 编辑:程序博客网 时间:2024/05/27 00:49

EM算法简介

Expectation-Maximization(EM)算法用于maximum-likelihood  parameter estimation类问题

假如问题有一组参数α和一组训练数据D,如何设置这些参数使得最拟合这组数据呢,一种解法是选取使p(D|α)最大的α,F(α|D)=p(D|α)称作likelihood function,而使likelihood function 取最大值的那组参数记作α*,这称为maximum-likelihood estimation类问题,这类问题的目标就在于求α*

EM算法是求α*的一种技术,它适用于有不可见数据的情况(incomplete data),比如数据集D可以分成两个集合D=(X,Y),X可见,Y不可见

这样可以得到F(α|D)=p(D|α)=p(X,Y|α)=p(Y|X,α)p(X|α)

其中,p(X|α)是很好理解的,而p(Y|X,α)有可能来源于模型中的隐藏变量(unobservable variable)比如隐马模型里的hidden status,也有可能这是为了便于计算而假定出来的条件

转变一下形式,如果把α,X看作固定的量,那么F(α|D)=F(α|X,Y)=F α,x (Y),就可以把Y看作函数F α,x的自由变量,而事实上X是观察数据(observed data),α可以取个初值α0,这样一方面可以用F的均值来衡量F,另一方面这个过程是可以迭代下去的

设上一轮迭代的α或取得初值为α',新的α值和α‘之间可以定义这么一个函数来评估α的效果

Q(α,α')=E(logF(α|X,Y) | X,α')

这里给F(α|D)取一个log是为了方便乘法运算,E是对F(α|D)的期望,那问题就转为了让Q(α,α')尽可能大

强调一下,在这个方程式里,X和α'是已知的量,α是Q的参数,我们希望调节α来使Q取最大值,而Y则是自由变量,这里的期望也就是对Y来求得,Q扩展一下

Q(α,α')=E(logF(α|X,Y) | X,α')= log   F(α|X,Y) f(y|X,α‘) dy = log p(X,y|α)  f(y|X,α‘) dy

其中fyX和α'下的分布函数,这里的积分也是对y所在的值空间来求得,上面这步称作E-step

通过对Q(α,α')求导,зQ(α,α')/зα =0,我们可以在α'的基础上求一个新的值α^,这一步称作M-step

设置一个初始的α0值,交替的使用E-stepM-step,最后α值会收敛到α*

原创粉丝点击