粒子滤波是一种基于蒙特卡洛仿真的近似贝叶斯滤波算法。
这句话可以这么理解:粒子滤波是一种近似贝叶斯滤波,其可以近似为贝叶斯滤波的理论基础是蒙特卡洛法。这句话从原理上解释了粒子滤波,并且点明了粒子滤波的应用领域,即可以使用贝叶斯滤波的领域都可以使用粒子滤波。
下面简单介绍一下蒙特卡洛法和贝叶斯网络,二者都用到了概率论与数理统计的相关知识。
蒙特卡洛法
事件的概率可以用大量试验中发生的频率来估计,当样本容量足够大时,可以认为该事件的发生频率即为其概率。因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。
蒙特卡洛应用实例——蒲丰针实验
1777年,法国数学家蒲丰做一个奇特的实验,他在一张纸上画满了一条条距离相等的平行线,接着抓出了一大把准备好的小针,然后一根一根往纸上扔,并统计与平行线相交的针的数目。最终蒲丰投出了2212根针,统计有704根针与平行线相交。而这两个数字的比值正好近似为圆周率的值,我们从数学上进行简单解释。
假设平面上有无数条距离为单位1的等距平行线,现向该平面随机投掷一根长度为L的针(L<1),则可以计算该针与任一平行线相交的概率,如下图所示。
这里的随机投针指的是:针的中心点与最近的平行线间的距离X均匀地分布在区间[0,1/2]上,针与平行线的夹角均匀地分布在区间[0,
]上。此时,针与线相交的条件是:
![\frac{X}{sin\alpha} \le \frac{L}{2}](https://i-blog.csdnimg.cn/blog_migrate/6d22946864b441ebca910bc062570e2d.gif)
距离X与夹角的分布是相互独立的,因此二者的联合概率密度函数为:
![f_X(x)f_\alpha(w) = 2\frac{1}{\pi}](https://i-blog.csdnimg.cn/blog_migrate/bcb6073b72d0380ebe108187e8146cc2.gif)
从而针线相交的概率为:
![p = P(X\le \frac{L}{2}sin\alpha) = \int_0^\pi \int_0^{\frac{L}{2}sin\alpha}\frac{2}{x}dxdw = \frac{2L}{\pi}](https://i-blog.csdnimg.cn/blog_migrate/57d0caa7595699a1a0e18eaa78a76648.gif)
取L为0.5时,针线相交的概率即为圆周率的倒数。
蒙特卡洛应用实例——求解阴影部分面积
事实上,我们可以使用蒙特卡洛法求解两类问题,第一类是具有随机性质的问题,即某某事件发生的概率。另一类是不具有随机性质的确定性问题,如计算部分区域的面积,对于本来不是随机性质的确定性问题,就必须事先构造一个人为的概率过程,使得其中的某些参量恰好是所要求问题的解。
假如求取上述阴影部分面积,我们假定向上述区域投掷飞镖,飞镖扎进上述区域的任何一点的概率都相等(均匀分布)。这样我们投掷100次,经统计,有40次飞镖扎进了阴影部分,那么我们就可以用40/100 = 0.4来估计阴影部分的面积。
Monte Carlo方法主要步骤
①构造或描述概率过程
对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程。
对于本来不是随机性质的确定性问题,如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解,即将不具有随机性质的问题转化为随机性质的问题。
②从已知概率分布中抽样
构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量就成为实现蒙特卡洛方法模拟实验的基本手段,这也是蒙特卡洛方法被称为随机抽样的原因。随机数是实现蒙特卡洛模拟的基本工具
③建立各种估计量
构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。
贝叶斯滤波
系统建模
我们将状态量X作为我们要求解的变量,那么同一状态量随时间的递推关系即为状态方程:
![X(k) = f(X(k-1),U(k),W(k))](https://i-blog.csdnimg.cn/blog_migrate/22ef1d33dfe64176d93b00ab71f522e7.gif)
其中X(k)表示k时刻的状态,U(k)表示k时刻的控制量,W(k)表示系统的过程噪声。
同一时刻,状态量X与观测量Z之间的关系即为量测方程:
![Z(k) = h(X(k),V(k))](https://i-blog.csdnimg.cn/blog_migrate/88100cda28467f205e934b440fc5e074.gif)
式中Z(k)表示k时刻观测量(传感器测量结果),V(k)则表示传感器的测量噪声。
贝叶斯滤波的数学推导
我们通过控制量和观测量对系统的状态量进行概率分布估计。设:
![bel(X_t) = P(X_t|Z_{1:t},U_{i:t}) \\ \overline{bel}(X_t) = P(X_t|Z_{1:t-1},U_{1:t})](https://i-blog.csdnimg.cn/blog_migrate/e23f6acb73efb0a249156a5db68e6ca4.gif)
贝叶斯滤波公式推导可分为两步。
第一步为状态预测,即通过上一时刻的状态量和当前时刻的控制量预测当前时刻的状态量:
![\overline{bel}(X_t) = \int P(X_t|U_t,X_{t-1})bel(X_{t-1})dX_{t-1}](https://i-blog.csdnimg.cn/blog_migrate/db9508953af0cbb0b14ada404ad841e1.gif)
第二步为量测更新,即通过当前时刻的观测量来修正当前时刻状态量的预测量:
![bel(X_t) = \eta P(Z_t|X_t)\overline{bel}(X_t)](https://i-blog.csdnimg.cn/blog_migrate/238d0c38c07068c6922ff0532c0b61dd.gif)
式中代表归一化常数。
贝叶斯公式:
![P(X|Y,Z) = \frac{P(Y|X,Z)P(X|Z)}{P(Y|Z)}](https://i-blog.csdnimg.cn/blog_migrate/88416eac5147f0713c65390c700c87a0.gif)
①量测更新部分证明:
![P(X_t|Z_{1:t},U_{1:t}) = \frac{P(Z_t|X_t,Z_{1:t-1},U_{1:t})P(X_t|Z_{1:t-1},U_{1:t})}{P(Z_t|Z_{1:t-1},U_{1:t})} \\ =\eta P(Z_t|X_t,Z_{1:t-1},U_{1:t})P(X_t|Z_{1:t-1},U_{1:t})](https://i-blog.csdnimg.cn/blog_migrate/1e7ee6edc643dfa579f795abd771fc9e.gif)
假设当前时刻的观测量仅与当前时刻的状态量有关,即:
![P(Z_t|X_t,Z_{1:t-1},U_{1:t}) = P(Z_t|X_t)](https://i-blog.csdnimg.cn/blog_migrate/b1a48064210d11e120a0a2d004b7a30f.gif)
则:
![P(X_t|Z_{1:t},U_{1:t}) = \eta P(Z_t|X_t)\overline{bel}(X_t) \\ bel(X_t) = \eta P(Z_t|X_t)\overline{bel}(X_t)](https://i-blog.csdnimg.cn/blog_migrate/5384274a1fc0d819ae532eb468d7eaa2.gif)
量测更新部分得证。
全概率定理:
![P(X) = \int P(X|Y)P(Y)dY](https://i-blog.csdnimg.cn/blog_migrate/c63d19ea6ffd4fd5aa3603bbdba7ca9f.gif)
②状态预测部分证明:
![\overline{bel}(X_t) = P(X_t|Z_{1:t-1},U_{1:t}) \\ = \int P(X_t|X_{t-1},Z_{1:t-1},U_{1:t})P(X_{t-1}|Z_{1:t-1},U_{1:t})dX_{t-1}](https://i-blog.csdnimg.cn/blog_migrate/e7242f37b8cfbe970121641f26b7d216.gif)
假设当前时刻的状态量仅与前一时刻的状态量和当前时刻的控制量有关,即:
![P(X_t|X_{t-1},Z_{1:t-1},U_{1:t}) = P(X_t|X_{t-1},U_t)](https://i-blog.csdnimg.cn/blog_migrate/437f6c910240b487849f2709eebb81a9.gif)
同时:
![P(X_{t-1}|Z_{1:t-1},U_{1:t}) = P(X_{t-1}|Z_{1:t-1},U_{1:t-1})](https://i-blog.csdnimg.cn/blog_migrate/213e2f64691be7bc690661363b3ec4fc.gif)
综上:
![\overline{bel}(X_t) = \int P(X_t|X_{t-1},U_t) P(X_{t-1}|Z_{1:t-1},U_{1:t-1})dX_{t-1} \\ = \int P(X_t|X_{t-1},U_t) bel(X_{t-1})dX_{t-1}](https://i-blog.csdnimg.cn/blog_migrate/89be5704c3242ac320edda204beb1dbc.gif)
预测部分得证。
那么通过贝叶斯滤波,我可以用上一时刻状态量的分布,和当前时刻的控制量
当前时刻的观测量
,来估计当前时刻状态量的概率分布
。