当前位置:网站首页>粒子滤波学习记录
粒子滤波学习记录
2022-06-12 14:51:00 【春至冬去】
粒子滤波学习记录
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
边栏推荐
- Soft test (VI) Chrome browser installation selenium IDE
- Tensorrt based in-depth learning model deployment practice tutorial!
- [datetmeformatter] realize the conversion between localdatetime and text
- Jetpack architecture component learning (3) -- activity results API usage
- Phpstudy indicates that the hosts file may not exist or be blocked from being opened. How to resolve the failure of synchronizing hosts
- jenkins相关
- Jenkins' RPC test project
- Alibaba, Tencent et pingduo sont à la recherche d'une nouvelle logique pour l'Internet industriel
- Machine learning learning notes
- Installation and use of mat
猜你喜欢
![[wechat applet] 4 Introduction to wechat developer tools](/img/9d/0d6c5cc675fb70dde98b25649bd8d8.jpg)
[wechat applet] 4 Introduction to wechat developer tools

C 字符串

SQL cross database injection

JS (II) syntaxerror: cannot use import statement outside a module

左对齐,右对齐,随机数,goto,比较输出bool

junit测试套件方法整理(方法二不太好用)

NETCORE combined with cap event bus to realize distributed transaction -- Introduction (1)

Detailed explanation of factory pattern (simple factory pattern, factory method pattern, abstract factory pattern) Scala code demonstration

Tensorrt based in-depth learning model deployment practice tutorial!

交换数字,异或求单,操作符相关
随机推荐
[wechat applet] 5 Applet structure directory
浏览器指纹解读
Autofac Beginner (1)
MobileOne: 移动端仅需1ms的高性能骨干,你值得拥有!
Mysql之索引和视图
New features of ES6
Tu oses le croire? Il m'a fallu deux jours pour développer un système de gestion.
左对齐,右对齐,随机数,goto,比较输出bool
Yiwei lithium energy plans to raise 9billion yuan: liujincheng and luojinhong jointly subscribe for 6billion yuan of layout Optical Valley
程序构造和解释之第一章习题
[spark][core] interview questions talk about push based shuffle
我愿称之为史上最全的深度学习面经总结(附答案详解)
ADB control installation simulator
How to add WWW to the domain name
Selenium advanced
阿里建议所有 POJO 类属性使用包装类,但这些坑你有注意到吗?
ADSL
Autofac浅学(2)
模块八
Simple code implementation of addition, subtraction, multiplication and division calculator