Paritcle Filter Tutorial 粒子滤波:从推导到应用(三)

五、重采样

       在应用SIS 滤波的过程中,存在一个退化的问题。就是经过几次迭代以后,很多粒子的权重都变得很小,可以忽略了,只有少数粒子的权重比较大。并且粒子权值的方差随着时间增大,状态空间中的有效粒子数较少。随着无效采样粒子数目的增加,使得大量的计算浪费在对估计后验滤波概率分布几乎不起作用的粒子上,使得估计性能下降,如图所示。



       通常采用有效粒子数来衡量粒子权值的退化程度,即

               Paritcle Filter Tutorial 粒子滤波:从推导到应用(三)_第1张图片

这个式子的含义是,有效粒子数越小,即权重的方差越大,也就是说权重大的和权重小的之间差距大,表明权值退化越严重。在实际计算中,有效粒子数可以近似为:

                

         在进行序贯重要性采样时,若上式小于事先设定的某一阈值,则应当采取一些措施加以控制。克服序贯重要性采样算法权值退化现象最直接的方法是增加粒子数,而这会造成计算量的相应增加,影响计算的实时性。因此,一般采用以下两种途径:(1)选择合适的重要性概率密度函数;(2)在序贯重要性采样之后,采用重采样方法。

      对于第一种方法:选取重要性概率密度函数的一个标准就是使得粒子权值的方差最小。关于这部分内容,还是推荐百度文库的那篇文章《粒子滤波理论》,他在这里也引申出来了几种不同的粒子滤波方法。

      这里着重讲第二种方法,重采样。

      重采样的思路是:既然那些权重小的不起作用了,那就不要了。要保持粒子数目不变,得用一些新的粒子来取代它们。找新粒子最简单的方法就是将权重大的粒子多复制几个出来,至于复制几个?那就在权重大的粒子里面让它们根据自己权重所占的比例去分配,也就是老大分身分得最多,老二分得次多,以此类推。下面以数学的形式来进行说明。

      前面已经说明了求某种期望问题变成了这种加权和的形式:

                   (1)

通过重采样以后,希望表示成:

               (2)

,注意对比(1)和(2)。是第k时刻的粒子。是k时刻重采样以后的粒子。其中n(i)是指粒子在产生新的粒子集时被复制的次数。(2)式中第一个等号说明重采样以后,所有的粒子权重一样,都是1/N,只是有的粒子多出现了n(i)次。

       思路有了,就看具体的操作方法了。在《On resampling algorithms for particle fi lters》 这篇paper里讲了四种重采样的方法。这四种方法大同小异。如果你接触过遗传算法的话,理解起来就很容易,就是遗传算法中那种轮盘赌的思想。

      在这里用个简单的例子来说明:

      假设有3个粒子,在第k时刻的时候,他们的权重分别是0.1, 0.1 ,0.8, 然后计算他们的概率累计和(matlab 中为cumsum() )得到: [0.1, 0.2, 1]。接着,我们用服从[0,1]之间的均匀分布随机采样3个值,假设为0.15 , 0.38 和 0.54。也就是说,第二个粒子复制一次,第三个粒子复制两次。

在MATLAB中一句命令就可以方便的实现这个过程:

       [~, j] = histc(rand(N,1), [0 cumsum(w')]); 关于histc的用法可以点击histc用法

对于上面的过程,还可以对着下面的图加深理解:

Paritcle Filter Tutorial 粒子滤波:从推导到应用(三)_第2张图片


Paritcle Filter Tutorial 粒子滤波:从推导到应用(三)_第3张图片

将重采样的方法放入之前的SIS算法中,便形成了基本粒子滤波算法。

Paritcle Filter Tutorial 粒子滤波:从推导到应用(三)_第4张图片

      重采样的思路很简单,但是当你仔细分析权重的计算公式时:

                  

会有疑问,权重大的就多复制几次,这一定是正确的吗?权重大,如果是分子大,即后验概率大,那说明确实应该在后验概率大的地方多放几个粒子。但权重大也有可能是分母小造成的,这时候的分子也可能小,也就是实际的后验概率也可能小,这时候的大权重可能就没那么优秀了。何况,这种简单的重采样会使得粒子的多样性丢失,到最后可能都变成了只剩一种粒子的分身。在遗传算法中好歹还引入了变异来解决多样性的问题。当然,粒子滤波里也有专门的方法:正则粒子滤波,有兴趣的可以查阅相关资料。

      至此,整个粒子滤波的流程已经清晰明朗了,在实际应用中还有一些不确定的就是重要性概率密度的选择。在下一章中,首先引出 SIR 粒子滤波,接着用SIR滤波来进行实践应用。





reference:

1. N. J. Gordon 《Beyond the Kalman Filter:Particle filters for tracking applications》

2. 百度文库《粒子滤波理论》

3. Jeroen D. Hol《On resampling algorithms for particle fi lters》

4. Particle filters: How to do resampling?       

5. Gabriel A. Terejanu  《Tutorial on Monte Carlo Techniques》

你可能感兴趣的:(排序算法)