MLE极大似然估计和EM最大指望算法

 

机器学习十大算法之一:EM算法。能评得上十大之一,让人听起来以为挺NB的。什么是NB啊,咱们通常说某我的很NB,是由于他能解决一些别人解决不了的问题。神为何是神,由于神能作不少人作不了的事。那么EM算法能解决什么问题呢?或者说EM算法是由于什么而来到这个世界上,还吸引了那么多世人的目光。html

       我但愿本身能通俗地把它理解或者说明白,可是,EM这个问题感受真的不太好用通俗的语言去说明白,由于它很简单,又很复杂。简单在于它的思想,简单在于其仅包含了两个步骤就能完成强大的功能,复杂在于它的数学推理涉及到比较繁杂的几率公式等。若是只讲简单的,就丢失了EM算法的精髓,若是只讲数学推理,又过于枯燥和生涩,但另外一方面,想把二者结合起来也不是件容易的事。因此,我也无法期待我能把它讲得怎样。但愿各位不吝指导。算法

 

1、最大似然并发

       扯了太多,得入正题了。假设咱们遇到的是下面这样的问题:机器学习

       假设咱们须要调查咱们学校的男生和女生的身高分布。你怎么作啊?你说那么多人不可能一个一个去问吧,确定是抽样了。假设你在校园里随便地活捉了100个男生和100个女生。他们共200我的(也就是200个身高的样本数据,为了方便表示,下面,我说“人”的意思就是对应的身高)都在教室里面了。那下一步怎么办啊?你开始喊:“男的左边,女的右边,其余的站中间!”。而后你就先统计抽样获得的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(θ)优化

      这里出现了一个概念,似然函数。还记得咱们的目标吗?咱们须要在已经抽到这一组样本X的条件下,估计参数θ的值。怎么估计呢?似然函数有啥用呢?那我们先来了解下似然的概念。spa

直接举个例子:   某位同窗与一位猎人一块儿外出打猎,一只野兔从前方窜过。只听一声枪响,野兔应声到下,若是要你推测,这一发命中的子弹是谁打的?你就会想,只发一枪便打中,因为猎人命中的几率通常大于这位同窗命中的几率,看来这一枪是猎人射中的。htm

      这个例子所做的推断就体现了极大似然法的基本思想。

      再例如:下课了,一群男女同窗分别去厕所了。而后,你闲着无聊,想知道课间是男生上厕所的人多仍是女生上厕所的人比较多,而后你就跑去蹲在男厕和女厕的门口。蹲了五分钟,忽然一个美女走出来,你狂喜,跑过来告诉我,课间女生上厕所的人比较多,你要不相信你能够进去数数。呵呵,我才没那么蠢跑进去数呢,到时还不得上头条。我问你是怎么知道的。你说:“5分钟了,出来的是女生,女生啊,那么女生出来的几率确定是最大的了,或者说比男生要大,那么女厕所的人确定比男厕所的人多”。看到了没,你已经运用最大似然估计了。你经过观察到女生先出来,那么什么状况下,女生会先出来呢?确定是女生出来的几率最大的时候了,那何时女生出来的几率最大啊,那确定是女厕所比男厕所多人的时候了,这个就是你估计到的参数了。

      从上面这两个例子,你获得了什么结论?

       回到男生身高那个例子。在学校那么男生中,我一抽就抽到这100个男生(表示身高),而不是其余人,那是否是表示在整个学校中,这100我的(的身高)出现的几率最大啊。那么这个几率怎么表示?哦,就是上面那个似然函数L(θ)。因此,咱们就只须要找到一个参数θ,其对应的似然函数L(θ)最大,也就是说抽到这100个男生(的身高)几率最大。这个叫作θ的最大似然估计量,记为:

好了,如今咱们知道了,要求θ,只须要使θ的似然函数L(θ)极大化,而后极大值对应的θ就是咱们的估计。这里就回到了求最值的问题了。怎么求一个函数的最值?固然是求导,而后让导数为0,那么解这个方程获得的θ就是了(固然,前提是函数L(θ)连续可微)。那若是θ是包含多个参数的向量那怎么处理啊?固然是求L(θ)对全部参数的偏导数,也就是梯度了,那么n个未知的参数,就有n个方程,方程组的解就是似然函数的极值点了,固然就获得这n个参数了。

      最大似然估计你能够把它看做是一个反推。多数状况下咱们是根据已知条件来推算结果,而最大似然估计是已经知道告终果,而后寻求使该结果出现的可能性最大的条件,以此做为估计值。好比,若是其余条件必定的话,抽烟者发生肺癌的危险时不抽烟者的5倍,那么若是如今我已经知道有我的是肺癌,我想问你这我的抽烟仍是不抽烟。你怎么判断?你可能对这我的一无所知,你所知道的只有一件事,那就是抽烟更容易发生肺癌,那么你会猜想这我的不抽烟吗?我相信你更有可能会说,这我的抽烟。为何?这就是“最大可能”,我只能说他“最有可能”是抽烟的,“他是抽烟的”这一估计值才是“最有可能”获得“肺癌”这样的结果。这就是最大似然估计。

      好了,极大似然估计就讲到这,总结一下:

      极大似然估计,只是一种几率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本知足某种几率分布,可是其中具体的参数不清楚,参数估计就是经过若干次试验,观察其结果,利用结果推出参数的大概值。最大似然估计是创建在这样的思想上:已知某个参数能使这个样本出现的几率最大,咱们固然不会再去选择其余小几率的样本,因此干脆就把这个参数做为估计的真实值。

求最大似然函数估计值的通常步骤:

1)写出似然函数;

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

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

4)解似然方程,获得的参数即为所求;

 

2、EM算法

       好了,从新回到上面那个身高分布估计的问题。如今,经过抽取获得的那100个男生的身高和已知的其身高服从高斯分布,咱们经过最大化其似然函数,就能够获得了对应高斯分布的参数θ=[u,]T了。那么,对于咱们学校的女生的身高分布也能够用一样的方法获得了。

       再回到例子自己,若是没有“男的左边,女的右边,其余的站中间!”这个步骤,或者说我抽到这200我的中,某些男生和某些女生一见倾心,已经好上了,纠缠起来了。我们也不想那么残忍,硬把他们拉扯开。那如今这200我的已经混到一块儿了,这时候,你从这200我的(的身高)里面随便给我指一我的(的身高),我都没法肯定这我的(的身高)是男生(的身高)仍是女生(的身高)。也就是说你不知道抽取的那200我的里面的每个人究竟是从男生的那个身高分布里面抽取的,仍是女生的那个身高分布抽取的。用数学的语言就是,抽取获得的每一个样本都不知道是从哪一个分布抽取的。

        这个时候,对于每个样本或者你抽取到的人,就有两个东西须要猜想或者估计的了,一是这我的是男的仍是女的?二是男生和女生对应的身高的高斯分布的参数是多少?

       只有当咱们知道了哪些人属于同一个高斯分布的时候,咱们才可以对这个分布的参数做出靠谱的预测,例如刚开始的最大似然所说的,但如今两种高斯分布的人混在一块了,咱们又不知道哪些人属于第一个高斯分布,哪些属于第二个,因此就无法估计这两个分布的参数。反过来,只有当咱们对这两个分布的参数做出了准确的估计的时候,才能知道到底哪些人属于第一个分布,那些人属于第二个分布。

       这就成了一个先有鸡仍是先有蛋的问题了。鸡说,没有我,谁把你生出来的啊。蛋不服,说,没有我,你从哪蹦出来啊。(呵呵,这是一个哲学问题。固然了,后来科学家说先有蛋,由于鸡蛋是鸟蛋进化的)。为了解决这个你依赖我,我依赖你的循环依赖问题,总得有一方要先打破僵局,说,无论了,我先随便整一个值出来,看你怎么变,而后我再根据你的变化调整个人变化,而后如此迭代着不断互相推导,最终就会收敛到一个解。这就是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步……如此往复,直到参数基本再也不发生变化为止。

      这里把每一个人(样本)的完整描述看作是三元组yi={xi,zi1,zi2},其中,xi是第i个样本的观测值,也就是对应的这我的的身高,是能够观测到的值。zi1zi2表示男生和女生这两个高斯分布中哪一个被用来产生值xi,就是说这两个值标记这我的究竟是男生仍是女生(的身高分布产生的)。这两个值咱们是不知道的,是隐含变量。确切的说,zijxi由第j个高斯分布产生时值为1,不然为0。例如一个样本的观测值为1.8,而后他来自男生的那个高斯分布,那么咱们能够将这个样本表示为{1.8, 1, 0}。若是zi1zi2的值已知,也就是说每一个人我已经标记为男生或者女生了,那么咱们就能够利用上面说的最大似然算法来估计他们各自高斯分布的参数。可是它们未知,所以咱们只能用EM算法。

       我们如今不是由于那个恶心的隐含变量(抽取获得的每一个样本都不知道是从哪一个分布抽取的)使得原本简单的能够求解的问题变复杂了,求解不了吗。那怎么办呢?人类解决问题的思路都是想可否把复杂的问题简单化。好,那么如今把这个复杂的问题逆回来,我假设已经知道这个隐含变量了,哎,那么求解那个分布的参数是否是很容易了,直接按上面说的最大似然估计就行了。那你就问我了,这个隐含变量是未知的,你怎么就来一个假设说已知呢?你这种假设是没有根据的。呵呵,我知道,因此咱们能够先给这个给分布弄一个初始值,而后求这个隐含变量的指望,当成是这个隐含变量的已知值,那么如今就能够用最大似然求解那个分布的参数了吧,那假设这个参数比以前的那个随机的参数要好,它更能表达真实的分布,那么咱们再经过这个参数肯定的分布去求这个隐含变量的指望,而后再最大化,获得另外一个更优的参数,……迭代,就能获得一个皆大欢喜的结果了。

       这时候你就不服了,说你老迭代迭代的,你咋知道新的参数的估计就比原来的好啊?为何这种方法行得通呢?有没有失效的时候呢?何时失效呢?用到这个方法须要注意什么问题呢?呵呵,一会儿抛出那么多问题,搞得我适应不过来了,不过这证实了你有很好的搞研究的潜质啊。呵呵,其实这些问题就是数学家须要解决的问题。在数学上是能够妥当的证实的或者得出结论的。那我们用数学来把上面的问题从新描述下。(在这里能够知道,无论多么复杂或者简单的物理世界的思想,都须要经过数学工具进行建模抽象才得以使用并发挥其强大的做用,并且,这里面蕴含的数学每每能带给你更多想象不到的东西,这就是数学的精妙所在啊)

 

3、EM算法推导

       假设咱们有一个样本集{x(1),…,x(m)},包含m个独立的样本。但每一个样本i对应的类别z(i)是未知的(至关于聚类),也即隐含变量。故咱们须要估计几率模型p(x,z)的参数θ,可是因为里面包含隐含变量z,因此很难用最大似然求解,但若是z知道了,那咱们就很容易求解了。

       对于参数估计,咱们本质上仍是想得到一个使似然函数最大化的那个参数θ,如今与最大似然不一样的只是似然函数式中多了一个未知的变量z,见下式(1)。也就是说咱们的目标是找到适合的θzL(θ)最大。那咱们也许会想,你就是多了一个未知的变量而已啊,我也能够分别对未知的θz分别求偏导,再令其等于0,求解出来不也同样吗?

本质上咱们是须要最大化(1)式(对(1)式,咱们回忆下联合几率密度下某个变量的边缘几率密度函数的求解,注意这里z也是随机变量。对每个样本i的全部可能类别z求等式右边的联合几率密度函数和,也就获得等式左边为随机变量x的边缘几率密度),也就是似然函数,可是能够看到里面有“和的对数”,求导后形式会很是复杂(本身能够想象下log(f1(x)+ f2(x)+ f3(x)+…)复合函数的求导),因此很难求解获得未知参数z和θ。那OK,咱们能否对(1)式作一些改变呢?咱们看2)式,(2)式只是分子分母同乘以一个相等的函数,仍是有“和的对数”啊,仍是求解不了,那为何要这么作呢?我们先无论,看(3)式,发现(3)式变成了“对数的和”,那这样求导就容易了。咱们注意点,还发现等号变成了不等号,为何能这么变呢?这就是Jensen不等式的大显神威的地方。

Jensen不等式:

      设f是定义域为实数的函数,若是对于全部的实数x。若是对于全部的实数x,f(x)的二次导数大于等于0,那么f是凸函数。当x是向量时,若是其hessian矩阵H是半正定的,那么f是凸函数。若是只大于0,不等于0,那么称f是严格凸函数。

Jensen不等式表述以下:

若是f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X])

特别地,若是f是严格凸函数,当且仅当X是常量时,上式取等号。

若是用图表示会很清晰:

OK,到这里,如今式(3)就容易地求导了,可是式(2)和式(3)是不等号啊,式(2)的最大值不是式(3)的最大值啊,而咱们想获得式(2)的最大值,那怎么办呢?

      如今咱们就须要一点想象力了,上面的式(2)和式(3)不等式能够写成:似然函数L(θ)>=J(z,Q),那么咱们能够经过不断的最大化这个下界J,来使得L(θ)不断提升,最终达到它的最大值。

见上图,咱们固定θ,调整Q(z)使下界J(z,Q)上升至与L(θ)在此点θ处相等(绿色曲线到蓝色曲线),而后固定Q(z),调整θ使下界J(z,Q)达到最大值(θtθt+1),而后再固定θ,调整Q(z)……直到收敛到似然函数L(θ)的最大值处的θ*。这里有两个问题:何时下界J(z,Q)L(θ)在此点θ处相等?为何必定会收敛?

至此,咱们推出了在固定参数θ后,使下界拉升的Q(z)的计算公式就是后验几率,解决了Q(z)如何选择的问题。这一步就是E步,创建L(θ)的下界。接下来的M步,就是在给定Q(z)后,调整θ,去极大化L(θ)的下界J(在固定Q(z)后,下界还能够调整的更大)。那么通常的EM算法的步骤以下:

EM算法(Expectation-maximization):

     指望最大算法是一种从不彻底数据或有数据丢失的数据集(存在隐含变量)中求解几率模型参数的最大似然估计方法。

EM的算法流程:

初始化分布参数θ;

重复如下步骤直到收敛

        E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验几率,其实就是隐性变量的指望。做为隐藏变量的现估计值:

具体如何证实的,看推导过程参考:Andrew Ng《The EM algorithm》

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

4、EM算法另外一种理解

坐标上升法(Coordinate ascent):

图中的直线式迭代优化的路径,能够看到每一步都会向最优值前进一步,并且前进路线是平行于坐标轴的,由于每一步只优化一个变量。

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

 

5、EM的应用

       EM算法有不少的应用,最普遍的就是GMM混合高斯模型、聚类、HMM等等。具体能够参考JerryLead的cnblog中的Machine Learning专栏:

EM算法)The EM Algorithm

混合高斯模型(Mixtures of Gaussians)和EM算法

K-means聚类算法

相关文章
相关标签/搜索