1. 概述
- 贝叶斯滤波基于贝叶斯公式发展起来的
2. 贝叶斯公式
基于条件概率公式和全概率公式,我们可以导出贝叶斯公式:
P(x,y)=P(x|y)p(y)=P(y|x)P(x), 得到,
P(x|y)=P(y|x)P(x)P(y),
其中,P(y|x)表示似然概率,或者causal knowledge;P(x)称为先验概率或者prior knowledge;P(x|y)称为后验概率,是基于观测对状态的诊断或推断。
贝叶斯公式的本质就是利用causal knowledge和prior knowledge来进行状态推断或推理。
3. 滤波算法
假设有一个系统,它的状态方程和量测方程如下:
xk=fk(xk−1,vk−1)和yk=hk(xk,nk),
其中,x为系统状态,y为测量到的数据,f和h是状态转移函数和测量函数,v和n是过程噪声和测量噪声,噪声都是独立同分布的。
状态估计问题就是根据之前一系列的已有数据y1:k递推的计算出当前状态xk的可信度p(xk|y1:k),具体包括预测和更新两个过程
3.1 预测
- 利用系统模型(状态方程)预测状态的先验概率密度,也就是通过已有的先验知识对未来的状态进行猜测,即p(xk|xk−1),它的概率分布形状和系统的过程噪声vk−1形状一模一样。如果没有噪声,x(k)完全由x(k-1)计算得到,也就没由概率分布这个概念了,由于出现了噪声,所以x(k)不好确定,他的分布就如同vk−1,实际上形状和噪声是一样的,只是进行了一些平移。理解了这一点,对粒子滤波程序中,状态x(k)的采样的计算很有帮助,要采样x(k),直接采样一个过程噪声,再叠加上 f(x(k-1)) 这个常数就行了
- 由上一时刻的概率密度p(xk−1|y1:k−1)得到p(xk|y1:k−1),含义是既然有了前面1:k−1时刻的测量数据,那就可以预测一下状态xk出现的概率
- 计算推导如下
p(xk|y1:k−1)=∫p(xk,xk−1|y1:k−1)dxk−1
=∫p(xk|xk−1,y1:k−1p(xk−1|y1:k−1))dxk−1
=∫p(xk|xk−1)p(x+k−1|y1:k−1)dxk−1,
其中,等式的第一行到第二行纯粹是贝叶斯公式的应用,第二行得到第三行是由于一阶马尔科夫过程的假设,即状态xk只由xk−1决定。
3.2 更新
- 利用最新的测量值对先验概率密度进行修正,得到后验概率密度,也就是对之前的猜测进行修正
- 由p(xk|y1:k−1)得到后验概率p(xk|y1:k)。这个后验概率才是真正有用的东西,上一步还只是预测,这里又多了k时刻的测量,对上面的预测再进行修正,就是滤波了。这里的后验概率也将是代入到下次的预测,形成递推
p(xk|y1:k)=p(yk|xk,y1:k−1)p(xk|y1:k−1)p(yk|y1:k−1)
=p(yk|xk)p(xk|y1:k−1)p(yk|y1:k−1),
其中归一化常数为p(yk|y1:k−1)=∫p(yk|xk)p(xk|y1:k−1)dxk。等式第一行到第二行是因为测量方程知道, y(k)只与x(k)有关。p(yk|xk)也称之为似然函数,由量测方程决定。也和上面的推理一样,yk=h(xk)+nk,x(k)部分是常数,p(yk|xk)也是只和量测噪声n(k)的概率分布有关。