Particle filter 公式推导与理解
学习particle filter 有一段日子了,今日进行总结讲解,宏观理解与仿真均没有太大问题,但是公式的推导和物理意义的理解还存在疏漏。借此机会总结梳理一番,本文分为上下两个部分,第一部分是关于particle filter推导的前期准备,第二部分涉及Monte Carlo 思想如何作用于particle filter。
Particle filter 宏观理解
总结起来,Particle filter 通过对系统真实值进行采样、估计。先在一个已知分布上进行采样,通过比较样本与系统观测值的“距离”确定各个样本的权值。然后通过重采样“复制”权重较大的样本,“丢弃”权值小的样本,并对样本的权值进行归一化。通过迭代,在真实值附近的样本个数数量越来越多,也就达到了particle filter 追踪的目的。
隐马尔可夫模型
什么是隐马尔可夫模型?
最主要的特点:“状态值未知,观测值可知”,且当前状态仅依赖于前一时刻的状态。推荐阅读http://www.cnblogs.com/skyme/p/4651331.html。
为什么要提到隐马尔可夫模型?
Particle filter 假设需要估计的系统是一个“状态值未知,观测值可知”的模型,且假设系统的当前状态仅依赖于上一时刻的状态。以此为基础进行公式的推导。
Particle filter 系统的状态转移模型
(1)
f
(
x
n
∣
x
n
−
1
)
f(x_n|x_{n-1}) \tag{1}
f(xn∣xn−1)(1)其中
x
n
x_n
xn表示系统当前时刻的状态,
x
n
−
1
x_{n-1}
xn−1表示上一时刻的状态,
f
f
f代表条件概率。Particle filter 系统的观测模型
(2)
g
(
y
n
∣
x
n
)
g(y_n|x_n) \tag{2}
g(yn∣xn)(2)其中
y
n
y_n
yn表示系统当前的观测值,是可知的。
马尔可夫模型有什么特点?
假设第一时刻系统状态
x
1
x_1
x1符合分布
u
(
x
1
)
u(x_1)
u(x1),
f
(
x
k
∣
x
k
−
1
)
f(x_k|x_{k-1})
f(xk∣xk−1)表示马尔可夫链状态转移概率,那么根据上述“状态模型和观测模型”我们能够得到一个贝叶斯模型:
{
X
n
}
n
>
=
1
\{X_n\}_{n>=1}
{Xn}n>=1的先验分布:
(3)
p
(
x
1
:
n
)
=
u
(
x
1
)
∏
k
=
2
n
f
(
x
k
∣
x
k
−
1
)
p(x_{1:n}) = u(x_1)\prod_{k=2}^{n} f(x_k|x_{k-1}) \tag{3}
p(x1:n)=u(x1)k=2∏nf(xk∣xk−1)(3)
其中
f
(
x
k
∣
x
k
−
1
)
f(x_k|x_{k-1})
f(xk∣xk−1)表示马尔可夫链中的状态转移模型。
和似然函数:
(4)
p
(
y
1
:
n
∣
x
1
:
n
)
=
∏
k
=
1
n
g
(
y
k
∣
x
k
)
p(y_{1:n}|x_{1:n}) = \prod_{k=1}^{n} g(y_k|x_k) \tag{4}
p(y1:n∣x1:n)=k=1∏ng(yk∣xk)(4)
其中观测值
{
Y
n
}
n
>
=
1
\{Y_n\}_n>=1
{Yn}n>=1之间统计独立。(这是公式(4)可以连乘的原因)
而
(5)
p
(
x
1
:
n
∣
y
1
:
n
)
=
p
(
x
1
:
n
)
p
(
y
1
:
n
∣
x
1
:
n
)
p
(
y
1
:
n
)
p(x_{1:n}|y_{1:n}) = \frac{p(x_{1:n})p(y_{1:n}|x_{1:n})}{p(y_{1:n})} \tag{5}
p(x1:n∣y1:n)=p(y1:n)p(x1:n)p(y1:n∣x1:n)(5)
其中
(6)
p
(
y
1
:
n
)
=
∫
p
(
y
1
:
n
,
x
1
:
n
)
d
x
1
:
n
p(y_{1:n}) = \int_{}^{}p(y_{1:n},x_{1:n})dx_{1:n} \tag{6}
p(y1:n)=∫p(y1:n,x1:n)dx1:n(6)
到这里,我们回顾一下前面都做了些什么。我们将动态系统抽象成了一个隐马尔可夫模型,这样抽象的目的是这个系统符合HMM模型的特点。通过对系统的抽象,我们得到了系统的状态值与系统第一时刻的状态的链式关系式(3),观测值与系统状态的关系如式(4)。
接下来对需要做的就是对
p
(
x
1
:
n
∣
y
1
:
n
)
p(x_{1:n}|y_{1:n})
p(x1:n∣y1:n)的估计。(思考
p
(
x
1
:
n
∣
y
1
:
n
)
p(x_{1:n}|y_{1:n})
p(x1:n∣y1:n)和
p
(
x
n
∣
y
1
:
n
)
p(x_n|y_{1:n})
p(xn∣y1:n)的区别与联系)。在有限状态空间的尔可夫模型中,式(6)中的积分可以转化为求和的形式。在线性高斯环境下的估计也可以通过著名的Kalman解决。对于非线性非高斯模型,Particle filter 提供了一种灵活有效的估计方式——它提供后验分布
p
(
x
1
:
n
∣
y
1
:
n
)
p(x_{1:n}|y_{1:n})
p(x1:n∣y1:n)的近似分布并且促进对
p
(
y
1
:
n
)
p(y_{1:n})
p(y1:n)的近似计算 (思考促进对
p
(
y
1
:
n
)
p(y_{1:n})
p(y1:n)的近似计算在particle filter中的作用)。
p
(
x
1
:
n
∣
y
1
:
n
)
p(x_{1:n}|y_{1:n})
p(x1:n∣y1:n)和
p
(
x
n
∣
y
1
:
n
)
p(x_n|y_{1:n})
p(xn∣y1:n)的区别与联系
p
(
x
1
:
n
∣
y
1
:
n
)
p(x_{1:n}|y_{1:n})
p(x1:n∣y1:n)表示序列近似分布的联合分布,而
p
(
x
n
∣
y
1
:
n
)
p(x_n|y_{1:n})
p(xn∣y1:n)表示边沿分布。Particle filter 中主要对边沿分布
p
(
x
n
∣
y
1
:
n
)
p(x_n|y_{1:n})
p(xn∣y1:n)进行估计。这就意味着在时刻1,我们希望得到(估计)
p
(
x
1
∣
y
1
)
p(x_1|y_1)
p(x1∣y1)和
p
(
y
1
)
p(y_1)
p(y1),在时刻2我们希望得到(估计)
p
(
x
2
∣
y
1
:
2
)
p(x_2|y_{1:2})
p(x2∣y1:2)和
p
(
y
1
:
2
)
p(y_{1:2})
p(y1:2)。
滤波和边沿似然
后验分布
p
(
x
1
:
n
,
y
1
:
n
)
p(x_{1:n},y_{1:n})
p(x1:n,y1:n)满足
p
(
x
1
:
n
,
y
1
:
n
)
=
p
(
x
1
:
n
)
p
(
y
1
:
n
∣
x
1
:
n
)
p(x_{1:n},y_{1:n}) = p(x_{1:n})p(y_{1:n}|x_{1:n})
p(x1:n,y1:n)=p(x1:n)p(y1:n∣x1:n)
结合式(3)和(4)
得到
(7)
p
(
x
1
:
n
,
y
1
:
n
)
=
p
(
x
1
:
n
−
1
,
y
1
:
n
−
1
)
f
(
x
n
∣
x
n
−
1
)
g
(
y
n
∣
x
n
)
p(x_{1:n},y_{1:n}) = p(x_{1:n-1},y_{1:n-1})f(x_n|x_{n-1})g(y_n|x_n) \tag{7}
p(x1:n,y1:n)=p(x1:n−1,y1:n−1)f(xn∣xn−1)g(yn∣xn)(7)
从而式(5)后验分布满足:
(8)
p
(
x
1
:
n
∣
y
1
:
n
)
=
p
(
x
1
:
n
−
1
∣
y
1
:
n
−
1
)
f
(
x
n
∣
x
n
−
1
)
g
(
y
n
∣
x
n
)
p
(
y
n
∣
y
1
:
n
−
1
)
p(x_{1:n}|y_{1:n}) = p(x_{1:n-1}|y_{1:n-1})\frac{f(x_n|x_{n-1})g(y_n|x_n) }{ p(y_n|y_{1:n-1})} \tag{8}
p(x1:n∣y1:n)=p(x1:n−1∣y1:n−1)p(yn∣y1:n−1)f(xn∣xn−1)g(yn∣xn)(8)
其中
(9)
p
(
y
n
∣
y
1
:
n
−
1
)
=
∫
p
(
x
n
−
1
∣
y
1
:
n
−
1
)
f
(
x
n
∣
x
n
−
1
)
g
(
y
n
∣
x
n
)
d
x
n
−
1
:
n
p(y_n|y_{1:n-1}) = \int_{}{} p(x_{n-1}|y_{1:n-1})f(x_n|x_{n-1})g(y_n|x_n) dx_{n-1:n} \tag{9}
p(yn∣y1:n−1)=∫p(xn−1∣y1:n−1)f(xn∣xn−1)g(yn∣xn)dxn−1:n(9)
式(9)的推导参考式(7)
对式(8)中关于
x
1
:
n
−
1
x_{1:n-1}
x1:n−1做积分,得到
(10)
p
(
x
n
∣
y
1
:
n
)
=
g
(
y
n
∣
x
n
)
p
(
x
n
∣
y
1
:
n
−
1
)
p
(
y
n
∣
y
1
:
n
−
1
)
p(x_n|y_{1:n}) = \frac{g(y_n|x_n)p(x_n|y_{1:n-1}) }{ p(y_n|y_{1:n-1})} \tag{10}
p(xn∣y1:n)=p(yn∣y1:n−1)g(yn∣xn)p(xn∣y1:n−1)(10)
其中
(11)
p
(
x
n
∣
y
1
:
n
−
1
)
=
∫
f
(
x
n
∣
x
n
−
1
)
p
(
x
n
−
1
∣
y
1
:
n
−
1
)
d
x
n
−
1
p(x_n|y_{1:n-1}) = \int_{}{} f(x_n|x_{n-1})p(x_{n-1}|y_{1:n-1}) dx_{n-1} \tag{11}
p(xn∣y1:n−1)=∫f(xn∣xn−1)p(xn−1∣y1:n−1)dxn−1(11)
式(10)就是常提到的系统的更新步骤,而式(11)是预测步骤。
需要提到的是,边沿分布
p
(
y
1
:
n
)
p(y_{1:n})
p(y1:n)可以通过迭代得到:
(12)
p
(
y
1
:
n
)
=
p
(
y
1
)
∏
k
=
2
n
p
(
y
k
∣
y
1
:
k
−
1
)
p(y_{1:n}) = p(y_1) \prod_{k=2}^{n} p(y_k|y_{1:k-1}) \tag{12}
p(y1:n)=p(y1)k=2∏np(yk∣y1:k−1)(12)
p ( y k ∣ y 1 : k − 1 ) p(y_k|y_{1:k-1}) p(yk∣y1:k−1)的形式如式(9)
现在总结一下我们做了些什么:通过马尔科夫过程的特点得到了后验联合分布关于状态方程和观测方程的表达形式式(7),然后通过式(7)得到了后验分布的条件概率形式。通过对前 n − 1 n-1 n−1个时刻的状态进行积分,得到了当前时刻的状态值在给定前 n n n个观测值的条件下的概率分布 p ( x n ∣ y 1 : n ) p(x_n|y_{1:n}) p(xn∣y1:n)。在particle filter的当前教程中,particle filter的估计目标就是 p ( x n ∣ y 1 : n ) p(x_n|y_{1:n}) p(xn∣y1:n)——通过对系统的观测估计系统的状态真实值。
至此,第一部分总结完毕。本部分是particle filter 利用蒙特卡罗模型近似估计系统状态的基础,下一部分介绍蒙特卡罗如何作用于particle filter,遗留问题也会在第二部分更新。