我理解的粒子滤波
(
三个臭皮匠,赛过诸葛亮,有策略地盲目搜寻,实际是一种搜索优化算法
):
本质上就是随机采用+随机重采用的循环过程:
(
1
)基于已有知识(先验概率密度分布,如卡尔曼滤波的状态方程和噪声特性;或者假设均匀分布,就在一个空间均匀生成样本),生成
N
个初始样本
( 2 )对每个生成的样本利用当前观测值(以及观测方程+观测噪声的分布特性)计算符合度,并依据符合度,并对置信度高的样本更多的权限生成下一代的机会,对置信度低的样本更少的机会生成下一代,对置信度极低的样本直接淘汰(这个有一定风险,但是必须的)
—— 为了避免组合爆炸,可以让每一代的总体样本一致或者不超过固定值
——
对比来说,卡尔曼滤波,总是从上一个状态递推,依据观测值给出信息,让后建立联合概率密度分布,直接估计最优值。
而粒子滤波比较傻,它依据状态方程及噪声的分布,直接生成
N
的样本,然后用观测方程去评估其可能性。然后下一步递推时,这些上一代的粒子都会利用状态方程继续生成新一代的粒子,继续利用观测方程评价,本质上是有策略地在空间搜索。从这个角度上讲,粒子滤波可能没有卡尔曼滤波准,但它会比卡尔曼滤波稳!!!
因此:
—— 由后验信息(即:观测方程)建立评价函数很重要,
—— 粒子的总数选择是个二难的问题,精度取决于样本数目,但样本太大会组合爆炸!
—— 新一代粒子的生成策略也很重要,当前评估出来的最优样本未必实际最优样本,和遗传算法类似。
—— 什么时候淘汰不合适的样本,也很玄妙!淘汰太慢会组合爆炸-淘汰太快有可能因为噪声把当前最佳样本淘汰