件实现。另外,频繁的重采样会降低对测量数据中野值的鲁棒性。由于重采样后的粒子集中包含了多个重复的粒子,重采样过程可能导致粒子多样性的丧失,此类问题在噪声较小的环境下更加严重。因此,一个好的重采样算法应该在增加粒子多样性和减少权值较小的粒子数目之间进行有效折衷。
图2.7为粒子滤波算法的示意图,该图描述了粒子滤波算法包含的时间更新、观测更新
(i)和重采样三个步骤。k?1时刻的先验概率由N个权值为1/N的粒子xk在时间?1近似表示。(i)更新过程中,通过系统状态转移方程预测每个粒子在k时刻的状态xk。经过观测值后,更(i)新粒子权值wk。重采样过程舍弃权值较小的粒子,代之以权值较大的粒子,粒子的权值被
重新设置为1/N。
图2.7 SIR算法示意图 Fig. 2.7 SIR algorithm
标准的粒子滤波算法流程为: (1) 粒子集初始化,k?0:
对于i?1,2,(2) 对于k?1,2,(i)N,N,由先验p(x0)生成采样粒子{x0}i?1
,循环执行以下步骤:
(i)N,N,从重要性概率密度中生成采样粒子{xk}i?1,计
① 重要性采样:对于i?1,2,(i)算粒子权值wk,并进行归一化;
(i)(i)(i)② 重采样:对粒子集{xk,wk}进行重采样,重采样后的粒子集为{xk,1/N};
N?k?③ 输出:计算k时刻的状态估计值:x?xi?1(i)k(i)。 wk粒子滤波中的权值退化问题是不可避免的。虽然重采样方法可以在一定程度上缓解权值退化现象,但重采样方法也会带来一些其它的问题。重采样需要综合所有的粒子才能实现,限制了粒子滤波的并行计算。另外,根据重采样的原则,粒子权值较大的粒子必然会更多的被选中复制,经过若干步迭代后,必然导致相同的粒子越来越多,粒子将缺乏多样性,可能出现粒子退化现象,从而使状态估计产生较大偏差。针对粒子退化问题,一个有效的解决方法是增加马尔可夫蒙特卡洛(Markov chain monte carlo,MCMC)移动步骤[141]。马尔可夫链蒙特卡洛方法(如Gibbs采样、Metropolis-Hastings采样等)利用不可约马尔可夫过程可逆平稳分布的性质,将马尔可夫过程的平稳分布视为目标分布,通过构造马尔可夫链产生来自目标分布的粒子。粒子退化问题是由于重采样使得粒子过分集中在某些状态上而导致的,对重采样后的粒子进行马尔可夫跳转可以提高粒子群的多样性,同时保证跳转后的粒子同样能够准确的描述既定的后验分布。设粒子分布服从后验概率p(x0:k|y1:k),实施核为k(x0:k|x0:k)的马尔科夫链变换之后,若满足
?k(x0:k|x0:k)p(x0:k|y1:k)dx0:k?p(x0:k|y1:k) (2.34)
便可以得到一组满足既定后验概率分布的粒子集合,且这组新的粒子可能移动到状态空间中更为有利的位置。
采用Metropolis-Hastings算法,从概率密度q(x)中生成粒子的具体步骤为: (1) 从[0,1]之间的均匀分布中生成随机数vU[0,1];
*(i)p(xk|xk);
*(2) 从重要性概率密度函数中生成采样粒子xk*(i)*?q(xk)p(xk|xk)?**(3) 如果v?min?1,,接受,否则,拒绝 xx?kk(i)*(i)?q(xk)p(xk|xk)?另一种解决粒子退化问题的方法是正则化粒子滤波[142]。传统的重采样方法是在离散分布中采样实现,即
{x,w}(i)k(i)k1N(i)(i)p(x0k|y1:k)=??k?(xk?xk) (2.35)
Ni?1在过程噪声比较小的情况下,传统的粒子滤波方法(如SIR方法)的粒子退化现象比较严重;正则化粒子滤波首先采用密度估计理论计算后验密度的连续分布,然后从连续分布中采样来生成采样粒子,以提高粒子集的多样性,即
{x,w}(i)k(i)k1N(i)(i)p(xk|y1:k)=??kKh(xk?xk) (2.36)
Ni?1其中Kh?1xK(),h为带宽,K()为核函数。在实际计算中,为了减少计算量,通常nhxh采用高斯核函数。