粒子滤波也属于动态模型中的一种,但是隐变量之间的关系不在是线性的关系,而是满足一定的高次函数关系:
状态方程:
z
t
=
f
(
z
t
−
1
,
u
t
,
ε
t
)
z_t = f(z_{t-1},u_t,\varepsilon_t)
zt=f(zt−1,ut,εt)
观测方程:
x
t
=
h
(
z
t
,
δ
t
)
x_t=h(z_{t},\delta_t)
xt=h(zt,δt)
由于是非线性函数关系,所以很难直接计算后验概率
p
(
z
t
∣
x
t
)
p(z_t|x_t)
p(zt∣xt),在很多应用中:
计算后验概率就是为了计算函数的期望值,所以可以使用蒙特卡洛抽样的方法计算期望
这里回顾一下重要性采样公式:
E
[
f
(
z
)
]
=
∫
z
p
(
z
)
f
(
z
)
d
x
=
∫
z
p
(
z
)
q
(
z
)
q
(
z
)
f
(
z
)
d
z
E[f(z)] =\int_z p(z)f(z) dx=\int_z \displaystyle \frac{p(z)q(z)}{q(z)}f(z) dz
E[f(z)]=∫zp(z)f(z)dx=∫zq(z)p(z)q(z)f(z)dz
=
∫
x
q
(
z
)
f
(
z
)
p
(
z
)
q
(
z
)
d
z
=\int_x \displaystyle q(z)f(z)\frac{p(z)}{q(z)} dz
=∫xq(z)f(z)q(z)p(z)dz
=
1
n
∑
i
=
1
n
f
(
z
i
)
p
(
z
)
q
(
z
)
=\displaystyle \frac{1}{n} \sum_{i=1}^n f(z_i)\frac{p(z)}{q(z)}
=n1i=1∑nf(zi)q(z)p(z)
=
1
n
∑
i
=
1
n
f
(
z
i
)
w
i
=\displaystyle \frac{1}{n} \sum_{i=1}^n f(z_i)w_i
=n1i=1∑nf(zi)wi
这里指的是:
p
(
z
)
=
p
(
z
t
∣
x
t
)
p(z) =p(z_t|x_t)
p(z)=p(zt∣xt)
q
(
z
)
=
q
(
z
t
∣
x
t
)
q(z) =q(z_t|x_t)
q(z)=q(zt∣xt)
p
(
z
)
q
(
z
)
\displaystyle \frac{p(z)}{q(z)}
q(z)p(z)称为权重,记作W,
可以看到,对于
z
∈
1
,
.
.
.
,
n
,
每
次
都
需
要
计
算
W
,
而
且
W
的
计
算
也
比
较
复
杂
z \in 1,...,n,每次都需要计算W,而且W的计算也比较复杂
z∈1,...,n,每次都需要计算W,而且W的计算也比较复杂
想法:能否找到一种计算W的迭代方法,使得计算量比较小
由此引出序列重要采样(sis)(sequential importance sample):
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
,
求
在
给
定
x
1
,
.
.
.
,
t
情
况
下
,
z
1
,
.
.
.
t
的
概
率
,
p(z_{1,...t}|x_{1,...,t}),求在给定x_{1,...,t}情况下,z_{1,...t}的概率,
p(z1,...t∣x1,...,t),求在给定x1,...,t情况下,z1,...t的概率,
根
据
齐
次
马
尔
科
夫
假
设
,
求
出
了
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
,
也
就
求
出
了
p
(
z
t
∣
x
t
)
根据齐次马尔科夫假设,求出了p(z_{1,...t}|x_{1,...,t}),也就求出了p(z_t|x_t)
根据齐次马尔科夫假设,求出了p(z1,...t∣x1,...,t),也就求出了p(zt∣xt),
所以:
w
t
∝
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
w_t \propto \displaystyle \frac{p(z_{1,...t}|x_{1,...,t})}{q(z_{1,...t}|x_{1,...,t})}
wt∝q(z1,...t∣x1,...,t)p(z1,...t∣x1,...,t)
之所以写成序列的形式,是因为这样容易构造迭代公式
迭代公式推导:
令
:
w
t
=
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
令:w_t = \displaystyle \frac{p(z_{1,...t}|x_{1,...,t})}{q(z_{1,...t}|x_{1,...,t})}
令:wt=q(z1,...t∣x1,...,t)p(z1,...t∣x1,...,t)
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
p(z_{1,...t}|x_{1,...,t})
p(z1,...t∣x1,...,t)
=
p
(
z
1
,
.
.
.
t
,
x
1
,
.
.
.
,
t
)
p
(
x
1
,
.
.
.
,
t
)
,
由
于
p
(
x
1
,
.
.
.
,
t
)
可
以
直
接
计
算
,
这
里
可
作
为
常
量
C
= \displaystyle \frac {p(z_{1,...t},x_{1,...,t})}{p(x_{1,...,t})},由于p(x_{1,...,t})可以直接计算,这里可作为常量C
=p(x1,...,t)p(z1,...t,x1,...,t),由于p(x1,...,t)可以直接计算,这里可作为常量C
=
1
C
p
(
z
1
,
.
.
.
t
,
x
1
,
.
.
.
,
t
)
,
提
出
x
t
有
:
= \displaystyle \frac {1}{C}p(z_{1,...t},x_{1,...,t}), 提出x_t有:
=C1p(z1,...t,x1,...,t),提出xt有:
=
1
C
p
(
x
t
∣
z
1
,
.
.
.
t
,
x
1
,
.
.
.
,
t
−
1
)
p
(
z
1
,
.
.
.
t
,
x
1
,
.
.
.
,
t
−
1
)
,
提
出
z
t
有
:
= \displaystyle \frac {1}{C}p(x_t|z_{1,...t},x_{1,...,{t-1}}) p(z_{1,...t},x_{1,...,{t-1}}),提出z_t有:
=C1p(xt∣z1,...t,x1,...,t−1)p(z1,...t,x1,...,t−1),提出zt有:
=
1
C
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
−
1
)
p
(
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
−
1
)
= \displaystyle \frac {1}{C}p(x_t|z_t) p(z_t|z_{1,...t-1},x_{1,...,{t-1}})p(z_{1,...t-1},x_{1,...,{t-1}})
=C1p(xt∣zt)p(zt∣z1,...t−1,x1,...,t−1)p(z1,...t−1,x1,...,t−1)
应用齐次马尔科夫条件有:
=
1
C
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
p
(
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
−
1
)
= \displaystyle \frac {1}{C}p(x_t|z_t) p(z_t|z_{t-1})p(z_{1,...t-1},x_{1,...,{t-1}})
=C1p(xt∣zt)p(zt∣zt−1)p(z1,...t−1,x1,...,t−1)
应用贝叶斯展开联合概率有:
=
1
C
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
p
(
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
−
1
)
p
(
x
1
,
.
.
.
,
t
−
1
)
= \displaystyle \frac {1}{C}p(x_t|z_t) p(z_t|z_{t-1})p(z_{1,...t-1}|x_{1,...,{t-1}})p(x_{1,...,{t-1}})
=C1p(xt∣zt)p(zt∣zt−1)p(z1,...t−1∣x1,...,t−1)p(x1,...,t−1)
p
(
x
1
,
.
.
.
,
t
−
1
)
也
可
以
直
接
求
出
,
这
里
作
为
常
量
D
有
:
p(x_{1,...,{t-1}})也可以直接求出,这里作为常量D有:
p(x1,...,t−1)也可以直接求出,这里作为常量D有:
= D C p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 , . . . t − 1 ∣ x 1 , . . . , t − 1 ) = \displaystyle \frac {D}{C}p(x_t|z_t) p(z_t|z_{t-1})p(z_{1,...t-1}|x_{1,...,{t-1}}) =CDp(xt∣zt)p(zt∣zt−1)p(z1,...t−1∣x1,...,t−1)
q
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
q(z_{1,...t}|x_{1,...,t})
q(z1,...t∣x1,...,t)
=
q
(
z
1
,
.
.
.
t
,
x
1
,
.
.
.
,
t
)
q
(
x
1
,
.
.
.
,
t
)
= \displaystyle \frac {q(z_{1,...t},x_{1,...,t})}{q(x_{1,...,t})}
=q(x1,...,t)q(z1,...t,x1,...,t) //分母由于可以直接求出,可以忽略
=
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
=q(z_t|z_{1,...t-1},x_{1,...,t})q(z_{1,...t-1},x_{1,...,t})
=q(zt∣z1,...t−1,x1,...,t)q(z1,...t−1,x1,...,t)
=
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
q
(
x
t
∣
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
−
1
)
q
(
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
=q(z_t|z_{1,...t-1},x_{1,...,t})q(x_t|z_{1,...t-1}|x_{1,...,t-1})q(z_{1,...t-1},x_{1,...,t})
=q(zt∣z1,...t−1,x1,...,t)q(xt∣z1,...t−1∣x1,...,t−1)q(z1,...t−1,x1,...,t)
∝
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
q
(
x
t
∣
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
−
1
)
q
(
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
)
\propto q(z_t|z_{1,...t-1},x_{1,...,t})q(x_t|z_{1,...t-1}|x_{1,...,t-1})q(z_{1,...t-1}|x_{1,...,t})
∝q(zt∣z1,...t−1,x1,...,t)q(xt∣z1,...t−1∣x1,...,t−1)q(z1,...t−1∣x1,...,t)
假定可以写成:(不知道为何可以这样假定)
∝
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
)
\propto q(z_t|z_{1,...t-1},x_{1,...,t})q(z_{1,...t-1}|x_{1,...,t})
∝q(zt∣z1,...t−1,x1,...,t)q(z1,...t−1∣x1,...,t)
所以有:
w
t
=
p
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
∣
x
1
,
.
.
.
,
t
)
w_t = \displaystyle \frac{p(z_{1,...t}|x_{1,...,t})}{q(z_{1,...t}|x_{1,...,t})}
wt=q(z1,...t∣x1,...,t)p(z1,...t∣x1,...,t)
=
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
p
(
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
−
1
)
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
q
(
z
1
,
.
.
.
t
−
1
∣
x
1
,
.
.
.
,
t
)
=\displaystyle \frac{p(x_t|z_t) p(z_t|z_{t-1})p(z_{1,...t-1}|x_{1,...,{t-1}})} {q(z_t|z_{1,...t-1},x_{1,...,t})q(z_{1,...t-1}|x_{1,...,t})}
=q(zt∣z1,...t−1,x1,...,t)q(z1,...t−1∣x1,...,t)p(xt∣zt)p(zt∣zt−1)p(z1,...t−1∣x1,...,t−1)
= p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) q ( z t ∣ z 1 , . . . t − 1 , x 1 , . . . , t ) . w t − 1 =\displaystyle \frac{p(x_t|z_t) p(z_t|z_{t-1})} {q(z_t|z_{1,...t-1},x_{1,...,t})}.w_{t-1} =q(zt∣z1,...t−1,x1,...,t)p(xt∣zt)p(zt∣zt−1).wt−1
总结一下sequential importance sample 算法:
t
−
1
时
刻
已
经
计
算
出
w
t
−
1
t-1时刻已经计算出w_{t-1}
t−1时刻已经计算出wt−1
对于t时刻:
f
o
r
i
=
1
,
.
.
.
n
for \ i=1,...n
for i=1,...n
从
q
分
布
中
采
样
一
个
样
本
z
t
,
z
t
∼
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
\quad 从q分布中采样一个样本z_t,z_t \sim q(z_t|z_{1,...t-1},x_{1,...,t})
从q分布中采样一个样本zt,zt∼q(zt∣z1,...t−1,x1,...,t)
w
t
∝
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
.
w
t
−
1
\quad w_t \propto \displaystyle \frac{p(x_t|z_t) p(z_t|z_{t-1})} {q(z_t|z_{1,...t-1},x_{1,...,t})}.w_{t-1}
wt∝q(zt∣z1,...t−1,x1,...,t)p(xt∣zt)p(zt∣zt−1).wt−1
e
n
d
f
o
r
end \quad for
endfor
但是序列重要采样实际中会存在权值退化的问题,也就是某些样本的权重值非常接近0,而有些样本的权重值接近1,导致无法正常使用,解决办法分两种:
重采样和找新的q分布
首先看序列重要采样+重采样: s i s + r sis+r sis+r
重采样的思路是:既然那些权重小的不起作用了,那就不要了。要保持采样数目不变,得用一些新的样本来取代它们。找新样本最简单的方法就是将权重大的样本多复制几个出来,至于复制几个?那就在权重大的样本里面让它们根据自己权重所占的比例去分配,也就是老大分身分得最多,老二分得次多,以此类推
在这里用个简单的例子来说明:
假设有3个粒子,在第k时刻的时候,他们的权重分别是0.1, 0.1 ,0.8, 然后计算他们的概率累计和为:[0.1, 0.2, 1]。接着,我们用服从[0,1]之间的均匀分布随机采样3个值,假设为0.15 , 0.38 和 0.54。也就是说,第二个粒子复制一次,第三个粒子复制两次
其次:序列重要采样+重采样+选择合适的q分布:
当取q分布为:
p
(
z
t
∣
z
t
−
1
)
时
,
有
:
p(z_t|z_{t-1})时,有:
p(zt∣zt−1)时,有:
w
t
∝
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
q
(
z
t
∣
z
1
,
.
.
.
t
−
1
,
x
1
,
.
.
.
,
t
)
.
w
t
−
1
=
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
p
(
z
t
∣
z
t
−
1
)
.
w
t
−
1
=
p
(
x
t
∣
z
t
)
.
w
t
−
1
\quad w_t \propto \displaystyle \frac{p(x_t|z_t) p(z_t|z_{t-1})} {q(z_t|z_{1,...t-1},x_{1,...,t})}.w_{t-1}= \displaystyle \frac{p(x_t|z_t) p(z_t|z_{t-1})} {p(z_t|z_{t-1})}.w_{t-1}=p(x_t|z_t).w_{t-1}
wt∝q(zt∣z1,...t−1,x1,...,t)p(xt∣zt)p(zt∣zt−1).wt−1=p(zt∣zt−1)p(xt∣zt)p(zt∣zt−1).wt−1=p(xt∣zt).wt−1
从而更进一步简化了运算