精华内容
下载资源
问答
  • 最大似然到EM算法浅解

    万次阅读 多人点赞 2013-01-24 13:14:23
    最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之一:EM算法。能评得上十大之一,让人听起来觉得挺NB的。什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决...

    从最大似然到EM算法浅解

    zouxy09@qq.com

    http://blog.csdn.net/zouxy09

     

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

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

     

    一、最大似然

           扯了太多,得入正题了。假设我们遇到的是下面这样的问题:

           假设我们需要调查我们学校的男生和女生的身高分布。你怎么做啊?你说那么多人不可能一个一个去问吧,肯定是抽样了。假设你在校园里随便地活捉了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的条件下,估计参数θ的值。怎么估计呢?似然函数有啥用呢?那咱们先来了解下似然的概念。

    直接举个例子:

          某位同学与一位猎人一起外出打猎,一只野兔从前方窜过。只听一声枪响,野兔应声到下,如果要你推测,这一发命中的子弹是谁打的?你就会想,只发一枪便打中,由于猎人命中的概率一般大于这位同学命中的概率,看来这一枪是猎人射中的。

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

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

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

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

          有时,可以看到L(θ)是连乘的,所以为了便于分析,还可以定义对数似然函数,将其变成连加的:

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

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

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

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

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

    (1)写出似然函数;

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

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

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

     

    二、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个样本的观测值,也就是对应的这个人的身高,是可以观测到的值。zi1和zi2表示男生和女生这两个高斯分布中哪个被用来产生值xi,就是说这两个值标记这个人到底是男生还是女生(的身高分布产生的)。这两个值我们是不知道的,是隐含变量。确切的说,zij在xi由第j个高斯分布产生时值为1,否则为0。例如一个样本的观测值为1.8,然后他来自男生的那个高斯分布,那么我们可以将这个样本表示为{1.8, 1, 0}。如果zi1和zi2的值已知,也就是说每个人我已经标记为男生或者女生了,那么我们就可以利用上面说的最大似然算法来估计他们各自高斯分布的参数。但是它们未知,因此我们只能用EM算法。

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

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

     

    三、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是常量时,上式取等号。

           如果用图表示会很清晰:

     

           图中,实线f是凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。(就像掷硬币一样)。X的期望值就是a和b的中值了,图中可以看到E[f(X)]>=f(E[X])成立。

           当f是(严格)凹函数当且仅当-f是(严格)凸函数。

            Jensen不等式应用于凹函数时,不等号方向反向。

     

           回到公式(2),因为f(x)=log x为凹函数(其二次导数为-1/x2<0)。

    2)式中的期望,(考虑到E(X)=∑x*p(x),f(X)是X的函数,则E(f(X))=∑f(x)*p(x)),又,所以就可以得到公式(3)的不等式了(若不明白,请拿起笔,呵呵):

            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(θ)在此点θ处相等?为什么一定会收敛?

         首先第一个问题,在Jensen不等式中说到,当自变量X是常数的时候,等式成立。而在这里,即:

         再推导下,由于(因为Q是随机变量z(i)的概率密度函数),则可以得到:分子的和等于c(分子分母都对所有z(i)求和:多个等式分子分母相加不变,这个认为每个样例的两个概率比值都是c),则:

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

    EM算法(Expectation-maximization):

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

    EM的算法流程:

    初始化分布参数θ;

    重复以下步骤直到收敛

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

           

     

            M步骤:将似然函数最大化以获得新的参数值:

             

            这个不断的迭代,就可以得到使似然函数L(θ)最大化的参数θ了。那就得回答刚才的第二个问题了,它会收敛吗?

    感性的说,因为下界不断提高,所以极大似然估计单调增加,那么最终我们会到达最大似然估计的最大值。理性分析的话,就会得到下面的东西:

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

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

     

    四、EM算法另一种理解

    坐标上升法(Coordinate ascent):

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

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

     

    五、EM的应用

           EM算法有很多的应用,最广泛的就是GMM混合高斯模型、聚类、HMM等等。具体可以参考JerryLead的cnblog中的Machine Learning专栏:

    EM算法)The EM Algorithm

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

    K-means聚类算法

     

          没有鸡和蛋的先后之争,因为他们都知道“没有你就没有我”。从此他们一起过上了幸福美好的生活。

    展开全文
  • 最大似然估计总结笔记

    万次阅读 多人点赞 2011-01-09 13:44:00
    最大似然估计学习总结------MadTurtle 1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数作为真实的参数估计。 2. 离散型 设为离散型随机变量,为多维参数向量...

    最大似然估计学习总结------MadTurtle


    1. 作用

    在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数clip_image002作为真实clip_image004的参数估计。

    2. 离散型

    clip_image006为离散型随机变量,clip_image008为多维参数向量,如果随机变量clip_image010相互独立且概率计算式为P{clip_image012,则可得概率函数为P{clip_image014}=clip_image016,在clip_image008[1]固定时,上式表示clip_image014[1]的概率;当clip_image014[2]已知的时候,它又变成clip_image008[2]的函数,可以把它记为clip_image018,称此函数为似然函数。似然函数值的大小意味着该样本值出现的可能性的大小,既然已经得到了样本值clip_image014[3],那么它出现的可能性应该是较大的,即似然函数的值也应该是比较大的,因而最大似然估计就是选择使clip_image020达到最大值的那个clip_image002[1]作为真实clip_image004[1]的估计。

    3. 连续型

    clip_image006[1]为连续型随机变量,其概率密度函数为clip_image022clip_image010[1]为从该总体中抽出的样本,同样的如果clip_image010[2]相互独立且同分布,于是样本的联合概率密度为clip_image024。大致过程同离散型一样。

    4. 关于概率密度(PDF)

    我们来考虑个简单的情况(m=k=1),即是参数和样本都为1的情况。假设进行一个实验,实验次数定为10次,每次实验成功率为0.2,那么不成功的概率为0.8,用y来表示成功的次数。由于前后的实验是相互独立的,所以可以计算得到成功的次数的概率密度为:

    clip_image026=clip_image028 其中yclip_image030

    由于y的取值范围已定,而且clip_image032也为已知,所以图1显示了y取不同值时的概率分布情况,而图2显示了当clip_image034时的y值概率情况。

    clip_image036

    图1 clip_image038时概率分布图

    clip_image040

    图2 clip_image042时概率分布图

    那么clip_image032[1]在[0,1]之间变化而形成的概率密度函数的集合就形成了一个模型。

    5. 最大似然估计的求法

    由上面的介绍可以知道,对于图1这种情况y=2是最有可能发生的事件。但是在现实中我们还会面临另外一种情况:我们已经知道了一系列的观察值和一个感兴趣的模型,现在需要找出是哪个PDF(具体来说参数clip_image032[2]为多少时)产生出来的这些观察值。要解决这个问题,就需要用到参数估计的方法,在最大似然估计法中,我们对调PDF中数据向量和参数向量的角色,于是可以得到似然函数的定义为:

    clip_image044

    该函数可以理解为,在给定了样本值的情况下,关于参数向量clip_image032[3]取值情况的函数。还是以上面的简单实验情况为例,若此时给定y为7,那么可以得到关于clip_image032[4]的似然函数为:

    clip_image046

    继续回顾前面所讲,图1,2是在给定clip_image032[5]的情况下,样本向量y取值概率的分布情况;而图3是图1,2横纵坐标轴相交换而成,它所描述的似然函数图则指出在给定样本向量y的情况下,符合该取值样本分布的各种参数向量clip_image032[6]的可能性。若clip_image048相比于clip_image050,使得y=7出现的可能性要高,那么理所当然的clip_image048[1]要比clip_image050[1]更加接近于真正的估计参数。所以求clip_image032[7]的极大似然估计就归结为求似然函数clip_image052的最大值点。那么clip_image032[8]取何值时似然函数clip_image054最大,这就需要用到高等数学中求导的概念,如果是多维参数向量那么就是求偏导。

    clip_image070

    图3 clip_image072的似然函数分布图

    主要注意的是多数情况下,直接对变量进行求导反而会使得计算式子更加的复杂,此时可以借用对数函数。由于对数函数是单调增函数,所以clip_image056clip_image058具有相同的最大值点,而在许多情况下,求clip_image060的最大值点比较简单。于是,我们将求clip_image058[1]的最大值点改为求clip_image060[1]的最大值点。

    clip_image062

    若该似然函数的导数存在,那么对clip_image060[2]关于参数向量的各个参数求导数(当前情况向量维数为1),并命其等于零,得到方程组:

    clip_image064

    可以求得clip_image034[1]时似然函数有极值,为了进一步判断该点位最大值而不是最小值,可以继续求二阶导来判断函数的凹凸性,如果clip_image034[2]的二阶导为负数那么即是最大值,这里再不细说。

    还要指出,若函数clip_image022[1]关于clip_image066的导数不存在,我们就无法得到似然方程组,这时就必须用其它的方法来求最大似然估计值,例如用有界函数的增减性去求clip_image068的最大值点

    6. 总结

    最大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。最大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。

    求最大似然函数估计值的一般步骤: 
    (1) 写出似然函数
    (2) 对似然函数取对数,并整理
    (3) 求导数
    (4) 解似然方程

    对于最大似然估计方法的应用,需要结合特定的环境,因为它需要你提供样本的已知模型进而来估算参数,例如在模式识别中,我们可以规定目标符合高斯模型。而且对于该算法,我理解为,“知道”和“能用”就行,没必要在程序设计时将该部分实现,因为在大多数程序中只会用到我最后推导出来的结果。个人建议,如有问题望有经验者指出。在文献[1]中讲解了本文的相关理论内容,在文献[2]附有3个推导例子。

    7. 参考文献

    [1]I.J. Myung. Tutorial on maximum likelihood estimation[J]. Journal of Mathematical Psychology, 2003, 90-100.

    [2] http://edu6.teacher.com.cn/ttg006a/chap7/jiangjie/72.htm

    该文通过Windows Live Writer上传,如有版面问题影响视觉效果请见谅,可以通过点击看清晰图!^0^

    展开全文
  • 本文原始地址:最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

    声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。
    本文作者: nebulaf91
    本文原始地址:http://blog.csdn.net/u011508640/article/details/72815981


    最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很容易弄混它们。下文将详细说明MLE和MAP的思路与区别。

    但别急,我们先从概率和统计的区别讲起。

    概率和统计是一个东西吗?

    概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。

    概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。 举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。

    统计研究的问题则相反。统计是,有一堆数据,要利用这堆数据去预测模型和参数。仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。

    一句话总结:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。

    显然,本文解释的MLE和MAP都是统计领域的问题。它们都是用来推测参数的方法。为什么会存在着两种不同方法呢? 这需要理解贝叶斯思想。我们来看看贝叶斯公式。

    贝叶斯公式到底在说什么?

    学习机器学习和模式识别的人一定都听过贝叶斯公式(Bayes’ Theorem):

    P(A∣B)=P(B∣A)P(A)P(B)P(A|B) = \frac{P(B|A)P(A)}{P(B)}P(AB)=P(B)P(BA)P(A) 【式1】

    贝叶斯公式看起来很简单,无非是倒了倒条件概率和联合概率的公式。

    把B展开,可以写成:

    P(A∣B)=P(B∣A)P(A)P(B∣A)P(A)+P(B∣∼A)P(∼A)P(A|B) = \frac{P(B|A)P(A)}{P(B|A)P(A) + P(B|\sim A)P(\sim A)}P(AB)=P(BA)P(A)+P(BA)P(A)P(BA)P(A) 【式2】(∼A\sim AA表示"非A")

    这个式子就很有意思了。

    想想这个情况。一辆汽车(或者电瓶车)的警报响了,你通常是什么反应?有小偷?撞车了? 不。。 你通常什么反应都没有。因为汽车警报响一响实在是太正常了!每天都要发生好多次。本来,汽车警报设置的功能是,出现了异常情况,需要人关注。然而,由于虚警实在是太多,人们渐渐不相信警报的功能了。

    贝叶斯公式就是在描述,你有多大把握能相信一件证据?(how much you can trust the evidence)

    我们假设响警报的目的就是想说汽车被砸了。把A计作“汽车被砸了”,B计作“警报响了”,带进贝叶斯公式里看。我们想求等式左边发生A∣BA|BAB的概率,这是在说警报响了,汽车也确实被砸了。汽车被砸**引起(trigger)**警报响,即B∣AB|ABA。但是,也有可能是汽车被小孩子皮球踢了一下、被行人碰了一下等其他原因(统统计作∼A\sim AA),其他原因引起汽车警报响了,即B∣∼AB|\sim ABA。那么,现在突然听见警报响了,这时汽车已经被砸了的概率是多少呢(这即是说,警报响这个证据有了,多大把握能相信它确实是在报警说汽车被砸了)?想一想,应当这样来计算。用警报响起、汽车也被砸了这事件的数量,除以响警报事件的数量(这即【式1】)。进一步展开,即警报响起、汽车也被砸了的事件的数量,除以警报响起、汽车被砸了的事件数量加上警报响起、汽车没被砸的事件数量(这即【式2】)。

    可能有点绕,请稍稍想一想。

    再思考【式2】。想让P(A∣B)=1P(A|B) = 1P(AB)=1,即警报响了,汽车一定被砸了,该怎么做呢?让$ P(B|\sim A)P(\sim A) = 0即可。很容易想清楚,假若让即可。很容易想清楚,假若让P(\sim A) = 0$,即杜绝了汽车被球踢、被行人碰到等等其他所有情况,那自然,警报响了,只剩下一种可能——汽车被砸了。这即是提高了响警报这个证据的说服力。

    从这个角度总结贝叶斯公式:做判断的时候,要考虑所有的因素。 老板骂你,不一定是你把什么工作搞砸了,可能只是他今天出门前和太太吵了一架。

    再思考【式2】。观察【式2】右边的分子,P(B∣A)P(B|A)P(BA)为汽车被砸后响警报的概率。姑且仍为这是1吧。但是,若P(A)P(A)P(A)很小,即汽车被砸的概率本身就很小,则P(B∣A)P(A)P(B|A)P(A)P(BA)P(A)仍然很小,即【式2】右边分子仍然很小,$P(A|B) $ 还是大不起来。 这里,​P(A)P(A)P(A)即是常说的先验概率,如果A的先验概率很小,就算P(B∣A)P(B|A)P(BA)较大,可能A的后验概率P(A∣B)P(A|B)P(AB)还是不会大(假设P(B∣∼A)P(∼A)P(B|\sim A)P(\sim A)P(BA)P(A)不变的情况下)。

    从这个角度思考贝叶斯公式:一个本来就难以发生的事情,就算出现某个证据和他强烈相关,也要谨慎。证据很可能来自别的虽然不是很相关,但发生概率较高的事情。 发现刚才写的代码编译报错,可是我今天状态特别好,这语言我也很熟悉,犯错的概率很低。因此觉得是编译器出错了。 ————别,还是先再检查下自己的代码吧。

    好了好了,说了这么多,下面言归正传,说一说MLE。

    ——————不行,还得先说似然函数(likelihood function)

    似然函数

    似然(likelihood)这个词其实和概率(probability)是差不多的意思,Colins字典这么解释:The likelihood of something happening is how likely it is to happen. 你把likelihood换成probability,这解释也读得通。但是在统计里面,似然函数和概率函数却是两个不同的概念(其实也很相近就是了)。

    对于这个函数:

    P(x∣θ)P(x|\theta)P(xθ)

    输入有两个:x表示某一个具体的数据;θ\thetaθ表示模型的参数。

    如果θ\thetaθ是已知确定的,xxx是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点x,其出现概率是多少。

    如果xxx是已知确定的,θ\thetaθ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现x这个样本点的概率是多少。

    这有点像“一菜两吃”的意思。其实这样的形式我们以前也不是没遇到过。例如,$f(x, y) = x^y ,即, 即,x的的y次方。如果次方。如果x是已知确定的(例如是已知确定的(例如(x = 2),这就是),这就是)f(y) = 2^y,这是指数函数。如果, 这是指数函数。 如果,y是已知确定的(例如是已知确定的(例如(y = 2),这就是),这就是)f(x) = x^2$,这是二次函数。同一个数学形式,从不同的变量角度观察,可以有不同的名字。

    这么说应该清楚了吧? 如果还没讲清楚,别急,下文会有具体例子。

    现在真要先讲讲MLE了。。

    最大似然估计(MLE)

    假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正反面出现的概率(记为θ\thetaθ)各是多少?

    这是一个统计问题,回想一下,解决统计问题需要什么? 数据!

    于是我们拿这枚硬币抛了10次,得到的数据(x0x_0x0)是:反正正正正反正正正反。我们想求的正面概率θ\thetaθ是模型参数,而抛硬币模型我们可以假设是 二项分布

    那么,出现实验结果$ x_0$(即反正正正正反正正正反)的似然函数是多少呢?

    f(x0,θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ7(1−θ)3=f(θ)f(x_0 ,\theta) = (1-\theta)\times\theta\times\theta\times\theta\times\theta\times(1-\theta)\times\theta\times\theta\times\theta\times(1-\theta) = \theta ^ 7(1 - \theta)^3 = f(\theta)f(x0,θ)=(1θ)×θ×θ×θ×θ×(1θ)×θ×θ×θ×(1θ)=θ7(1θ)3=f(θ)

    注意,这是个只关于θ\thetaθ的函数。而最大似然估计,顾名思义,就是要最大化这个函数。我们可以画出f(θ)f(\theta)f(θ)的图像:

    likeli

    可以看出,在θ=0.7\theta = 0.7θ=0.7时,似然函数取得最大值。

    这样,我们已经完成了对θ\thetaθ的最大似然估计。即,抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7。(ummm…这非常直观合理,对吧?)

    且慢,一些人可能会说,硬币一般都是均匀的啊! 就算你做实验发现结果是“反正正正正反正正正反”,我也不信θ=0.7\theta = 0.7θ=0.7

    这里就包含了贝叶斯学派的思想了——要考虑先验概率。 为此,引入了最大后验概率估计。

    最大后验概率估计

    最大似然估计是求参数θ\thetaθ, 使似然函数$P(x_0 | \theta) 最大。最大后验概率估计则是想求最大。最大后验概率估计则是想求\theta使使使P(x_0 | \theta) P(\theta)最大。求得的最大。求得的\theta不单单让似然函数大,不单单让似然函数大,\theta$自己出现的先验概率也得大。 (这有点像正则化里加惩罚项的思想,不过正则化里是利用加法,而MAP里是利用乘法)

    MAP其实是在最大化P(θ∣x0)=P(x0∣θ)P(θ)P(x0)P(\theta|x_0) = \frac{P(x_0|\theta)P(\theta)}{P(x_0)}P(θx0)=P(x0)P(x0θ)P(θ),不过因为x0x_0x0是确定的(即投出的“反正正正正反正正正反”),P(x0)P(x_0)P(x0)是一个已知值,所以去掉了分母P(x0)P(x_0)P(x0)(假设“投10次硬币”是一次实验,实验做了1000次,“反正正正正反正正正反”出现了n次,则P(x0)=n/1000P(x_0) = n/1000P(x0)=n/1000。总之,这是一个可以由数据集得到的值)。最大化P(θ∣x0)P(\theta | x_0)P(θx0)的意义也很明确,x0x_0x0已经出现了,要求θ\thetaθ取什么值使P(θ∣x0)P(\theta | x_0)P(θx0)最大。顺带一提,P(θ∣x0)P(\theta | x_0)P(θx0)即后验概率,这就是“最大后验概率估计”名字的由来。

    对于投硬币的例子来看,我们认为(”先验地知道“)θ\thetaθ取0.5的概率很大,取其他值的概率小一些。我们用一个高斯分布来具体描述我们掌握的这个先验知识,例如假设P(θ)P(\theta)P(θ)为均值0.5,方差0.1的高斯函数,如下图:

    ptheta

    P(x0∣θ)P(θ)P(x_0 | \theta) P(\theta)P(x0θ)P(θ)的函数图像为:

    map1

    注意,此时函数取最大值时,θ\thetaθ取值已向左偏移,不再是0.7。实际上,在θ=0.558\theta = 0.558θ=0.558时函数取得了最大值。即,用最大后验概率估计,得到θ=0.558\theta = 0.558θ=0.558

    最后,那要怎样才能说服一个贝叶斯派相信θ=0.7\theta = 0.7θ=0.7呢?你得多做点实验。。

    如果做了1000次实验,其中700次都是正面向上,这时似然函数为:

    likeli2

    如果仍然假设P(θ)P(\theta)P(θ)为均值0.5,方差0.1的高斯函数,P(x0∣θ)P(θ)P(x_0 | \theta) P(\theta)P(x0θ)P(θ)的函数图像为:

    map2

    θ=0.696\theta = 0.696θ=0.696处,P(x0∣θ)P(θ)P(x_0 | \theta) P(\theta)P(x0θ)P(θ)取得最大值。

    这样,就算一个考虑了先验概率的贝叶斯派,也不得不承认得把θ\thetaθ估计在0.7附近了。

    PS. 要是遇上了顽固的贝叶斯派,认为P(θ=0.5)=1P(\theta = 0.5) = 1P(θ=0.5)=1 ,那就没得玩了。。 无论怎么做实验,使用MAP估计出来都是θ=0.5\theta = 0.5θ=0.5。这也说明,一个合理的先验概率假设是很重要的。(通常,先验概率能从数据中直接分析得到)

    最大似然估计和最大后验概率估计的区别

    相信读完上文,MLE和MAP的区别应该是很清楚的了。MAP就是多个作为因子的先验概率P(θ)P(\theta)P(θ)。或者,也可以反过来,认为MLE是把先验概率P(θ)P(\theta)P(θ)认为等于1,即认为θ\thetaθ是均匀分布。


    如果有说错的或者没说清楚的地方,欢迎留言指教!如果您更好的见解,也欢迎留言交流!
    谢谢阅读!
    作者: nebulaf91

    展开全文
  • 最大似然

    2018-02-26 11:20:58
    最大似然符和高斯分布时,和最小二乘法的结果一样。 最大似然是站在概率上考虑的,推导出一个概率函数表示目标函数,它希望这个概率函数 越大越好。 最大似然中心思想,假设拿出来的样本数据有很大的参考性,用这...

    作为逻辑回归的loss函数考虑。最小二乘法是可以从最大似然估计推导出来的,所以它俩的本质应当是一样的。


    最小二乘法 思想是 求欧式距离最小值。 即求出一条线,样本距离这条线的和最小。


    最大似然符和高斯分布时,和最小二乘法的结果一样。

    最大似然是站在概率上考虑的,推导出一个概率函数表示目标函数,它希望这个概率函数 越大越好。

    最大似然中心思想,假设拿出来的样本数据有很大的参考性,用这个样本数据反推“导致”这个结果的参数。


    举一下最常见的例子,一个麻袋里有白球与黑球,但是我不知道它们之间的比例,那我就有放回的抽取10次,结果我发现我抽到了8次黑球2次白球,至此我想知道有多少个黑球。

    用最大似然的方式解决: 假设黑球概率是p,因此白球是(1-p)。  L=p^8 * (1-p)^2  求max(L).  先对L求 ln,因为L作为目标函数乘法太多 求导结果复杂,因此先求ln,不破坏单调性。

                                             因此就是求 max( ln ( L ) )  , 由微积分概念,对ln( L )求导 因为ln是单调增函数,当导数为0时即可得到最大值 。推导:

                                             ln`(p^8 * (1-p)^2 )= (8 * ln(p)+ 2 * ln (1-p))` = 8 / p - 2 / ( 1 - p ) = 0 求得 p=0.8


    用最大似然解题过程:

    (1)每个样本属于某个类别发生概率的乘积L(比如上面的例子,10个有8个黑球2个白球,因此是8个p 2个(1-p) 相乘)

    (2)ln( L )    加ln方法,乘法求导太复杂,不破坏单调性增加ln方法。式子最大值时p的值就是黑球的概率。

    (3)求导ln( L )    求导结果为0时 p的值就是黑球的概率。


    应用于逻辑回归ln(L)的推导:

    求导:

    可以对比和最小二乘法的结果一样。


    sigmoid: y = 1 / ( 1 + exp(-z ) ) , z = wx+b

    由上式推导出: ln( y / ( 1-y) )  = z = ln ( p( y = 1 | x ) / p( y = 0 | x ) ) ,   p( y = 0 | x )  = (1 - p( y = 1 | x ) )

    推导得:p( y = 1 | x )  = exp(z) / ( 1 + exp(z) )                  p( y = 0 | x ) = 1 / ( 1 + exp(z) ) 

    因此总的概率函数是 L =  yi * p( y = 1 | x )  + (1 - yi) * p( y = 0 | x )       (很巧妙,y=0/1 都符和)

    ln(L)的和的最大值,就是我们的目标;因为ln的图像是横坐标越大纵坐标越大,但是斜率越小,因此对它求导,求导数的最小值就可以。


    参考:http://www.cnblogs.com/sparkwen/p/3441197.html?utm_source=tuicool&utm_medium=referral

    http://blog.csdn.net/zouxy09/article/details/20319673

    https://www.cnblogs.com/monoSLAM/p/5257589.html

    https://www.zhihu.com/question/20447622

    《机器学习》

    展开全文
  • 最大似然 极大似然Introduction : 简介 : In machine learning, the purpose is to find certain types of patterns. To do so, you need to train a model over a dataset using algorithms so that the model ...
  • 最大似然方法

    2018-09-21 16:56:41
    最大似然方法,亲测有效,对于正在学习最大似然相关方面的同学很有帮助,欢迎下载
  • 摘要最大似然估计(Maximum Likelihood Estimation)与最大后验估计(Maximum A Posteriori)是机器学习中最常用的两种点估计参数估计方法. 最大似然估计以最大化观测数据集上的似然度为目标, 强调从观测数据集上拟合出...
  • 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与...
  • 最大似然估计

    2020-10-28 15:32:18
    最大似然估计似然函数最大似然估计离散型随机变量的最大似然估计连续型随机变量的最大似然估计数学期望离散型连续型参考 似然函数 最大似然估计 离散型随机变量的最大似然估计 连续型随机变量的最大似然估计 数学...
  • 前段时间看卷积神经网络时特别想用下这一方法,但是确实是目前对这些概念也理解的不够清晰,有机会再讨论这些概念吧,今天简单谈谈机器学习中的最大似然估计。我理解的最大似然估计是机器学习的基础和基石,下面我们...
  • 如果你从事和数据处理相关的工作,一定不会避开最大似然估计这个概念,它是一种非常强大的工具,和深度学习领域中经常用的交叉熵有一定的关系。2 最大似然函数考虑一组含有 m 个样本的数据集 X = {x1, ...
  • 在BRM的数学推导中提到了,最大似然估计!!! 最大似然估計(Maximum Likelihood,ML) 最大似然估計概述 最大似然估計是一種統計方法,它用來求一個樣本集的相關概率密度函數的參數。這個方法最早...
  • 01 生活实例我们在生活中就经常应用到最大似然估计的思想。比如你高中的班主任上课时从教室门缝进行扒头观测,10 次独立观测的结果显示,小明同学睡觉 8 次,听讲 2 次,班主任由此推断小明上课经常不好好听讲,班...
  • 最大似然估计与最大验后估计 最大似然估计与最大验后估计
  • 常用的参数估计方法包括最大似然估计法、最大后验估计、期望最大化法 (EM) 和贝叶斯估计方法。2 先验概率在观测数据前,我们将 θ 的已知知识表示成先验概率分布,p(θ) 我们通常称为先验。一般而言,在机器学习实践...
  • 最大似然估计(maximum likelihood estimates,MLE) 前文提到,最大似然估计(maximum likelihood estimates,MLE)是实际中使用非常广泛的一种方法,用我们老师的一句最简单的话来总结最大似然估计,就是“谁大像谁”...
  • (1)最大似然估计ML和最大后验估计MAP最大似然估计量非贝叶斯方法通常是最大化似然函数: 其中 被称为 的最大似然估计量,它是 的函数。最大后验估计量估计随机参数的通常方法是最大化后验分布函数: 其中 被称为 ...
  • 最大似然估计与最大后验估计(贝叶斯估计)频率学派 - Frequentist - Maximum Likelihood Estimation (MLE,最大似然估计)贝叶斯学派 - Bayesian - Maximum A Posteriori (MAP,最大后验估计)高中老师告诉我们概率就是...
  • 之前我们已经介绍过最大似然估计的概念,这种估计法在机器学习领域有广泛的应用。本文将用线性回归举例,阐述最大似然估计在寻找模型最优参数方面的具体用途。最大似然估计在线性回归中的应用先来回顾一下线性回归的...
  • 最大似然估计matlab

    2015-10-28 11:02:24
    最大似然估计matlab代码
  • 1. 最大似然估计定义最大似然估计(maximum likelihood)就是利用已知的样本结果,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值。逻辑:结果 → 产生结果的条件环境条件换句话说,极大似然估计提供了一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,780
精华内容 2,312
关键字:

最大似然