本章概述

上一篇的高斯滤波虽然优雅,却只会画“一团云”,画不出“好几团云”:全局定位、绑架问题里置信度天然多峰,高斯假设就此失灵。本篇换一条路,不再假设分布形状,用格子或粒子把分布直接“撒”出来。你会看到直方图滤波的直观与维度灾难,以及粒子滤波“运动采样、似然赋权、重采样”的三步循环,为 MCL 与 FastSLAM 打下算法地基。

前置依赖:第二章贝叶斯滤波。后继联系:第 8 章 MCL、第 13 章 FastSLAM 都建立在粒子滤波之上。


核心知识点

4.1 非参数化的动机

高斯滤波的两大限制:

  1. 单峰假设:无法表达"机器人可能在 A 或 B"这类多模态置信度。

  2. 线性化/高斯噪声假设:强非线性系统近似误差大。

非参数滤波器的思路是用一组离散元素显式表示置信度,对分布形状不做先验约束:

  • 直方图滤波:把状态空间切成格子,每个格子存一个概率。

  • 粒子滤波:用带权重的随机样本(粒子)表示分布。

直觉:高斯滤波像"用椭圆画一团云",非参数滤波像"撒一把沙子来描出云的形状"——后者能描出任意外形,但样本越多越准。


4.2 离散贝叶斯滤波 / 直方图滤波

把连续状态空间离散化为有限个区域(bin),每个区域 \mathbf{x}_k上置信度用一个标量p_{k,t}表示,满足\sum_k p_{k,t}=1​。

贝叶斯滤波的两步直接写成离散形式:

性质
  • 简单、直观,可以表达多峰分布。

  • 维度灾难:状态维数 ​d 增加时,格子数按 ​N^d指数增长,三维以上状态空间几乎不可用。

  • 适合低维状态(如 1D 走廊定位)。


4.3 粒子滤波(Particle Filter)

格子法困在维度上,那把固定格子换成可以自由移动的样本呢?核心思想:用 ​M 个带权样本\{(x_t^{[m]}, w_t^{[m]})\}_{m=1}^M 近似置信度:\mathrm{bel}(x_t) \approx \sum_{m=1}^M w_t^{[m]}\, \delta(x_t - x_t^{[m]})​

样本越多,近似越精确;粒子可以聚集在高概率区域,从而自适应地分配表达力。


4.4 重要性采样与序贯重要性重采样(SIR)

直接从后验p(x_t|z_{1:t},u_{1:t})采样通常困难。粒子滤波借助提议分布 ​(proposal)来采样本,再通过权重修正:w_t^{[m]} \propto \frac{p(z_t \mid x_t^{[m]})\, p(x_t^{[m]} \mid x_{t-1}^{[m]}, u_t)}{q(x_t^{[m]} \mid \cdots)}

最常用的提议分布就是运动模型本身:q = p(x_t|x_{t-1},u_t)​,此时权重简化为w_t^{[m]} = p(z_t \mid x_t^{[m]})

直觉:粒子先按运动模型"撒出去",再用观测似然给每颗粒子打分——观测匹配好的粒子权重大,差的粒子权重小。

权重退化与重采样

权重经多步后会退化(少数粒子占绝大部分权重),浪费计算。重采样(resampling)从当前粒子集中按权重有放回地抽 ​M 个新粒子,使权重重新均匀。

常用的低方差重采样(low-variance sampling):用一个随机起点 + 等距步长抽取,比独立有放回采样方差更小。


4.5 标准粒子滤波算法(SIR 形式)

算法: Particle_filter(X_{t-1}, u_t, z_t, M)
─────────────────────────────────────────────
输入: X_{t-1}={x_{t-1}^{[m]}, w_{t-1}^{[m]}}, 控制 u_t, 观测 z_t
1. 对 m = 1..M:
     x_t^{[m]} = sample_motion_model(u_t, x_{t-1}^{[m]})   // 从运动模型采样
     w_t^{[m]} = measurement_prob(z_t, x_t^{[m]})          // 按观测似然赋权
2. X_t = X̄_t = {(x_t^{[m]}, w_t^{[m]})}
3. 重采样:
     构造累积权重,按权重抽 M 个粒子(低方差法),权重重置为 1/M
4. 返回 X_t
─────────────────────────────────────────────
性质
  • 收敛性:随 M\to\infty​,粒子分布收敛到真实后验。

  • 能表达多峰后验:粒子自然聚集到多个高概率模式。

  • 维度敏感但比直方图温和:粒子会自适应集中到高概率区,所需粒子数随维度增长比格子法缓慢。

  • 退化-重采样权衡:重采样太频繁会损失多样性(粒子 impoverishment),太稀疏又退化。


关键公式速查


章节小结

  • 非参数滤波放弃高斯假设,能表达任意(含多峰)后验。

  • 直方图滤波简单直观但受维度灾难限制,适合低维。

  • 粒子滤波用带权样本表示置信度,由"运动采样 → 似然赋权 → 重采样"三步循环;收敛性有理论保证,是后续 MCL、FastSLAM 的算法基石。

  • 两类滤波器本质上都是第二章贝叶斯滤波的具体实现,只是置信度的表示方式不同。

后续联系:第 8 章把粒子滤波直接套到定位问题上得到 MCL;第 13 章用粒子滤波同时估计轨迹与地图得到 FastSLAM。


思考与延伸

算法跑起来只是开始,落地时还有几个绕不开的坑:

  • 粒子匮乏(particle deprivation):重采样后高概率区粒子集中、多样性丢失,可能丢掉真实位姿。缓解方法:自适应重采样(只在有效样本数N_{\text{eff}}=1/\sum w^2低于阈值时重采样)、注入随机粒子。

  • 提议分布选择:用观测引导的提议分布(如基于最近观测的高斯)可大幅减少所需粒子数,是 AMCL、FastSLAM 2.0 的改进点。

  • 粒子数 vs 精度:粒子数与状态维数、置信度峰宽相关;工程上需通过实验确定。盲目增加粒子会拖慢实时性。

  • 与高斯滤波的混合:Rao-Blackwellized 粒子滤波(第 13 章 FastSLAM)对部分状态用粒子、其余用解析高斯,兼顾表达力与效率。


写在最后

核心观点一句话:非参数滤波用表达自由度换取计算代价。直方图滤波直观,却困在维度灾难里;粒子滤波让样本自适应聚集到高概率区,配合重采样拿到收敛保证,成为 MCL、FastSLAM 等经典系统的地基。从机器人定位到目标跟踪,这套“撒粒子”的思想始终活跃在工程一线。下一步把它套到定位问题上,就是经典的蒙特卡洛定位。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐