EM算法学习笔记_1(对EM算法的简单理解)
因做实验的需要,最近在学习EM算法,算法介绍的资料网上是有不少,可是没有一篇深入浅出的介绍,算法公式太多,比较难懂,毕竟她是ML领域10大经典算法之一 ,且一般是结合GMM模型的参数估计来介绍EM的。看过不少EM的资料,现将自己对EM算法用稍微通俗点的文字写下来,当然你可以用GMM这个具体的例子来帮助理解。
问题的提出:给定一些样本数据x,且知道该数据是有k个高斯混合产生的,现在要用给的样本数据x去估计模型的参数sida,即在该参数sida下产生x数据的概率最大。(其实就是个MLE估计)
-
原问题等价与求sida,使得满足max(logP((x/sida))),那么我们为什么不直接用MLE去估计呢?通过关于EM算法各种推导公式(我这里基本把这些公式都省略掉,因为介绍这方面的资料有不少)可以看出,对数里面有求和的项,说白了,就算用MLE的方法去做解不出来,因为各种求偏导什么的很难求。
-
所以在EM算法中有个假设,即我们不仅知道观测到的数据x,而且还知道它属于隐变量z的哪一类(在GMM中,隐变量z表示各个单高斯模型)。此时原问题的求解等价于求sida,使得满足max(logP((x,z)/sida))。
-
为什么2中就能用MLE解决呢,又通过查看EM算法各种公式推导可以看出,2与1的不同在与2中那些对数符号里面没有了求和项,所以各种求导方法等在此可以应用。
-
但是我们的z变量是隐含的,也就是说未知的,那么2中的MLE该怎么做呢?通过查找EM算法的公式推导过程可以看出,2中的求max(logP((x,z)/sida))中的sida可以等价与求max[Ez(logP(x,z)/sida)],即求logP((x,z)/sida)关于变量z的期望最大。
-
既然是求其关于z的期望,那么我们应该知道z的概率分布才行。比较幸运的是在EM体系中,关于z的分布也是很容易求得的,即z的后验分布P(z/x,sida)很容易求出来。
-
E-step:首先随便取一组参数sida,求出5中z的后验分布,同时求出logP((x,z)/sida)关于z的期望,即Ez(logp((x,z)/sida))。
-
M-step:前面已经讲到,6中的期望最大用MLE很容易解决,所以M-step时采用MLE求得新的参数sida,又从前面的介绍可知,6中的期望最大时的参数等价于原问题的求解的参数。
-
返回6,7之间迭代,直到满足logP((x,z)/sida)基本不再变化。