粒子滤波(particle filter)

粒子滤波也属于动态模型中的一种,但是隐变量之间的关系不在是线性的关系,而是满足一定的高次函数关系:
状态方程: z t = f ( z t − 1 , u t , ε t ) z_t = f(z_{t-1},u_t,\varepsilon_t) zt=f(zt1,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(ztxt),在很多应用中:
计算后验概率就是为了计算函数的期望值,所以可以使用蒙特卡洛抽样的方法计算期望
这里回顾一下重要性采样公式:
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=1nf(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=1nf(zi)wi

这里指的是:
p ( z ) = p ( z t ∣ x t ) p(z) =p(z_t|x_t) p(z)=p(ztxt)
q ( z ) = q ( z t ∣ x t ) q(z) =q(z_t|x_t) q(z)=q(ztxt)
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的计算也比较复杂 z1,...,n,WW
想法:能否找到一种计算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,...tx1,...,t),x1,...,tz1,...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,...tx1,...,t)p(ztxt),
所以: 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})} wtq(z1,...tx1,...,t)p(z1,...tx1,...,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,...tx1,...,t)p(z1,...tx1,...,t)
p ( z 1 , . . . t ∣ x 1 , . . . , t ) p(z_{1,...t}|x_{1,...,t}) p(z1,...tx1,...,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(xtz1,...t,x1,...,t1)p(z1,...t,x1,...,t1),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(xtzt)p(ztz1,...t1,x1,...,t1)p(z1,...t1,x1,...,t1)
应用齐次马尔科夫条件有:
= 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(xtzt)p(ztzt1)p(z1,...t1,x1,...,t1)
应用贝叶斯展开联合概率有:
= 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(xtzt)p(ztzt1)p(z1,...t1x1,...,t1)p(x1,...,t1)
p ( x 1 , . . . , t − 1 ) 也 可 以 直 接 求 出 , 这 里 作 为 常 量 D 有 : p(x_{1,...,{t-1}})也可以直接求出,这里作为常量D有: p(x1,...,t1)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(xtzt)p(ztzt1)p(z1,...t1x1,...,t1)

q ( z 1 , . . . t ∣ x 1 , . . . , t ) q(z_{1,...t}|x_{1,...,t}) q(z1,...tx1,...,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(ztz1,...t1,x1,...,t)q(z1,...t1,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(ztz1,...t1,x1,...,t)q(xtz1,...t1x1,...,t1)q(z1,...t1,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(ztz1,...t1,x1,...,t)q(xtz1,...t1x1,...,t1)q(z1,...t1x1,...,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(ztz1,...t1,x1,...,t)q(z1,...t1x1,...,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,...tx1,...,t)p(z1,...tx1,...,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(ztz1,...t1,x1,...,t)q(z1,...t1x1,...,t)p(xtzt)p(ztzt1)p(z1,...t1x1,...,t1)

= 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(ztz1,...t1,x1,...,t)p(xtzt)p(ztzt1).wt1

总结一下sequential importance sample 算法:

t − 1 时 刻 已 经 计 算 出 w t − 1 t-1时刻已经计算出w_{t-1} t1wt1
对于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}) qztztq(ztz1,...t1,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} wtq(ztz1,...t1,x1,...,t)p(xtzt)p(ztzt1).wt1
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(ztzt1)
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} wtq(ztz1,...t1,x1,...,t)p(xtzt)p(ztzt1).wt1=p(ztzt1)p(xtzt)p(ztzt1).wt1=p(xtzt).wt1
从而更进一步简化了运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值