卡尔曼滤波

观测之间不会相互独立,但是如果建立了隐状态模型,那么观测之间相互独立。

隐马尔可夫模型(Hidden Markov Model)与卡尔曼滤波的关系?

Dynamic Model

p ( x t ∣ x t − 1 ) p(x_t \vert x_{t-1}) p(xtxt1) p ( y t ∣ x t ) p(y_t \vert x_t) p(ytxt) p ( x 1 ) p(x_1) p(x1)
Discrete State Dynamic Model (HMM) A x t − 1 , x t A_{x_{t-1}, x_{t}} Axt1,xtAny π \pi π
Linear Gaussian Dynamic Model (KF) N ( A x t − 1 + B , Q ) N(Ax_{t-1} + B, Q) N(Axt1+B,Q) N ( H x t + C , R ) N(Hx_{t} + C, R) N(Hxt+C,R)
Non-linear Gaussain Dynamic Model (Particle filter) f ( x t − 1 ) f(x_{t-1}) f(xt1) g ( y t ) g(y_{t}) g(yt) f 0 ( x 1 ) f_{0}(x_1) f0(x1)

当前状态是什么?即$p(x_t | y_1, y_2, …, y_t),也叫filtering。

Kalman Filter

卡尔曼滤波的目的,即解决 p ( x t ∣ y 1 , y 2 , . . . , y t ) p(x_t \vert y_1, y_2, ..., y_t) p(xty1,y2,...,yt)
p ( x t ∣ x t − 1 ) = N ( A x t − 1 + B , Q ) p(x_t \vert x_{t-1}) = N(Ax_{t-1} + B, Q) p(xtxt1)=N(Axt1+B,Q)
等效于
x t = A x t − 1 + B + w , w   N ( 0 , Q ) x_t = Ax_{t-1} + B + w, \quad w~N(0, Q) xt=Axt1+B+w,w N(0,Q)
同时,
p ( y t ∣ x t ) = N ( H x t + C , R ) p(y_t | x_t) = N(Hx_{t} + C, R) p(ytxt)=N(Hxt+C,R)
等效于
y t = H x t + C + u , u   N ( 0 , R ) y_t = Hx_t + C + u,\quad u~N(0, R) yt=Hxt+C+u,u N(0,R)
因此,线性高斯模型的参数包括 { A , B , Q , H , C , R } \{A, B, Q, H, C, R\} {A,B,Q,H,C,R}
x t = A x t − 1 + B + w , w ∼ N ( 0 , Q ) y t = H x t + C + u , u ∼ N ( 0 , R ) \begin{aligned} x_t &= Ax_{t-1} + B + w, \quad w \sim N(0, Q) \\ y_t &= Hx_t + C + u, \quad u \sim N(0, R) \end{aligned} xtyt=Axt1+B+w,wN(0,Q)=Hxt+C+u,uN(0,R)
同时,线性高斯模型具有以下三个特性:
C o v ( X t − 1 , w ) = 0 ; C o v ( X t , u ) = 0 ; C o v ( w , u ) = 0 Cov(X_{t-1}, w) = 0; \quad Cov(X_t, u) = 0; \quad Cov(w, u) = 0 Cov(Xt1,w)=0;Cov(Xt,u)=0;Cov(w,u)=0

例子:
假设某个小车的加速度服从高斯分布, x ¨ = a ∼ N ( 0 , σ 2 ) \ddot{x} = a \sim N(0, \sigma^2) x¨=aN(0,σ2),取小车的速度和加速度作为系统模型的状态,
X t = { x t x ˙ t } X_t = \begin{Bmatrix} x_t \\ \dot{x}_t \end{Bmatrix} Xt={xtx˙t}
由速度和加速度关系可以得到如下方程组:
x t = x t − 1 + x ˙ t − 1 Δ t + 1 2 a ( Δ t ) 2 x ˙ t = x ˙ t − 1 + a Δ t \begin{aligned} x_t &= x_{t-1} + \dot{x}_{t-1} \Delta t + \frac{1}{2} a (\Delta t)^2 \\ \dot{x}_t &= \dot{x}_{t-1} + a \Delta t \end{aligned} xtx˙t=xt1+x˙t1Δt+21a(Δt)2=x˙t1+aΔt
可以推出
[ x t x ˙ t ] = [ 1 Δ t 0 1 ] [ x t − 1 x ˙ t − 1 ] + [ 1 2 a ( Δ t ) 2 a Δ t ] \begin{bmatrix} x_t \\ \dot{x}_t \end{bmatrix} = \begin{bmatrix} 1 & \Delta t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x_{t-1} \\ \dot{x}_{t-1} \end{bmatrix} + \begin{bmatrix} \frac{1}{2} a (\Delta t)^2 \\ a \Delta t \end{bmatrix} [xtx˙t]=[10Δt1][xt1x˙t1]+[21a(Δt)2aΔt]

A = [ 1 Δ t 0 1 ] ; B = [ 0 0 ] ; W = [ 1 2 a ( Δ t ) 2 a Δ t ] A = \begin{bmatrix} 1 & \Delta t \\ 0 & 1 \end{bmatrix}; \quad B = \begin{bmatrix} 0 \\ 0 \end{bmatrix}; \quad W = \begin{bmatrix} \frac{1}{2} a (\Delta t)^2 \\ a \Delta t \end{bmatrix} A=[10Δt1];B=[00];W=[21a(Δt)2aΔt]
即系统的状态转移矩阵。
可以得到:
X t = A X t − 1 + W X_t = AX_{t-1} + W Xt=AXt1+W
首先,我们计算 X t X_t Xt的期望 E [ X t ] E[X_t] E[Xt],记为 μ \mu μ
E [ X t ] = E [ A X t − 1 + W ] = A E [ X t − 1 ] + E [ W ] = A X t − 1 + E [ 1 2 a ( Δ t ) 2 a Δ t ] = A X t − 1 E[X_t] = E[AX_{t-1} + W] = AE[X_{t-1}] + E[W] \\ =AX_{t-1} + E\begin{bmatrix} \frac{1}{2} a (\Delta t)^2 \\ a \Delta t \end{bmatrix} = AX_{t-1} E[Xt]=E[AXt1+W]=AE[Xt1]+E[W]=AXt1+E[21a(Δt)2aΔt]=AXt1
接着,计算 X t X_t Xt的协方差
E [ ( X t − μ ) ( X t − μ ) T ] = E [ ( A X t − 1 + W − A X t − 1 ) ( A X t − 1 + W − A X t − 1 ) T ] = E [ W W T ] = E [ [ 1 2 a ( Δ t ) 2 a Δ t ] [ 1 2 a ( Δ t ) 2 a Δ t ] ] = E [ 1 4 a 2 Δ t 4 1 2 a 2 Δ t 3 1 2 a 2 Δ t 3 a 2 Δ t 2 ] = E [ a 2 ] [ 1 4 Δ t 4 1 2 Δ t 3 1 2 Δ t 3 Δ t 2 ] E[(X_t - \mu)(X_t - \mu)^T] = E[(AX_{t-1} + W -AX_{t-1})(AX_{t-1} + W -AX_{t-1})^T] \\ =E[WW^T] = E \left[ \begin{bmatrix} \frac{1}{2} a (\Delta t)^2 \\ a \Delta t \end{bmatrix} \begin{bmatrix} \frac{1}{2} a (\Delta t)^2 & a \Delta t \end{bmatrix} \right] \\ =E \begin{bmatrix} \frac{1}{4}a^2\Delta t^4 & \frac{1}{2}a^2\Delta t^3 \\ \frac{1}{2}a^2\Delta t^3 & a^2\Delta t^2 \end{bmatrix} = E[a^2] \begin{bmatrix} \frac{1}{4}\Delta t^4 & \frac{1}{2}\Delta t^3 \\ \frac{1}{2}\Delta t^3 & \Delta t^2 \end{bmatrix} E[(Xtμ)(Xtμ)T]=E[(AXt1+WAXt1)(AXt1+WAXt1)T]=E[WWT]=E[[21a(Δt)2aΔt][21a(Δt)2aΔt]]=E[41a2Δt421a2Δt321a2Δt3a2Δt2]=E[a2][41Δt421Δt321Δt3Δt2]
因为 a ∼ N ( 0 , σ 2 ) a \sim N(0, \sigma^2) aN(0,σ2),即均值 u a = 0 u_a = 0 ua=0,所以 E [ a 2 ] = E [ ( a − u a ) 2 ] E[a^2] = E[(a - u_a)^2] E[a2]=E[(aua)2],也就是a的方差 σ 2 \sigma^2 σ2
由此可得, X t X_t Xt的协方差为
E [ ( X t − μ ) ( X t − μ ) T ] = σ 2 [ 1 4 Δ t 4 1 2 Δ t 3 1 2 Δ t 3 Δ t 2 ] E[(X_t - \mu)(X_t - \mu)^T] = \sigma^2 \begin{bmatrix} \frac{1}{4}\Delta t^4 & \frac{1}{2}\Delta t^3 \\ \frac{1}{2}\Delta t^3 & \Delta t^2 \end{bmatrix} E[(Xtμ)(Xtμ)T]=σ2[41Δt421Δt321Δt3Δt2]
上式也就是过程噪声W的协方差矩阵Q。至此,已得到该线性高斯系统的参数 { A , B , W } \{A, B, W\} {A,B,W}

考虑到该例子中,所观测到的小车状态仅为小车位置,即 x t x_t xt,易得该线性高斯系统的观测方程:
y t = x t + U    ⟹    y t = [ 1 , 0 ] X t + U y_t= x_t + U \implies y_t = \begin{bmatrix} 1, 0 \end{bmatrix}X_t + U yt=xt+Uyt=[1,0]Xt+U

H = [ 1 , 0 ] ; C = [ 0 ] ; H = \begin{bmatrix} 1, 0 \end{bmatrix}; \quad C = [0]; H=[1,0];C=[0];

推导过程

上节最开始提到了,KF的主要目的就是估计 p ( x t ∣ y 1 , y 2 , . . . , y t ) p(x_t|y_1, y_2, ..., y_t) p(xty1,y2,...,yt)

p ( x t ∣ y 1 , y 2 , . . . , y t ) ∝ p ( x t , y 1 , y 2 , . . . , y t ) = p ( y t ∣ x t , y 1 , y 2 , . . . , y t − 1 ) p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) p ( y 1 , y 2 , . . . , y t − 1 ) ∝ p ( y t ∣ x t ) p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) \begin{aligned} & p(x_t|y_1, y_2, ..., y_t) \propto p(x_t, y_1, y_2, ..., y_t) \\ & =p(y_t | x_t, y_1, y_2, ..., y_{t-1})p(x_t | y_1, y_2, ..., y_{t-1})p(y_1, y_2, ..., y_{t-1}) \\ & \propto p(y_t | x_t) p(x_t | y_1, y_2, ..., y_{t-1}) \end{aligned} p(xty1,y2,...,yt)p(xt,y1,y2,...,yt)=p(ytxt,y1,y2,...,yt1)p(xty1,y2,...,yt1)p(y1,y2,...,yt1)p(ytxt)p(xty1,y2,...,yt1)
其中, p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) p(x_t | y_1, y_2, ..., y_{t-1}) p(xty1,y2,...,yt1) 被称为预测阶段, p ( x t ∣ y 1 , y 2 , . . . , y t ) p(x_t|y_1, y_2, ..., y_t) p(xty1,y2,...,yt)被称为更新阶段。
对于预测阶段来说:
p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) = ∫ x t − 1 p ( x t , x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) d x t − 1 = ∫ x t − 1 p ( x t ∣ x t − 1 , y 1 , y 2 , . . . , y t − 1 ) p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) p ( y 1 , y 2 , . . . , y t − 1 ) ∝ ∫ x t − 1 p ( x t ∣ x t − 1 , y 1 , y 2 , . . . , y t − 1 ) p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) = ∫ x t − 1 p ( x t ∣ x t − 1 ) p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) \begin{aligned} &p(x_t | y_1, y_2, ..., y_{t-1}) = \int_{x_{t-1}} p(x_t, x_{t-1} | y_1, y_2, ..., y_{t-1}) dx_{t-1} \\ & =\int_{x_{t-1}} p(x_t | x_{t-1}, y_1, y_2, ..., y_{t-1})p(x_{t-1} | y_1, y_2, ..., y_{t-1})p(y_1, y_2, ..., y_{t-1}) \\ & \propto \int_{x_{t-1}} p(x_t | x_{t-1}, y_1, y_2, ..., y_{t-1})p(x_{t-1} | y_1, y_2, ..., y_{t-1}) \\ &= \int_{x_{t-1}} p(x_t | x_{t-1}) \Large{p(x_{t-1} | y_1, y_2, ..., y_{t-1}) } \end{aligned} p(xty1,y2,...,yt1)=xt1p(xt,xt1y1,y2,...,yt1)dxt1=xt1p(xtxt1,y1,y2,...,yt1)p(xt1y1,y2,...,yt1)p(y1,y2,...,yt1)xt1p(xtxt1,y1,y2,...,yt1)p(xt1y1,y2,...,yt1)=xt1p(xtxt1)p(xt1y1,y2,...,yt1)
上式中 p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) p(x_{t-1} | y_1, y_2, ..., y_{t-1}) p(xt1y1,y2,...,yt1)即为上一步更新结果,那么就可以通过recursive方式进行计算。
注意,对于预测和更新两个阶段来说,他们的概率都服从正态分布,也就是:
P r e v i o u s   u p d a t e : p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) ∼ N ( μ ^ t − 1 , Σ ^ t − 1 ) P r e d i c t i o n : p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) ∼ N ( μ ˉ t , Σ ˉ t ) U p d a t e : p ( x t ∣ y 1 , y 2 , . . . , y t ) ∼ N ( μ ^ t , Σ ^ t ) \begin{aligned} Previous \: update: &\quad p(x_{t-1} | y_1, y_2, ..., y_{t-1}) \sim N(\hat{\mu}_{t-1}, \hat{\Sigma}_{t-1}) \\ Prediction: &\quad p(x_t | y_1, y_2, ..., y_{t-1}) \sim N(\bar{\mu}_t, \bar{\Sigma}_t ) \\ Update: &\quad p(x_t | y_1, y_2, ..., y_{t}) \sim N(\hat{\mu}_t, \hat{\Sigma}_t) \end{aligned} Previousupdate:Prediction:Update:p(xt1y1,y2,...,yt1)N(μ^t1,Σ^t1)p(xty1,y2,...,yt1)N(μˉt,Σˉt)p(xty1,y2,...,yt)N(μ^t,Σ^t)
上式仅描述了t时刻的状态概率分布,但是如何估计或者修正t时刻的实际状态,需要换另一种形式对上式进行改写。
p ( x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 ) ∼ N ( μ ^ t − 1 , Σ ^ t − 1 ) x t − 1 ∣ y 1 , y 2 , . . . , y t − 1 = μ ^ t − 1 + Δ x t − 1 ,   Δ x t − 1 ∼ N ( 0 , Σ ^ t − 1 ) = E [ x t − 1 ] + Δ x t − 1 \begin{aligned} p(x_{t-1} | y_1, y_2, ..., y_{t-1}) &\sim N(\hat{\mu}_{t-1}, \hat{\Sigma}_{t-1}) \\ x_{t-1} | y_1, y_2, ..., y_{t-1} & = \hat{\mu}_{t-1} + \Delta x_{t-1}, \: \Delta x_{t-1} \sim N(0, \hat{\Sigma}_{t-1}) \\ &= E[x_{t-1}] + \Delta x_{t-1}\\ \end{aligned} p(xt1y1,y2,...,yt1)xt1y1,y2,...,yt1N(μ^t1,Σ^t1)=μ^t1+Δxt1,Δxt1N(0,Σ^t1)=E[xt1]+Δxt1
p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) ∼ N ( μ ˉ t , Σ ˉ t ) x t ∣ y 1 , y 2 , . . . , y t − 1 = μ ˉ t + Δ x t ,   Δ x t ∼ N ( 0 , Σ ˉ t ) = E [ x t ] + Δ x t x t ∣ y 1 , y 2 , . . . , y t − 1 = A x t − 1 + w = A ( E [ x t − 1 ] + Δ x t − 1 ) + w = A E [ x t − 1 ] + A Δ x t − 1 + w p ( x t ∣ y 1 , y 2 , . . . , y t − 1 ) = N ( A E [ x t − 1 ] , E [ ( Δ x t ) ( Δ x t ) T ] ) \begin{aligned} p(x_t | y_1, y_2, ..., y_{t-1}) &\sim N(\bar{\mu}_t, \bar{\Sigma}_t ) \\ x_t | y_1, y_2, ..., y_{t-1} & = \bar{\mu}_t + \Delta x_{t}, \: \Delta x_{t} \sim N(0, \bar{\Sigma}_t ) \\ & = E[x_t] + \Delta x_{t} \\ x_t | y_1, y_2, ..., y_{t-1} & = Ax_{t-1} + w \\ & = A(E[x_{t-1}] + \Delta x_{t-1}) + w \\ & = AE[x_{t-1}] + A \Delta x_{t-1} + w \\ p(x_t | y_1, y_2, ..., y_{t-1}) &= N(AE[x_{t-1}], E[(\Delta x_{t})(\Delta x_{t})^T]) \end{aligned} p(xty1,y2,...,yt1)xty1,y2,...,yt1xty1,y2,...,yt1p(xty1,y2,...,yt1)N(μˉt,Σˉt)=μˉt+Δxt,ΔxtN(0,Σˉt)=E[xt]+Δxt=Axt1+w=A(E[xt1]+Δxt1)+w=AE[xt1]+AΔxt1+w=N(AE[xt1],E[(Δxt)(Δxt)T])
由于 E [ x t ] = A E [ x t − 1 ] E[x_t] = AE[x_{t-1}] E[xt]=AE[xt1],所以可知 Δ x t = A Δ x t − 1 + w \Delta x_t = A \Delta x_{t-1} + w Δxt=AΔxt1+w
y t ∣ y 1 , y 2 , . . . , y t − 1 = H x t + v = H ( A E [ x t − 1 ] + A Δ x t − 1 + w ) + v = H A E [ x t − 1 ] + H A Δ x t − 1 + H w + v = E [ y t ] + Δ y t p ( y t ∣ y 1 , y 2 , . . . , y t − 1 ) = N ( H A E [ x t − 1 ] , E [ ( Δ y t ) ( Δ y t ) T ] ) \begin{aligned} y_t | y_1, y_2, ..., y_{t-1} & = Hx_t + v \\ & = H( AE[x_{t-1}] + A \Delta x_{t-1} + w) + v \\ & = HAE[x_{t-1}] + HA \Delta x_{t-1} + Hw + v \\ & = E[y_t] + \Delta y_t \\ p(y_t | y_1, y_2, ..., y_{t-1}) &= N(HAE[x_{t-1}], E[(\Delta y_{t})(\Delta y_{t})^T]) \end{aligned} yty1,y2,...,yt1p(yty1,y2,...,yt1)=Hxt+v=H(AE[xt1]+AΔxt1+w)+v=HAE[xt1]+HAΔxt1+Hw+v=E[yt]+Δyt=N(HAE[xt1],E[(Δyt)(Δyt)T])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dongz__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值