码迷,mamicode.com
首页 > 其他好文 > 详细

高斯混合模型(GMM)

时间:2016-01-20 06:17:56      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:

复习:

1.概率密度函数,密度函数,概率分布函数和累计分布函数

概率密度函数一般以大写“PDF”(Probability Density Function),也称概率分布函数,有的时候又简称概率分布函数。 而累计分布函数是概率分布函数的积分。 注意区分

从数学上看,累计分布函数F(x)=P(X<x),表示随机变量X的值小于x的概率。这个意义很容易理解。


概率密度f(x)是F(x)在x处的关于x的一阶导数,即变化率。如果在某一x附近取非常小的一个邻域Δx,那么,随机变量X落在(x, x+Δx)内的概率约为f(x)Δx,即P(x<X<x+Δx)≈f(x)Δx。换句话说,概率密度f(x)是X落在x处“单位宽度”内的概率。“密度”一词可以由此理解。

例子:
a. 最简单的概率密度函数是均匀分布的密度函数,对于一个取值在区间 技术分享 上的均匀分布函数技术分享也就是说,当x 不在区间技术分享上的时候,函数值等于0,而在区间技术分享上的时候,函数值等于技术分享 。这个函数并不是完全的连续函数,但是是可积函数。
技术分享技术分享

  b. 正态分布是重要的概率分布。随着参数 技术分享 技术分享 变化,概率分布也产生变化。它的概率密度函数是:

技术分享

2.先验概率和后验概率

本文假设大家都知道什么叫条件概率了(P(A|B)表示在B事件发生的情况下,A事件发生的概率)。

先验概率和后验概率:
教科书上的解释总是太绕了。其实举个例子大家就明白这两个东西了。

假设我们出门堵车的可能因素有两个(就是假设而已,别当真):车辆太多和交通事故。

堵车的概率就是先验概率 。

那么如果我们出门之前我们听到新闻说今天路上出了个交通事故,那么我们想算一下堵车的概率,这个就叫做条件概率 。也就是P(堵车|交通事故)。这是有因求果。

如果我们已经出了门,然后遇到了堵车,那么我们想算一下堵车时由交通事故引起的概率有多大,那这个就叫做后验概率 (也是条件概率,但是通常习惯这么说)。也就是P(交通事故|堵车)。这是有果求因。

下面的定义摘自百度百科:

先验概率是指根据以往经验和分析得到的概率,如全概率公式,它往往作为"由因求果"问题中的"因"出现.

后验概率是指依据得到"结果"信息所计算出的最有可能是那种事件发生,如贝叶斯公式中的,是"执果寻因"问题中的"因".

----------

那么这两个概念有什么用呢?

 

最大似然估计,我们来看一个例子:

有一天,有个病人到医院看病。他告诉医生说自己头痛,然后医生根据自己的经验判断出他是感冒了,然后给他开了些药回去吃。有人肯定要问了,这个例子看起来跟我们要讲的最大似然估计有啥关系啊。关系可大了,事实上医生在不知不觉中就用到了最大似然估计(虽然有点牵强,但大家就勉为其难地接受吧^_^)。

 

大家知道,头痛的原因有很多种啊,比如感冒,中风,脑溢血...(脑残>_<这个我可不知道会不会头痛,还有那些看到难题就头痛的病人也不在讨论范围啊!)。那么医生凭什么说那个病人就是感冒呢?哦,医生说这是我从医多年的经验啊。咱们从概率的角度来研究一下这个问题。其实医生的大脑是这么工作的,他计算了一下:

P(感冒|头痛)(头痛由感冒引起的概率,下面类似)

P(中风|头痛)

P(脑溢血|头痛)

...

然后这个计算机大脑发现,P(感冒|头痛)是最大的,因此就认为呢,病人是感冒了。看到了吗?这个就叫最大似然估计(Maximum likelihood estimation,MLE) 。

咱们再思考一下,P(感冒|头痛),P(中风|头痛),P(脑溢血|头痛)是先验概率还是后验概率呢?

没错,就是后验概率。看到了吧,后验概率可以用来看病(只要你算得出来,呵呵)。事实上,后验概率起了这样一个用途,根据一些发生的事实(通常是坏的结果),分析结果产生的最可能的原因,然后才能有针对性地去解决问题。

那么先验概率有啥用呢?

我们来思考一下,P(脑残|头痛)是怎么算的。P(脑残|头痛)=头痛的人中脑残的人数/头痛的人数,头痛的样本倒好找,但是头痛的人中脑残的人数就不好调查了吧。如果你去问一个头痛的人你是不是脑残了,我估计那人会把你拍飞吧。接下来先验概率就派上用场了。

根据贝叶斯公式 : P(B|A)=P(A|B)P(B)/P(A)

我们可以知道: P(脑残|头痛)=P(头痛|脑残)P(脑残)/P(头痛), 注意: (头痛|脑残)是先验概率,那么利用贝叶斯公式我们就可以利用先验概率把后验概率算出来了。

P(头痛|脑残)=脑残的人中头痛的人数/脑残的人数,这样只需要我们去问脑残的人你头痛吗,明显很安全了。(你说脑残的人数怎么来的啊,那我们就假设我们手上有一份传说中的脑残名单吧。那份同学不要吵,我没说你在名单上啊。再说调查脑残人数的话咱就没必要抓着一个头痛的人问了。起码问一个心情好的人是否脑残比问一个头痛的人安全得多)

我承认上面的例子很牵强,不过主要是为了表达一个意思。后验概率在实际中一般是很难直接计算出来的,相反先验概率就容易多了。因此一般会利用先验概率来计算后验概率。

 

3.极大似然估计(MLE)和最大后验概率(MAP),贝叶斯推断和最大熵

 
 

“参数估计是…通过测量或经验数据来估计概率分布参数的数值”—Wikipedia如是说。

 

这时我们会发现各种各样的参数估计方法,例如极大似然估计、最大后验估计、贝叶斯推断、最大熵估计,等等。虽然方法各不相同,但实际上背后的道理大体一样。想要了解它们之间的联系与区别,只要举一个最简单的例子就可以了:观测到一堆从某个高斯分布产生的数值,请估该计高斯分布的参数之一—均值。下图就是我们的实验数据:从一个0均值一维高斯分布中产生的1000个点,横坐标是数据的序号(1:1000),纵坐标是样本点的值。

技术分享

1. 极大似然估计(MLE)

  怎样的参数是最好的?使得观测数据出现的概率(即所谓likelihood,似然)最大的参数就是最好的。这个朴素的思想,就是极大似然估计(Maximum Likelihood Estimation, MLE)。对一个独立同分布(i.d.d)的样本集来说,总体的似然就是每个样本似然的乘积。例如本例中的似然(Likelihood)显然是:

技术分享

  在实际中,因为连乘计算起来比较麻烦,并且概率都很小,难免越乘越接近0最终引发数值bug,因此多对其取log, 得到log似然( log likelihood):

技术分享

  log并不改变似然函数的凸性,因此可令其对u取极值(函数取极值的方法:导数为0的点,边界点。),显然得到:

技术分享

  这就完成了对高斯分布均值的极大似然估计。值得一提的是,该例的log似然实在是太简单,所以这个极值可以直接求导得到;在更多的情况下,我们需要通过梯度下降法等最优化算法来求解。而绝大部分最优化的工具包都默认求函数的最小值,因此别忘了把你的log似然乘以-1变成负log似然(Negative Log Likelihood),在你把它塞给一个最优化工具包之前。 

 

2.最大后验估计(MAP)

  MLE简单又客观,但是过分的客观有时会导致过拟合(Over fitting)。在样本点很少的情况下,MLE的效果并不好。为此,贝叶斯学派发明了最大后验估计(Maximum a Posterior)。先看一个最简单的概率图模型,借此来复习一下先验、似然、后验:

技术分享

  likelihood:对一个待估参数θ来说,它产生观测样本x的概率密度函数p(x|θ)叫做x的似然;

  prior:θ本身是一个未观测到的变量,既然未观测到,也就是可以看成一个随机变量,假设其服从以α为参数的概率分布p(θ|α),叫做θ的先验;

  posterior:在观测到x之后,我们对θ的认识得到了增强,将它的概率分布修正为p(θ|α,x),这个就叫做θ的后验;简单套用一下贝叶斯公式,可以得到后验分布:

技术分享

  即先验和似然的乘积。在本文的例子中,假设我们预先知道均值u本身服从一个高斯分布,其均值为u0,方差为σ0,那么观测到数据样本之后,u的后验分布为:

技术分享

  接下来就和MLE完全一样了:求一个u使得后验概率最大即可。方便起见,把u0固定成0,变化σ0做几组对比实验:

技术分享

  横轴是参数估计所用到的样本数,纵轴是估计值与真实值之间的误差。σ0取了0.01、0.1、1等三个值,作为方差,值越小先验的强度越大。

  可见:

  1)   MLE在数据较少时不准确

  2)   先验强的MAP(图中红线、黄线)可以在少量数据时就达到较好的结果

  3)   先验弱的MAP(图中蓝线)退化为MLE

  还有一点在图中看不出来:假如我们预先知道的关于u的信息是不对的,即选择了一个强但偏离实际的先验(例如把u0设置成5, σ0设置成0.01)会怎样?其实那样的话结果甚至还不如MLE,这也是贝叶斯学派广为诟病的硬伤之一:凭什么去选择先验?大部分时候,我们选一个方便计算但不包含太多信息的共轭先验(什么是共轭先验?下回分解)。

 

3.贝叶斯推断(Bayesian Inference)

  其实MAP不仅让频率学派的人不领情,甚至不能令苛刻的贝叶斯学派满意。

  一来,MAP只取后验分布的峰值(众数,mode),而mode往往不具有很强的代表性(特别是在多峰的函数中);

  二来,MAP有一个独特的缺点,对参数形式敏感。如果我们要估计方差,就会发现,将方差作为参数得到的解,并不是将标准差作为参数得到的解的平方。而MLE可不会这样。

  那么与其将后验分布的峰值拿来凑合,还不如将整个后验分布求出来,用一个分布来描述待估的参数。这就是Inference。

  可是我们刚才在MAP中不是已经求出了整个后验分布么?是的,这是因为例子太简单了。在绝大部分超过三个节点的概率图模型中,都无法求出精确的后验分布,我们需要借助于各种各样的近似手段,于是才有了拉普拉斯近似、变分推断、Gibbs采样…等等等等,内容庞杂,下回再表。

 

4.最大熵估计

  前例中的估计无不建立在这样一个基础上:已知分布的形式,求分布的参数。但是如果并不知道分布的形式,还能估计么?答案是不仅可以,并且靠谱。这就是鼎鼎有名的最大熵法。关于怎么样从最大的熵原理推导出最大熵估计,已经有足够多的介绍,在这里就不说了。

  我们要说的是,其实最大熵估计也是一种MLE。

  首先,我们不知道样本的分布形式,但是它作为一个概率分布,一定会满足

  1)处处非负

  2)和为1

  于是,可以随意构造一个这样的函数:

技术分享

  其中

技术分享

  指数保证了非负,Z保证了归一化,因此f(x)可以构造成任意一个关于x的函数--茫茫大海中,总会有一个f(x)使得p(x)接近样本的真实分布。

现在我们来对这个分布做MLE,其log似然是:

 技术分享

  这个log似然对λ来说是凸的,因此使用简单的优化算法(比如梯度下降),就可以求得一个最优的λ,把λ代入p(x)的通项公式中,就可以得到分布的具体形式。特别的,当我们取f(x)=(x,x2)时,所得结果就是一个高斯分布。从另一方面来说,估计的结果严重依赖于选择怎样的f(x),这一点和MAP有些类似。

  -这个结果和最大熵估计完全等价。也就是说,最大熵估计等同于对以下形式的模型的MLE:

技术分享

  而这种形式的模型,被统一称作“对数线性模型”(log linear model)。它是logistic回归、最大熵模型、以及以条件随机场(CRF)为代表的各种概率无向图的的基础。

 
参考资料2:

最大似然估计:

最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。

最大似然估计中采样需满足一个很重要的假设,就是所有的采样都是独立同分布的。下面我们具体描述一下最大似然估计:

首先,假设技术分享为独立同分布的采样,θ为模型参数,f为我们所使用的模型,遵循我们上述的独立同分布假设。参数为θ的模型f产生上述采样可表示为

技术分享

回到上面的“模型已定,参数未知”的说法,此时,我们已知的为技术分享,未知为θ,故似然定义为:

  技术分享

  在实际应用中常用的是两边取对数,得到公式如下:

技术分享

  其中技术分享称为对数似然,而技术分享称为平均对数似然。而我们平时所称的最大似然为最大的对数平均似然,即:

  技术分享

举个别人博客中的例子,假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我 们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?很多人马上就有答案了:70%。而其后的理论支撑是什么呢?

我们假设罐中白球的比例是p,那么黑球的比例就是1-p。因为每抽一个球出来,在记录颜色之后,我们把抽出的球放回了罐中并摇匀,所以每次抽出来的球的颜 色服从同一独立分布。这里我们把一次抽出来球的颜色称为一次抽样。题目中在一百次抽样中,七十次是白球的概率是P(Data | M),这里Data是所有的数据,M是所给出的模型,表示每次抽出来的球是白色的概率为p。如果第一抽样的结果记为x1,第二抽样的结果记为x2... 那么Data = (x1,x2,…,x100)。这样,

    P(Data | M)

     = P(x1,x2,…,x100|M)

     = P(x1|M)P(x2|M)…P(x100|M)

     = p^70(1-p)^30.

那么p在取什么值的时候,P(Data |M)的值最大呢?将p^70(1-p)^30对p求导,并其等于零。

    70p^69(1-p)^30-p^70*30(1-p)^29=0。

    解方程可以得到p=0.7。

在边界点p=0,1,P(Data|M)=0。所以当p=0.7时,P(Data|M)的值最大。这和我们常识中按抽样中的比例来计算的结果是一样的。

假如我们有一组连续变量的采样值(x1,x2,…,xn),我们知道这组数据服从正态分布,标准差已知。请问这个正态分布的期望值为多少时,产生这个已有数据的概率最大?

    P(Data | M) = ?

根据公式

   技术分享

  可得:技术分享

 

  对μ求导可得技术分享 ,则最大似然估计的结果为μ=(x1+x2+…+xn)/n

 

由上可知最大似然估计的一般求解过程:

  (1) 写出似然函数;

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

  (3) 求导数 ;

  (4) 解似然方程

 

注意:最大似然估计只考虑某个模型能产生某个给定观察序列的概率。而未考虑该模型本身的概率。这点与贝叶斯估计区别。贝叶斯估计方法将在以后的博文中描述

本文参考

http://en.wikipedia.org/wiki/Maximum_likelihood

http://www.shamoxia.com/html/y2010/1520.html

 

最大后验概率:

最大后验估计是根据经验数据获得对难以观察的量的点估计。与最大似然估计类似,但是最大的不同时,最大后验估计的融入了要估计量的先验分布在其中。故最大后验估计可以看做规则化的最大似然估计。

首先,我们回顾上篇文章中的最大似然估计,假设x为独立同分布的采样,θ为模型参数,f为我们所使用的模型。那么最大似然估计可以表示为:

技术分享

现在,假设θ的先验分布为g。通过贝叶斯理论,对于θ的后验分布如下式所示:

技术分享

最后验分布的目标为:

技术分享

    注:最大后验估计可以看做贝叶斯估计的一种特定形式。

  举例来说:

  假设有五个袋子,各袋中都有无限量的饼干(樱桃口味或柠檬口味),已知五个袋子中两种口味的比例分别是

    樱桃 100%

    樱桃 75% + 柠檬 25%

    樱桃 50% + 柠檬 50%

    樱桃 25% + 柠檬 75%

    柠檬 100%

  如果只有如上所述条件,那问从同一个袋子中连续拿到2个柠檬饼干,那么这个袋子最有可能是上述五个的哪一个?

我们首先采用最大似然估计来解这个问题,写出似然函数。假设从袋子中能拿出柠檬饼干的概率为p(我们通过这个概率p来确定是从哪个袋子中拿出来的),则似然函数可以写作

  技术分享

  由于p的取值是一个离散值,即上面描述中的0,25%,50%,75%,1。我们只需要评估一下这五个值哪个值使得似然函数最大即可,得到为袋子5。这里便是最大似然估计的结果。

上述最大似然估计有一个问题,就是没有考虑到模型本身的概率分布,下面我们扩展这个饼干的问题。

假设拿到袋子1或5的机率都是0.1,拿到2或4的机率都是0.2,拿到3的机率是0.4,那同样上述问题的答案呢?这个时候就变MAP了。我们根据公式

  技术分享

写出我们的MAP函数。

  技术分享

根据题意的描述可知,p的取值分别为0,25%,50%,75%,1,g的取值分别为0.1,0.2,0.4,0.2,0.1.分别计算出MAP函数的结果为:0,0.0125,0.125,0.28125,0.1.由上可知,通过MAP估计可得结果是从第四个袋子中取得的最高。

  上述都是离散的变量,那么连续的变量呢?假设技术分享为独立同分布的技术分享,μ有一个先验的概率分布为技术分享。那么我们想根据技术分享来找到μ的最大后验概率。根据前面的描述,写出MAP函数为:

  技术分享

  此时我们在两边取对数可知。所求上式的最大值可以等同于求

  技术分享

  的最小值。求导可得所求的μ为

  技术分享

  以上便是对于连续变量的MAP求解的过程。

在MAP中我们应注意的是:

MAP与MLE最大区别是MAP中加入了模型参数本身的概率分布,或者说。MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。

 
 
 
 -----------------------------
 
所以,数字图像处理当中的灰度图, 横坐标是灰度值域(0-255) ,纵坐标是像素个数, 除以像素总数,就是该灰度取值的概率. anyway, 如果图片中有背景和目标区域, 灰度图应该是两个高斯分布的混合, 复杂图像,可以是多个高斯图像的混合,高斯数量应该是已知.  然后,我们就可以利用最大熵的方法求出所有高斯分量 GM component的参数.  两个高斯函数相当于两个概率密度函数,所以,原图像中每灰度值对应两个概率, 表示 属于前景的概率和属于背景的概率, 这就是graph cuts 中的核心部分.
 
具体:
 
 
 
 
 
 
 
 
 
 

高斯混合模型(GMM)

标签:

原文地址:http://www.cnblogs.com/Matrix420/p/5140820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!