上一节介绍了序列重要性采样处理的问题以及迭代过程的推导。本节针对序列重要性采样的问题,介绍基于序列重要性采样的重采样(Resampling)算法。
序列重要性采样(Sequential Importance Sampling)它是一种基于 动态模型假设 与 重要性采样 相结合的通过找到相邻时刻重要性权重 之间关联关系的一种迭代算法。
这种将蒙特卡洛方法 作为底层逻辑的算法,它并非对隐变量的后验概率分布
P
(
I
∣
O
)
\mathcal P(\mathcal I \mid \mathcal O)
P(I∣O)直接求解,而是求解
P
(
I
∣
O
)
\mathcal P(\mathcal I \mid \mathcal O)
P(I∣O)分布下的 期望结果
E
I
∣
O
[
f
(
I
)
]
\mathbb E_{\mathcal I \mid \mathcal O} [f(\mathcal I)]
EI∣O[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
)
)
EI∣O[f(O)]=∫IP(I∣O)⋅f(O)dI≈1NN∑k=1f(i(k))(i(1),⋯,i(N)∼P(I∣O))
而重要性采样(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)]
EI∣O[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
)
EI∣O[f(I)]=∫IQ(I)⋅[f(O)⋅P(I∣O)Q(I)]dI=EQ(I)[f(O)⋅P(I∣O)Q(I)]≈1NN∑k=1f(i(k))⋅W(k){W(k)=P(i(k))Q(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(it∣o1:t)Q(it∣o1:t)∝P(i1:t∣o1:t)Q(i1:t∣o1:t)∝P(ot∣it)⋅P(it∣it−1)Q(it∣i1:t−1,o1:t)⋅Wt−1
以
t
t
t时刻为例:
其中
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(ot∣it),P(it∣it−1)是模型中的状态转移概率和发射概率,
Q
\mathcal Q
Q分布为简化运算,
i
t
i_t
it的后验概率只和
i
t
−
1
i_{t-1}
it−1相关。通过迭代求解的重要性权重
W
T
(
k
)
\mathcal W_{T}^{(k)}
WT(k)对应的归一化结果为
W
^
T
(
k
)
\hat {\mathcal W}_{T}^{(k)}
W^T(k),并且该结果成为了新的概率分布。需要注意的是,并不是只有'最终时刻'
T
T
T才执行归一化操作,而是每一次迭代均执行一次归一化操作。序列重要性采样对应的算法流程如下:
| 算法 | Sequential Importance Sampling |
|---|---|
| 前提条件 | 1. 已知 t − 1 t-1 t−1时刻的重要性权重信息(归一化) 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^t−1(1),W^t−1(2),⋯,W^t−1(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(it∣it−1,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)∝Wt−1(k)⋅Q(it∣it−1,o1:t)P(ot∣it)⋅P(it∣it−1) 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)。
随着迭代步骤的增加,在迭代过程中,我们的重要性权重结果可能越来越不平稳。假设初始时刻得到如下标准化后的重要性权重结果如下:
{
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)t∝P(ot∣it)⋅P(it∣it−1)Q(it∣it−1,o1:t)⋅ˆW(k)t−1∝P(ot∣it)⋅P(it∣it−1)Q(it∣it−1,o1:t)⋅P(ot−1∣it−1)⋅P(it−1∣it−2)Q(it−1∣it−2,o1:t−1)⋅ˆW(k)t−2∝⋯∝P(ot∣it)⋅P(it∣it−1)Q(it∣it−1,o1:t)⋅P(ot−1∣it−1)⋅P(it−1∣it−2)Q(it−1∣it−2,o1:t−1)⋯P(o1∣i1)⋅P(i1)Q(i1∣o1)⋅ˆW(k)1
虽然在理想状况下,我们更希望 提议分布
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)。
随着 迭代过程的增加,或者乘的项数增多,最终的迭代结果可能出现如下情况:
某些采样结果对应的重要性权重向其他采样的权重方向偏移。
这会导致权值分配不平衡,使得某些样本 对应的权值退化,从而使样本权重的方差很大。使用这种概率分布近似的期望结果显然是不合适的。
针对权值退化问题,常见的解决方式有:
重采样的核心在于:
这种操作本质上是将’归一化后的权重‘以’重采样样本数量比例来表示‘。将所有归一化后的重要性权重组合起来,组成一个概率分布。从该概率分布中采样的操作是很容易的。
在蒙特卡洛方法介绍——基于概率分布的采样方法中介绍过这种采样方式,具体做法即:
实际上,由于采样的随机性,以及采集样本(粒子)数量的有限性,这种操作极大程度地限制了重要性权重低的结果,甚至没有机会被采样出来。
再次得到的样本会汇聚在重要性权重较高的部分,从而改善了部分样本点的权值退化 问题。
这里非常推荐大家看SmokeMirror博主对于粒子滤波的介绍,这里就不贴图了。
并且称这种 序列重要性采样(Sequential Importance Sampling) + 重采样(Resampling)的方法为基本粒子滤波(Basic Particle Filter)。
下一节将介绍条件随机场(Conditional Random Field,CRF)
相关参考:
粒子滤波(Particle Filter)(自整理用)
机器学习-粒子滤波3-重采样-Basic Particle Filter
Particle Filter Resampling method