15 线性动态系统——kalman filter

在这里插入图片描述
我们知道在概率图模型中,加入了time 的因素,就得到了Dynamic Model,实际上也就说我们通常所说的State Space Model。

  • 如果状态是离散的,就是我们上一节提到了Hidden Markov Model (HMM);
  • 如果状态是连续的,如果状态之间的关系是线性的,就是线性高斯模型Linear Dynamic System (Kalman Filter),或者说是Linear Gaussian Model;
  • 如果状态之间的关系是Non-Linear 的或者Non-Gaussian (非线性高斯模型)的,那么也就是Particle Filter。

1 背景

1.1 Dynamic Model Introduction

第一类问题,Learning 问题,即为在已知观测序列 O O O 的情况下求解 P ( π ∣ O ) P(\pi|O) P(πO) 。其中,模型可以描
述为 π ( λ , A , B ) \pi(\lambda,A,B) π(λ,A,B)。代表性的就是Hidden Markov Model。
第二类问题就是Inference 问题,大致可以分为Decoding,Probability of Evidence,Filtering,Smoothing 和Prediction 五类问题。

1.2 Kalman Filtering: Linear Gaussian Model

在这里插入图片描述
卡曼滤波是线性高斯模型,分为:

  • 线性
  • 高斯

上图为其概率图模型,其中的传递关系与HMM类似,都是使用发射矩阵和转移矩阵表示的。

Filtering 问题就是求 P ( z t ∣ x 1 , x 2 , ⋯   , x t ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) P(ztx1,x2,,xt), 实际上就是一个 Marginal Posterior 问题。对于 Linear 关系,Linear 主要反映在相邻时刻的两个状态之间的转移关系,当前时刻的隐变量状态和观测状态之间的关系。描述如下所示:
z t = A ⋅ z t − 1 + B + ϵ x t = C ⋅ z t + D + δ \begin{array}{l} z_{t}=A \cdot z_{t-1}+B+\epsilon \\ x_{t}=C \cdot z_{t}+D+\delta \end{array} zt=Azt1+B+ϵxt=Czt+D+δ z t , z t − 1 z_{t}, z_{t-1} zt,zt1​ 和 x t , z t x_{t}, z_{t} xt,zt 之间体现了线性的关系。而 ϵ , δ \epsilon, \delta ϵ,δ 是符合 Gaussian Distribution 的 , ϵ ∼ N ( 0 , Q ) , δ ∼ N ( 0 , R ) \epsilon \sim \mathcal{N}(0, Q), \delta \sim\mathcal{N}(0, R) ϵN(0,Q),δN(0,R) 。所以,大家都明白了 Linear 和 Gaussian 都是从何而来的,所以 Kalman Filtering 被称为Linear Gaussian Model 更合适。

Filtering 是一类问题的总称,我们之前在 Hidden Markov Model 中有详细的讨论过。那么,我们回顾一下 Hidden Markov Model 的基本信息做一个对比。
H M M : λ = { π , A , B } \mathrm{HMM}: \lambda=\{\pi, \mathcal{A}, \mathcal{B}\} HMM:λ={π,A,B}
状态转移矩阵:
A = [ a i j ] a i j = P ( i t + 1 = q j ∣ i t = q i ) B = [ b j ( k ) ] b j k = P ( o t = v t ∣ i t = q j ) \begin{array}{l} A=\left[a_{i j}\right] \quad a_{i j}=P\left(i_{t+1}=q_{j} | i_{t}=q_{i}\right) \\ B=\left[b_{j}(k)\right] \quad b_{j} k=P\left(o_{t}=v_{t} | i_{t}=q_{j}\right) \end{array} A=[aij]aij=P(it+1=qjit=qi)B=[bj(k)]bjk=P(ot=vtit=qj)那么,对于 Kalman Filtering 来说,状态转移矩阵,发射概率,初始矩阵,模型参数我们可以做出类似的表达:
P ( z t ∣ z t − 1 ) ∼ N ( A ⋅ z t − 1 + B , Q ) P ( x t ∣ z t ) ∼ N ( C ⋅ z t + D , R ) z 1 ∼ N ( μ 1 , Σ 1 ) θ = { A , B , C , D , Q , R , μ 1 , Σ 1 } \begin{array}{l} P\left(z_{t} | z_{t-1}\right) \sim \mathcal{N}\left(A \cdot z_{t-1}+B, Q\right) \\ P\left(x_{t} | z_{t}\right) \sim \mathcal{N}\left(C \cdot z_{t}+D, R\right) \\ z_{1} \sim \mathcal{N}\left(\mu_{1}, \Sigma_{1}\right) \\ \theta=\left\{A, B, C, D, Q, R, \mu_{1}, \Sigma_{1}\right\} \end{array} P(ztzt1)N(Azt1+B,Q)P(xtzt)N(Czt+D,R)z1N(μ1,Σ1)θ={A,B,C,D,Q,R,μ1,Σ1} 在这一小节中,我们已经了解了基础的相关概念,那下一小节中,我们将描述了 Filtering 问题的建模和求解。

2 建模和求解

我们这一讲kalman filter最关心的就是filtering问题,也就是求这个边缘后验概率 P ( z t ∣ x 1 , x 2 , ⋯   , x t ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) P(ztx1,x2,,xt)。Filtering 问题公式化的表达即为求 P ( z t ∣ x 1 , x 2 , ⋯   , x t ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) P(ztx1,x2,,xt), 是一种 On-Line Learning 的思路,随着越来越多的数据不断的被观测到,隐藏状态得到不断的更新。也就是在观察变量序列 { x 1 , x 2 , ⋯   , x t } \left\{x_{1}, x_{2}, \cdots, x_{t}\right\} {x1,x2,,xt} 下,求得隐变量状态 z t z_{t} zt​ 的分布。模型表达为如下所示:
在这里插入图片描述
图 1: 模型基本拓扑结构
首先我们回顾一下前向算法的求解思路。在这个算法中首先定义了中间变量为:
α t ( i ) = P ( x 1 , x 2 , ⋯   , x t , z t = q i ) \alpha_{t}(i)=P\left(x_{1}, x_{2}, \cdots, x_{t}, z_{t}=q_{i}\right) αt(i)=P(x1,x2,,xt,zt=qi)而我们下一步则是要寻找 α t + 1 ( i ) \alpha_{t+1}(i) αt+1(i) α t ( i ) \alpha_{t}(i) αt(i) 之间的关系。所以,可以按 α 1 ( i ) , α 2 ( i ) , ⋯   , α t ( i ) \alpha_{1}(i), \alpha_{2}(i), \cdots, \alpha_{t}(i) α1(i),α2(i),,αt(i) 的顺序依次推断得到 α t ( i ) \alpha_{t}(i) αt(i), 从而得到根据当前的模型推断出观测序列的分布 P ( O ∣ λ ) P(O | \lambda) P(Oλ)

2.1 Filtering 问题思路

我们还是采用的前向算法的思路:
P ( z t ∣ x 1 , x 2 , ⋯   , x t ) = P ( z t , x 1 , x 2 , ⋯   , x t ) P ( x 1 , x 2 , ⋯   , x t ) ∝ P ( z t , x 1 , x 2 , ⋯   , x t ) = P ( x t ∣ x 1 , x 2 , ⋯   , x t − 1 , z t ) ⏟ P ( x t ∣ z t ) P ( x 1 , x 2 , ⋯   , x t − 1 , z t ) = P ( x t ∣ z t ) P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ prediction P ( x 1 , x 2 , ⋯   , x t − 1 ) ⏟ const ∝ P ( x t ∣ z t ) P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) \begin{aligned} P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) &=\frac{P\left(z_{t}, x_{1}, x_{2}, \cdots, x_{t}\right)}{P\left(x_{1}, x_{2}, \cdots, x_{t}\right)} \\ & \propto P\left(z_{t}, x_{1}, x_{2}, \cdots, x_{t}\right) \\ &=\underbrace{P\left(x_{t} | x_{1}, x_{2}, \cdots, x_{t-1}, z_{t}\right)}_{P\left(x_{t} | z_{t}\right)} P\left(x_{1}, x_{2}, \cdots, x_{t-1}, z_{t}\right) \\ &=P\left(x_{t} | z_{t}\right) \underbrace{P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right)}_{\text {prediction}} \underbrace{P\left(x_{1}, x_{2}, \cdots, x_{t-1}\right)}_{\text {const}} \\ & \propto P\left(x_{t} | z_{t}\right) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) \end{aligned} P(ztx1,x2,,xt)=P(x1,x2,,xt)P(zt,x1,x2,,xt)P(zt,x1,x2,,xt)=P(xtzt) P(xtx1,x2,,xt1,zt)P(x1,x2,,xt1,zt)=P(xtzt)prediction P(ztx1,x2,,xt1)const P(x1,x2,,xt1)P(xtzt)P(ztx1,x2,,xt1)很显然通过如上的推导,我们将 Filtering 问题回归到了一个 Prediction 的问题。那么这个 Pre-
diction 的问题,如何进一步求解此? 下一步,我们对 Prediction 的部分进何推导。
P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) = ∫ z t − 1 P ( z t , z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 = ∫ z t − 1 P ( z t ∣ z t − 1 , x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( z t ∣ z t − 1 ) P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ d z t − 1 \begin{aligned} P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) &=\int_{z_{t-1}} P\left(z_{t}, z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right) d z_{t-1} \\ &=\int_{z_{t-1}} \underbrace{P\left(z_{t} | z_{t-1}, x_{1}, x_{2}, \cdots, x_{t-1}\right)}_{P\left(z_{t} | z_{t-1}\right)} \underbrace{P\left(z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right)} d z_{t-1} \end{aligned} P(ztx1,x2,,xt1)=zt1P(zt,zt1x1,x2,,xt1)dzt1=zt1P(ztzt1) P(ztzt1,x1,x2,,xt1) P(zt1x1,x2,,xt1)dzt1通知上述的推导,我们又推到了一个 Filtering 的问题,那么这样我们形成了一个递归的表达。因此,我们可认为在一个 Filtering 问题中,我们通过一个 Prediction 问题,来构建形成了一个回归
那么,下面我将详细的说明一下求解的过程:
t = 1 p ( z 1 ∣ x 1 )  update p ( z 2 ∣ x 1 )  prediction  t = 2 p ( z 2 ∣ x 1 , x 2 )  update p ( z 3 ∣ x 1 , x 2 )  prediction  ⋯ ⋯ t = T { P ( z N ∣ x 1 , ⋯   , x T )  update  p ( z T + 1 ∣ x 1 , ⋯   , x T )  prediction \begin{array}{l} t=1 \\p\left(z_{1} | x_{1}\right) \text { update}\\p\left(z_{2} | x_{1}\right) \text { prediction }\\ t=2 \\ p\left(z_{2} | x_{1},x_{2}\right) \text { update} \\ p\left(z_{3} | x_{1}, x_{2}\right) \text { prediction } \\ \cdots \cdots\\ t=T\left\{\begin{array}{ll} P\left(z_{N} | x_{1}, \cdots, x_{T}\right) & \text { update } \\ p\left(z_{T+1} | x_{1}, \cdots, x_{T}\right) & \text { prediction} \end{array}\right. \end{array} t=1p(z1x1) updatep(z2x1) prediction t=2p(z2x1,x2) updatep(z3x1,x2) prediction t=T{P(zNx1,,xT)p(zT+1x1,,xT) update  prediction很显然,以上是求解步骤,是一个online的过程,我们可以不断的往里面添加数据来更新隐变量状态 z t z_{t} zt

一个高斯分布的条件概率分布和边缘概率分布都是高斯分布,而且两个高斯分布的联合概率分布也是高斯分布,所以它的性质非常好,将已知信息全部代入进行求解,可以得到闭式解。

2.2 Filtering 问题求解具体分析

首先,我们需要明确一个问题,Gaussian Distribution 是一个具有非常好的性质的自共轭分布。通俗的讲就是,Gaussian 分布的边缘分布,条件分布,联合概率分布等都是符合高斯分布的。首先,我先回忆一下在Math Basis 那小节中,总结的线性高斯模型中,已知条件高斯分布,求变量高斯分布的公式:
( 1 ) : P ( X ) = N ( X ∣ μ , Λ − 1 ) ( 2 ) : P ( Y ∣ X ) = N ( X ∣ A X + b , L − 1 ) ( 3 ) : P ( Y ) = N ( Y ∣ A X + b , L − 1 + A − 1 Λ A ) ( 4 ) : P ( X ∣ Y ) = N ( Σ { A T L ( y − b ) + Λ μ } , Σ ) Σ = ( Λ + A T L A ) − 1 \begin{array}{l} (1):P(X)=\mathcal{N}\left(X | \mu, \Lambda^{-1}\right) \\ (2):P(Y | X)=\mathcal{N}\left(X | A X+b, L^{-1}\right) \\ (3):P(Y)=\mathcal{N}\left(Y | A X+b, L^{-1}+A^{-1} \Lambda A\right) \\ (4):P(X | Y)=\mathcal{N}\left(\Sigma\left\{A^{T} L(y-b)+\Lambda \mu\right\}, \Sigma\right) \quad \Sigma=\left(\Lambda+A^{T} L A\right)^{-1} \end{array} 1P(X)=N(Xμ,Λ1)2P(YX)=N(XAX+b,L1)3P(Y)=N(YAX+b,L1+A1ΛA)4P(XY)=N(Σ{ATL(yb)+Λμ},Σ)Σ=(Λ+ATLA)1从上小节中我们分析了 Filtering 问题的推导过程,我们可以看到 Filtering 问题可以被大致分成两个部分,也就是 PredictionUpdate 两个部分。上一小节中我描述了大致的求解思路,那么这一小节我们将详细的描述怎么计算。

2.2.1 Prediction

预测问题被我们描述为, P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) P(ztx1,x2,,xt1), 那下面我们来进行分析怎么求。
P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) = ∫ z t − 1 P ( z t ∣ z t − 1 ) P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) d z t − 1 P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right)=\int_{z_{t-1}} P\left(z_{t} | z_{t-1}\right) P\left(z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right) d z_{t-1} P(ztx1,x2,,xt1)=zt1P(ztzt1)P(zt1x1,x2,,xt1)dzt1根据 Gaussian Distribution 的自共轭性(两个高斯分布相乘仍是高斯分布),所以 P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) P(ztx1,x2,,xt1) 一定是一个 Gaussian Distribution。事实上 x 1 , x 2 , ⋯   , x t − 1 x_{1}, x_{2}, \cdots, x_{t-1} x1,x2,,xt1​ 中所有的信息都是已知的。为了方便表达
P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ∼ P ( z t ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) \sim P\left(z_{t}\right) P(ztx1,x2,,xt1)P(zt)那么,我们令

  • t − 1 t-1 t1 时刻: P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) ∼ N ( μ t − 1 , Σ t − 1 ) P\left(z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right) \sim \mathcal{N}\left(\mu_{t-1}, \Sigma_{t-1}\right) P(zt1x1,x2,,xt1)N(μt1,Σt1)
  • t t t 时刻的分布 P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ∼ N ( μ t ∗ , Σ t ∗ ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) \sim \mathcal{N}\left(\mu_{t}^{*}, \Sigma_{t}^{*}\right) P(ztx1,x2,,xt1)N(μt,Σt)

并且, 根据 Gaussian Distribution 的自共轭性,我们可以令 P ( z t ∣ z t − 1 ) ∼ N ( z t ∣ A z t − 1 + B , Q ) P\left(z_{t} | z_{t-1}\right) \sim \mathcal{N}\left(z_{t} | A z_{t-1}+B, Q\right) P(ztzt1)N(ztAzt1+B,Q) 。把 P ( z t − 1 ∣ x 1 , x 2 , ⋯   , x t − 1 ) P\left(z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right) P(zt1x1,x2,,xt1)看作 P ( x ) P(x) P(x),把 P ( z t ∣ x 1 , x 2 , ⋯   , x t ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) P(ztx1,x2,,xt) 看作 P ( y ) P(y) P(y) ,因此为 P ( z t ∣ z t − 1 ) P\left(z_{t} | z_{t-1}\right) P(ztzt1) P ( y ∣ x ) P(y|x) P(yx)。令 x = z t − 1 , y = z t x=z_{t-1}, y=z_{t} x=zt1,y=zt​, 代公式 ( 1 ) − ( 4 ) (1)-(4) (1)(4), 可以计算出:
在这里插入图片描述

{ μ t ∗ = A μ t − 1 + B Σ t ∗ = Q + A Σ t − 1 A T \left\{\begin{array}{l} \mu_{t}^{*}=A \mu_{t-1}+B \\ \Sigma_{t}^{*}=Q+A \Sigma_{t-1} A^{T} \end{array}\right. {μt=Aμt1+BΣt=Q+AΣt1AT

2.2.2 Update

然而,对于 update 问题,我们的目标是求解:
P ( z t ∣ x 1 , x 2 , ⋯   , x t ) ∝ P ( x t ∣ z t ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right) \propto P\left(x_{t} | z_{t}\right) \cdot P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right) P(ztx1,x2,,xt)P(xtzt)P(ztx1,x2,,xt1)在这个问题中 x 1 , x 2 , ⋯   , x t − 1 x_{1}, x_{2}, \cdots, x_{t-1} x1,x2,,xt1​ 都是已知的,而 x t x_{t} xt​ 是未知的。所以上式可以被改写为:
P ( z t ∣ x 1 , x 2 , ⋯   , x t ) ⏟ P ( X ∣ Y ) ∝ P ( x t ∣ z t ) ⏟ P ( Y ∣ X ) ⋅ P ( z t ∣ x 1 , x 2 , ⋯   , x t − 1 ) ⏟ P ( X ) \underbrace{P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right)}_{P(X | Y)} \propto \underbrace{P\left(x_{t} | z_{t}\right)}_{P(Y | X)} \cdot \underbrace{P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right)}_{P(X)} P(XY) P(ztx1,x2,,xt)P(YX) P(xtzt)P(X) P(ztx1,x2,,xt1)同样利用 Guassian Distribution 的自共轭性,我们可以将公式改为:
N ( μ t , Σ t ) ∝ N ( x t ∣ C z t + D , R ) ⋅ N ( μ t ∗ , Σ t ∗ ) \mathcal{N}\left(\mu_{t}, \Sigma_{t}\right) \propto \mathcal{N}\left(x_{t} | C z_{t}+D, R\right) \cdot \mathcal{N}\left(\mu_{t}^{*}, \Sigma_{t}^{*}\right) N(μt,Σt)N(xtCzt+D,R)N(μt,Σt)所以,利用公式 (1,2,4) 我们可以求解出 μ t \mu_{t} μt​ 和 Σ t \Sigma_{t} Σt 根据公式 ( 4 ) (4) (4), 我们其实可以看到这个求解过程实际上非常的复杂,实际上也是一个迭代的过程。我们就不再做过多的描述了 (实际上把公式一代入,把符号换一下就可以)。 所以将第一小节和第二小节结合起来一下,第一小节给出了求解的主体思路,第二小节中给出了
每一步具体如何实现。并且利用了 Gaussian Linear Model 的计算公式来进行求解。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cengjing12/article/details/106601119
————————————————
版权声明:本文为CSDN博主「AI路上的小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cengjing12/article/details/106601119

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值