滤波算法(贝叶斯滤波)

文章目录

  • 贝叶斯滤波
    • 融合多次观测信息对一个状态进行推理估计:
    • 离散时间的递归估计问题

贝叶斯滤波

p ( x ∣ y , z ) = p ( x , y , z ) p ( y , z ) = p ( y ∣ x , z ) p ( x , z ) p ( y , z ) = p ( y ∣ x , z ) p ( x ∣ z ) p ( z ) p ( y ∣ z ) p ( z ) = p ( y ∣ x , z ) p ( x ∣ z ) p ( y ∣ z ) \begin{aligned} p\left( \boldsymbol{x}| \boldsymbol{y},\boldsymbol{z}\right) &=\dfrac{p\left( \boldsymbol{x},\boldsymbol{y},\boldsymbol{z}\right) }{p\left( \boldsymbol{y},\boldsymbol{z}\right) }\\ &=\dfrac{p\left( \boldsymbol{y}| \boldsymbol{x},\boldsymbol{z}\right) p\left( \boldsymbol{x},\boldsymbol{z}\right) }{p\left( \boldsymbol{y},\boldsymbol{z}\right) }\\ &=\dfrac{p\left( \boldsymbol{y}| \boldsymbol{x},\boldsymbol{z}\right) p\left( \boldsymbol{x}| \boldsymbol{z}\right) p\left( \boldsymbol{z}\right) }{p\left( \boldsymbol{y}|\boldsymbol{z}\right) p\left( \boldsymbol{z}\right) }\\ &=\dfrac{p\left( \boldsymbol{y}| \boldsymbol{x},\boldsymbol{z}\right) p\left( \boldsymbol{x}| \boldsymbol{z}\right) }{p\left( \boldsymbol{y}| \boldsymbol{z}\right) } \end{aligned} p(xy,z)=p(y,z)p(x,y,z)=p(y,z)p(yx,z)p(x,z)=p(yz)p(z)p(yx,z)p(xz)p(z)=p(yz)p(yx,z)p(xz)

融合多次观测信息对一个状态进行推理估计:

z k \boldsymbol{z}_k zk看作 y \boldsymbol{y} y,把 z 1 : k \boldsymbol{z}_{1:k} z1:k看作 z \boldsymbol{z} z代入上式,假设所有观测是独立的
p ( x ∣ z 1 : k ) = p ( z k ∣ x , z 1 : k − 1 ) p ( x ∣ z 1 : k − 1 ) p ( z k ∣ z 1 : k − 1 ) = η k p ( z k ∣ x ) p ( x ∣ z 1 : k − 1 ) = η k p ( z k ∣ x ) η k − 1 p ( z k − 1 ∣ x ) p ( x ∣ z 1 : k − 2 ) = [ ∏ i k η i p ( z i ∣ x ) ] p ( x ) \begin{aligned} p\left( \boldsymbol{x}| \boldsymbol{z}_{1:k}\right) &=\dfrac{p\left( \boldsymbol{z}_{k}| \boldsymbol{x},\boldsymbol{z}_{1:k-1}\right) p\left( \boldsymbol{x}| \boldsymbol{z}_{1:k-1}\right) }{p\left( \boldsymbol{z}_{k}| \boldsymbol{z}_{1:k-1}\right) }\\ &=\eta_{k}p\left( \boldsymbol{z}_{k}| \boldsymbol{x}\right) p\left( \boldsymbol{x}| \boldsymbol{z}_{1:k-1}\right) \\ &=\eta _{k}p\left( \boldsymbol{z}_{k}| \boldsymbol{x}\right) \eta _{k-1}p\left( \boldsymbol{z}_{k-1}| \boldsymbol{x}\right) p\left( \boldsymbol{x}| \boldsymbol{z}_{1:k-2}\right) \\ &=\left[\prod\limits_i^{k} \eta _{i} p\left( \boldsymbol{z}_{i}| \boldsymbol{x}\right)\right] p\left( \boldsymbol{x}\right) \end{aligned} p(xz1:k)=p(zkz1:k1)p(zkx,z1:k1)p(xz1:k1)=ηkp(zkx)p(xz1:k1)=ηkp(zkx)ηk1p(zk1x)p(xz1:k2)=[ikηip(zix)]p(x)
z 1 : k \boldsymbol{z}_{1:k} z1:k是已知观测量,与变量 x \boldsymbol{x} x无关, η k = 1 p ( z k ∣ z 1 : k − 1 ) \eta_k=\frac{1}{p\left( \boldsymbol{z}_k| \boldsymbol{z}_{1:k-1}\right)} ηk=p(zkz1:k1)1为归一化常数。

离散时间的递归估计问题

定义如下运动和观测模型:
运 动 方 程 : x k = f ( x k − 1 , u k , w k ) , k = 1 , ⋯   , K 观 测 方 程 : y k = h ( x k , n k ) , k = 0 , ⋯   , K \begin{aligned} 运动方程:&\boldsymbol{x}_k=\boldsymbol{f}(\boldsymbol{x}_{k-1},\boldsymbol{u}_k,\boldsymbol{w}_k),\quad k=1,\cdots,K \\ 观测方程:&\boldsymbol{y}_k=\boldsymbol{h}(\boldsymbol{x}_k,\boldsymbol{n}_k),\quad k=0,\cdots ,K \end{aligned} xk=f(xk1,uk,wk),k=1,,Kyk=h(xk,nk),k=0,,K
其中 k k k为时间下标,最大值为 K K K。函数 f ( ⋅ ) \boldsymbol{f}(\cdot) f()为非线性的运动模型,函数 h ( ⋅ ) \boldsymbol{h}(\cdot) h()为非线性的观测模型。我们并没有假设任何随机变量是高斯的,但是假设系统具有马尔可夫性

当一个随机过程在给定现在状态及所有过去状态的情况下,其未来状态的条件概率仅依赖于当前状态;换句话说,未来状态与到达当前状态的历史路径是条件独立的。那么此随机过程成为马尔科夫过程,或者说它具有马尔可夫性。

贝叶斯滤波使用过去及当前的测量,构造一个完成的PDF来刻画当前状态。

假设所有观测是独立的,将最新的观测分解出来
p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k ) ⏟ k 时 刻 状 态 估 计 后 验 概 率 = p ( y k ∣ x k , x ˇ 0 , u 1 : k , y 0 : k − 1 ) p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) p ( y k ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) = η p ( y k ∣ x k ) ⏟ k 时 刻 观 测 模 型 p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) ⏟ k 时 刻 状 态 估 计 先 验 概 率 \begin{aligned} \underbrace{p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k}\right)}_{k时刻状态估计后验概率} &=\dfrac{p\left( \boldsymbol{y}_{k}| \boldsymbol{x}_{k},\check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right)}{p\left( \boldsymbol{y}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right)} \\ &=\eta \underbrace{p\left( \boldsymbol{y}_{k}| \boldsymbol{x}_{k}\right)}_{k时刻观测模型} \underbrace{p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right)}_{k时刻状态估计先验概率} \end{aligned} k p(xkxˇ0,u1:k,y0:k)=p(ykxˇ0,u1:k,y0:k1)p(ykxk,xˇ0,u1:k,y0:k1)p(xkxˇ0,u1:k,y0:k1)=ηk p(ykxk)k p(xkxˇ0,u1:k,y0:k1)
将注意力集中在第二个因子,引入隐藏状态 x k − 1 \boldsymbol{x}_{k-1} xk1,并对其进行积分:
p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) = ∫ p ( x k , x k − 1 ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) d x k − 1 = ∫ p ( x k ∣ x k − 1 , x ˇ 0 , u 1 : k , y 0 : k − 1 ) p ( x k − 1 ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) d x k − 1 \begin{aligned} p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) &=\int p\left( \boldsymbol{x}_{k},\boldsymbol{x}_{k-1}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) {\rm d}\boldsymbol{x}_{k-1}\\ &=\int p\left(\boldsymbol{x}_{k}\right| \boldsymbol{x}_{k-1},\check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}) p\left( \boldsymbol{x}_{k-1}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) {\rm d}\boldsymbol{x}_{k-1} \end{aligned} p(xkxˇ0,u1:k,y0:k1)=p(xk,xk1xˇ0,u1:k,y0:k1)dxk1=p(xkxk1,xˇ0,u1:k,y0:k1)p(xk1xˇ0,u1:k,y0:k1)dxk1
隐藏状态的引入可以看作是边缘化的反向操作,目前为止,没有引入任何近似。
由于我们的系统具有马尔可夫性,可以写出:
p ( x k ∣ x k − 1 , x ˇ 0 , u 1 : k , y 0 : k − 1 ) = p ( x k ∣ x k − 1 , u k ) p ( x k − 1 ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) = p ( x k − 1 ∣ x ˇ 0 , u 1 : k , y 0 : k − 1 ) \begin{aligned} p\left( \boldsymbol{x}_{k}| \boldsymbol{x}_{k-1},\check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) &=p\left( \boldsymbol{x}_{k}| \boldsymbol{x}_{k-1},\boldsymbol{u}_{k}\right) \\ p\left( \boldsymbol{x}_{k-1}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) &=p\left( \boldsymbol{x}_{k-1}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k-1}\right) \end{aligned} p(xkxk1,xˇ0,u1:k,y0:k1)p(xk1xˇ0,u1:k,y0:k1)=p(xkxk1,uk)=p(xk1xˇ0,u1:k,y0:k1)
将上式代入原始的式子得
p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k ) = η p ( y k ∣ x k ) ⏟ 用 g ( ⋅ ) 进 行 更 新 ∫ p ( x k ∣ x k − 1 , u k ) ⏟ 用 f ( ⋅ ) 进 行 预 测 p ( x k − 1 ∣ x ˇ 0 , u 1 : k − 1 , y 0 : k − 1 ) ⏟ 先 验 置 信 度 d x k − 1 \begin{aligned} p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k} \right) =\eta \underbrace{p\left( \boldsymbol{y}_{k}| \boldsymbol{x}_{k}\right)}_{用g(\cdot)进行更新} \int \underbrace{p\left( \boldsymbol{x}_{k}| \boldsymbol{x}_{k-1},\boldsymbol{u}_{k}\right)}_{用f(\cdot)进行预测} \underbrace{p\left( \boldsymbol{x}_{k-1}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k-1},\boldsymbol{y}_{0:k-1}\right)}_{先验置信度} {\rm d}\boldsymbol{x}_{k-1} \end{aligned} p(xkxˇ0,u1:k,y0:k)=ηg() p(ykxk)f() p(xkxk1,uk) p(xk1xˇ0,u1:k1,y0:k1)dxk1
可以看到该式具有预测-校正的形式。在预测阶段,先验置信度 p ( y k ∣ x k ) p\left( \boldsymbol{y}_{k}| \boldsymbol{x}_{k}\right) p(ykxk)通过输入 u k \boldsymbol{u}_k uk和运动模型 f ( ⋅ ) \boldsymbol{f}(\cdot) f()在时间上进行前向传播。在校正阶段,则通过观测模型 g ( ⋅ ) \boldsymbol{g}(\cdot) g()来更新预测估计状态,并得到后验置信度 p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k ) p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k} \right) p(xkxˇ0,u1:k,y0:k)
贝叶斯滤波器虽然精确,但也仅仅是一个精美的数学产物;除了线性高斯的情况外,在实际中它基本不可能实现。主要原因有两个,为此我们需要适当地作一些近似:

  1. 概率密度函数存在于在无限维的空间中(与所有的连续函数一样),因此需要无限的存储空间(即无限的参数)来完全表示置信度 p ( x k ∣ x ˇ 0 , u 1 : k , y 0 : k ) p\left( \boldsymbol{x}_{k}| \check{\boldsymbol{x}}_{0},\boldsymbol{u}_{1:k},\boldsymbol{y}_{0:k} \right) p(xkxˇ0,u1:k,y0:k)。为了克服存储空间的问题,需要将这个置信度大致地表现出来。一种方法是将该函数近似为高斯(即只关心一、二阶矩:均值和协方差),另一种方法是使用有限数量的随机样本来近似。我们将在后面研究这两种方法。
  2. 贝叶斯滤波器的积分在计算上十分耗时,它需要无限的计算资源去计算精确的结果。为了克服计算资源的问题,必须对积分进行近似。一种方法是对运动和观测模型进行线性化,然后对积分进行闭式求解。另一种方法是使用蒙特卡罗积分( Monte Carlo integration )。我们也会在后面研究这两种方法。

递归式状态估计的大部分研究集中在如何用更好的近似来处理这两个问题。这些方面已经有了相当大的进展,值得我们更加详细地去研究。因此,在接下来的几节中,我们将介绍一些经典和现代的方法来近似贝叶斯滤波。但是,我们必须牢记贝叶斯滤波的假设:马尔科夫性。我们必须不断审视:如果对贝叶斯滤波器做这些近似,马尔科夫性会发生什么改变?

你可能感兴趣的:(SLAM,算法,概率论)