EM(期望最大化)算法(1):初探原理

来源:互联网 发布:网络盒子破解软件 编辑:程序博客网 时间:2024/05/20 16:44

之前看李航老师的《统计机器学习》,其中第9章讲《EM算法》,一个特点就是数学符号特别多,虽然举了例子但仍是一头雾水。

参考了此篇博文,通俗语言中大致知道咋回事。

1. 最大似然

1.1 以例引入

假设我们需要调查学校男生和女生的身高分布。

你在校园里随便地活捉了100个男生和100个女生。那下一步怎么办啊?你开始喊:“男的左边,女的右边,其他的站中间!”。然后你就先统计抽样得到的100个男生的身高。假设他们的身高是服从高斯分布的。但是这个分布的均值u和方差∂2我们不知道,这两个参数就是我们要估计的。记作θ=[u, ∂]T。

用数学语言来说就是:在学校那么多男生(身高)中,我们独立地按照概率密度 p(x|θ) 抽取100了个(身高),组成样本集X,我们想通过样本集X来估计出未知参数θ。这里概率密度p(x|θ)我们知道了是高斯分布N(u,∂)的形式,其中的未知参数是θ=[u, ∂]T。抽到的样本集是X={x1,x2,…,xN},其中xi表示抽到的第i个人的身高,这里N就是100,表示抽到的样本个数。

由于每个样本都是独立地从 p(x|θ) 中抽取的,换句话说这100个男生中的任何一个,都是我随便捉的,从我的角度来看这些男生之间是没有关系的。那么,我从学校那么多男生中为什么就恰好抽到了这100个人呢?抽到这100个人的概率是多少呢?

因为这些男生(的身高)是服从同一个高斯分布p(x|θ)的。那么我抽到男生A(的身高)的概率是p(xA|θ),抽到男生B的概率是p(xB|θ),那因为他们是独立的,所以很明显,我同时抽到男生A和男生B的概率是p(xA|θ)* p(xB|θ),同理,我同时抽到这100个男生的概率就是他们各自概率的乘积了。用数学家的口吻说就是从分布是p(x|θ)的总体样本中抽取到这100个样本的概率,也就是样本集X中各个样本的联合概率,用下式表示:

这里写图片描述

这个概率反映了:在概率密度函数的参数是θ时,得到X这组样本的概率。

因为这里X是已知的,也就是说我抽取到的这100个人的身高可以测出来,也就是已知的了。而θ是未知了,则上面这个公式只有θ是未知数,所以它是θ的函数。这个函数反映的是在不同的参数θ取值下,取得当前这个样本集的可能性,因此称为参数θ相对于样本集X的似然函数(likehood function),记为L(θ)。

似然:像这样的

求的θ值,应使得似然函数最大(最符合观测到的情况)。

在学校那么多男生中,我一抽就抽到这100个男生(表示身高),而不是其他人,那是不是表示在整个学校中,这100个人(的身高)出现的概率最大啊。那么这个概率怎么表示?就是上面那个似然函数L(θ)。所以,我们就只需要找到一个参数θ,其对应的似然函数L(θ)最大,也就是说抽到这100个男生(的身高)概率最大。这个叫做θ的最大似然估计量,记为:

这里写图片描述

L(θ)是连乘的,为了便于分析,取对数似然函数,将其变成连加的:

这里写图片描述

要求θ,只需要使θ的似然函数L(θ)极大化,然后取极大值时所对应的那个θ就是我们想要的估计。

1.2 极大似然估计

求最大似然函数估计值的一般步骤:

(1)写出似然函数;

(2)对似然函数取对数,并整理;

(3)求导数,令导数为0,得到似然方程;

(4)解似然方程,得到的参数即为所求。

最大似然估计你可以把它看作是一个反推。多数情况下我们是根据已知条件来推算结果,而最大似然估计是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,以此作为估计值。比如,如果其他条件一定的话,抽烟者发生肺癌的危险时不抽烟者的5倍,那么如果现在我已经知道有个人是肺癌,我想问你这个人抽烟还是不抽烟。你怎么判断?你可能对这个人一无所知,你所知道的只有一件事,那就是抽烟更容易发生肺癌。我相信你更有可能会说,这个人抽烟。为什么?这就是“最大可能”,我只能说他“最有可能”是抽烟的。“他是抽烟的”这一估计值才是“最有可能”得到“肺癌”这样的结果。这就是极大似然估计。

我的理解:真实样本的分布参数不得而知。通过采样,利用独立同分布的原理,从采样样本中估计出一个参数,作为真实参数的估计。当初上概率课时,张卓奎老师说我一学期不点名,只点一次,发现你没到,我就认为你这学期都没到。即从观察中做出对真实的估计。

2. EM算法

2.1 从例子引出问题

如果没有“男的左边,女的右边,其他的站中间!”这个步骤,那现在这200个人已经混到一起了,这时候,你从这200个人(的身高)里面随便给我指一个人(的身高),我都无法确定这个人(的身高)是男生(的身高)还是女生(的身高)。也就是说你不知道抽取的那200个人里面的每一个人到底是从男生的那个身高分布里面抽取的,还是女生的那个身高分布抽取的。用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布抽取的。

这个时候,对于每一个样本,就有两个东西需要估计:

  • 这个人是男的还是女的?
  • 男生和女生对应的身高的高斯分布的参数是多少?

只有当我们知道了哪些人属于同一个高斯分布的时候,我们才能够对这个分布的参数作出靠谱的预测,但现在两种高斯分布的人混在一块了,我们又不知道哪些人属于第一个高斯分布,哪些属于第二个,所以就没法估计这两个分布的参数。即问题2依赖问题1。

反过来,只有当我们对这两个分布的参数作出了准确估计时,才能知道到底哪些人属于第一个分布,那些人属于第二个分布。即问题1依赖问题2。

为了解决这个你依赖我,我依赖你的循环依赖问题,总得有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终就会收敛到一个解。这就是EM算法的基本思想

2.2 EM算法的思想

EM算法思想:假设我们想估计A和B两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。

EM,“Expectation Maximization”。

在我们上面这个问题里面,我们是先随便猜一下男生(身高)的正态分布的参数:如均值和方差是多少。例如男生的均值是1米7,方差是0.1米(当然了,刚开始肯定没那么准),然后计算出每个人更可能属于第一个还是第二个正态分布中的(例如,这个人的身高是1米8,那很明显,他最大可能属于男生的那个分布),这个是属于Expectation一步。有了每个人的归属,或者说我们已经大概地按上面的方法将这200个人分为男生和女生两部分,我们就可以根据之前说的最大似然那样,通过这些被大概分为男生的n个人来重新估计第一个分布的参数,女生的那个分布同样方法重新估计。这个是Maximization。然后,当我们更新了这两个分布的时候,每一个属于这两个分布的概率又变了,那么我们就再需要调整E步……如此往复,直到参数基本不再发生变化为止。

我:看到这里,突然想起来k-means聚类不就是EM算法的体现么?

需要解决两个问题:

  • 每个样本属于哪个堆?(隐变量)
  • 每个堆的中心点是多少(参数)?

两个问题相互依赖,所以我们随便定一个参数,对样本点第一次归类(E步),然后分好堆后,计算每个堆的中心点(M步);基于该中心点重新计算每个样本点的类归属(E步),第二次分好堆,计算每个堆的中心点(M步),循环往复。直至收敛。

2.3 EM算法及推导

此处可以参看李航老师的第9章了。

待续。

2.4 EM算法的另一种解释:坐标下降法

坐标下降法:非梯度优化方法。每步迭代中沿着一个坐标方向搜索,通过循环使用不同的坐标方向达到目标函数的局部极小值。

不需要计算目标函数的梯度,每步迭代中仅需要求解一维搜索问题,能够收敛到所期望的局部极小点或者驻点(函数导数为0的点)。

对于某些复杂问题较为简便。但若目标函数不光滑,有可能陷入非驻点。

这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步:固定θ,优化Q;M步:固定Q,优化θ;交替将极值推向最大。

2.5 EM的应用

EM算法应用最广泛的:

  • GMM混合高斯模型
  • 聚类
  • HMM
原创粉丝点击