天天看点

粒子滤波学习记录粒子滤波学习记录

粒子滤波学习记录

1.概况

粒子滤波是贝叶斯滤波中一种非参数实现。它的出发点是利用一系列从后验概率分布中采样的粒子去表示这个后验概率。优点在于它可以表示各种奇形怪状的分布,也可以应对非线性变换。

参数估计与非参数估计:比如下面的例子,假设有一个分布,那么参数滤波会先确定它是个高斯分布,然后求出它的概率密度函数(由均值、方差等参数给出);而粒子滤波不去纠结这个分布的具体函数是什么,而是利用从这个分布采样出的大量的样本,利用样本去描述这个分布。那么粒子滤波为什么可以这么做呢?

粒子滤波学习记录粒子滤波学习记录

蒙特卡洛采样:直观的说,假设我们能从一个目标概率分布采样到一系列的样本,那么就能利用这些样本去估计这个分布的某些性质。这里我联想到了大数定律,和抛硬币的实验频率与概率的概念。在抛硬币试验中,如果只抛几次,正反面出现的次数没有什么规律,但是如果抛的次数足够多,正反面出现的频率就越来越接近真实值。以上图为例,我从一维概率分布中采样,那么样本更可能出现在高斯均值附近,所以那里的样本比较密集;而越远离均值,样本越稀疏。如果我采集的每一个样本,给对应的位置加1,然后把频率图画出来,当样本足够大时,形状应该和分布形状相似。

那么反过来,虽然不知道分布的具体形状,但样本在某个区间越密集,则那个区间的概率越大,越容易出现peak。所以形象的讲,样本可以反过来推出分布的样子。

粒子滤波学习记录粒子滤波学习记录

2.粒子滤波算法

流程

在particle filter中,粒子集表示如下:

粒子滤波学习记录粒子滤波学习记录

这里,粒子是从后验分布中采样出来的,每个粒子都是t时刻状态的一种可能假设。所以粒子滤波思想就是用粒子集来近似后验分布。那么,某个假设被选中加入粒子集大军的可能性是与后验分布相关的:

粒子滤波学习记录粒子滤波学习记录

由于峰值(对应真值)附近的粒子更容易被采集到,意味着某个范围内粒子落入的越多,状态真值越容易落在这个区间。上面提到的是标准粒子滤波算法,当粒子趋向于无穷是的特性,对于有限的M,粒子会从稍稍不同的分布中采样。实践中如果粒子数目不少于100,差别可以忽略不计。

t时刻的后验分布由t时刻的粒子集描述,t-1时刻的后验分布由t-1时刻的粒子集描述。根据贝叶斯滤波,粒子滤波就是在递归的求粒子集:输入是上一时刻的粒子集,当前时刻的控制,观测,输出是当前的粒子集

粒子滤波学习记录粒子滤波学习记录
粒子滤波学习记录粒子滤波学习记录

我们来分析一下这个代码:

1.输入

2.定义两个 空粒子集

3.对t-1时刻的M个粒子逐一处理

4.对每个粒子施加控制(含噪声),在状态转移分布中采样得到一个新粒子。所有M个新粒子组成了先验集

5.对新粒子计算重要性因子(也就是所谓权重),即某个粒子当前状态下得到当前观测的可能性。后面会提到,它很重要。

6.将粒子和其重要性因子组合起来

7.循环结束

重采样部分

8~11.从粒子集中采样M次,以生成等大小的新粒子集。抽到粒子集中哪个粒子和它的权重有关,权重大的粒子更容易被抽到(甚至反复抽到)。这个过程中,粒子就向某些区域慢慢聚集起来。重采样结束,得到的新粒子集组成后验集。

12.返回粒子集

我们看到,粒子并不是直接从后验分布中采样的,其实算法的trick就是在重采样这里,即便不是直接从后验分布中采样,但经过重采样的变换后的粒子却服从了后验分布。

重采样进一步理解

假设f是未知分布,称其为目标分布,g为已知分布,称其为提议分布。现在的问题是,怎么通过提议分布g的粒子集得到服从目标分布f的粒子集?结合下图会很好的理解。首先,从g中采样出一批粒子,以蓝色的竖线表示:

粒子滤波学习记录粒子滤波学习记录

然后计算f和g之间的不匹配程度,即权重因子w

粒子滤波学习记录粒子滤波学习记录
粒子滤波学习记录粒子滤波学习记录
粒子滤波学习记录粒子滤波学习记录

再依据权重进行重采样,由于竖线高(对应着权重大)的粒子更容易被选中,所以重采样后的粒子都围在竖线高的位置,分布就变样了,改为服从目标分布f。

粒子滤波学习记录粒子滤波学习记录
粒子滤波学习记录粒子滤波学习记录

3.小结

为什么别人领悟的那么透彻…

祝大家周末愉快~

文章转自:https://blog.csdn.net/setella/article/details/82912604

继续阅读