机器学习算法笔记:Particle Filter粒子滤波

Particle Filter

Kalman 滤波根据线性高斯模型可求得解析解,但是在非线性、非高斯的情况下无法得到解析解,对这类一般的情况,则要采用粒子滤波的方法

对于复杂的概率分布,可以通过一个简单的概率分布 q ( z ) q(z) q(z) 作为桥梁进行采样(重要性采样),求得概率分布函数积分值(期望):
E [ f ( z ) ] = ∫ z f ( z ) p ( z ) d z = ∫ z f ( z ) p ( z ) q ( z ) q ( z ) d z = 1 N ∑ i = 1 N f ( z i ) p ( z i ) q ( z i ) → w e i g h t \begin{aligned} \mathbb{E}[f(z)]&=\int_zf(z)p(z)dz=\int_zf(z)\frac{p(z)}{q(z)}q(z)dz\\&=\frac1N\sum\limits_{i=1}^Nf(z_i)\boxed{\frac{p(z_i)}{q(z_i)} }\color{blue}\to weight \end{aligned} E[f(z)]=zf(z)p(z)dz=zf(z)q(z)p(z)q(z)dz=N1i=1Nf(zi)q(zi)p(zi)weight

通过对 q ( z ) q(z) q(z) 采样,然后对每一个采样的样本应用权重就得到了期望的近似,为了概率分布的特性,还需要对权重进行归一化。

在滤波问题中,需要求解 p ( z t ∣ x 1 : t ) p(z_t|x_{1:t}) p(ztx1:t),其权重为:
w t i = p ( z t i ∣ x 1 : t ) q ( z t i ∣ x 1 : t ) , i = 1 , 2 , ⋯   , N w_t^i=\frac{p(z_t^i|x_{1:t})}{q(z_t^i|x_{1:t})},i=1,2,\cdots,N wti=q(ztix1:t)p(ztix1:t),i=1,2,,N

若每一个时刻 t t t 都需要采样 N N N 个点,则每个时刻都要计算 N N N个权重,使得计算较为繁杂,希望找到一个关于权重的递推公式,于是就引入了序列重要性采样(SIS)。

SIS

在 SIS (sequential importance sampling filter)中,解决的问题是 p ( z 1 : t ∣ x 1 : t ) p(z_{1:t}|x_{1:t}) p(z1:tx1:t) w t i ∝ p ( z 1 : t ∣ x 1 : t ) q ( z 1 : t ∣ x 1 : t ) w_t^i\propto\frac{p(z_{1:t}|x_{1:t})}{q(z_{1:t}|x_{1:t})} wtiq(z1:tx1:t)p(z1:tx1:t)

根据 LDS 中的推导可以得到上式分子的递推式:
p ( z 1 : t ∣ x 1 : t ) ∝ p ( x 1 : t , z 1 : t ) = p ( x t ∣ z 1 : t , x 1 : t − 1 ) p ( z 1 : t , x 1 : t − 1 ) = p ( x t ∣ z t ) p ( z t ∣ x 1 : t − 1 , z 1 : t − 1 ) p ( x 1 : t − 1 , z 1 : t − 1 ) = p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( x 1 : t − 1 , z 1 : t − 1 ) ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 : t − 1 ∣ x 1 : t − 1 ) \begin{aligned}{\color{blue}p(z_{1:t}|x_{1:t})}\propto p(x_{1:t},z_{1:t})&=p(x_t|z_{1:t},x_{1:t-1})p(z_{1:t},x_{1:t-1})\\ &=p(x_t|z_t)p(z_t|x_{1:t-1},z_{1:t-1})p(x_{1:t-1},z_{1:t-1})\\ &=p(x_t|z_t)p(z_t|z_{t-1})p(x_{1:t-1},z_{1:t-1})\\ &\propto p(x_t|z_t)p(z_t|z_{t-1})\color{blue}p(z_{1:t-1}|x_{1:t-1}) \end{aligned} p(z1:tx1:t)p(x1:t,z1:t)=p(xtz1:t,x1:t1)p(z1:t,x1:t1)=p(xtzt)p(ztx1:t1,z1:t1)p(x1:t1,z1:t1)=p(xtzt)p(ztzt1)p(x1:t1,z1:t1)p(xtzt)p(ztzt1)p(z1:t1x1:t1)

对于分母(指定的提议分布),直接分解为:
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:tx1:t)=q(ztz1:t1,x1:t)q(z1:t1x1:t1) 所以有: w t i ∝ 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 ) = p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) q ( z t ∣ z 1 : t − 1 , x 1 : t ) w t − 1 i {\color{blue}w_t^i}\propto\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})\color{blue}p(z_{1:t-1}|x_{1:t-1})}{q(z_t|z_{1:t-1},x_{1:t})\color{blue}q(z_{1:t-1}|x_{1:t-1})}=\frac{p(x_t|z_t)p(z_t|z_{t-1})}{q(z_t|z_{1:t-1},x_{1:t})}\color{blue}w_{t-1}^i wtiq(z1:tx1:t)p(z1:tx1:t)q(ztz1:t1,x1:t)q(z1:t1x1:t1)p(xtzt)p(ztzt1)p(z1:t1x1:t1)=q(ztz1:t1,x1:t)p(xtzt)p(ztzt1)wt1i

得到计算权重的的步骤

  • t − 1 t-1 t1 时刻,采样完成并计算得到权重
  • t t t 时刻,根据 q ( z t ∣ z 1 : t − 1 , x 1 : t ) q(z_t|z_{1:t-1},x_{1:t}) q(ztz1:t1,x1:t) 进行采样得到 z t i z_t^i zti,然后计算得到 N N N 个权重
  • 最后对权重归一化

SIS 算法会出现权值退化的情况,在一定时间后,可能会出现大部分权重很小,极少数较大,这是高维空间容易出现的情况,解决方法:

  • 重采样,以权重作为概率分布,重新在已经采样的样本中采样,然所有样本赋予相同权重。这个方法的思路是将权重作为概率分布,然后得到累积密度函数,在累积密度上取点(阶梯函数)
  • 选择合适的提议分布 q ( 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_{t-1}) q(ztz1:t1,x1:t)=p(ztzt1),即:直接选择其状态转移概率分布,粒子 z t i ∼ p ( z t ∣ z t − 1 i ) z^{i}_t\sim p(z_t|z^{i}_{t-1}) ztip(ztzt1i),这也称为生成与测试方法: w t i ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z t ∣ z t − 1 ) w t − 1 i = p ( x t ∣ z t ) w t − 1 i w_t^i\propto\frac{p(x_t|z_t)\cancel{p(z_t|z_{t-1})}}{\cancel{p(z_t|z_{t-1})}}{\color{blue}w_{t-1}^i }=p(x_t|z_t){\color{blue}w_{t-1}^i } wtip(ztzt1) p(xtzt)p(ztzt1) wt1i=p(xtzt)wt1i

采用重采样的 SIS 算法就是基本的粒子滤波算法。若选择上述提议分布,则称之为 SIR 算法。

参考文献

【1】粒子滤波
【2】粒子滤波算法
【3】Particle Filter Tutorial 粒子滤波:从推导到应用(四)
【4】粒子滤波(Particle filter)算法简介及MATLAB实现
【5】Particle Filter Tutorial 粒子滤波:从推导到应用(一)到( 四 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值