• 机器学习笔记之粒子滤波(二)基于序列重要性采样的重采样


    引言

    上一节介绍了序列重要性采样处理的问题以及迭代过程的推导。本节针对序列重要性采样的问题,介绍基于序列重要性采样的重采样(Resampling)算法。

    回顾:序列重要性采样

    序列重要性采样(Sequential Importance Sampling)它是一种基于 动态模型假设重要性采样 相结合的通过找到相邻时刻重要性权重 之间关联关系的一种迭代算法

    这种蒙特卡洛方法 作为底层逻辑的算法,它并非对隐变量的后验概率分布 P ( I ∣ O ) \mathcal P(\mathcal I \mid \mathcal O) P(IO)直接求解,而是求解 P ( I ∣ O ) \mathcal P(\mathcal I \mid \mathcal O) P(IO)分布下的 期望结果 E I ∣ O [ f ( I ) ] \mathbb E_{\mathcal I \mid \mathcal O} [f(\mathcal I)] EIO[f(I)]
    E I ∣ O [ f ( O ) ] = ∫ I P ( I ∣ O ) ⋅ f ( O ) d I ≈ 1 N ∑ k = 1 N f ( i ( k ) ) ( i ( 1 ) , ⋯   , i ( N ) ∼ P ( I ∣ O ) ) EIO[f(O)]=IP(IO)f(O)dI1NNk=1f(i(k))(i(1),,i(N)P(IO))

    EIO[f(O)]=IP(IO)f(O)dIN1k=1Nf(i(k))(i(1),,i(N)P(IO))
    重要性采样(Importance Sampling) 引入一个易于采样的简单分布 Q ( I ) \mathcal Q(\mathcal I) Q(I),通过 采样结果 i ( k ) i^{(k)} i(k) 以及对应的 重要性权重 W ( k ) \mathcal W^{(k)} W(k) 来求解期望结果 E I ∣ O [ f ( I ) ] \mathbb E_{\mathcal I \mid \mathcal O} [f(\mathcal I)] EIO[f(I)]
    E I ∣ O [ f ( I ) ] = ∫ I Q ( I ) ⋅ [ f ( O ) ⋅ P ( I ∣ O ) Q ( I ) ] d I = E Q ( I ) [ f ( O ) ⋅ P ( I ∣ O ) Q ( I ) ] ≈ 1 N ∑ k = 1 N f ( i ( k ) ) ⋅ W ( k ) { W ( k ) = P ( i ( k ) ) Q ( i ( k ) ) i ( 1 ) , ⋯   , i ( N ) ∼ Q ( I ) EIO[f(I)]=IQ(I)[f(O)P(IO)Q(I)]dI=EQ(I)[f(O)P(IO)Q(I)]1NNk=1f(i(k))W(k){W(k)=P(i(k))Q(i(k))i(1),,i(N)Q(I)
    EIO[f(I)]=IQ(I)[f(O)Q(I)P(IO)]dI=EQ(I)[f(O)Q(I)P(IO)]N1k=1Nf(i(k))W(k){W(k)=Q(i(k))P(i(k))i(1),,i(N)Q(I)

    但重要性采样在滤波问题中的缺陷在于: W t ( k ) \mathcal W_t^{(k)} Wt(k)在求解过程中计算量较大,从而导致整个算法的时间复杂度较高
    W t ( k ) \mathcal W_t^{(k)} Wt(k)表示 t t t时刻第 k k k次采样的重要性权重;相关描述详见序列重要性采样介绍

    序列重要性采样通过找出相邻时刻重要性权重的关联关系求解重要性权重,从而实现简化运算的目的:
    该部分公式的解释同样详见序列重要性采样介绍
    W t = P ( i t ∣ o 1 : t ) Q ( i t ∣ o 1 : t ) ∝ P ( i 1 : t ∣ o 1 : t ) Q ( i 1 : t ∣ o 1 : t ) ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i 1 : t − 1 , o 1 : t ) ⋅ W t − 1 Wt=P(ito1:t)Q(ito1:t)P(i1:to1:t)Q(i1:to1:t)P(otit)P(itit1)Q(iti1:t1,o1:t)Wt1

    Wt=Q(ito1:t)P(ito1:t)Q(i1:to1:t)P(i1:to1:t)Q(iti1:t1,o1:t)P(otit)P(itit1)Wt1
    t t t时刻为例:

    • 在算法实践过程中,只需要从分布 Q \mathcal Q Q采集 t t t时刻的 N N N个样本:
      i t ( 1 ) , ⋯   , i t ( N ) ∼ Q ( i t ∣ i 1 : t − 1 , o 1 : t ) i_t^{(1)},\cdots,i_{t}^{(N)} \sim \mathcal Q(i_t \mid i_{1:t-1},o_{_{1:t}}) it(1),,it(N)Q(iti1:t1,o1:t)
    • 对应重要性权重 W t ( k ) \mathcal W_t^{(k)} Wt(k)可表示为:
      其中 P ( o t ∣ i t ) , P ( i t ∣ i t − 1 ) \mathcal P(o_t \mid i_t),\mathcal P(i_t \mid i_{t-1}) P(otit),P(itit1)是模型中的状态转移概率和发射概率, Q \mathcal Q Q分布为简化运算, i t i_t it的后验概率只和 i t − 1 i_{t-1} it1相关。
      W t ( k ) ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i 1 : t − 1 , o 1 : t ) ⋅ W t − 1 ( k ) ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i t − 1 , o 1 : t ) ⋅ W t − 1 ( k ) k = 1 , 2 , ⋯   , N W(k)tP(otit)P(itit1)Q(iti1:t1,o1:t)W(k)t1P(otit)P(itit1)Q(itit1,o1:t)W(k)t1k=1,2,,N
      Wt(k)Q(iti1:t1,o1:t)P(otit)P(itit1)Wt1(k)Q(itit1,o1:t)P(otit)P(itit1)Wt1(k)k=1,2,,N
    • 将求解的 t t t时刻重要性权重结果归一化处理
      { W t ( 1 ) , ⋯   , W t ( N ) } → ∑ k = 1 N W t ( k ) = 1 {W(1)t,,W(N)t}
      \sum_{k=1}^N \mathcal W_t^{(k)} = 1
      {Wt(1),,Wt(N)}k=1NWt(k)=1

      从而对应重要性采样可表示为如下形式:
      通过迭代求解的重要性权重 W T ( k ) \mathcal W_{T}^{(k)} WT(k)对应的归一化结果为 W ^ T ( k ) \hat {\mathcal W}_{T}^{(k)} W^T(k),并且该结果成为了新的概率分布。
      需要注意的是,并不是只有'最终时刻' T T T才执行归一化操作,而是每一次迭代均执行一次归一化操作。
      E I ∣ O [ f ( I ) ] ≈ 1 N ∑ k = 1 N f ( i ( k ) ) ⋅ W ( k ) = ∑ k = 1 N f ( i ( k ) ) ⋅ W ^ T ( k ) ( ∑ k = 1 N W ^ T ( k ) = 1 ) EIO[f(I)]1NNk=1f(i(k))W(k)=Nk=1f(i(k))ˆW(k)T(Nk=1ˆW(k)T=1)
      EIO[f(I)]N1k=1Nf(i(k))W(k)=k=1Nf(i(k))W^T(k)(k=1NW^T(k)=1)

    序列重要性采样对应的算法流程如下:

    算法Sequential Importance Sampling
    前提条件1. 已知 t − 1 t-1 t1时刻的重要性权重信息(归一化) W ^ t − 1 ( 1 ) , W ^ t − 1 ( 2 ) , ⋯   , W ^ t − 1 ( N ) \hat {\mathcal W}_{t-1}^{(1)},\hat {\mathcal W}_{t-1}^{(2)},\cdots,\hat {\mathcal W}_{t-1}^{(N)} W^t1(1),W^t1(2),,W^t1(N)
    t t t时刻算法过程1.  for   i = 1 , 2 , ⋯   , N i=1,2,\cdots,N i=1,2,,N
    2.     i t ( k ) ∼ Q ( i t ∣ i t − 1 , o 1 : t ) i_t^{(k)} \sim \mathcal Q(i_t \mid i_{t-1},o_{1:t}) it(k)Q(itit1,o1:t)
    3.     W t ( k ) ∝ W t − 1 ( k ) ⋅ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i t − 1 , o 1 : t ) \mathcal W_t^{(k)} \propto \mathcal W_{t-1}^{(k)} \cdot \frac{\mathcal P(o_t \mid i_t) \cdot \mathcal P(i_t \mid i_{t-1})}{\mathcal Q(i_t \mid i_{t-1},o_{1:t})} Wt(k)Wt1(k)Q(itit1,o1:t)P(otit)P(itit1)
    4.  end
    5. 归一化: W ^ t ( k ) → ∑ k = 1 N W ^ t ( k ) = 1 \hat {\mathcal W}_t^{(k)} \to \sum_{k=1}^{N} \hat {\mathcal W}_{t}^{(k)} = 1 W^t(k)k=1NW^t(k)=1

    基于这种序列重要性采样的滤波模型 被称为 序列重要性采样滤波(Sequential Importance Sampling Filter)

    重采样(Resampling)

    序列重要性采样的缺陷

    随着迭代步骤的增加,在迭代过程中,我们的重要性权重结果可能越来越不平稳。假设初始时刻得到如下标准化后的重要性权重结果如下:
    { W 1 ( 1 ) , W 1 ( 2 ) , ⋯   , W 1 ( N ) } \left\{\mathcal W_1^{(1)},\mathcal W_1^{(2)},\cdots,\mathcal W_1^{(N)}\right\} {W1(1),W1(2),,W1(N)}
    k k k次采样为例, t t t时刻的 k k k次采样的迭代过程表示如下:
    W t ( k ) ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i t − 1 , o 1 : t ) ⋅ W ^ t − 1 ( k ) ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i t − 1 , o 1 : t ) ⋅ P ( o t − 1 ∣ i t − 1 ) ⋅ P ( i t − 1 ∣ i t − 2 ) Q ( i t − 1 ∣ i t − 2 , o 1 : t − 1 ) ⋅ W ^ t − 2 ( k ) ∝ ⋯ ∝ P ( o t ∣ i t ) ⋅ P ( i t ∣ i t − 1 ) Q ( i t ∣ i t − 1 , o 1 : t ) ⋅ P ( o t − 1 ∣ i t − 1 ) ⋅ P ( i t − 1 ∣ i t − 2 ) Q ( i t − 1 ∣ i t − 2 , o 1 : t − 1 ) ⋯ P ( o 1 ∣ i 1 ) ⋅ P ( i 1 ) Q ( i 1 ∣ o 1 ) ⋅ W ^ 1 ( k ) W(k)tP(otit)P(itit1)Q(itit1,o1:t)ˆW(k)t1P(otit)P(itit1)Q(itit1,o1:t)P(ot1it1)P(it1it2)Q(it1it2,o1:t1)ˆW(k)t2P(otit)P(itit1)Q(itit1,o1:t)P(ot1it1)P(it1it2)Q(it1it2,o1:t1)P(o1i1)P(i1)Q(i1o1)ˆW(k)1

    Wt(k)Q(itit1,o1:t)P(otit)P(itit1)W^t1(k)Q(itit1,o1:t)P(otit)P(itit1)Q(it1it2,o1:t1)P(ot1it1)P(it1it2)W^t2(k)Q(itit1,o1:t)P(otit)P(itit1)Q(it1it2,o1:t1)P(ot1it1)P(it1it2)Q(i1o1)P(o1i1)P(i1)W^1(k)

    虽然在理想状况下,我们更希望 提议分布 Q \mathcal Q Q和原始分布 P \mathcal P P无限接近,即 P ( I ) Q ( I ) = 1 \frac{\mathcal P(\mathcal I)}{\mathcal Q(\mathcal I)} = 1 Q(I)P(I)=1,但真实情况下,这种情况是基本不可能发生的(要是 P \mathcal P P分布足够简单,还找什么’提议分布‘ Q \mathcal Q Q)。

    随着 迭代过程的增加,或者乘的项数增多最终的迭代结果可能出现如下情况:

    某些采样结果对应的重要性权重向其他采样的权重方向偏移

    这会导致权值分配不平衡,使得某些样本 对应的权值退化,从而使样本权重的方差很大。使用这种概率分布近似的期望结果显然是不合适的。

    使用重采样处理权值退化问题

    针对权值退化问题,常见的解决方式有:

    • 重新选择合适的提议分布 Q ^ \hat {\mathcal Q} Q^
    • 重采样(Resampling)

    重采样的核心在于

    • 序列重要性采样归一化的基础上,以归一化权重作为概率再一次进行采样
    • 再一次采样产生出的样本(粒子),它们的权重均完全相同
      这种操作本质上是将’归一化后的权重‘以’重采样样本数量比例来表示‘。

    将所有归一化后的重要性权重组合起来,组成一个概率分布。从该概率分布中采样的操作是很容易的。

    蒙特卡洛方法介绍——基于概率分布的采样方法中介绍过这种采样方式,具体做法即:

    • ( 0 , 1 ) (0,1) (0,1)均匀分布中随机选择一个结果
    • 将该结果映射到对应重要性权重的cdf函数上
    • 通过cdf函数,即可找到对应的重要性权重

    实际上,由于采样的随机性,以及采集样本(粒子)数量的有限性,这种操作极大程度地限制了重要性权重低的结果,甚至没有机会被采样出来

    再次得到的样本会汇聚在重要性权重较高的部分,从而改善了部分样本点的权值退化 问题。
    这里非常推荐大家看SmokeMirror博主对于粒子滤波的介绍,这里就不贴图了。
    并且称这种 序列重要性采样(Sequential Importance Sampling) + 重采样(Resampling)的方法为基本粒子滤波(Basic Particle Filter)

    下一节将介绍条件随机场(Conditional Random Field,CRF)

    相关参考:
    粒子滤波(Particle Filter)(自整理用)
    机器学习-粒子滤波3-重采样-Basic Particle Filter
    Particle Filter Resampling method

  • 相关阅读:
    Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器
    吐血总结!50道Python面试题集锦
    SpringCloud CircuitBreak, 熔断限流
    E. Sending a Sequence Over the Network(DP)
    Redis 缓存数据库
    探索AI搜索:天工AI,让信息获取更简单
    Android MediaCodec将h264实时视频流数据解码为yuv,并转换yuv的颜色格式为nv21
    【vue3源码】十、响应式API中的工具函数
    GPIO实验
    java-php-python-ssm篮球资讯网站计算机毕业设计
  • 原文地址:https://blog.csdn.net/qq_34758157/article/details/127651915