🙋
我听说过"粒子滤波器"这个名称,但不知道它是做什么的。是物理粒子模拟吗?
🎓
不是物理粒子,而是用于"估计"的粒子。比如机器人想知道自己的位置,但传感器数据充满噪声,无法直接知道真实位置。所以我们撒下很多"可能在这里"的候选点,每个就是一个粒子。粒子群的整体分布表示"位置的概率分布",这就是粒子滤波器的思想。
🙋
仅有候选点似乎无法决定哪个正确。怎样才能逼近真实位置呢?
🎓
答案是用\"权重\"。每次有新观测时,给每个粒子分配"能多好地解释这个观测"的得分。与观测相符的粒子权重大,不符的权重小。权重按高斯似然计算:w_i ∝ exp(−(y−x_i)²/(2σ_r²))。加权平均就是滤波器的估计值。在上面的画布上,你会看到估计曲线比观测的波动光滑得多,紧密追踪真值。
🙋
仅赋权似乎很简单。但参数中有"重采样",它有什么用?
🎓
这是粒子滤波器的关键。持续赋权会导致与观测不符的粒子权重趋向零。最后权重会集中在少数粒子上,这叫"权重退化"。重采样的操作是:丢掉权重小的粒子,复制权重大的粒子。这样粒子群被重新配置到"当前最合理的地方"。在左边选择"无重采样"时,下面的ESS曲线会急剧下降到1,你能看到这个现象。
🙋
确实看到ESS曲线急剧下降了。相反,系统性重采样时,虽然有锯齿状,但保持在较高值。这是在看什么?
🎓
那就是有效样本大小,ESS = 1/Σw_i²。它表示"加权粒子群实际相当于多少个等权粒子"。重采样直后所有粒子等权,ESS回到粒子总数。下一步权重又变得不均,ESS又下降。这个锯齿状图案表示"退化后立即恢复"在不断重复。当ESS降到接近1时,估计就无法改善了。
🙋
明白了。我还听过"卡尔曼滤波器",它和粒子滤波器有什么不同?
🎓
主要区别是\"分布的表示方式\"。卡尔曼滤波器用单个高斯分布(平均值和协方差)表示概率分布。对于线性高斯系统是最优的,而且计算快。但对于\"可能在A或B两个位置\"这样的多峰分布无法表示,遇到强非线性时精度也会下降。粒子滤波器用样本集合表示分布,所以即使是多峰、非线性或非高斯也能处理。代价是计算量与粒子数成正比。因此在自定位和物体追踪这些\"扭曲的\"问题中使用较多。
卡尔曼滤波器将状态的概率分布表示为单个高斯分布(平均值和协方差),对于线性和高斯系统是最优的,但对于非线性和非高斯系统精度会下降。粒子滤波器将概率分布表示为许多加权样本(粒子)的集合,因此即使分布是多峰的或系统非线性,也能处理。代价是计算成本与粒子数成正比。本工具允许您改变粒子数,以体验成本和估计精度之间的权衡。
如果不进行重采样,与观测不符的粒子的权重会持续下降,最终权重集中在少数粒子上(权重退化)。这样有效样本大小ESS会下降到1,分布由单个点表示,估计无法改善。重采样通过丢弃权重小的粒子并复制权重大的粒子,将粒子群重新配置到"重要区域",恢复ESS。在本工具中选择"无重采样"时,可以看到ESS急剧下降。
ESS = 1 / Σw_i² 表示加权粒子群"实际相当于多少个等权粒子"的指标。如果所有粒子权重相等,ESS等于粒子总数;如果权重集中在一个粒子上,ESS则为1。当ESS低于粒子数的某个阈值(如50%)时进行重采样是实际做法,可以防止不必要的重采样导致的样本枯竭。
增加粒子数可以更精细地表示概率分布,降低估计方差并提高稳定性,但计算成本与粒子数成正比增加。对于一维简单问题,通常数百个粒子就足够;但对于高维状态,所需粒子数呈指数增长,产生"维数灾咒"。实务中,在允许的计算时间范围内增加粒子数,同时监控ESS是否过低及估计是否稳定。
机器人自定位(蒙特卡洛位置估计):扫地机器人和自动驾驶汽车需要仅从地图和带噪音的传感器信息推断自身位置。每个粒子代表一个可能的位置和姿态,激光或摄像头观测与地图相符的粒子权重增加。最初散布在整个房间的粒子群会逐渐在真实位置周围收敛,这与本工具中粒子云的收敛方式完全相同。
物体追踪(视觉追踪):视频中追踪人或车辆的算法也使用粒子滤波器。当目标被遮挡或有多个相似外观的物体时,状态分布会变成多峰。单个高斯分布难以表示这种情况,但粒子群可以同时保持多个候选,在目标重新出现时正确恢复。
金融和经济中的状态空间模型:在随机波动率模型中,隐藏变量(如股价波动率)无法直接观测但随时间变化,需要从观测到的收益序列推断。由于分布非高斯且模型非线性,顺序蒙特卡洛方法因其灵活性而得到广泛应用。
导航和传感器融合:在隧道内或室内无GPS覆盖的测位、多传感器整合(惯性传感器+气压计+地磁仪等)中也使用粒子滤波器。即使观测模型复杂且非线性,逐个评估粒子的似然即可,易于处理。
最大的陷阱是认为"增加粒子数就一定能提高精度"。虽然增加粒子数会降低估计方差,但计算成本与粒子数成正比增加。更严重的是"维数灾咒"——当状态维数增加时,保持相同精度所需的粒子数呈指数增长。三维位置加姿态(6维)的问题用一维的直觉选择粒子数会严重不足导致发散。本工具只有一维,几百个粒子就够了,但高维问题需要辅助粒子滤波器或劳-布拉克韦尔化等粒子数节约技术。
其次是误认为"每步都要重采样"。重采样虽然对抗权重退化,但复制大权重粒子会损失多样性,导致"样本枯竭"。当过程噪声小时,复制的粒子几乎不动,粒子群会缩小到几个点。实务标准是当ESS低于粒子数的50%等阈值时才重采样的"自适应重采样"。本工具的"无重采样"和每步重采样之间,自适应方法往往效果最好。
最后要警惕"估计值就是加权平均"这种过度简化。当分布单峰且关于真值对称时加权平均没问题,但分布多峰时——比如"在A或B位置"——简单平均会输出"AB之间某处"这个既不是A也不是B的地方。这在物体追踪中最易出现失败。当怀疑多峰性时,应改用最大权重粒子(MAP估计)或聚类找代表点等方法,根据情况选择合适的总结方式。