粒子滤波
问题引入
卡尔曼滤波基于"高斯噪声+线性"的假设,由于高斯分布的特性,我们可以得到解析解,如果更一般化,变量之间服从任意关系,则称为粒子滤波。
粒子滤波的关注问题同样是 p ( z t ∣ x 1 , x 2 , . . . , x t ) p(z_{t}|x_{1},x_{2},...,x_{t}) p(zt∣x1,x2,...,xt)的分布,回顾卡尔曼滤波器中介绍的解决方案:
- predict,利用 t − 1 t-1 t−1时刻的滤波结果估计 z t z_{t} zt作为先验概率: 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(z_{t}|x_{1},x_{2},...,x_{t-1})=\int_{z_{t-1}}p(z_{t}|z_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} p(zt∣x1,x2,...,xt−1)=∫zt−1p(zt∣zt−1)p(zt−1∣x1,x2,...,xt−1)dzt−1
- update,在得到 t t t时刻的观测变量 x t x_{t} xt后,对预测的先验概率进行修正,得到 z t z_{t} zt的后验概率: p ( z t ∣ x 1 , . . . , x t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 , . . . , x t − 1 ) p(z_{t}|x_{1},...,x_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},...,x_{t-1}) p(zt∣x1,...,xt)∝p(xt∣zt)p(zt∣x1,...,xt−1)
现在抛弃卡尔曼滤波器中变量间的假设关系,我们不能得到解析解,为了实现滤波,我们利用蒙特卡洛方法获取数值解。
采样获取数值解
具体采样方法为重要性采样。在predict和update不断迭代的过程中,都在计算 z z z的概率分布,获取到分布(获取到参数)后,我们用期望作为滤波的结果。对于数值解方法,如果 z t z_{t} zt服从概率分布 p ( z t ∣ x 1 , . . . , x t ) p(z_{t}|x_{1},...,x_{t}) p(zt∣x1,...,xt),则数值解的结果即直接得到 z t z_{t} zt的期望。
首先回顾重要性采样,例如变量 z z z服从分布 p ( z ) p(z) p(z),现在要获得 z z z的期望。
按照连续型随机变量期望的定义:
E
[
z
]
=
∫
z
p
(
z
)
d
z
E[z]=\int zp(z)dz
E[z]=∫zp(z)dz,根据大数定理,从分布
p
(
z
)
p(z)
p(z)中采样
N
N
N个样本
z
i
z_{i}
zi,样本均值与期望近似,所以期望表示为:
E
[
z
]
=
∫
z
p
(
z
)
d
z
≈
1
N
∑
i
=
1
N
z
i
E[z]=\int zp(z)dz\approx \frac{1}{N}\sum_{i=1}^{N}z_{i}
E[z]=∫zp(z)dz≈N1i=1∑Nzi
但问题是
p
(
z
)
p(z)
p(z)本来就是未知的分布,我们难以采样得到样本
z
i
z_{i}
zi。为了解决该问题,我们引入建议分布
q
(
z
)
q(z)
q(z),建议分布是我们已知且熟悉的分布,即得到重要性采样的期望:
E
[
z
]
=
∫
z
p
(
z
)
d
z
=
∫
z
p
(
z
)
q
(
z
)
q
(
z
)
d
z
≈
1
N
∑
i
=
1
N
z
i
p
(
z
i
)
q
(
z
i
)
E[z]=\int zp(z)dz=\int z\frac{p(z)}{q(z)}q(z)dz\approx \frac{1}{N}\sum_{i=1}^{N}z_{i}\frac{p(z_{i})}{q(z_{i})}
E[z]=∫zp(z)dz=∫zq(z)p(z)q(z)dz≈N1i=1∑Nziq(zi)p(zi)
其中,
p
(
z
i
)
q
(
z
i
)
\frac{p(z_{i})}{q(z_{i})}
q(zi)p(zi)称为
z
i
z_{i}
zi的权重,记作
w
i
w_{i}
wi,并且,现在的
z
i
z_{i}
zi不是从
p
(
z
)
p(z)
p(z)中采样得到的,而是来自
q
(
z
)
q(z)
q(z)采样。
现在回到粒子滤波问题,在 t t t时刻,用数值解法计算滤波的近似结果,实际上就是求 p ( z t ∣ x 1 : t ) p(z_{t}|x_{1:t}) p(zt∣x1:t)中变量 z z z的期望,利用重要性采样方法,引入建议分布 q ( z t ∣ x 1 : t ) q(z_{t}|x_{1:t}) q(zt∣x1:t),每一轮过程中,比如在 t t t时刻,我们用建议分布 q ( z t ∣ x 1 : t ) q(z_{t}|x_{1:t}) q(zt∣x1:t)生成 N N N个样本: z t 1 , z t 2 , . . . , z t N z_{t}^{1},z_{t}^{2},...,z_{t}^{N} zt1,zt2,...,ztN;
再利用权重公式获得权重:
w
t
i
=
p
(
z
t
i
∣
x
1
:
t
)
q
(
z
t
i
∣
x
1
:
t
)
w_{t}^{i}=\frac{p(z_{t}^{i}|x_{1:t})}{q(z_{t}^{i}|x_{1:t})}
wti=q(zti∣x1:t)p(zti∣x1:t)
从而计算滤波结果:
1
N
∑
i
=
1
N
z
t
i
w
t
i
\frac{1}{N}\sum_{i=1}^{N}z_{t}^{i}w_{t}^{i}
N1i=1∑Nztiwti
目前又面临一个实际问题,在以往的重要性采样中,虽然不能便利地从
p
(
z
)
p(z)
p(z)中采样,但毕竟是知道
p
(
z
)
p(z)
p(z)的解析式的,因为这样才能计算
p
(
z
)
p(z)
p(z)的概率值,对于粒子滤波问题,我们不知道
p
(
z
t
i
∣
x
1
:
t
)
p(z_{t}^{i}|x_{1:t})
p(zti∣x1:t)的解析式,只有当
t
=
1
t=1
t=1时,
p
(
z
1
i
∣
x
1
)
p(z_{1}^{i}|x_{1})
p(z1i∣x1)可以由
p
(
z
1
i
∣
x
1
)
∝
p
(
z
1
i
)
p
(
x
1
∣
z
1
i
)
p(z_{1}^{i}|x_{1})\propto p(z_{1}^{i})p(x_{1}|z_{1}^{i})
p(z1i∣x1)∝p(z1i)p(x1∣z1i)获得。所以,我们利用递推法解决该问题。
权重递推关系推导
在 t − 1 t-1 t−1时刻, N N N个样本 z t − 1 1 , z t − 1 2 , z t − 1 3 , . . . , z t − 1 N z_{t-1}^{1},z_{t-1}^{2},z_{t-1}^{3},...,z_{t-1}^{N} zt−11,zt−12,zt−13,...,zt−1N所对应的权重为 w t − 1 1 , w t − 1 2 , w t − 1 3 , . . . , w t − 1 N w_{t-1}^{1},w_{t-1}^{2},w_{t-1}^{3},...,w_{t-1}^{N} wt−11,wt−12,wt−13,...,wt−1N;
在 t t t时刻, N N N个样本 z t 1 , z t 2 , z t 3 , . . . , z t N z_{t}^{1},z_{t}^{2},z_{t}^{3},...,z_{t}^{N} zt1,zt2,zt3,...,ztN所对应的权重为 w t 1 , w t 2 , w t 3 , . . . , w t N w_{t}^{1},w_{t}^{2},w_{t}^{3},...,w_{t}^{N} wt1,wt2,wt3,...,wtN;
我们只要求出样本两个对应位置的样本 z t − 1 i z_{t-1}^{i} zt−1i和 z t i z_{t}^{i} zti权重的递推关系,即 w t − 1 i w_{t-1}^{i} wt−1i和 w t i w_{t}^{i} wti之间的递推关系,从 t = 1 t=1 t=1开始,一步一步采样 z t i z_{t}^{i} zti,一轮一轮迭代 w t i w_{t}^{i} wti,就实现了滤波。
下面是具体求解过程:
为了简化计算,使用概率
p
(
z
1
:
t
∣
x
1
:
t
)
p(z_{1:t}|x_{1:t})
p(z1:t∣x1:t),这是一种简化运算的假设,权重的表达式变为:
w
t
=
p
(
z
1
:
t
∣
x
1
:
t
)
q
(
z
1
:
t
∣
x
1
:
t
)
w_{t}=\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
(
x
1
:
t
)
=
1
C
p
(
z
1
:
t
,
x
1
:
t
)
p(z_{1:t}|x_{1:t})=\frac{p(z_{1:t},x_{1:t})}{p(x_{1:t})}=\frac{1}{C}p(z_{1:t},x_{1:t})
p(z1:t∣x1:t)=p(x1:t)p(z1:t,x1:t)=C1p(z1:t,x1:t)
其中,由于
p
(
x
1
:
t
)
p(x_{1:t})
p(x1:t)是观测变量
x
1
:
t
x_{1:t}
x1:t的概率,所以可以记作常数
C
C
C,然后:
p
(
z
1
:
t
∣
x
1
:
t
)
=
1
C
p
(
z
1
:
t
,
x
1
:
t
)
=
1
C
p
(
x
t
∣
z
1
:
t
,
x
1
:
t
−
1
)
p
(
z
1
:
t
,
x
1
:
t
−
1
)
p(z_{1:t}|x_{1:t})=\frac{1}{C}p(z_{1:t},x_{1:t})=\frac{1}{C}p(x_{t}|z_{1:t},x_{1:t-1})p(z_{1:t},x_{1:t-1})
p(z1:t∣x1:t)=C1p(z1:t,x1:t)=C1p(xt∣z1:t,x1:t−1)p(z1:t,x1:t−1)
=
1
C
p
(
x
t
∣
z
1
:
t
,
x
1
:
t
−
1
)
p
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
−
1
)
p
(
z
1
:
t
−
1
,
x
1
:
t
−
1
)
=\frac{1}{C}p(x_{t}|z_{1:t},x_{1:t-1})p(z_{t}|z_{1:t-1},x_{1:t-1})p(z_{1:t-1},x_{1:t-1})
=C1p(xt∣z1:t,x1:t−1)p(zt∣z1:t−1,x1:t−1)p(z1:t−1,x1:t−1)
=
1
C
p
(
x
t
∣
z
1
:
t
,
x
1
:
t
−
1
)
p
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
−
1
)
p
(
z
1
:
t
−
1
∣
x
1
:
t
−
1
)
p
(
x
1
:
t
−
1
)
=\frac{1}{C}p(x_{t}|z_{1:t},x_{1:t-1})p(z_{t}|z_{1:t-1},x_{1:t-1})p(z_{1:t-1}|x_{1:t-1})p(x_{1:t-1})
=C1p(xt∣z1:t,x1:t−1)p(zt∣z1:t−1,x1:t−1)p(z1:t−1∣x1:t−1)p(x1:t−1)
根据观测独立性假设有:
p
(
x
t
∣
z
1
:
t
,
x
1
:
t
−
1
)
=
p
(
x
t
∣
z
t
)
p(x_{t}|z_{1:t},x_{1:t-1})=p(x_{t}|z_{t})
p(xt∣z1:t,x1:t−1)=p(xt∣zt)
根据齐次马尔科夫假设有:
p
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
−
1
)
=
p
(
z
t
∣
z
t
−
1
)
p(z_{t}|z_{1:t-1},x_{1:t-1})=p(z_{t}|z_{t-1})
p(zt∣z1:t−1,x1:t−1)=p(zt∣zt−1)
同时,
p
(
x
1
:
t
−
1
)
p(x_{1:t-1})
p(x1:t−1)是一组观测变量的概率,记作常数
D
D
D,最终化简为:
p
(
z
1
:
t
∣
x
1
:
t
)
=
D
C
p
(
x
t
∣
z
t
)
p
(
z
t
∣
z
t
−
1
)
p
(
z
1
:
t
−
1
∣
x
1
:
t
−
1
)
p(z_{1:t}|x_{1:t})=\frac{D}{C}p(x_{t}|z_{t})p(z_{t}|z_{t-1})p(z_{1:t-1}|x_{1:t-1})
p(z1:t∣x1:t)=CDp(xt∣zt)p(zt∣zt−1)p(z1:t−1∣x1:t−1)
再研究分母的化简,先按照条件概率公式转化一下:
q
(
z
1
:
t
∣
x
1
:
t
)
=
q
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
)
q
(
z
1
:
t
−
1
∣
x
1
:
t
)
q(z_{1:t}|x_{1:t})=q(z_{t}|z_{1:t-1},x_{1:t})q(z_{1:t-1}|x_{1:t})
q(z1:t∣x1:t)=q(zt∣z1:t−1,x1:t)q(z1:t−1∣x1:t)
此处有一个技巧,时刻
t
t
t以前的隐变量取值显然不受时刻
t
t
t的观测变量取值的影响,于是有:
q
(
z
1
:
t
−
1
∣
x
1
:
t
)
=
q
(
z
1
:
t
−
1
∣
x
1
:
t
−
1
)
q(z_{1:t-1}|x_{1:t})=q(z_{1:t-1}|x_{1:t-1})
q(z1:t−1∣x1:t)=q(z1:t−1∣x1:t−1)
所以:
q
(
z
1
:
t
∣
x
1
:
t
)
=
q
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
)
q
(
z
1
:
t
−
1
∣
x
1
:
t
−
1
)
q(z_{1:t}|x_{1:t})=q(z_{t}|z_{1:t-1},x_{1:t})q(z_{1:t-1}|x_{1:t-1})
q(z1:t∣x1:t)=q(zt∣z1:t−1,x1:t)q(z1:t−1∣x1:t−1)
此时,权重的表达式为:
w
t
=
p
(
z
1
:
t
∣
x
1
:
t
)
q
(
z
1
:
t
∣
x
1
:
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
−
1
)
w_{t}=\frac{p(z_{1:t}|x_{1:t})}{q(z_{1:t}|x_{1:t})}\propto \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-1})}
wt=q(z1:t∣x1:t)p(z1:t∣x1:t)∝q(zt∣z1:t−1,x1:t)q(z1:t−1∣x1:t−1)p(xt∣zt)p(zt∣zt−1)p(z1:t−1∣x1:t−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
w_{t}\propto\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
q
q
q分布是可以任意选择的提议分布,我们不妨让
q
q
q分布与
p
p
p分布相同,则有:
q
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
)
=
p
(
z
t
∣
z
1
:
t
−
1
,
x
1
:
t
)
=
p
(
z
t
∣
z
t
−
1
)
q(z_{t}|z_{1:t-1},x_{1:t})=p(z_{t}|z_{1:t-1},x_{1:t})=p(z_{t}|z_{t-1})
q(zt∣z1:t−1,x1:t)=p(zt∣z1:t−1,x1:t)=p(zt∣zt−1)
进一步化简为:
w
t
∝
p
(
x
t
∣
z
t
)
w
t
−
1
w_{t}\propto p(x_{t}|z_{t})w_{t-1}
wt∝p(xt∣zt)wt−1
发现
p
(
x
t
∣
z
t
)
p(x_{t}|z_{t})
p(xt∣zt)反映的是
t
t
t时刻隐变量
z
t
z_{t}
zt到观测变量
x
t
x_{t}
xt的转移概率,这个是模型的已知内容,因此,
t
t
t时刻和
t
−
1
t-1
t−1时刻的权重递推关系就可以方便地计算出来。
粒子滤波过程
粒子滤波采样流程
在上面内容中,已经得到了 t − 1 t-1 t−1时刻和 t t t时刻的权重递推关系: w t = p ( x t ∣ z t ) w t − 1 w_{t}=p(x_{t}|z_{t})w_{t-1} wt=p(xt∣zt)wt−1,那么粒子滤波中的采样过程具体描述如下,这是一个迭代的过程:
前提:在 t − 1 t-1 t−1时刻采样过程已完成;
在 t t t时刻,我们采样 N N N个样本 z t i z_{t}^{i} zti
f
o
r
i
=
1
,
2
,
.
.
.
,
N
:
for\quad i=1,2,...,N:
fori=1,2,...,N:
z
t
i
∼
q
(
z
t
∣
z
t
−
1
i
,
x
1
:
t
)
\quad\quad z_{t}^{i}\sim q(z_{t}|z_{t-1}^{i},x_{1:t})
zti∼q(zt∣zt−1i,x1:t)
w
t
i
=
p
(
x
t
∣
z
t
i
)
p
(
z
t
i
∣
z
t
−
1
i
)
q
(
z
t
i
∣
z
1
:
t
−
1
i
,
x
1
:
t
)
w
t
−
1
i
\quad\quad w_{t}^{i}=\frac{p(x_{t}|z_{t}^{i})p(z_{t}^{i}|z_{t-1}^{i})}{q(z_{t}^{i}|z_{1:t-1}^{i},x_{1:t})}w_{t-1}^{i}
wti=q(zti∣z1:t−1i,x1:t)p(xt∣zti)p(zti∣zt−1i)wt−1i
e
n
d
:
end:
end:对
w
t
i
w_{t}^{i}
wti进行归一化,使得
∑
i
=
1
N
w
t
i
=
1
\sum_{i=1}^{N}w_{t}^{i}=1
∑i=1Nwti=1
由于我们让建议分布
q
=
p
q=p
q=p,则有:
q
(
z
t
i
∣
z
1
:
t
−
1
i
,
x
1
:
t
)
=
p
(
z
t
i
∣
z
1
:
t
−
1
i
,
x
1
:
t
)
=
p
(
z
t
i
∣
z
t
−
1
i
)
q(z_{t}^{i}|z_{1:t-1}^{i},x_{1:t})=p(z_{t}^{i}|z_{1:t-1}^{i},x_{1:t})=p(z_{t}^{i}|z_{t-1}^{i})
q(zti∣z1:t−1i,x1:t)=p(zti∣z1:t−1i,x1:t)=p(zti∣zt−1i)
此时,采样和权重迭代的过程简化为:
f
o
r
i
=
1
,
2
,
.
.
.
,
N
:
for\quad i=1,2,...,N:
fori=1,2,...,N:
z
t
i
∼
p
(
z
t
∣
z
t
−
1
i
)
\quad\quad z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i})
zti∼p(zt∣zt−1i)
w
t
i
=
p
(
x
t
∣
z
t
i
)
w
t
−
1
i
\quad\quad w_{t}^{i}=p(x_{t}|z_{t}^{i})w_{t-1}^{i}
wti=p(xt∣zti)wt−1i
e
n
d
:
end:
end:对
w
t
i
w_{t}^{i}
wti进行归一化,使得
∑
i
=
1
N
w
t
i
=
1
\sum_{i=1}^{N}w_{t}^{i}=1
∑i=1Nwti=1
实际上在 t t t时刻,我们需要从分布 p ( z t ∣ z t − 1 i ) p(z_{t}|z_{t-1}^{i}) p(zt∣zt−1i)中采样 N N N个样本 z t i z_{t}^{i} zti,同时我们在上一步 t − 1 t-1 t−1时刻曾经也得到了一轮采样样本 z t − 1 1 , . . . , z t − 1 N z_{t-1}^{1},...,z_{t-1}^{N} zt−11,...,zt−1N,其中每一个采样样本 z t − 1 i z_{t-1}^{i} zt−1i对应的权重就是 w t − 1 i w_{t-1}^{i} wt−1i,那么在时刻 t t t的采样中,我们对每一个样本 z t i z_{t}^{i} zti,仅通过 p ( x t ∣ z t i ) w t − 1 i p(x_{t}|z_{t}^{i})w_{t-1}^{i} p(xt∣zti)wt−1i的迭代计算,我们就能获得样本 z t i z_{t}^{i} zti的权重 w t i w_{t}^{i} wti。
对于初始时刻 w 1 i w_{1}^{i} w1i的获取,当 t = 1 t=1 t=1时,代入 w 1 i = p ( x 1 ∣ z 1 i ) w 0 i w_{1}^{i}=p(x_{1}|z_{1}^{i})w_{0}^{i} w1i=p(x1∣z1i)w0i,令 w 0 i = 1 w_{0}^{i}=1 w0i=1,并令 t = 1 t=1 t=1时, z t i ∼ p ( z t ∣ z t − 1 i ) z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i}) zti∼p(zt∣zt−1i)中的 p ( z t ∣ z t − 1 i ) p(z_{t}|z_{t-1}^{i}) p(zt∣zt−1i)为初始概率分布 p ( z 1 ) p(z_{1}) p(z1);
所以粒子滤波过程为:
t
=
1
:
t=1:
t=1:
f
o
r
i
=
1
,
2
,
.
.
.
,
N
:
for\quad i=1,2,...,N:
fori=1,2,...,N:
z
1
i
∼
p
(
z
1
)
\quad\quad z_{1}^{i}\sim p(z_{1})
z1i∼p(z1)
w
1
i
=
p
(
x
1
∣
z
1
i
)
\quad\quad w_{1}^{i}=p(x_{1}|z_{1}^{i})
w1i=p(x1∣z1i)
e
n
d
:
end:
end:对
w
1
i
w_{1}^{i}
w1i进行归一化,使得
∑
i
=
1
N
w
1
i
=
1
\sum_{i=1}^{N}w_{1}^{i}=1
∑i=1Nw1i=1
t
≥
2
:
t\geq 2:
t≥2:
f
o
r
i
=
1
,
2
,
.
.
.
,
N
:
for\quad i=1,2,...,N:
fori=1,2,...,N:
z
t
i
∼
p
(
z
t
∣
z
t
−
1
i
)
\quad\quad z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i})
zti∼p(zt∣zt−1i)
w
t
i
=
p
(
x
t
∣
z
t
i
)
w
t
−
1
i
\quad\quad w_{t}^{i}=p(x_{t}|z_{t}^{i})w_{t-1}^{i}
wti=p(xt∣zti)wt−1i
e
n
d
:
end:
end:对
w
t
i
w_{t}^{i}
wti进行归一化,使得
∑
i
=
1
N
w
t
i
=
1
\sum_{i=1}^{N}w_{t}^{i}=1
∑i=1Nwti=1
观测变量与隐变量的关系分析
初始概率 p ( z 1 ) p(z_{1}) p(z1),状态转移概率 p ( z t ∣ z t − 1 ) p(z_{t}|z_{t-1}) p(zt∣zt−1)和发射概率 p ( x t ∣ z t ) p(x_{t}|z_{t}) p(xt∣zt),这三种概率在隐马尔科夫模型,卡尔曼滤波器和粒子滤波器中都有,但表现形式不同,回顾一下:
对于HMM,初始概率 p ( z 1 ) p(z_{1}) p(z1)取自概率向量 π \pi π,状态转移概率 p ( z t ∣ z t − 1 ) p(z_{t}|z_{t-1}) p(zt∣zt−1)和发射概率 p ( x t ∣ z t ) p(x_{t}|z_{t}) p(xt∣zt)取自状态转移概率矩阵 A A A和发射概率矩阵 B B B中的对应项;
对于卡尔曼滤波器,三个概率均服从高斯分布:
p
(
z
t
∣
z
t
−
1
)
=
N
(
A
z
t
−
1
+
B
,
Q
)
p(z_{t}|z_{t-1})=N(Az_{t-1}+B,Q)
p(zt∣zt−1)=N(Azt−1+B,Q)
p
(
x
t
∣
z
t
)
=
N
(
C
z
t
+
D
,
R
)
p(x_{t}|z_{t})=N(Cz_{t}+D,R)
p(xt∣zt)=N(Czt+D,R)
p
(
z
1
)
=
N
(
μ
1
,
σ
1
)
p(z_{1})=N(\mu_{1},\sigma_{1})
p(z1)=N(μ1,σ1)
粒子滤波器没有约束,三个概率都可以定义为任意函数:
p
(
z
t
∣
z
t
−
1
)
=
f
(
z
t
−
1
)
p(z_{t}|z_{t-1})=f(z_{t-1})
p(zt∣zt−1)=f(zt−1)
p
(
x
t
∣
z
t
)
=
g
(
z
t
)
p(x_{t}|z_{t})=g(z_{t})
p(xt∣zt)=g(zt)
p
(
z
1
)
=
f
0
(
z
1
)
p(z_{1})=f_{0}(z_{1})
p(z1)=f0(z1)
滤波中的分布变化
比较卡尔曼滤波和粒子滤波,比较从时间 t − 1 t-1 t−1时刻到 t t t时刻的迭代。对于卡尔曼滤波,关于隐变量 z t z_{t} zt的估计,实际是一个高斯分布:
我们知道,在
t
−
1
t-1
t−1时刻,通过predict步,得到一个预测概率:
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(z_{t}|x_{1},x_{2},...,x_{t-1})=\int_{z_{t-1}}p(z_{t}|z_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1}
p(zt∣x1,x2,...,xt−1)=∫zt−1p(zt∣zt−1)p(zt−1∣x1,x2,...,xt−1)dzt−1
这本质上是先获得
z
t
z_{t}
zt的先验高斯分布,然后在
t
t
t时刻进行update步,利用观察到
t
t
t时刻的观测变量
x
t
x_{t}
xt,对先验分布进行修正,得到后验分布:
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(z_{t}|x_{1},x_{2},...,x_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},x_{2},...,x_{t-1})
p(zt∣x1,x2,...,xt)∝p(xt∣zt)p(zt∣x1,x2,...,xt−1)
简单地说,从
t
−
1
t-1
t−1时刻的predict步到
t
t
t时刻的update步,就是从一个高斯分布变化到另一个高斯分布的过程,高斯分布仅由均值和方差决定,因此前后需要发生改变的就是均值和方差,如下图:

而粒子滤波,因为没有高斯分布的解析形式,我们没有办法在每一轮迭代中获得其解析式,所以采用蒙特卡洛方法采样。
即在 t − 1 t-1 t−1时刻,我们获得 N N N个采样的样本: z t − 1 1 , z t − 1 2 , . . . , z t − 1 N z_{t-1}^{1},z_{t-1}^{2},...,z_{t-1}^{N} zt−11,zt−12,...,zt−1N,对应了各自不同的权重 w t − 1 1 , w t − 1 2 , . . . , w t − 1 N w_{t-1}^{1},w_{t-1}^{2},...,w_{t-1}^{N} wt−11,wt−12,...,wt−1N,这实际是一个分布列,这个分布列近似表示了 z t z_{t} zt的后验分布,而我们正是通过这个分布列求得期望,作为这一轮滤波的估计值。到了 t t t时刻,我们通过 z t i ∼ p ( z t ∣ z t − 1 i ) z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i}) zti∼p(zt∣zt−1i)和 w t i = w t − 1 i p ( x t ∣ z t i ) w_{t}^{i}=w_{t-1}^{i}p(x_{t}|z_{t}^{i}) wti=wt−1ip(xt∣zti)来获取 t t t时刻的分布列和各自对应的权重;
如果我们明确了概念,即离散型随机变量的分布列就是连续型随机变量概率分布的一种近似,则粒子滤波从
t
−
1
t-1
t−1时刻到
t
t
t时刻也是从一个分布到另一个分布的变化过程,这里变化的是所有随机变量
z
t
i
z_{t}^{i}
zti的取值和对应的权重,而分布列的两个要素就是随机变量的取值和其对应的权重。

从图中可以看出,从
t
−
1
t-1
t−1时刻到
t
t
t时刻,虚线箭头表示采样过程
z
t
i
∼
p
(
z
t
∣
z
t
−
1
i
)
z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i})
zti∼p(zt∣zt−1i)和权重更新
w
t
i
=
w
t
−
1
i
p
(
x
t
∣
z
t
i
)
w_{t}^{i}=w_{t-1}^{i}p(x_{t}|z_{t}^{i})
wti=wt−1ip(xt∣zti):每一个采样点
z
i
z_{i}
zi的取值发生了变化,权重也发生了变化。
粒子滤波的权重衰减问题
粒子滤波还存在一个问题,即权重衰减问题,一般粒子滤波在经过迭代几轮后,会出现以下情况,在其分布列中,某一个取值的权重很大,其他都很小:

也就是当某一个采样点的权重很大,而其他采样点的权值很小的情况下,后续迭代都会保持这个趋势,而导致采样点的权值出现衰退,首先这种情况是没有意义的,因为一枝独秀的情况不能很好反映整体分布。
在考虑如何解决这种问题前,先来想想为什么,在前面的粒子滤波算法中, N N N个样本进行迭代,每个样本都被处理一次,这一次处理通过 z t i ∼ p ( z t ∣ z t − 1 i ) z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i}) zti∼p(zt∣zt−1i)确定 t t t时刻采样点的值,通过 w t i = w t − 1 i p ( x t ∣ z t i ) w_{t}^{i}=w_{t-1}^{i}p(x_{t}|z_{t}^{i}) wti=wt−1ip(xt∣zti)确定权重。
因此,那个权重极大的采样点,下一轮权重依然很大,而权重很小的(近似0),总体上看,下一轮权重依旧接近0,即:在 t − 1 t-1 t−1时刻到 t t t时刻, N N N个样本,每个采样点只处理一次,权重随之一起转移了。
重采样解决权重衰减问题
为了解决权重衰减问题,应该让采样点的值转移过程与权值脱钩,但又要反映各个采样点的权重属性,这个"既要又要"可以由重采样实现。
考虑一种极端情况,比如 z t − 1 j z_{t-1}^{j} zt−1j的权重是0.85, z t − 1 k z_{t-1}^{k} zt−1k的权重是0.1, z t − 1 m z_{t-1}^{m} zt−1m的权重是0.05,其他采样点的权重都为0(实际情况应该是每个采样点都有权重,此处只是为了简化描述)。
在 t − 1 t-1 t−1时刻到 t t t时刻的采样过程中,我们还是进行 N N N次采样,但在每次采样中,我们让其有0.85的概率去处理 z t − 1 j z_{t-1}^{j} zt−1j,0.1的概率去处理 z t − 1 k z_{t-1}^{k} zt−1k,0.05的概率去处理 z t − 1 m z_{t-1}^{m} zt−1m,假设 N = 100 N=100 N=100,那么按照大数定理, z t − 1 j z_{t-1}^{j} zt−1j的处理次数就为85次,这样它同样照顾到 t − 1 t-1 t−1时刻各个采样点的权重属性,其好处体现在:每次都是依照 z t j ∼ p ( z t ∣ z t − 1 j ) z_{t}^{j}\sim p(z_{t}|z_{t-1}^{j}) ztj∼p(zt∣zt−1j)的概率分布进行采样确定下一轮的采样值,而85次采样的结果不会再集中于一点。
对于权重的处理,在 t − 1 t-1 t−1时刻, N N N次采样过程中,我们每一次所选中的采样点,他的权重都是 1 N \frac{1}{N} N1,在这个例子中, N = 100 N=100 N=100,每一次采样的权重就是 0.01 0.01 0.01,但是每次采样又0.85的概率处理 z t − 1 j z_{t-1}^{j} zt−1j,依照大数定理, z t − 1 j z_{t-1}^{j} zt−1j的处理次数就为85次,仍然包含了原始采样点的权重信息,那么迭代到下一轮 w t j = 1 N p ( x t ∣ z t j ) w_{t}^{j}=\frac{1}{N}p(x_{t}|z_{t}^{j}) wtj=N1p(xt∣ztj),决定了 t t t时刻这个采样点的权重;
我们依照
z
t
i
∼
p
(
z
t
∣
z
t
−
1
i
)
z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i})
zti∼p(zt∣zt−1i)概率取出
t
t
t时刻的样本
z
t
i
z_{t}^{i}
zti,如果这个样本对于生成观测变量
x
t
x_{t}
xt是合适的,则
p
(
x
t
∣
z
t
i
)
p(x_{t}|z_{t}^{i})
p(xt∣zti)取值会更大,那么这个样本在
t
t
t时刻所对应的权重
w
t
i
=
1
N
p
(
x
t
∣
z
t
i
)
w_{t}^{i}=\frac{1}{N}p(x_{t}|z_{t}^{i})
wti=N1p(xt∣zti)就更大。

因此在前面基本的粒子滤波算法上,我们在
t
−
1
t-1
t−1轮生成新的
N
N
N个样本点
z
t
−
1
i
z_{t-1}^{i}
zt−1i以及它们的权重
w
t
−
1
i
w_{t-1}^{i}
wt−1i后,在向
t
t
t时刻迭代的过程中,目标还是采样
N
N
N个样本,首先更新
z
t
−
1
i
z_{t-1}^{i}
zt−1i的权重,将其变成
1
N
\frac{1}{N}
N1,但是在每次采样的过程中,我们依照更新前的权重
w
t
−
1
1
,
w
t
−
1
2
,
.
.
.
,
w
t
−
1
N
w_{t-1}^{1},w_{t-1}^{2},...,w_{t-1}^{N}
wt−11,wt−12,...,wt−1N,依概率选择一个采样点进行处理,利用
z
t
i
∼
p
(
z
t
∣
z
t
−
1
i
)
z_{t}^{i}\sim p(z_{t}|z_{t-1}^{i})
zti∼p(zt∣zt−1i)获得下一轮
t
t
t时刻的新采样点,并更新权重
w
t
i
=
1
N
p
(
x
t
∣
z
t
i
)
w_{t}^{i}=\frac{1}{N}p(x_{t}|z_{t}^{i})
wti=N1p(xt∣zti)得到
t
t
t时刻第
i
i
i个采样点的权重。
971

被折叠的 条评论
为什么被折叠?



