前面的文章我们了解了到对于一个线性动态系统(比如说卡尔曼滤波)中的filtering问题可以用预测和跟新两个步骤求解,因为它们的后验概率和条件概率都服从高斯分布,所以比较容易求出解析解,但是对于非线性非高斯的动态系统,我们是无法求出其解析解的,那么这个时候该怎么做呢?于是人们就想到了借助采样的思想。

蒙特卡洛采样:

贝叶斯推断问题主要在于求解P(z∣x)P(z|x)P(z∣x)这个后验概率,但是这个后验概率不好求,于是蒙特卡洛就提出用采样的办法来近似等替后验概率。但是大多数应用中,我们更关心后验的期望,而不是后验的本身。后验的期望:Ez∣x[f(z)]=∫f(z)P(z)dxE_{z|x}[f(z)]=\int f(z)P(z)dxEz∣x​[f(z)]=∫f(z)P(z)dx,然后我们对后验P(Z)进行采样(采N个样本,Z(i)Z^{(i)}Z(i)~P(z)P(z)P(z)),那么上面的期望就可以近似为:Ez∣x[f(z)]=∫f(z)P(z)dx≈1/N∑i=1nf(z(i))E_{z|x}[f(z)]=\int f(z)P(z)dx \approx 1/N\sum_{i=1}^{n}f(z^{(i)})Ez∣x​[f(z)]=∫f(z)P(z)dx≈1/Ni=1∑n​f(z(i))但是这里有个问题,就是说我们对后验P(z)P(z)P(z)进行采样是比较困难的,因为有些时候P(z)P(z)P(z)的维度很高等等,于是就有了下面的方法解决这个问题。

重要性采样

思想:引入一个已有的、相对比较简单的分布q(z)q(z)q(z),我们把q(z)q(z)q(z)叫做提议分布,然后我们就从q(z)q(z)q(z)中进行采样。于是我们就有如下公式

其中p(z(i))q(z(i))\frac{p(z^{(i)})}{q(z^{(i)})}q(z(i))p(z(i))​叫做权重,记为w(i)w^{(i)}w(i),表示第i个样本权重。如果我们使用重要性采样的方法去解决filtering问题,那么我们就必须要求出t=1时刻到t=T时刻的权重:wt(i)=p(zt(i)∣x1:t)q(zt(i)∣x1:t)w_t^{(i)}=\frac{p(z_t^{(i)}|x_{1:t})}{q(z_t^{(i)}|x_{1:t})}wt(i)​=q(zt(i)​∣x1:t​)p(zt(i)​∣x1:t​)​ w1(1),w1(2),...,w1(n),w2(1),w2(2),...,w2(n),...,wT(1),wT(2),...,wT(n)w^{(1)}_1,w^{(2)}_1,...,w^{(n)}_1,w^{(1)}_2,w^{(2)}_2,...,w^{(n)}_2,...,w^{(1)}_T,w^{(2)}_T,...,w^{(n)}_Tw1(1)​,w1(2)​,...,w1(n)​,w2(1)​,w2(2)​,...,w2(n)​,...,wT(1)​,wT(2)​,...,wT(n)​
这样计算是非常麻烦,非常困难的那么我们就想能不能找到一个w的递推公式。我们就有了下面的新的采样方法。

Sequential Importance Sampling(SIS)采样

那么SIS是如何和找到wt(i)和wt−1(i)w_t^{(i)}和w_{t-1}^{(i)}wt(i)​和wt−1(i)​之间的关系呢?
SIS对filtering问题,它不关心P(zt∣x1:t)P(z_t|x_{1:t})P(zt​∣x1:t​),它关心的是P(z1:t∣x1:t)P(z_{1:t}|x_{1:t})P(z1:t​∣x1:t​)(这样使计算方便)。那么对于wt(i)∝p(z1:t∣x1:t)q(z1:t∣x1:t)w_t^{(i)}\propto\frac{p(z_{1:t}|x_{1:t})}{q(z_{1:t}|x_{1:t})}wt(i)​∝q(z1:t​∣x1:t​)p(z1:t​∣x1:t​)​.递推公式如下:

SIS算法总结:用SIS求出了wt(i)w_t^{(i)}wt(i)​之后,就可以将其带入重要性采样的那个期望公式中就可以算出期望值。

但是SIS也有一些问题,就是SIS在执行一定次数之后,它会出现权值退化的问题(权值越来越小)。也就会导致出现大量的权重小的粒子样本,而其他几个少量的粒子的权重又很大。对于这样的问题,我们的解决办法有两种:1)重采样 2)选择一个合适的提议分布q(z)q(z)q(z)

重采样

比如说我现在有三个样本以及它们的权重 x(1)=0.1,x(2)=0.1,x(3)=0.8x^{(1)}=0.1,x^{(2)}=0.1,x^{(3)}=0.8x(1)=0.1,x(2)=0.1,x(3)=0.8,然后我们画出他们的累积分布函数:

如图所示,我们在纵轴上面划分了三个区域,那么重采样是怎么样的呢?当我们在0-1这个区间随机采样的时候,如果样本点落到那个区域那么就把它划到哪个样本里面,比如说随机采样采到了0.3,那么就它把化为x(3)x^{(3)}x(3)这个样本区间里边,重采样后每个样本的权值都是相同的,比如重采样了N个样本,那么每个样本的权值就是1/N.到这里(这里介绍的重采样是最简单的一种),其实我们用上面所讲的SIS和重采样解决filtering问题的时候就相当于是一个最基本的粒子滤波了(SIS+Resampling)。

SIR滤波

前面我们说对于权值退化的问题,我们有两种方法,一个就是重采样,另一个就是选择一个好的q(z)q(z)q(z),那么什么是好的q(z)q(z)q(z)呢?
一般我们选择q(zt​∣z1:t−1,x1:t)=p(zt∣zt−1)q(z_t​ ∣z_{1:t−1} ,x_{1:t})=p(z_t|z_{t-1})q(zt​​∣z1:t−1​,x1:t​)=p(zt​∣zt−1​),此时zt(i)=p(zt∣z(t−1)(i))z_t^{(i)}=p(z_t|z^{(i)}_{(t-1)})zt(i)​=p(zt​∣z(t−1)(i)​)
那么这个时候SIS算法中在计算权重的公式就会发生变化:

选择q(z)q(z)q(z)经过变换后的SIS就是SIR滤波。

学习笔记:粒子滤波的推导过程相关推荐

  1. 崔岩的笔记——粒子滤波原理及应用(3)粒子滤波原理及算法流程

    崔岩的笔记--粒子滤波原理及应用(1)概率论与数理统计基础_今天也是睡觉的一天的博客-CSDN博客 崔岩的笔记--粒子滤波原理及应用(2)蒙特卡洛法与贝叶斯滤波_今天也是睡觉的一天的博客-CSDN博客 ...

  2. 粒子滤波的推导到应用

    本文转自 http://blog.csdn.net/heyijia0327, Particle Filter Tutorial 粒子滤波:从推导到应用系列 一.贝叶斯滤波 假设有一个系统,我们知道它的 ...

  3. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

  4. live555 学习笔记-建立RTSP连接的过程(RTSP服务器端)

    live555 学习笔记-建立RTSP连接的过程(RTSP服务器端) 监听 创建rtsp server,rtspserver的构造函数中,创建监听socket,添加到调度管理器BasicTaskSch ...

  5. 学习OpenCV——粒子滤波(网上两篇文章总结)

    粒子滤波的理论实在是太美妙了,用一组不同权重的随机状态来逼近复杂的概率密度函数.其再非线性.非高斯系统中具有优良的特性.opencv给出了一个实现,但是没有给出范例,学习过程中发现网络上也找不到.le ...

  6. 数字信号处理学习笔记[3] 滤波与褶积,Z变换

    文章目录 3 滤波与褶积,Z变换 3.1 连续信号的滤波和褶积 3.2 离散信号的滤波和褶积 3.3 信号的能谱与能量等式,功率谱与平均功率等式 3.4 离散信号与频谱的简化表示 3.5 离散信号的Z ...

  7. Python源码学习笔记:Python程序执行过程与字节码

    Python程序执行过程与字节码 注:本篇是根据教程学习记录的笔记,部分内容与教程是相同的,因为转载需要填链接,但是没有,所以填的原创,如果侵权会直接删除. 问题: 我们每天都要编写一些Python程 ...

  8. Java基础-学习笔记(五)——面向过程和面向对象的区别

    学习面向对象的语言,要弄清楚面向对象,首先要从理解面向过程开始. 回想起之前在学习C语言时,每次拿到一个题目,首先想到的是,先分析出解决问题所需要的步骤,每一个功能点,用一个函数来表示,使用的时候一个 ...

  9. UE4学习笔记——粒子发射器

    粒子发射器与整体向量场 Step1 在blender中生成向量场 具体实现过程可参考此文: https://blog.csdn.net/m0_48782520/article/details/1074 ...

最新文章

  1. 参数化之利用CSV Data Set Config从文件读取参数并关联变量
  2. 命令行避免输入错误文件名_GitHub 60000+ Star 登顶,命令行的艺术
  3. Caffe 训练时loss等于87.3365且保持不变的原因及解决方法
  4. golang安装:GOPATH环境变量无需配置说明(>1.13)
  5. 定间隔字符翻转(Reverse String II)
  6. js笔记(一)js基础、程序结构、函数
  7. shell 脚本 自动化
  8. 如何突破思维局限去思考世界,去读读以下三个理论
  9. 超好用的私人珍藏网站,送给你了!
  10. 【Unity】 Unity主题皮肤
  11. 论文中参考文献的引用步骤
  12. 赚钱项目:1万粉丝的公众号,年赚15万!
  13. 本园的下学期工作计划
  14. 抖音一个好的标题让你轻松上热门,该怎么写好抖音标题。
  15. 智能硬件的一些框架性内容
  16. python中numpy模块下的np.clip()的用法
  17. Linux下清理日志及自动清理
  18. 稀疏数组真心话大冒险
  19. MySQLi (一)
  20. cas服务器中如何存储用户信息,CAS3.5.2 Server登录后返回用户信息详细解决方案

热门文章

  1. Unity3D的uniSWF插件动态加载SWF UI资源
  2. 嵌入式软件架构设计----中控机NIOS软件系统架构设计说明书
  3. HDU 4343 贪心
  4. PMP考前冲刺2.27 | 2023新征程,一举拿证
  5. quertus2逻辑或、与、或与、异或门电路verilog代码及ModelSim中testbench文件更换内容
  6. KeyError: ‘layer1.1.bn1.bias‘
  7. My X264 settings
  8. Ubuntu和Windows10双系统下Ubuntu连不上网的解决
  9. 《用计算机写日记》》教学课件,怎样写日记教学课件.ppt
  10. python解析url参数_Python3 url解码与参数解析