贝叶斯滤波(BF),卡尔曼滤波(KF),扩展卡尔曼滤波(EKF)等均属于动态模型(Dynamic Model)中的连续分布问题,动态模型离散模型有隐马尔科夫链(HMM)。所有动态模型基于两个假设:1,当前时刻状态只与上一时刻有关。2,当前时刻观测只与当前的状态有关。
HMM可应用于自然语言处理(NLP),在HMM的基础上发展出循环神经网络(RNN),多用于语音语义识别,以及经典隐马尔科夫混合高斯–梅尔频率倒谱系数(HMM-GMM-MFCC)用于语音语义识别(初代Siri)。
1、贝叶斯滤波
贝叶斯滤波是基于贝叶斯估计的一种对随机信号进行处理,减少其不确定性的一种方法。贝叶斯估计引入外部观测(证据,观测)对主观概率进行修正,得到一个相对客观的概率先验概率,似然概率(传感器的精度),以及后验概率是贝叶斯滤波的三个主要概率。
1.1、离散情况:
其公式为:
式中,P(X|Y)为后验概率,P(Y|X)为似然概率,P(X)为先验概率,P(Y)为在所有X的情况下Y发生的概率。
假设:一个温度的例子,预测今天多少度
首先,先验概率分布(先验可以随便猜测)P(T=10)=0.8,(温度等于10度的概率为0.8),P(T=11)=0.2(温度等于11度的概率为0.2)。
其次,温度计测量值为Tm=10.3(温度计测量是有误差的)。
后验概率可以写成:
式中,P(Tm=10.3)=P(Tm=10.3|T=10)P(T=10)+P(Tm=10.3|T=11)P(T=11)
重要一点P(Tm=10.3)跟T的取值无关,跟T的分布率有关。
最终的温度的预测结果为T=10*P(T= 10|Tm = 10.3)+11*P(T = 11|Tm = 10.3)。
离散的贝叶斯通用公式可写为:
后验概率=η*似然概率*先验概率
其中η=1/(Σ似然概率∗先验概率)。
1.2、连续情况:
其公式为:
式中,P是概率,X<x等同于概率密度函数从零进行积分到x,此时,P(Y=y)为零(原因跟数轴取一个有理数的概率为零的原因是一样的)。求P(X<x|Y=y)就要用到化积分为求和,尽量离散化。
然后类似与积分,加小变量进行积分,就可以积分得到:
式中,f为概率密度函数,概率密度函数积分得概率,连续贝叶斯公式为:
假设:还是温度的例子,前面是二项分布为离散,现在是假设为高斯分布f(x)~N(10,1^2)均值为10,方差为1的高斯分布。
上面描述了什么是贝叶斯估计,基于贝叶斯估计滤波的方法为贝叶斯滤波
假设一个随机过程:
式中,y1是对x1的观测,y2是对x2的观测。
如果每一个先验信息都是靠猜测的话,就会过于依赖观测,放弃了预测信息。所以就利用所有的预测信息,只有x0是猜测的,x1,x2….等通过递推公式来计算,这样就是贝叶斯滤波。就需要马尔科夫的假设,即1,当前时刻状态只与上一时刻有关。2,当前时刻观测只与当前的状态有关。
状态方程:
上式反映状态变化的方程,Qk为噪声分布。
观测方程:
上式反映观测的方程,Rk为噪声分布。
其中:Xk本应该是真值,会更精准,但是实际执行中没有真值,当前时刻的最有可能的真值是你的预测值,所以Xk也可以是预测值,即为状态方程推出的当前时刻的状态。
所以贝叶斯滤波分为两步:
预测步,根据状态方程,上一时刻的后验->这一时刻的先验;
更新步,根据观测方程,这一时刻的先验->这一时刻的后验。
预测步需积分,跟贝叶斯估计类似。结果为:
更新步:
f(x)–为先验,f(x)+为后验。
期望为:
贝叶斯滤波到此结束,两个公式。
所以在贝叶斯滤波的基础上添加限制条件,状态方程和观测方程都为线性,且Q,R为正态分布,即为卡尔曼滤波(KF),状态方程和观测方程都为非线性,且 Q,R为正态分布,扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)。
直接对无穷积分有两种方法,一是基于蒙特卡罗积分,即采样,以样本来反映整体分布,即粒子滤波(particle filter)。一种是基于直方图形式,类似微分相加,即为直方图滤波(Histogram filter)。
原文始发于微信公众号(新能源汽车仿真团队):浅谈卡尔曼滤波算法01-贝叶斯滤波