贝叶斯滤波器

给定t时刻以及之前的所有观测z和输入u,我们的目标是求得当前状态量x的概率分布(belief),即

bel(xt)=p(xt|z1:t,u1:t)

在实际使用中,一般将求解过程分为两步,首先求解在t时刻观测前的先验分布,即
bel¯(xt)=p(xt|z1:t1,u1:t)

然后再根据t时刻的观测通过贝叶斯公式更新先验分布,以得到后验分布,即
bel(xt)=ηp(zt|xt,z1:t1,u1:t)bel¯(xt)

其中η是归一化系数。

进一步,t时刻的先验分布可以根据全概率公式用t-1时刻的后延分布表示,即

bel¯(xt)=p(xt|z1:t1,u1:t)=p(xt,xt1|z1:t1,u1:t)dxt1=p(xt|xt1,z1:t1,u1:t)p(xt1|z1:t1,u1:t)dxt1

假设t-1时刻的状态与t时刻的输入无关(马尔科夫性),那么
p(xt1|z1:t1,u1:t)=p(xt1|z1:t1,u1:t1)=bel(xt1)


bel¯(xt)=p(xt|xt1,z1:t1,u1:t)bel(xt1)dxt1

进一步假设马尔科夫性,即t时刻的状态只和t时刻的输入以及t-1时刻的状态有关,t时刻的观测只和t时刻的状态有关,那么

p(xt|xt1,z1:t1,u1:t)=p(xt|xt1,ut)p(zt|xt,z1:t1,u1:t)=p(zt|xt)

最终可得贝叶斯滤波器的更新方程
bel¯(xt)=p(xt|xt1,ut)bel(xt1)dxt1bel(xt)=ηp(zt|xt)bel¯(xt)

一个完整的贝叶斯滤波器就是随着时间推移不断执行以上两步来完成状态量的估计。其中第一个方程称为prediction,p(xt|xt1,ut)称为状态转移概率。第二个方程称为correction,p(zt|xt)称为观测概率或测量概率。

由以上推导可知,贝叶斯滤波器对系统状态的更新进行了马尔科夫假设,两个更新方程描述了一个隐马尔科夫模型(因为状态量无法直接观测到,所以为‘隐’),这也是贝叶斯滤波器与基于图的优化器的区别,基于图的优化器没有做马尔科夫假设。

实际使用贝叶斯滤波器时,需要计算prediction步骤中的积分,离散状态量可以变为和式计算,而连续状态量则很难计算,因此对概率分布的形态进行假设或近似就得到了其他滤波器,如下图所示

贝叶斯滤波器