Basic Monte Carlo Sampling
应用场所
粒子滤波:针对非线性、非高斯分布的模型,用采到的样本表示概率分布(target PDF),求解 p ( z t ∣ x 1 : t ) p(z_t | x_{1:t}) p(zt∣x1:t)(根据1到t时刻的观测变量x求解t时刻隐变量z)
重要性采样(IS)
-
目标:计算服从于target PDF分布的函数 f ( z ) f(z) f(z)的期望,通过应用Monte Carlo方法在概率分布中抽取N个样本,则
p ( y ) = E [ f ( z ) ] ≈ 1 N ∑ i = 1 N f ( z i ) p(\mathbf{y})=E[f(z)] \approx\frac{1}{N}\sum_{i=1}^{N}f(z_i) p(y)=E[f(z)]≈N1i=1∑Nf(zi)
但如果概率分布比较复杂,则可以通过q(z)(proposal distribution)作为桥梁(importance sampling):
E [ f ( z ) ] = ∫ z f ( z ) p ( z ) d z = ∫ z f ( x ) p ( z ) q ( z ) q ( z ) d z = ∑ i = 1 N f ( z i ) p ( z i ) q ( z i ) E[f(z)] = \int_zf(z)p(z)dz = \int_zf(x)\frac{p(z)}{q(z)}q(z)dz = \sum_{i=1}^Nf(z_i)\frac{p(z_i)}{q(z_i)} E[f(z)]=∫zf(z)p(z)dz=∫zf(x)q(z)p(z)q(z)dz=i=1∑Nf(zi)q(zi)p(zi)
直接采样,然后对每个样本应用权重得到期望的近似估计,最后进行权重归一化。 -
在滤波问题求解 p ( z t ∣ x 1 : t ) p(z_t | x_{1:t}) p(zt∣x1:t)时,权重表达式:
w t i = p ( z t i ∣ x 1 : t ) q ( z t i ∣ x 1 : t ) w_t^i = \frac{p(z_{t}^i | x_{1:t})}{q(z_{t}^i| x_{1:t})} wti=q(zti∣x1:t)p(zti∣x1:t) -
例子
先从q分布得到L个样本 y ~ ( ℓ ) \tilde{\mathbf{y}}^{(\ell)} y~(ℓ),然后计算权重 w ( ℓ ) w^{(\ell)} w(ℓ),最后进行权重归一化得到每个样本对应的权重 w ~ ( ℓ ) \tilde{w}^{(\ell)} w~(ℓ)
序列重要性采样(SIS)
- 求解
p
(
z
1
:
t
∣
x
1
:
t
)
p(z_{1:t} | x_{1:t})
p(z1:t∣x1:t)
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})} wti∝q(z1:t∣x1:t)p(z1:t∣x1:t)
p ( z 1 : t ∣ x 1 : t ) ∝ p ( x 1 : t , z 1 : t ) = p ( x t ∣ z 1 : t , x 1 : t − 1 ) p ( z 1 : t , x 1 : t − 1 ) = 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 ) = p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 : t − 1 , x 1 : t − 1 ) ∝ p ( x t ∣ z t ) p ( z t ∣ z t − 1 ) p ( z 1 : t − 1 ∣ x 1 : t − 1 ) p(z_{1:t} | x_{1:t}) \propto p(x_{1:t}, z_{1:t}) =p(x_t |z_{1:t},x_{1:t-1})p(z_{1:t}, x_{1:t-1}) \\=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}) \\=p(x_t | z_t)p(z_t|z_{t-1})p(z_{1:t-1},x_{1:t-1}) \\ \propto p(x_t | z_t)p(z_t|z_{t-1})p(z_{1:t-1}|x_{1:t-1}) p(z1:t∣x1:t)∝p(x1:t,z1:t)=p(xt∣z1:t,x1:t−1)p(z1:t,x1:t−1)=p(xt∣zt)p(zt∣z1:t−1,x1:t−1)p(z1:t−1,x1:t−1)=p(xt∣zt)p(zt∣zt−1)p(z1:t−1,x1:t−1)∝p(xt∣zt)p(zt∣zt−1)p(z1:t−1∣x1:t−1)
指定
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
−
1
)
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-1})
q(z1:t∣x1:t)=q(zt∣z1:t−1,x1:t)q(z1:t−1∣x1:t−1)
得到:
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
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)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})} = \frac{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
wti∝q(z1:t∣x1:t)p(z1:t∣x1:t)∝q(zt∣z1:t−1x1:t)q(z1:t−1∣x1:t−1)p(xt∣zt)p(zt∣zt−1)p(z1:t−1∣x1:t−1)=q(zt∣z1:t−1x1:t)p(xt∣zt)p(zt∣zt−1)wt−1i
- 在t-1时刻采样并计算权重
- t时刻根据 q ( z t ∣ z 1 : t − 1 x 1 : t ) q(z_{t}|z_{1:t-1} x_{1:t}) q(zt∣z1:t−1x1:t)采样得到N个样本 z t i z_t^i zti,并计算得到N个权重
- 权重归一化
SIS 应用于Filtering
通常Filtering问题求解目标为t时刻隐变量的后验 p ( z t ∣ x 1 : t ) p(z_t | x_{1:t}) p(zt∣x1:t),但SIS为了简化运算求解目标为 p ( z 1 : t ∣ x 1 : t ) p(z_{1:t} | x_{1:t}) p(z1:t∣x1:t)
- 根据隐变量z的状态转移方程得到先验分布 p ( z t ∣ z t − 1 ) p(z_t|z_{t-1}) p(zt∣zt−1)
- 根据观测变量x和隐变量z的状态转移方程得到似然函数 p ( x t ∣ z 1 : t ) p(x_t | z_{1:t}) p(xt∣z1:t)
- 设定proposal distribution q ( z ) q(z) q(z)为隐变量z的先验分布 p ( z t ∣ z t − 1 ) p(z_t|z_{t-1}) p(zt∣zt−1)
- 计算t时刻第 ℓ \ell ℓ个样本的权重 w ( ℓ ) w^{(\ell)} w(ℓ)然后进行权重归一化
SIS 存在的问题及改善(SIR)
- 问题:权重退化
一段时间后,大部分样本的权重会逼近0 - 加入重采样(Resampling):
Sequential importance resampling(SIR) or
Sequential importance sampling and resampling(SIS/R)):
思路是将权重作为概率分布,得到累计概率密度函数(CDF),然后在CDF上取点。
算法流程:
- 输入:
L个SIS产生的 y ~ ( ℓ ) \tilde{\mathbf{y}}^{(\ell)} y~(ℓ)和对应的权重 w ( ℓ ) w^{(\ell)} w(ℓ) - 初始化:
新的样本集合 s t s_t st为空
样本权重 w ( ℓ ) w^{(\ell)} w(ℓ)的累积密度函数cdf 的第一个值 c 1 c_1 c1为0。
i为1
- 计算权重 w ( ℓ ) w^{(\ell)} w(ℓ)的cdf
- 从(0, 1 L \frac{1}{L} L1)区间采样 u 1 u_1 u1
- 根据 u 1 u_1 u1为L个样本生成对应的 u ℓ u_{\ell} uℓ
- 遍历输入样本和权重,如果第 ℓ {\ell} ℓ个样本的 u ℓ u_{\ell} uℓ大于 c i c_i ci,则i+1,并将第i个样本放入新的样本集合 s t s_t st,新的权重为 1 L \frac{1}{L} L1
总结:SIR算法为SIS得到样本和权重之后应用重采样,得到新的L个样本,并且每个样本的权重都是 1 L \frac{1}{L} L1