我们知道在概率图模型中,加入了time 的因素,就得到了Dynamic Model,实际上也就说我们通常所说的State Space Model。
第一类问题,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 五类问题。
Filtering 问题就是求 P ( z t ∣ x 1 , x 2 , ⋯ , x t ) , P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right), P(zt∣x1,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=A⋅zt−1+B+ϵxt=C⋅zt+D+δ
z t , z t − 1 z_{t}, z_{t-1} zt,zt−1 和 x t , z t x_{t}, z_{t} xt,zt 之间体现了线性的关系。而 ϵ , δ \epsilon, \delta ϵ,δ 是符合 Gaussian Distribution 的 , ϵ ∼ N ( 0 , Q ) , δ ∼ , \epsilon \sim \mathcal{N}(0, Q), \delta \sim ,ϵ∼N(0,Q),δ∼ N ( 0 , R ) \mathcal{N}(0, R) 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=qj∣it=qi)B=[bj(k)]bjk=P(ot=vt∣it=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(zt∣zt−1)∼N(A⋅zt−1+B,Q)P(xt∣zt)∼N(C⋅zt+D,R)z1∼N(μ1,Σ1)θ={A,B,C,D,Q,R,μ1,Σ1}
在这一小节中,我们已经了解了基础的相关概念,那下一小节中,我们将描述了 Filtering 问题的建模和求解。
Filtering 问题公式话的表达即为求 P ( z t ∣ x 1 , x 2 , ⋯ , x t ) , P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t}\right), P(zt∣x1,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∣λ)
我们还是采用的前向算法的思路:
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(zt∣x1,x2,⋯,xt)=P(x1,x2,⋯,xt)P(zt,x1,x2,⋯,xt)∝P(zt,x1,x2,⋯,xt)=P(xt∣zt) P(xt∣x1,x2,⋯,xt−1,zt)P(x1,x2,⋯,xt−1,zt)=P(xt∣zt)prediction P(zt∣x1,x2,⋯,xt−1)const P(x1,x2,⋯,xt−1)∝P(xt∣zt)P(zt∣x1,x2,⋯,xt−1)
很显然通过如上的推导,我们将 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 − 1 ∣ x 1 , x 2 , ⋯ , x t − 1 ) ⏟ P ( z t ∣ z 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)} \underbrace{P\left(z_{t-1} | x_{1}, x_{2}, \cdots, x_{t-1}\right)}_{P\left(z_{t} | z_{t-1}\right)} d z_{t-1} \end{aligned} P(zt∣x1,x2,⋯,xt−1)=∫zt−1P(zt,zt−1∣x1,x2,⋯,xt−1)dzt−1=∫zt−1 P(zt∣zt−1,x1,x2,⋯,xt−1)P(zt∣zt−1) P(zt−1∣x1,x2,⋯,xt−1)dzt−1
通知上述的推导,我们又同到了一个 Filtering 的问题,那么这样我们形成了一个递归的表达。那
素,我们可V憲结为在一个 Filtering 问题中,我们通过一个 Prediction 问题,来构建形成了一个回归。
那幻,下丽我将详细的说明一下求解的过程:
t = 1 t = 2 p ( z 2 ∣ x 1 ) prediction ⋯ ⋯ p ( z 3 ∣ x 1 , x 2 ) prediction t = T { P ( z 1 ∣ x 1 ) update p ( z T + 1 ∣ x 1 , x 2 , ⋯ , x T − 1 ) update \begin{array}{l} t=1 \\ t=2 \\ p\left(z_{2} | x_{1}\right) \text { prediction } \\ \cdots \cdots \\ p\left(z_{3} | x_{1}, x_{2}\right) \text { prediction } \\ t=T\left\{\begin{array}{ll} P\left(z_{1} | x_{1}\right) & \text { update } \\ p\left(z_{T+1} | x_{1}, x_{2}, \cdots, x_{T-1}\right) & \text { update } \end{array}\right. \end{array} t=1t=2p(z2∣x1) prediction ⋯⋯p(z3∣x1,x2) prediction t=T{P(z1∣x1)p(zT+1∣x1,x2,⋯,xT−1) update update
很显然,我们可以不断的往里面添加数据来更新隐变量烟态 z t z_{t} zt
首先,我们需要明确一个问题,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} (1):P(X)=N(X∣μ,Λ−1)(2):P(Y∣X)=N(X∣AX+b,L−1)(3):P(Y)=N(Y∣AX+b,L−1+A−1ΛA)(4):P(X∣Y)=N(Σ{ATL(y−b)+Λμ},Σ)Σ=(Λ+ATLA)−1
从上小节中我们分析了 Filtering 问题的推导过程,我们可以看到 Filtering 问题可以被大致分成
两个部分,也就是 Prediction 和 Update 两个部分。上一小节中我描述了大致的求解思路,那么这一 小节我们将详细的描述怎么计算。
预测问题被我们描述为, P ( z t ∣ x 1 , x 2 , ⋯ , x t − 1 ) , P\left(z_{t} | x_{1}, x_{2}, \cdots, x_{t-1}\right), P(zt∣x1,x2,⋯,xt−1), 那下面我们来进行分析怎么求。
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(zt∣x1,x2,⋯,xt−1)=∫zt−1P(zt∣zt−1)P(zt−1∣x1,x2,⋯,xt−1)dzt−1
根据 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(zt∣x1,x2,⋯,xt−1) 一定是一个 Gaussian Distribution。事实上 x 1 , x 2 , ⋯ , x t − 1 x_{1}, x_{2}, \cdots, x_{t-1} x1,x2,⋯,xt−1 中所有的信息都是已知的。为了方便表达
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(zt∣x1,x2,⋯,xt−1)∼P(zt),
那么,我们令
并且, 根据 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(zt∣zt−1)∼N(zt∣Azt−1+B,Q) 。令 x = z t − 1 , y = z t , x=z_{t-1}, y=z_{t}, x=zt−1,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μt−1+BΣt∗=Q+AΣt−1AT
然而,对于 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(zt∣x1,x2,⋯,xt)∝P(xt∣zt)⋅P(zt∣x1,x2,⋯,xt−1)
在这个问题中 x 1 , x 2 , ⋯ , x t − 1 x_{1}, x_{2}, \cdots, x_{t-1} x1,x2,⋯,xt−1 都是已知的,而 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(X∣Y) P(zt∣x1,x2,⋯,xt)∝P(Y∣X) P(xt∣zt)⋅P(X) P(zt∣x1,x2,⋯,xt−1)
同样利用 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(xt∣Czt+D,R)⋅N(μt∗,Σt∗)
所以,利用公式 (1,2,4) 我们可以求解出 μ t \mu_{t} μt 和 Σ t \Sigma_{t} Σt 根据公式 ( 4 ) , (4), (4), 我们其实可以看到这个求解过程实际上非常的复杂,实际上地是一个迭代的过程。我们就不再做过多的描述了 (实际上把公式一代入,把符号换一下就可可以)。 所以将第一小节和第二小节结合起来一下,第一小节给出了求解的主体思路,第二小节中给出了
每一步具体如何实现。并且利用了 Gaussian Linear Model 的计算公式米进行求解。