当前位置:网站首页>粒子滤波学习记录
粒子滤波学习记录
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
边栏推荐
- C secret arts script Chapter 5 (paragraph) (Section 3)
- C 操作符
- Yiwei lithium energy plans to raise 9billion yuan: liujincheng and luojinhong jointly subscribe for 6billion yuan of layout Optical Valley
- Markdown edit
- Junit测试中常用的断言
- [wp][入门]攻防世界-game
- 启明云端分享| 通过Matter协议实例演示开关通过matter协议来做到对灯亮灭的控制
- Phpstudy indicates that the hosts file may not exist or be blocked from being opened. How to resolve the failure of synchronizing hosts
- JUnit test suite method sorting (method 2 is not easy to use)
- 交换数字,异或求单,操作符相关
猜你喜欢

jenkins相关

Can you believe it? It took me only two days to develop a management system

ADB command (2) use monkey to test

Installation and use of mat

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

基于TensorRT的深度学习模型部署实战教程!

C secret arts script Chapter 5 (paragraph) (Section 3)

Huawei equipment is configured with H virtual private network

C 数据类型

Mobileone: the mobile terminal only needs 1ms of high-performance backbone. You deserve it!
随机推荐
Ankai microelectronics rushes to the scientific innovation board: the annual revenue of 500million Xiaomi industry fund is the shareholder
C main函数
Appnium (II) installation and basic use of mitmproxy
Xshell (I) is missing mfc110u DLL file resolution
[wp][beginner level] attack and defense world game
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
【Calendar】1. For globalization 2 But only date can be formatted by SDF 3 Month to -1 4 Week from Sunday is the first day
jenkins相关
Producers (send syncask requests) and consumers (with xxxask monitoring and Implementation)
tc菜单分割
Ali suggests that all POJO attributes use wrapper classes, but have you noticed these pits?
三维重建系统 | L3双视角运动恢复结构(SFM双目SFM)
亿纬锂能拟募资90亿:刘金成骆锦红夫妇合计认购60亿 布局光谷
[writeup]buu SQL course1[entry level]
Module VIII
Raspberry pie get temperature and send pictures to email
模块八
JMeter (V) pressure test of Excel file upload interface
Serialization and deserialization mechanism in terms of games
安凯微电子冲刺科创板:年营收5亿 小米产业基金是股东