16 粒子滤波

文章目录

  • 16 粒子滤波
    • 16.1 背景介绍
      • 16.1.1 Particle Filter是什么?
      • 16.1.2 Patricle Filter的状态如何转移?
      • 16.1.3 如何通过采样求解Particle Filter
    • 16.2 重要性采样
      • 16.2.1 重要性采样方法
      • 16.2.2 Sequential Importance Sampling
      • 16.2.3 Resampling
      • 16.2.4 采样总结——Basic Particle Filter
    • 16.3 具体算法——SIR Filter

16 粒子滤波

16.1 背景介绍

16.1.1 Particle Filter是什么?

Dynamic Model包含:

  • HMM——关注Decoding问题
  • Linear Dynamic System——关注Filtering问题
  • Patricle Filter——Nan-Linear,Nan-Gauss,关注Filtering问题

16.1.2 Patricle Filter的状态如何转移?

在HMM中有 λ = ( π , A , B ) \lambda = (\pi, A, B) λ=(π,A,B),用于表示状态转移矩阵和发射矩阵。

由于Linear Dynamic System和Particle Filter中的隐变量与观测变量连续,状态转移矩阵和发射矩阵不用矩阵A、B表示,表示为:
Z t = g ( Z t − 1 , u , ε ) ↦ A X t = h ( Z t , u , δ ) ↦ B \begin{align} Z_t & = g(Z_{t-1}, u, \varepsilon) \mapsto A \\ X_t & = h(Z_t, u, \delta) \mapsto B \end{align} ZtXt=g(Zt1,u,ε)A=h(Zt,u,δ)B
在Kalman Filter中我们假设以上两个公式均为线性,且噪声为Gauss。表示为:
Z t = A ⋅ Z t − 1 + B + ε ε ∽ N ( 0 , Q ) X t = C ⋅ Z t + D + δ δ ∽ N ( 0 , R ) \begin{align} Z_t & = A \cdot Z_{t-1} + B + \varepsilon & \varepsilon \backsim N(0, Q) \\ X_t & = C \cdot Z_t + D + \delta & \delta \backsim N(0, R) \end{align} ZtXt=AZt1+B+ε=CZt+D+δεN(0,Q)δN(0,R)

回顾:Kalman Filter通过预测+更新的方式求解Filtering问题

Step1: 求解Prediction问题
P ( Z t ∣ x 1 , … , x t − 1 ) = ∫ Z t − 1 P ( Z t ∣ Z t − 1 ) ⋅ P ( Z t − 1 ∣ x 1 , … , x t − 1 ) d Z t − 1 P(Z_{t} | x_1, \dots, x_{t-1}) = \int_{Z_{t-1}} P(Z_t | Z_{t-1}) \cdot P(Z_{t-1} | x_1, \dots, x_{t-1}) {\rm d}_{Z_{t-1}} P(Ztx1,,xt1)=Zt1P(ZtZt1)P(Zt1x1,,xt1)dZt1
Step2: 求解update问题
P ( Z t ∣ x 1 , … , x t ) ∝ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ x 1 , … , x t − 1 ) P(Z_{t} | x_1, \dots, x_t) \propto P(X_t | Z_t) \cdot P(Z_t | x_1, \dots, x_{t-1}) P(Ztx1,,xt)P(XtZt)P(Ztx1,,xt1)
具体可以通过条件概率相互求解的公式求解。

而在Particle Filter中转移方程非线形非高斯,只能通过采样的方式求解。

16.1.3 如何通过采样求解Particle Filter

由于转移方程非线性非高斯,所以只能采取近似方法求解Filtering问题。这里使用Monte Carlo Method,通过采样求取期望:
P ( Z ∣ X ) → E Z ∣ X [ f ( z ) ] = ∫ Z f ( z ) ⋅ P ( Z ∣ X ) d Z ≈ 1 N ∑ i = 1 N f ( Z ( i ) ) P(Z|X) \rightarrow E_{Z|X}[f(z)] = \int_Z {f(z) \cdot P(Z|X)} {\rm d}Z \approx \frac{1}{N} \sum_{i=1}^N f(Z^{(i)}) P(ZX)EZX[f(z)]=Zf(z)P(ZX)dZN1i=1Nf(Z(i))
其中 Z ( i ) Z^{(i)} Z(i)为样本,且 Z ( 1 ) , Z ( 2 ) , … , Z ( N ) ∽ P ( Z ∣ X ) Z^{(1)}, Z^{(2)}, \dots, Z^{(N)} \backsim P(Z|X) Z(1),Z(2),,Z(N)P(ZX)

16.2 重要性采样

16.2.1 重要性采样方法

已知问题:
E [ f ( Z ) ] = ∫ f ( Z ) p ( Z ) d Z E[f(Z)] = \int f(Z) p(Z) {\rm d}Z E[f(Z)]=f(Z)p(Z)dZ
求解方法:

  1. p ( Z ) p(Z) p(Z)的分布复杂,无法直接采样,所以我们引入已知分布 q ( Z ) q(Z) q(Z) q ( Z ) q(Z) q(Z)也称为提议分布(Proposed dist):
    E [ f ( Z ) ] = ∫ f ( Z ) p ( Z ) d Z = ∫ f ( Z ) ⋅ p ( Z ) q ( Z ) ⋅ q ( Z ) d Z = 1 N ∑ i = 1 N f ( Z ( i ) ) ⋅ p ( Z ) q ( Z ) \begin{align} E[f(Z)] & = \int f(Z) p(Z) {\rm d}Z \\ & = \int f(Z) \cdot \frac{p(Z)}{q(Z)} \cdot q(Z) {\rm d}Z\\ & = \frac{1}{N} \sum_{i=1}^{N} f(Z^{(i)}) \cdot \frac{p(Z)}{q(Z)} \end{align} E[f(Z)]=f(Z)p(Z)dZ=f(Z)q(Z)p(Z)q(Z)dZ=N1i=1Nf(Z(i))q(Z)p(Z)

  2. 其中 p ( Z ) q ( Z ) \frac{p(Z)}{q(Z)} q(Z)p(Z)被称为weight,表示为 w ( i ) w^{(i)} w(i),用于表示提议分布与实际分布之间的相似度:
    E [ f ( Z ) ] = 1 N ∑ i = 1 N f ( Z ( i ) ) ⋅ w ( i ) E[f(Z)] = \frac{1}{N} \sum_{i=1}^{N} f(Z^{(i)}) \cdot w^{(i)} E[f(Z)]=N1i=1Nf(Z(i))w(i)

所以我们通过采样可以求出 f ( Z ( i ) ) f(Z^{(i)}) f(Z(i)),然后我们的目标就是求出对应的 w ( i ) w^{(i)} w(i)

16.2.2 Sequential Importance Sampling

引入SIS的原因:

  • 由于Filtering问题在递推过程中求解的是 P ( Z t ∣ X 1 : t ) P(Z_t | X_{1:t}) P(ZtX1:t),所以对应就会有 w t ( i ) = P ( Z t ∣ X 1 : t ) q ( Z t ( i ) ∣ X 1 : t ) w_t^{(i)} = \frac{P(Z_t | X_{1:t})}{q(Z_t^{(i)} | X_{1:t})} wt(i)=q(Zt(i)X1:t)P(ZtX1:t),但是随着 t t t增加,每次 w w w都要求 N N N遍,时间开销大。所以引入Sequential Importance Sampling,通过递推的方式求解 w w w w t − 1 ( i ) → w t ( i ) w_{t-1}^{(i)} \rightarrow w_t^{(i)} wt1(i)wt(i))。

推导过程:

  1. 已知:
    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})} wt(i)q(Z1:tX1:t)P(Z1:tX1:t)

  2. 分解 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 ( Z 1 : t , X 1 : t ) P ( X 1 : t ) = 1 C ⋅ P ( X t ∣ Z 1 : t , X 1 : t − 1 ) ⋅ P ( Z t , X 1 : t − 1 ) = 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 ) = 1 C ⋅ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ Z t − 1 ) ⋅ P ( Z 1 : t − 1 , X 1 : t − 1 ) = 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 ) = D C ⋅ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ Z t − 1 ) ⋅ P ( Z 1 : t − 1 ∣ X 1 : t − 1 ) \begin{align} P(Z_{1:t} | X_{1:t}) & = \frac{P(Z_{1:t}, X_{1:t})}{P(X_{1:t})} \\ & = \frac{1}{C} \cdot P(X_t | Z_{1:t}, X_{1:t-1}) \cdot P(Z_t, X_{1:t-1}) \\ & = \frac{1}{C} \cdot P(X_t | Z_{t}) \cdot P(Z_t| Z_{1:t-1}, X_{1:t-1}) \cdot P(Z_{1:t-1}, X_{1:t-1}) \\ & = \frac{1}{C} \cdot P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1}) \cdot P(Z_{1:t-1}, X_{1:t-1}) \\ & = \frac{1}{C} \cdot P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1}) \cdot P(Z_{1:t-1}| X_{1:t-1}) \cdot P(X_{1:t-1}) \\ & = \frac{D}{C} \cdot P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1}) \cdot P(Z_{1:t-1}| X_{1:t-1}) \end{align} P(Z1:tX1:t)=P(X1:t)P(Z1:t,X1:t)=C1P(XtZ1:t,X1:t1)P(Zt,X1:t1)=C1P(XtZt)P(ZtZ1:t1,X1:t1)P(Z1:t1,X1:t1)=C1P(XtZt)P(ZtZt1)P(Z1:t1,X1:t1)=C1P(XtZt)P(ZtZt1)P(Z1:t1X1:t1)P(X1:t1)=CDP(XtZt)P(ZtZt1)P(Z1:t1X1:t1)
    通过以上推导可将 P ( Z 1 : t ∣ X 1 : t ) P(Z_{1:t} | X_{1:t}) P(Z1:tX1:t)分解为由 P ( Z 1 : t − 1 ∣ X 1 : t − 1 ) P(Z_{1:t-1}| X_{1:t-1}) P(Z1:t1X1:t1)组成的公式

  3. 分解 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 ( 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 − 1 ) \begin{align} q(Z_{1:t} | X_{1:t}) & = q(Z_t | Z_{1:t-1}, X_{1:t}) \cdot q(Z_{1:t-1}| X_{1:t}) \\ & = q(Z_t | Z_{1:t-1}, X_{1:t}) \cdot q(Z_{1:t-1}| X_{1:t-1}) \end{align} q(Z1:tX1:t)=q(ZtZ1:t1,X1:t)q(Z1:t1X1:t)=q(ZtZ1:t1,X1:t)q(Z1:t1X1:t1)

  4. 结合起来就是:
    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 ) ∝ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ Z t − 1 ) q ( Z t ∣ Z t − 1 , X 1 : t ) ⋅ w t − 1 ( i ) \begin{align} 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}) \cdot P(Z_t| Z_{t-1}) \cdot P(Z_{1:t-1}| X_{1:t-1})}{q(Z_t | Z_{1:t-1}, X_{1:t}) \cdot q(Z_{1:t-1}| X_{1:t-1})} \\ & \propto \frac{P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1})}{q(Z_t | Z_{1:t-1}, X_{1:t})} \cdot w_{t-1}^{(i)} \\ & \propto \frac{P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1})}{q(Z_t | Z_{t-1}, X_{1:t})} \cdot w_{t-1}^{(i)} \end{align} wt(i)q(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)wt1(i)q(ZtZt1,X1:t)P(XtZt)P(ZtZt1)wt1(i)

具体可以表示为一个算法:

条件:t-1时刻的采样已完成 → w t − 1 ( i ) \rightarrow w_{t-1}^{(i)} wt1(i)已知。

t时刻:
for i = 1 to N:
Z t ( i ) ∽ q ( Z t ∣ Z t − 1 , X 1 : t ) Z_t^{(i)} \backsim q(Z_t | Z_{t-1}, X_{1:t}) Zt(i)q(ZtZt1,X1:t) // 采样
w t ( i ) ∝ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ Z t − 1 ) q ( Z t ∣ Z t − 1 , X 1 : t ) ⋅ w t − 1 ( i ) w_t^{(i)} \propto \frac{P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1})}{q(Z_t | Z_{t-1}, X_{1:t})} \cdot w_{t-1}^{(i)} wt(i)q(ZtZt1,X1:t)P(XtZt)P(ZtZt1)wt1(i) // 计算
end

w t ( i ) w_t^{(i)} wt(i)要归一化, ∑ i = 1 N w t ( i ) \sum_{i=1}^{N} w_t^{(i)} i=1Nwt(i)

但是通过SIS直接求解有一个问题: w t ( i ) w_t^{(i)} wt(i)的权值会退化——有的大有的小,随着维度上升,可能会出现如: w t ( 1 ) → 1 w_t^{(1)} \rightarrow 1 wt(1)1 w t ( N ) → 0 w_t^{(N)} \rightarrow 0 wt(N)0的情况。解决方案有:

  1. Resampling——重采样(通过别的方法重新采样)
  2. 选择一个合适的proposed dist q(Z)

16.2.3 Resampling

这里介绍一种最简单的重采样方法。

倘若第一遍的采样结果为第二列:

数据编号 权重(weight) pdf cdf
x ( 1 ) x^{(1)} x(1) 0.1 0.1 0.1
x ( 2 ) x^{(2)} x(2) 0.1 0.1 0.2
x ( 3 ) x^{(3)} x(3) 0.8 0.8 1

我们将权重假设为当前数据的概率,通过权重建立概率密度函数,并求出其分布函数,即可通过分段函数进行采样。

这样的优点是可以将数据集中在权重大的地方。

16.2.4 采样总结——Basic Particle Filter

结合:重要性采样方法+SIS+Resampling,就是简单的粒子滤波求解方案:Basic Particle Filter

16.3 具体算法——SIR Filter

Particle Filter整体就是通过每个时刻的采样迭代地计算权重,通过Monte Carlo方法预测的方法。

根据16.2.2已知迭代公式为:
w t ( i ) ∝ P ( X t ∣ Z t ) ⋅ P ( Z t ∣ Z t − 1 ) q ( Z t ∣ Z t − 1 , X 1 : t ) ⋅ w t − 1 ( i ) w_t^{(i)} \propto \frac{P(X_t | Z_{t}) \cdot P(Z_t| Z_{t-1})}{q(Z_t | Z_{t-1}, X_{1:t})} \cdot w_{t-1}^{(i)} wt(i)q(ZtZt1,X1:t)P(XtZt)P(ZtZt1)wt1(i)
其中我们令 q ( Z t ∣ Z t − 1 , X 1 : t ) q(Z_t | Z_{t-1}, X_{1:t}) q(ZtZt1,X1:t)为用于采样的分布,我们假设采样的分布就是状态转移函数:
q ( Z t ∣ Z t − 1 , X 1 : t ) = p ( Z t ∣ Z t − 1 ( i ) ) q(Z_t | Z_{t-1}, X_{1:t}) = p(Z_t | Z_{t-1}^{(i)}) q(ZtZt1,X1:t)=p(ZtZt1(i))
可以简化计算,算法可以总结为"generate and test":

  1. generate表示采样:采样的方式变成了:
    Z t ( i ) ∽ q ( Z t ∣ Z t − 1 , X 1 : t )    ⟹    Z t ( i ) ∽ p ( Z t ∣ Z t − 1 ( i ) ) Z_t^{(i)} \backsim q(Z_t | Z_{t-1}, X_{1:t}) \implies Z_t^{(i)} \backsim p(Z_t | Z_{t-1}^{(i)}) Zt(i)q(ZtZt1,X1:t)Zt(i)p(ZtZt1(i))

  2. test表示通过权重的迭代计算进行预测:变成了:
    w t ( i ) ∝ P ( X t ∣ Z t ( i ) ) ⋅ w t − 1 ( i ) w_t^{(i)} \propto P(X_t | Z_{t}^{(i)}) \cdot w_{t-1}^{(i)} wt(i)P(XtZt(i))wt1(i)

上面的方法总结下来就是:SIR Filter(Sampling-Importance-Resampling)——SIS + Resampling + ( q ( Z t ∣ Z t − 1 , X 1 : t ) = p ( Z t ∣ Z t − 1 ( i ) ) q(Z_t | Z_{t-1}, X_{1:t}) = p(Z_t | Z_{t-1}^{(i)}) q(ZtZt1,X1:t)=p(ZtZt1(i))

你可能感兴趣的:(机器学习-白板推导,机器学习,算法)