粒子滤波
[编辑本段]
粒子滤波(PF:Particle Filter)
粒 子滤 波(PF: Particle Filter)的 思想 基 于蒙 特 卡洛 方 法(Monte Carlo method
s),它是利用粒子集来表示概率,可以用在任何形式的状态空间模型上。其核心思想
是通过从后验概率中抽取的随机状态粒子来表达其分布,是一种顺序重要性采样法(S
equential
Importance Sampling)。简单来说,粒子滤波法是指通过寻找一组在状态
空间传播的随机样本对概率密度函数 进行近似,以样本均值代替积分运算,从而获
得状态最小方差分布的过程。这里的样本即指粒子,当样本数量 N→∝时可以逼近任何
形式的概率密度分布。
尽管算法中的概率分布只是真实分布的一种近似,但由于非参数化的特点,它摆
脱了解决非线性滤波问题时随机量必须满足高斯分布的制约,能表达比高斯模型更广
泛的分布,也对变量参数的非线性特性有更强的建模能力。因此,粒子滤波能够比较
精确地表达基于观测量和控制量的后验概率分布,可以用于解决 SLAM 问题。
粒子滤波的应用
粒子滤波技术在非线性、非高斯系统表现出来的优越性,决定了它的应用范围非
常广泛。另外,粒子滤波器的多模态处理能力,也是它应用广泛有原因之一。国际上,
粒子滤波已被应用于各个领域。在经济学领域,它被应用在经济数据预测;在军事领
域已经被应用于雷达跟踪空中飞行物,空对空、空对地的被动式跟踪;在交通管制领
域它被应用在对车或人视频监控;它还用于机器人的全局定位。
粒子滤波的缺点
虽然粒子滤波算法可以作为解决 SLAM 问题的有效手段,但是该算法仍然存在着
一些问题。其中最主要的问题是需要用大量的样本数量才能很好地近似系统的后验概
率密度。机器人面临的环境越复杂,描述后验概率分布所需要的样本数量就越多,算
法的复杂度就越高。因此,能够有效地减少样本数量的自适应采样策略是该算法的重
点。另外,重采样阶段会造成样本有效性和多样性的损失,导致样本贫化现象。如何
保持粒子的有效性和多样性,克服样本贫化,也是该算法研究重点。
粒子滤波的发展
1.MCMC 改进策略
马尔可夫链蒙特卡洛(MCMC)方法通过构造 Markov 链,产生来自目标分布的样
本,并且具有很好的收敛性。在 SIS 的每次迭代中,结合 MCMC 使粒子能够移动到
不同地方,从而可以避免退化现象,而且 Markov 链能将粒子推向更接近状态概率密
度函数(probability density function,(PDF))的地方,使样本分布更合理。基于 MCM
C 改进策略的方法有许多,常用的有 Gibbs 采样器和 MetropolisHasting 方法。
2.Unscented 粒子滤波器(UPF)
Unscented Kalman 滤波器(UKF)是 Julier 等人提出的。EKF(Extended Kalman
Filter)使用一阶 Taylor 展开式逼近非线性项,用高斯分布近似状态分布。UKF 类似
于 EKF,用高斯分布逼近状态分布,但不需要线性化只使用少数几个称为 Sigma 点
的样本。这些点通过非线性模型后,所得均值和方差能够精确到非线性项 Taylor 展开
式的二阶项,从而对非线性滤波精度更高。Merwe 等人提出使用 UKF 产生 PF 的重
要性分布,称为 Unscented 粒子滤波器(UPF),由 UKF 产生的重要性分布与真实状
态 PDF 的支集重叠部分更大,估计精度更高。
3.Rao-Blackwellised 粒子滤波器(RBPF)
在高维状态空间中采样时,PF 的效率很低。对某些状态空间模型,状态向量的一
部分在其余部分的条件下的后验分布可以用解析方法求得,例如某些状态是条件线性
高斯模型, 可用 Kalman 滤波器得到 条件后验分布,对另 外部分状态用 PF,从而得
到一种混合滤波器,降低了 PF 采样空间的维数,RBPF 样本的重要性权的方差远远
低于 SIR 方法的权的方差,为使用粒子滤波器解决 SLAM 问题提供了理论基础。而
Montemerlo 等人在 2002 年首次将 Rao-Blackwellised 粒子滤波器应用到机器人 SLA
M 中,并取 名为 FastSLAM 算法。该 算法将 SLAM 问题分解 成机器人定位问题 和基
于位姿估计的环境特征位置估计问题,用粒子滤波算法做整个路径的位姿估计,用 E
KF 估计环 境特征的 位置,每一 个 EKF 对应一 个环境特 征。该方法 融合 EKF 和概率
方法的优点,既降低了计算的复杂度,又具有较好的鲁棒性。
最近几年,粒子方法又出现了一些新的发展,一些领域用传统的分析方法解决不
了的问题,现在可以借助基于粒子仿真的方法来解决。在动态系统的模型选择、故障
检测、诊断方面,出现了基于粒子的假设检验、粒子多模型、粒子似然度比检测等方
法。在参数估计方面,通常把静止的参数作为扩展的状态向量的一部分,但是由于参
数是静态的,粒子会很快退化成一个样本,为避免退化,常用的方法有给静态参数人
为增加动态噪声以及 Kernel 平滑方法,而 Doucet 等提出的点估计方法避免对参数直
接采样,在粒子框架下使用最大似然估计(ML)以及期望值最大(EM)算法直接估计未知
参数。
之前一直在做移动机器人定位算法。查来查去,发觉粒子滤波算法(又叫 MC 算法)应该算
是最流行的了。因此开始学习使用之。入手的是本英文书叫“probalistic robotic” 很不错,
我所见到的讲得最好的一本书。花了大量时间去研读。在这里我想谈谈我对粒子滤波的一点
认识。因为在这一领域算是个新手。希望有前辈或者达人来指正我的想法。也希望我的这篇
文章对新手有理解他有所帮助(当初我就很是苦于它难于理解)在这里我不想谈粒子滤波的
理论基础和推到,这点大家可以去自己翻书。我只谈下我的体会。
粒子滤波算法。他源于 Montecarlo 的思想,即以某事件出现的频率来指代该事件的概率。
因此在滤波过程中,需要用到概率如 P(x)的地方,一概对变量 x 采样,以大量采样的分布
近似来表示 P(x)。因此,采用此一思想,在滤波过程中粒子滤波可以处理任意形式的概率,
而不像 Kalman 滤波只能处理高斯分布的概率问题。他的一大优势也在于此。
再来看对任意如下的状态方程
x(t)=f(x(t-1),u(t),w(t))
y(t)=h(x(t),e(t))
其中的 x(t)为 t 时刻状态,u(t)为控制量,w(t) 和 e(t)分别为模型噪声和,观测噪声。
前一个当然是状态转移方程,后一个是观测方程。那么对于这么一个问题粒子滤波怎么来从
观测 y(t),和 x(t-1),u(t) 滤出真实状态 x(t)呢?
看看滤波的预估阶段:粒子滤波首先根据 x(t-1) 和他的概率分布生成大量的采样,这些
采样就称之为粒子。那么这些采样在状态空间中的分布实际上就是 x(t-1) 的概率分布了。
好,接下来依据状态转移方程加上控制量可以对每一粒子得到一个预测粒子。所有的预测粒
子就代表了涉及哪些参数化的东西)。
进入校正阶段来:有了预测粒子,当然不是所有的预测粒子都能得到我们的时间观测值 y
对不,越是接近真实状态的粒子,当然获得越有可能获得观测值 y 对吧。于是我们对所有
的粒子得有个评价了,这个评价就是一个条件概率 P(y|xi),直白的说,这个条件概率代表了
假设真实状态 x(t)取第 i 个粒子 xi 时获得观测 y 的概率。令这个条件概率为第 i 个粒子的
权重。如此这般下来,对所有粒子都进行这么一个评价,那么越有可能获得观测 y 的粒子,
当然获得的权重越高。好了预测信息融合在粒子的分布中,观测信息又融合在了每一粒子的
权重中。
哈哈最后采用重采样算法(不知道什么是重采样算法,那就只好翻书去吧),去除低权值
的粒子,复制高权值的粒子。所得到的当然就是我们说需要的真实状态 x(t)了,而这些重
采样后的粒子,就代表了真实状态的概率分布了。
下一轮滤波,再将重采样过后的粒子集输入到状态转移方程中,直接就能够获得预测粒子
了。。
初始状态的问题: 咱们一开始对 x(0)一无所知对吧,那咱们就认为 x(0)在全状态空间
内平均分布呗。于是初始的采样就平均分布在整个状态空间中。然后将所有采样输入状态转
移方程,得到预测粒子。嘿嘿再评价下所有预测粒子的权重,当然我们在整个状态空间中只
有部分粒子能够获的高权值咯。马上重采样算法来了,去除低权值的,将下一轮滤波的考虑
重点立马缩小到了高权值粒子附近。哈哈就这么简单。也很实用。
明白了没?没看糊涂吧哈哈。
如果大家看得还不过瘾,后面有根据精彩的论述。