今天就来说说我看懂了的粒子滤波(Particle Filter)部分。
我为啥要在看粒子滤波之前拼命学卡尔曼?因为,粒子滤波和Kalman的模型是一样的。无论是线性还是非线性,它俩的模型都是那个:
z_t=h(x_t, v_t);
x_t=f(x_(t-1),w_t);
虽然粒子滤波中,不太常提这个表达形式,因为大家都默认你懂了Kalman。因此,粒子滤波的关键不在这个模型,而在于一个假设:
P(x_t| z_t)不再是高斯分布了!
前 面已经反复强调过,在Kalman下,状态的后验概率是一个高斯分布,也就是一个单峰概率分布。这种模型最大的问题是:无法处理非高斯模型。形象一些说, 如果你发烧了,那你既有可能是嗓子发炎了,也有可能是身体其他部分发炎了,甚至有可能产生肿瘤了。那对于发烧这个现象的原因的条件概率,就会有多个峰值。 但如果使用Kalman,则假设了高斯分布,自然无法正确表示这个模型。
那么Particle Filter是怎么搞的呢?它的关键核心在于,他用一堆状态例子来表示这个不知道该怎么解析表示的后验概率。
其实这件事情也好理解,对于一个概率分布y=p(x)而言,你取一些x,让x对应它的概率值p(x),写成点对就是(x,p(x))。那我问,x=x0时,p(x)是多少啊? 你自然回答p(x0)... 看似很傻的,其实PF就是这意思。
那 本来能取到的值就是有限个,那对于没能取到的x0,如何找到对应的p(x0)呢?一般大家给出的答