Kalman 滤波
1. 简介
Kalman 滤波常用于目标的追踪、预测等任务。滤波器被设计为最小化均方误差。此外,还可以用极大似然的方法得到滤波器。滤波器就是用来从信号中提取出有用的信息,使用一个损失函数评价滤波器的性能。
2. 极大似然估计
使用极大似然的方法得到一个滤波器,最终的目标就是得到一个x^ 使得y的条件概率最大,即
max[P(y∣x^)]
假设信号中的噪声是服从高斯分布的N(0,σk)。假设信号为
yk=akxk+nk
其中nk是噪声,xk是承载数据的信号,ak是系数,那么根据噪声服从高斯分布以及条件概率公式可以得到:
P(yk∣x^k)=Kk⋅e−(2σk2(yk−akxk^)2)
对上式求对数得到:
logP(y∣x^)=−21k∑(σk2(yk−akx^k)2)+C
其中C是常数项。
3. 状态空间
假设目标是要获得如下过程中变量的值:
xk+1=Φxk+ωk
其中 xk是t时刻的状态向量,Φ是从时刻 t到时刻 t+1的状态转移矩阵,并且是被认为时间平稳的,ωk是高斯白噪声。
变量的观察量定义为:
zk=Hxk+vk
其中 zk是时刻t的x的观测量,H是将状态向量转换为观测向量的矩阵,并且被认为是时间平稳的,vk是度量误差,是高斯白噪声。
两个噪声的协方差被认为是时间平稳的,分别表示为:
Q=E[ωkωkT]R=E[vkvkT]
将xk的估计表示为 x^k,使用均方误差衡量滤波器的性能,并表示为
f(ek)=(xk−x^k)2
设Pk=E[ekekT]=E[(xk−x^k)(xk−x^k)T],并将之前一次的估计记为x^k′,那么根据历史估计以及误差情况得到下面这个等式:
x^k=x^k′+Kk(zk−Hx^k′)
其中 Kk是Kalman 增益值,后面给出推导公式,后面一项zk−Hx^k′为测量残留(measurement residual)。
将zk的定义替换到上式中得到:
x^k=x^k′+Kk(Hxk+vk−Hx^k′)
再将x^k带入到上式Pk的等式中得到:
Pk=E[[(I−KkH)(xk−x^k′)−Kkvk][(I−KkH)(xk−x^k′)]]=(I−KkH)E[(xk−x^k′)(xk−x^k′)T](I−KkH)+KkE[vkvkT]KkT
将之前的预测Pk′以及R替换上面等式中的均方误差项以及噪声的协方差项得到:
Pk=(I−KkH)Pk′(I−KkH)T+KkRKkT
对于矩阵 Pk,其对角线上包含均方误差项,因此最小化均方误差的目标可以转换为最小化矩阵 Pk的迹(trace)。
首先将上式展开得到
Pk=Pk′−KkHPk′−Pk′HTKkT+Kk(HPk′HT+R)KkT
设T[]表示矩阵的迹,则上式两边表示为
T[Pk]=T[Pk′]−2T[KkHPk′]+T[Kk(HPk′HT+R)KkT]
对Kk求导得到:
dKkdT[Pk]=−2(HPk′)T+2Kk(HPk′HT+R)
并令其等于0,得到:
(HPk′)T=Kk(HPk′HT+R)
并最终得到Kalman增益等式:
Kk=Pk′HT(HPk′HT+R)−1
将该等式带入到上面Pk的等式中,得到:
Pk=Pk′−Pk′HT(HPk′HT+R)−1HPk′=Pk′−KkHPk′=(I−KkH)Pk′
前面已经定义了关于变量xk从时刻k到时刻 k+1的转移:
xk+1′=Φx^k
对于均方误差中的 ek,更新方法为:
ek+1′=xk+1−x^k+1′=(Φxk+ωk)−Φx^k=Φek+ωk
和前面Pk的等式类似,k+1时刻:
Pk+1′=E[ek+1′ek+1′T]=E[Φek(Φek)T]+E[ωkωkT]=ΦPkΦT+Q
算法的整体流程如下图所示:

参考
[1] The Kalman filter