理解与推导贝叶斯滤波(Bayes Filter)算法

“很多时候一些算法看起来极其复杂,极其难懂。不是因为我们愚不可及。而是因为我们看到的已经是别人省略过很多步骤和省略很多脑海中思考过的思路最后呈现出的公式和文字。而好的博客就是应该尽量还原这些思考过程以及省略掉的步骤。”——@司南牧
原文链接:https://blog.csdn.net/varyshare/article/details/97642209

像卡尔曼滤波(Kalman filters)、粒子滤波(Particle filters),隐含马尔科夫模型(Hidden Markov models),动态贝叶斯网络(Dynamic Bayesian networks)等等算法。这些算法是贝叶斯滤波算法的具体实现.因此学好了贝叶斯滤波再学其他算法那就容易很多了。注意:贝叶斯滤波只提供了一种思想,卡尔曼滤波就是对这个思想的其中一种实现。

破解概念上的束缚之贝叶斯滤波算法到底有什么用?

学东西最烦的是看了半个月的算法细节,结果发现自己还是不知道这算法有什么用,怎么实现。今天博主就开篇破解贝叶斯中的概念上的障碍。让大家快速学习贝叶斯滤波算法,并且能够用到自己的项目中。
贝叶斯滤波算法它做的工作就是根据已有的信息来计算概率。比如我想根据一些信息识别某个人性别是不是女,那贝叶斯滤波算法要做的是就是计算这个人是女的概率P(女)。来了新的信息就计算新的概率。。
如果你不理解这句话看接下来这个例子你就懂了。假如现在贝叶斯滤波算法是要根据你已输入的信息分析某个人是男是女。贝叶斯滤波算法最终的输出是计算出根据现有信息判断这个人是男性的概率是多少,女性的概率是多少。然后你的算法就选择概率更大的那种情况输出结果。如果有新的信息进来(比如“那个人有长头发”),贝叶斯算法要重新计算这个人是男性的概率是多少,女性的概率是多少。。

那它具体怎么做的呢?
当你什么信息都不提供给贝叶斯滤波算法的时候,然后你问贝叶斯算法那个人的性别是女的概率是多少。贝叶斯滤波算法会告诉你P(女)=0.5。注意:P(女)=0.5这个表示的含义是“根据已有信息,那个人是女性概率是0.5”. 现在P(女)=P(男)=0.5我们是没法判断性别。这个数值“0.5”是我们设置的一个初始值,一般是需要根据你的统计经验设置的(如果你是想用贝叶斯滤波算法进行垃圾邮件识别,那么它是垃圾邮件这个概率肯定不会有0.5这么大。毕竟垃圾邮件还是少数。你需要统计收到的邮件中垃圾邮件的占比,然后作为算法的初始值。好让算法在没有任何提示信息的情况下能输出当前邮件是垃圾邮件的概率)。
然后,回到性别识别那个问题。

当你告诉算法这个人有长头发,你再问算法这个人现在性别是女的概率是多少。贝叶斯滤波算法会根据概率论中的条件概率知识算出“在知道某个人有长头发的条件下,这个人性别是女的概率P(女)=0.87”。至于它到底怎么算的文章后面会讲。现在你只需要对整个算法有个直观理解即可。为什么它能知道根据“有长头发”这个信息来更新概率呢?这是因为算法需要我们告诉它“长头发中女性占比是多少(这个叫做先验知识)”,P(女)=0.87这个也是需要我们经过统计才能得到的数据。

当你再告诉算法这个人使用口红,然后你再问算法这个人现在性别是女的概率是多少?贝叶斯滤波算法会根据概率论中条件概率知识,以及需要你告诉它“使用口红的人中女性占比是多少”,来更新当前这个人是女性的概率P(女)=0.91。

以上就是贝叶斯算法做的工作。现在我想聪明的你已经对贝叶斯滤波算法已经有了一个直观的理解。我总结一下贝叶斯滤波算法做的工作:它做的工作就是根据不断接收到的新信息和我提供的一些已经知道的统计值,来不断更新概率。更新概率值的方法是根据概率论中的条件概率计算公式来更新的。贝叶斯滤波算法计算的结果是一个概率值有什么用呢?

比如我要它根据我提供的一些信息识别某个人是不是女,那它就得计算这个人是女的概率P(女).如果我想让它根据雷达测距判断机器人离障碍物距离,那它就得计算出机器人离障碍物各种距离取值的概率(为何要计算概率?因为雷达测量会存在误差),比如计算机器人离障碍物10cm远的概率是0.87,离障碍物11cm远的概率是0.21,离障碍物9cm远的概率是0.01。那么我就认为机器人离障碍物距离是10cm。

贝叶斯滤波算法怎么随着收到的新信息来更新概率的?

还是以前面的根据已有信息识别性别例子举例。我们要想识别一个人是否是女性,现在要贝叶斯滤波算法做的就是需要它计算出根据当前信息判断当前这个人是女的概率P(女)。
我们已经知道的先验知识是(这些数据是我们统计到的,你项目中的这些先验知识有些是需要统计得到,有些是需要建模比如假设它是正态分布等等):
在没有任何信息的情况下初始值:P(女)=0.5
留有长头发的人中女性占比:0.8。
使用口红的人中女性占比:0.9

那么在没有任何额外信息的情况下,贝叶斯滤波认为当前这个人是女性的概率P(女)=0.5
当新知道当前这个人留有长头发这个信息时,怎么更新概率值呢?
此时当前这个人是女性的概率可以这么表示P(女|长头发), 这个表达式的意思是在知道现在这个人的长头发的条件下女性的概率。

事实上这个值就是我们在先验知识中已知的“留有长头发的人中女性占比”,即0.8。你会说万一我不知道留有长头发中的人之中女性占比呢?这意味着我们需要用概率论中的条件概率知识求解P(女|长头发)。(如果你对条件概率怎么求还不清楚可以参考前面的文章复习概率论知识)。
根据概率论知识我们知道
在这里插入图片描述
所以我们有两种方式可以求P(女|长头发)。
在这里插入图片描述
你已知什么先验知识那就用什么方式求解,贝叶斯滤波通常是用
在这里插入图片描述
这种方式求解。这是因为这种方式在在实际应用场景中这个公式中需要的先验知识更容易获得。你在实际实现贝叶斯滤波算法时候只需要考虑你能够知道公式中的哪些先验知识概率值,然后再确定用哪种方式求P(女∣长头发)。
在这里插入图片描述
在这里插入图片描述

机器人状态估计中的贝叶斯滤波

如果你是为了机器人状态估计而学习贝叶斯滤波的那欢迎继续看下去。如果你只是想了解贝叶斯滤波怎么做的那你已经学会了,你可以完成点赞这个仪式后离开当前页面。为什么我还继续讲讲机器人状态估计下的贝叶斯滤波?因为机器人状态估计中的贝叶斯滤波里面省略了非常多的假设和细节。我想尝试着将这些细节和省略掉的假设还原。

机器人状态估计到底是什么?

在这里插入图片描述
在这里插入图片描述

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值