EM算法学习笔记_1(对EM算法的简单理解)

  因做实验的需要,最近在学习EM算法,算法介绍的资料网上是有不少,可是没有一篇深入浅出的介绍,算法公式太多,比较难懂,毕竟她是ML领域10大经典算法之一 ,且一般是结合GMM模型的参数估计来介绍EM的。看过不少EM的资料,现将自己对EM算法用稍微通俗点的文字写下来,当然你可以用GMM这个具体的例子来帮助理解。

  问题的提出:给定一些样本数据x,且知道该数据是有k个高斯混合产生的,现在要用给的样本数据x去估计模型的参数sida,即在该参数sida下产生x数据的概率最大。(其实就是个MLE估计)

  1. 原问题等价与求sida,使得满足max(logP((x/sida))),那么我们为什么不直接用MLE去估计呢?通过关于EM算法各种推导公式(我这里基本把这些公式都省略掉,因为介绍这方面的资料有不少)可以看出,对数里面有求和的项,说白了,就算用MLE的方法去做解不出来,因为各种求偏导什么的很难求。

  2. 所以在EM算法中有个假设,即我们不仅知道观测到的数据x,而且还知道它属于隐变量z的哪一类(GMM中,隐变量z表示各个单高斯模型)。此时原问题的求解等价于求sida,使得满足max(logP((x,z)/sida))

  3. 为什么2中就能用MLE解决呢,又通过查看EM算法各种公式推导可以看出,21的不同在与2中那些对数符号里面没有了求和项,所以各种求导方法等在此可以应用。

  4. 但是我们的z变量是隐含的,也就是说未知的,那么2中的MLE该怎么做呢?通过查找EM算法的公式推导过程可以看出,2中的求max(logP((x,z)/sida))中的sida可以等价与求max[Ez(logP(x,z)/sida)],即求logP((x,z)/sida)关于变量z的期望最大。

  5. 既然是求其关于z的期望,那么我们应该知道z的概率分布才行。比较幸运的是在EM体系中,关于z的分布也是很容易求得的,即z的后验分布P(z/x,sida)很容易求出来。

  6. E-step:首先随便取一组参数sida,求出5z的后验分布,同时求出logP((x,z)/sida)关于z的期望,即Ez(logp((x,z)/sida))

  7. M-step:前面已经讲到,6中的期望最大用MLE很容易解决,所以M-step时采用MLE求得新的参数sida,又从前面的介绍可知,6中的期望最大时的参数等价于原问题的求解的参数。

  8. 返回67之间迭代,直到满足logP((x,z)/sida)基本不再变化。

     

     

     

     

posted on 2012-07-14 18:20  tornadomeet  阅读(8642)  评论(6编辑  收藏  举报

阿萨德发斯蒂芬