从贝叶斯到粒子滤波——Round 1
粒子滤波确实是一个挺复杂的东西,从接触粒子滤波到现在半个多月,博主哦勒哇看了N多篇文章,查略了嗨多资料,很多内容都是看了又看,细细斟酌。今日,便在这里验证一下自己的修炼成果,请各位英雄好汉多多指教。
讲粒子滤波之前,还得先讲一个叫”贝叶斯滤波”的东西,因为粒子滤波是建立在贝叶斯滤波的基础上的哩。说太多抽象的东西也很难懂,以目标跟踪为例,直接来看这东西是怎么回事吧:
1. 首先咋们建立一个动态系统,用来描述跟踪目标在连续时间序列上的变换情况。简单一点,我们就使用目标的位置(i,j)作为这个动态系统的状态吧。
那怎么描述呢?
我们使用状态xt来描述系统在时刻t的状态,在这个例子中,xt=(it,jt);使用yt表示在时刻t目标的观测值。这里请注意,xt是我们建立的模型中,目标的位置,而目标的实际位置不一定与之相等。举个简单的例子就是:一部小车做匀加速直线运动,xt是我们用公式计算出来的小车的位置,yt是我们用GPS定位到的位置。
由于误差的存在,光靠理论公式计算得出来的结果肯定是有偏差的。但是,GPS又卡又慢,要靠它来完成我们的目标跟踪貌似也不是很靠谱。那我们做一下折衷吧,先用理论计算得到目标的位置,然后用观测值进行修正,使得我们的模型更加完美。
额!完美吗?不害臊!你理论得出来的不准确,然后还要靠又卡又慢的GPS来修正,还好意思跟我说完美!你怎么不上天,跟太阳肩并肩。再说了,你修正后的位置还不一定是准确了,要我说目标也可能就在计算到的位置,也可能在它东边、西边、南边、北边、东南边......
咔咔咔!行行行,我错了还不行么。你这人真是急躁,喝口茶消消气,再听我细细说来。前面那位大爷说的在理,咋们得听,嗯,我猜他应该是太阳的后裔,哈哈哈!跑题了。
是啊!目标的位置可能在好多个位置,有各种可能性,毕竟我们并没有得到一个准确的值。咦!那我们可以用概率来描述啊!这种不确定性不就是概率论里面说的那些东西吗?天呐,我好激动,修炼多年的概率论终于派上用场了。而且你看哦,用观测值yt对xt进行修正,这不就是说先得到先验概率p(xt),然后获取到更加丰富的信息yt后,对先验概率进行修正,得到后验概率p(xt|yt)吗?哇哇哇!贝叶斯,贝叶斯,这就是贝叶斯啊,条件概率啊!!!
2. 贝叶斯滤波
嗯嗯嗯,对对对,楼上正解。从贝叶斯理论的观点来看,状态估计问题(目标跟踪,信号滤波)就是根据之前一系列已有数据y1:t(后验只是)递推计算出当前状态xt的可信度。这个可信度就是概率公式p(xt|y1:t)。贝叶斯滤波通过预测和更新这两个步骤来递推计算xt的可信度。
预测过程是利用系统模型预测状态xt的先验概率密度,也就是通过已有的先验知识对未来系统的状态进行猜测,
更新过程是利用新的观测值yt对先验概率密度进行修正,得到后验概率密度。
3. 公式及推导
贝叶斯滤波的公式是酱紫的:
预测:

更新:

在推导之前,一些预备知识还是要的。贝叶斯公式(就是条件概率公式啦),全概率公式,样本空间的概念和完备事件组的概念。这些知识对推导过程的理解尤为重要,建议各位先了解一下这些概念。
还要提一下,动态系统中的状态转移问题,一般都先假设其服从一阶马尔科夫(Markov)模型,即
①当前时刻的状态xt只与上一时刻的状态xt-1有关;
②t时刻的观测值yt只与当前的状态xt有关。
下面进行贝叶斯滤波公式的推导:
预测:

哈哈!博主比较懒,直接上图了,字比较丑,见谅见谅。第一行是一个全概率公式的应用,然后第二第三第四行都是条件概率啦!最后一行是根据假设①来着。
这里你可能有一个问题,既然都说前时刻的状态xt只与上一时刻的状态xt-1有关,跟yt没半毛钱关系,即p(xt|xt-1)。那你弄一个p(xt|y1:t-1)是几个意思?
莫说你要问了,我当初可是也纠结了好久。说到底,这两个概率公式含义不一样。p(xt|xt-1)是纯粹根据模型进行预测(计算),啪,xt-1进去,公式一算,xt出来了,简单明了。p(xt|y1:t-1)这一个呢,是说既然我们已经拿到了一组数据,这些数据跟系统状态也是有关系的,那我们就可以根据这些数据来猜呀,只是猜测而已呐。(楼主yy:那... 你猜我猜不猜?)
更新:

第三行是根据假设②,其他的全都是条件概率公式的应用。
这里你应该跟我一样,也还有一个问题,就是既然yt只与xt有关,那分母的p(yt|y1:t)为什么不直接写成p(yt)啊!!!
关于这个问题,其实,我也不知道。要不你们也研究一下咯,然后拜托告诉我一声。
However,当贝叶斯滤波碰到了粒子滤波,这些推导完全不重要。哈哈哈!就是说我们推了半天没用,好想哭。。。
粒子滤波使用N个加权的样本(即粒子)来近似表示后验概率密度p(xt|y1:t)。因为有些问题系统状态变换很难建模嘛,公式都没有,xt没法产生啊!所以就撒样本呗,用样本的分布来近似状态xt的真实分布。
预知后事如何,请听下回分解。
从贝叶斯到粒子滤波——Round 1的更多相关文章
- 从贝叶斯到粒子滤波——Round 2
上一篇博文已经讲了贝叶斯滤波的原理以及公式的推导:http://www.cnblogs.com/JunhaoWu/p/bayes_filter.html 本篇文章将从贝叶斯滤波引入到粒子滤波,讲诉粒子 ...
- (一):细说贝叶斯滤波:Bayes filters
认知计算,还要从贝叶斯滤波的基本思想讲起,本文主要是对<Probabilistic Robotics>中贝叶斯滤波器部分的详细讲解. 这一部分,我们先回顾贝叶斯公式的数学基础,然后再来介绍 ...
- python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb ...
- PGM学习之五 贝叶斯网络
本文的主题是“贝叶斯网络”(Bayesian Network) 贝叶斯网络是一个典型的图模型,它对感兴趣变量(variables of interest)及变量之间的关系(relationships) ...
- Machine Learning in Action(3) 朴素贝叶斯算法
贝叶斯决策一直很有争议,今年是贝叶斯250周年,历经沉浮,今天它的应用又开始逐渐活跃,有兴趣的可以看看斯坦福Brad Efron大师对其的反思,两篇文章:“Bayes'Theorem in the 2 ...
- 朴素贝叶斯(Naive Bayesian)
简介 Naive Bayesian算法 也叫朴素贝叶斯算法(或者称为傻瓜式贝叶斯分类) 朴素(傻瓜):特征条件独立假设 贝叶斯:基于贝叶斯定理 这个算法确实十分朴素(傻瓜),属于监督学习,它是一个常用 ...
- SLAM的数学基础(4):先验概率、后验概率、贝叶斯准则
假设有事件A和事件B,可以同时发生但不是完全同时发生,如以下韦恩图所示: 其中,A∩B表示A和B的并集,即A和B同时发生的概率. 如此,我们很容易得出,在事件B发生的情况下,事件A发生的概率为: 这个 ...
- 机器学习实战笔记(Python实现)-03-朴素贝叶斯
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- 朴素贝叶斯算法下的情感分析——C#编程实现
这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...
随机推荐
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- 【.net 深呼吸】细说CodeDom(3):命名空间
在上一篇文章中,老周介绍了表达式和语句,尽管老周没有把所有的内容都讲一遍,但相信大伙至少已经掌握基本用法.在本文中,咱们继续探讨 CodeDom 方面的奥秘,这一次咱们聊聊命名空间. 在开始之前,老周 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- SSH实战 · 唯唯乐购项目(中)
用户模块 三:一级分类的查询 创建一级分类表并导入基本数据 CREATE TABLE `category` ( `cid` int(11) NOT NULL AUTO_INCREMENT, ` ...
- Dapper where Id in的解决方案
简单记一下,一会出去有点事情~ 我们一般写sql都是==>update NoteInfo set NDataStatus=@NDataStatus where NId in (@NIds) Da ...
- 谈一谈NOSQL的应用,Redis/Mongo
1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...
- canvas与html5实现视频截图功能
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- Spring cache简单使用guava cache
Spring cache简单使用 前言 spring有一套和各种缓存的集成方式.类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- java统计字符串单词的个数
在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...