贝叶斯概率公式浅解

        最近在雷达多目标跟踪技术,其中的一大堆概率论方面的知识让我万分头疼,所以稍微梳理一下这些知识。
        先说一下蒙特卡洛法在书上看到这是动目标跟踪的一种性能检测算法,考虑这样一个问题:投3个骰子,扔出8点的概率是多少?很简单是不是,但是其实算出来还是有一点点麻烦(记住,“懒惰”对于一个程序员来时说一个优秀的品质,“懒惰”的人会详尽办法使问题变得容易处理)。那么,我们可不可以让计算机帮我们计算呢?计算机的最大特点是:计算快,但是不擅推理。所以我们用一个和他很相配的办法来计算这个概率:试。具体来说就是,让计算机去投骰子,投100万次,看看其中有多少次是8点,然后我们就知道实际概率了——这便是蒙特卡洛法,再简单不过的方法了,这个方法没有复杂的公式,没有麻烦的步骤,只是一个简单的思想:通过仿真来模拟现实,再用简单的统计方法得到概率。(折中解释转自matlab论坛)

        那么什么时候使用蒙特卡洛法呢?先考虑一个更一般的问题,什么情况下我们可以使用一个概率论的方法。比如说扔骰子,如果我只扔一次,这个结果当然不能表示实际概率,但是我扔1000次,10000次呢?我们是不是可以认为实验所得的概率就是实际概率呢?再引用一下上面链接里所写的:“一个有关概率论最最基础,也最有用的经验值:对于使用概率问题讨论的系统,其必然存在的误差将约为(根号下样本数量)分之一。这个经验公式是薛定谔提出的。”这只是一个经验公式,没有任何推理。我们必须大量的实验以得到精确的统计学结果。同样的,如果样本数减少,比如只有1000个样本,那么误差就是1/sqrt(1000) = 3%,也就是说如果1000次实验所到的概率为3%,那么实际的概率应该在0%-6%之间。显然,在折中概率下,我们只能对样本进行粗略的估计。所以,对于蒙特卡洛方法,只要我们可以对系统进行准确的建模,那么概率的准确度就却决于我们实验的次数了。但是,我们的时间时有限的,我们不可能在有限时间内做无限多次重复试验。回到问题,我们什么时候使用蒙特卡洛方法,那便是,某概率事件的产生方式已知,但是运用概率公式进行求解十分困难或者根本不可能(比如说高阶微积分)。但是,对于一个有基本编程技术的人来说,写一个方阵程序比实际推到这个公式所用的事件短很多,那么我们就应该使用蒙特卡洛法。

        一句话,蒙特卡洛法是复杂概率的简单求解,(就好像前面介绍的任何优化算法,都是复杂评价函数的快速求极值办法一样)。

        接下来,我们开始介绍贝叶斯方法。

        无论是基于概率的模式识别,还是基于概率的决策问题,我们都是要找到概率最高的情况,把这种情况作为结果。对于模式识别,我们要找出模式最有可能的类型,对于决策问题,我们找出可能产生最好结果的方案,而找出概率的依据,就是我们现有的已知信息。

        比如,对于一个识别问题,我们需要找出的就是最大概率p(是某一物体|观测到物体具有的特性X),这种方法被称为:最大后验假设,我们需要考虑的问题是,我们如何得到这一概率。显然,如果这个可以直接求得的话,任何识别问题就都解决了。既然不好直接得到,那么有没有办法来用其他概率表示这一概率呢?

        这个方法就是:贝叶斯公式。

        p(h|D) = p(D|h)*p(h)/p(D)

        这里,要再说明一下什么是似然函数,统计学中,似然函数是统计模型‘参数的函数’,L(θ|x)=P(X=x|θ)。关于θ的似然函数在数值上等于给定参数X后θ的概率。概率描述了已知参数时的随机变量的输出结果;似然则用来描述已知随机变量输出结果时,未知参数的可能取值。例如,对于“一枚正反对称的硬币上抛十次”这种事件,我们可以问硬币落地时十次都是正面向上的“概率”是多少;而对于“一枚硬币上抛十次,落地都是正面向上”这种事件,我们则可以问,这枚硬币正反面对称的“似然”程度是多少。

        贝叶斯公式提供了知道先验概率p(h)和似然度p(D|h)的情况下,来推导后验概率p(h|D)。利用贝叶斯公式,我们可以将最大后验假设重写为:

        MAP = max(P(h|D)) = max(P(D|h)*P(h)/P(D)),其中p(D)为归一化常数,可以去掉,得到标准最大后验假设公式:

        MAP = max( P(D|h) * P(h) )

        特殊的,对于很多情况下,我们没有理由说明任何一种情况的先验概率更大,(比如数字识别系统,那么被识别对象h是0-9的概率是相同的)。那么,P(h)也变成了一个常数,这时,我们将p(h)去掉,便得到了名为“最大似然假设”的方法(记为ML):
        ML = max( p(D|h) )

        那么,我们应该如何求解呢?

        p(D|h)的现实意义是,当我们已知对象状态为h,观测对象状态为D的概率,也就是说,我知道这是某一东西,那么这种东西现实出D这种现象的概率是多少呢?只要我们对这个物体有足够的认识,得到这个概率是很容易的,至少我们还可以用蒙特卡洛方法仿真一下是吧!另一方面,由于我们的MAP和ML是求最大值问题,一个更有效的方法是:只要我们设定的P'(D|h)满足与真实P(D|h)单调就可以了(并且,所有P(D|h)相加可以不为1)。这一特性使得我们可以用非常多、且非常简便的方法近似求得MAP或者ML。比如,对于一个事件h,我们知道应该有的标准观测值为d'。那么,我们完全可以简单的定义P(D|h)的值为1/(D-d')^2,即观测误差越大,则我观测到这个观测值的概率越低——这种做法在绝大多数情况下将非常简单而且效果出乎意料的好。

        以上是我对网上其他人内容的总结,和一些理解。

猜你喜欢

转载自blog.csdn.net/u010993820/article/details/65438796