嗑:贝叶斯(2):贝叶斯滤波器(kalman与particle)

时间:2024-03-26 22:30:49

贝叶斯滤波器

首先请参考:
博主aipiano关于贝叶斯滤波器的介绍
在这里进行一下关于滤波的感性认识:所有的滤波都是希望得到系统变量的后验分布(也就是通过观测进行推测系统变量),而滤波的过程分为两步:

  1. 通过之前的时刻的观测进行预测当前时刻的值(预测先验:通过之前时刻,也即先验信息)
  2. 对预测的值进行修正和更新预测值(得到后验:对预测先验进行修正,得到后验)

其中有一点需要明确:关于推导中由由系统的先验概率修正后验概率的公式推导。
嗑:贝叶斯(2):贝叶斯滤波器(kalman与particle)
如果是第一次见到这个推导可能有疑问的地方:
p(xtz1:t,u1:t)=ηp(ztxt,z1:t1,u1:t)p(xtz1:t1,u1:t)p(x_t|z_{1:t},u_{1:t})=\eta p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t})
其实η\eta作为归一化系数等于1/p(ztz1:t1,u1:t)1/p(z_t|z_{1:t-1},u_{1:t})
A=xt,B=z1:t1,u1:t,C=ztA=x_t,B=z_{1:t-1},u_{1:t},C=z_t

p(AB,C)=ηp(CA,B)P(AB)=p(CA,B)p(AB)p(CB)p(A|B,C)=\eta p(C|A,B)P(A|B)=p(C|A,B)p(A|B)|p(C|B)
=p(A,B,C)p(A,B)(p(A,B)p(B)p(CB))=p(A,B,C)(p(B)p(CB))=p(A,B,C)p(A,B)|(p(A,B)p(B)p(C|B))=p(A,B,C)|(p(B)p(C|B))
=p(A,B,C)p(B,C)=p(AB,C)=p(A,B,C)|p(B,C)=p(A|B,C)
所以贝叶斯滤波器的递推关系为:
del^(xt1)=p(xtxt1,ut)del(xt1)dxt1\hat{del}(x_{t-1})=\int p(x_t|x_{t-1},u_t)del(x_{t-1})dx_{t-1}(prediction:状态转移概率)
del(xt)=p(ztxt)d^el(xt1)del(x_t)=p(z_t|x_t)\hat del(x_{t-1})(correction:观测概率)
分别对应预测与更新

贝叶斯滤波器与 Kalman

Kalman滤波是将贝叶斯滤波中所有的概率分布均假设为高斯的滤波器的代表。使用均值与方差表示高斯分布。
其中预测贝叶斯滤波的prediction和correction步骤在kalman滤波表示为状态变量的均值与方差
例如:kalman prediction:
X^k=FkX^k1+Bkuk\hat{X}_k=F_k*\hat{X}_{k-1}+B_k*u_k
Pk=FkPk1FkT+QkP_k=F_k*P_{k-1}*F_k^T+Q_k
kalman correction:
K=PkHkT(HkPkHkT+Rk)1K'=P_k*H_k^T*(H_k*P_k*H_k^T+R_k)^{-1}
Xk=X^k+K(ZkHkX^k)X_k'=\hat{X}_k+K'(\vec{Z}_k-H_k*\hat{X}_k)
Pk=PkKHkPkP_k'=Pk-K'*H_k*P_k
kalman的修正方式为:取prediction值和测量值的两个高斯分布的交集的均值与方差。
贝叶斯滤波器中的概率模型如何转化成kalman中的变换形式的?
贝叶斯prediction步骤中,利用xt1x_{t-1}的分布求xtx_t的分布,实质上与kalman中更新高斯分布的均值与方差的物理意义是一致的。至于数学上积分是如何转化为kalman中的更新方程的暂时不考虑。贝叶斯correction步骤中为两个概率分布相乘,与kalman滤波中的correction的步骤物理意义同样一致:相乘即取交集(可能不够严谨)

贝叶斯滤波与 Particle

Particle 是贝叶斯滤波的一种,之前学习particle的时候,对于贝叶斯滤波了解为0,所以理解起来是很伤的,即便阅读了大量的关于particle的相关文章与博客,也仅仅是将相关的公式勉强理解了(我的前几篇博客就对particle进行了记录,可以看到思路并不成体系)。现在算是彻底理解了particle背后的故事。
particle是贝叶斯滤波的一种特殊形式,我们通过贝叶斯滤波的步骤中可以发现在prediction步骤中存在积分项。kalman通过将变量分布假设为高斯分布,利用高斯分布的良好计算性质,将上述的积分求概率分布转化为求高斯分布的均值和方差。而particle近似上述prediction中的积分项的方式更加简单粗暴——利用蒙特卡罗原理,样本估计整体,用大量的particles表示对状态量的采样,从而近似样本的分布,并利用样本均值作为状态量的估计值
particle与贝叶斯滤波的更新方程的对应关系
particle中有两个重要步骤:

  1. 重要性采样
  2. 重采样
    通过重要性采样得到一批粒子,对状态值进行预测,此步骤对应贝叶斯滤波的prediction
    然后通过特征值比较对不同的粒子分配不同的权重,从而实现对prediction得到的状态量的值进行了更新,也就对应了贝叶斯滤波中的correction步骤。最经典的particle中,是分配权重一次便进行一次重采样,然后进行下一时刻的prediction…当然改进之后的particle为了减少计算量以及程序复杂程度,重采样并非每次迭代都进行。但是对particles重新分配权重的过程就对应了correction