观测之间不会相互独立,但是如果建立了隐状态模型,那么观测之间相互独立。
隐马尔可夫模型(Hidden Markov Model)与卡尔曼滤波的关系?
Dynamic Model
p ( x t ∣ x t − 1 ) p(x_t \vert x_{t-1}) p(xt∣xt−1) | p ( y t ∣ x t ) p(y_t \vert x_t) p(yt∣xt) | 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}} Axt−1,xt | Any | π \pi π |
Linear Gaussian Dynamic Model (KF) | N ( A x t − 1 + B , Q ) N(Ax_{t-1} + B, Q) N(Axt−1+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(xt−1) | 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(xt∣y1,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(xt∣xt−1)=N(Axt−1+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=Axt−1+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(yt∣xt)=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=Axt−1+B+w,w∼N(0,Q)=Hxt+C+u,u∼N(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(Xt−1,w)=0;Cov(Xt,u)=0;Cov(w,u)=0
例子:
假设某个小车的加速度服从高斯分布,
x
¨
=
a
∼
N
(
0
,
σ
2
)
\ddot{x} = a \sim N(0, \sigma^2)
x¨=a∼N(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=xt−1+x˙t−1Δt+21a(Δt)2=x˙t−1+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][xt−1x˙t−1]+[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=AXt−1+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[AXt−1+W]=AE[Xt−1]+E[W]=AXt−1+E[21a(Δt)2aΔt]=AXt−1
接着,计算
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[(AXt−1+W−AXt−1)(AXt−1+W−AXt−1)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)
a∼N(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[(a−ua)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+U⟹yt=[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(xt∣y1,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(xt∣y1,y2,...,yt)∝p(xt,y1,y2,...,yt)=p(yt∣xt,y1,y2,...,yt−1)p(xt∣y1,y2,...,yt−1)p(y1,y2,...,yt−1)∝p(yt∣xt)p(xt∣y1,y2,...,yt−1)
其中,
p
(
x
t
∣
y
1
,
y
2
,
.
.
.
,
y
t
−
1
)
p(x_t | y_1, y_2, ..., y_{t-1})
p(xt∣y1,y2,...,yt−1) 被称为预测阶段,
p
(
x
t
∣
y
1
,
y
2
,
.
.
.
,
y
t
)
p(x_t|y_1, y_2, ..., y_t)
p(xt∣y1,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(xt∣y1,y2,...,yt−1)=∫xt−1p(xt,xt−1∣y1,y2,...,yt−1)dxt−1=∫xt−1p(xt∣xt−1,y1,y2,...,yt−1)p(xt−1∣y1,y2,...,yt−1)p(y1,y2,...,yt−1)∝∫xt−1p(xt∣xt−1,y1,y2,...,yt−1)p(xt−1∣y1,y2,...,yt−1)=∫xt−1p(xt∣xt−1)p(xt−1∣y1,y2,...,yt−1)
上式中
p
(
x
t
−
1
∣
y
1
,
y
2
,
.
.
.
,
y
t
−
1
)
p(x_{t-1} | y_1, y_2, ..., y_{t-1})
p(xt−1∣y1,y2,...,yt−1)即为上一步更新结果,那么就可以通过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(xt−1∣y1,y2,...,yt−1)∼N(μ^t−1,Σ^t−1)p(xt∣y1,y2,...,yt−1)∼N(μˉt,Σˉt)p(xt∣y1,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(xt−1∣y1,y2,...,yt−1)xt−1∣y1,y2,...,yt−1∼N(μ^t−1,Σ^t−1)=μ^t−1+Δxt−1,Δxt−1∼N(0,Σ^t−1)=E[xt−1]+Δxt−1
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(xt∣y1,y2,...,yt−1)xt∣y1,y2,...,yt−1xt∣y1,y2,...,yt−1p(xt∣y1,y2,...,yt−1)∼N(μˉt,Σˉt)=μˉt+Δxt,Δxt∼N(0,Σˉt)=E[xt]+Δxt=Axt−1+w=A(E[xt−1]+Δxt−1)+w=AE[xt−1]+AΔxt−1+w=N(AE[xt−1],E[(Δxt)(Δxt)T])
由于
E
[
x
t
]
=
A
E
[
x
t
−
1
]
E[x_t] = AE[x_{t-1}]
E[xt]=AE[xt−1],所以可知
Δ
x
t
=
A
Δ
x
t
−
1
+
w
\Delta x_t = A \Delta x_{t-1} + w
Δxt=AΔxt−1+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}
yt∣y1,y2,...,yt−1p(yt∣y1,y2,...,yt−1)=Hxt+v=H(AE[xt−1]+AΔxt−1+w)+v=HAE[xt−1]+HAΔxt−1+Hw+v=E[yt]+Δyt=N(HAE[xt−1],E[(Δyt)(Δyt)T])