背景
在基于求逆分布的采样方法中,不免遇到不能求逆的复杂累计分布函数,此时可以借助于拒绝采样方法采样。
原理
拒绝采样的介绍通常从
π
\pi
π的计算或者圆的面积的计算开始。这里我们求面积为例。
已知:边长为
1
1
1的矩形,在不知道
π
\pi
π的值的情况下,求其内切圆面积。
采样方法求解:记
n
=
0
n=0
n=0; 在该矩形内均匀采样
(
x
,
y
)
(x,y)
(x,y)数据对,如果
x
2
+
y
2
≤
1
x^2+y^2\le1
x2+y2≤1, 则
n
=
n
+
1
n=n+1
n=n+1. 采样
M
M
M次后,面积
S
S
S计算:
S
=
n
/
M
S=n/M
S=n/M.
对于不能求逆的概率分布的采样,我们采用类似的思路。
假设待采样的分布为
p
(
z
)
p(z)
p(z), 甚至可以可以有更复杂的情况,我们仅仅知道分布
p
(
z
)
p(z)
p(z)的未归一化版本
p
~
(
z
)
\widetilde{p}(z)
p
(z):
p
(
z
)
=
p
~
(
z
)
Z
p
p(z)=\frac{\widetilde{p}(z)}{Z_p}
p(z)=Zpp
(z),
Z
p
Z_p
Zp 为归一化系数,很难计算,未知。(实际上,在统计学习中,经常遇到将一些函数
f
(
z
)
f(z)
f(z)归一化,当成概率对待,但是由于种种原因,不能得到归一化系数。)
在当前情况下,我们采样符合
p
~
(
z
)
\widetilde p(z)
p
(z)的样本集合。
此时需要选择一个容易采样的分布
q
(
z
)
q(z)
q(z),或者直接采样,或者需要求逆采样方法。
q
(
z
)
q(z)
q(z) 通常被称为proposal distribution。最好
q
(
z
)
q(z)
q(z)与
p
~
(
z
)
\widetilde p(z)
p
(z)有相似的形状。然后选择合适
k
k
k,使得
k
q
(
z
)
≥
p
~
(
z
)
kq(z)\ge \widetilde{p}(z)
kq(z)≥p
(z)对任意的
z
z
z 成立。为了提高采样效率,
k
q
(
z
)
kq(z)
kq(z) 最好刚好覆盖
p
~
(
z
)
\widetilde{p}(z)
p
(z)就好,如下图:
然后我们可以采样过程:
- 从 q ( z ) q(z) q(z)中采样 z 0 z_0 z0(实际是先在横轴定义域均匀分布中采样 z 0 ′ z'_0 z0′,经过逆变换得到符合分布 q ( z ) q(z) q(z)的 z 0 z_0 z0);
- 从均匀分布 [ 0 , k q ( z 0 ) ] [0, kq(z_0)] [0,kq(z0)] 中采样 u 0 u_0 u0;
- 如果
u
0
<
p
~
(
z
)
u_0<\widetilde {p}(z)
u0<p
(z)接受样本
z
0
z_0
z0, 否则拒绝。
这样经过 m m m次采样后(接受 n n n个样本),得到的样本集 { z i } i = 1 n \{z_i\}_{i=1}^{n} {zi}i=1n符合分布p(z).
证明
{
z
i
}
i
=
1
n
\{z_i\}_{i=1}^{n}
{zi}i=1n符合分布p(z):
http://blog.quantitations.com/inference/2012/11/24/rejection-sampling-proof
任意一次采样的接受概率计算如下(对所有可能被接受的
z
z
z的概率积分):
p
(
a
c
c
e
p
t
)
=
P
(
z
∈
q
(
z
)
且
u
0
<
p
~
(
z
)
)
p(accept)=P(z\in q(z) 且 u_0<\widetilde {p}(z))
p(accept)=P(z∈q(z)且u0<p
(z))
p
(
a
c
c
e
p
t
)
=
∫
p
~
(
z
)
k
q
(
z
)
q
(
z
)
d
z
=
1
k
∫
p
~
(
z
)
d
z
p(accept)=\int \frac{\widetilde{p}(z)}{kq(z)}q(z)dz=\frac{1}{k}\int\widetilde{p}(z)dz
p(accept)=∫kq(z)p
(z)q(z)dz=k1∫p
(z)dz
∫
k
q
(
z
)
d
z
=
k
\int kq(z)dz=k
∫kq(z)dz=k 为蓝线和x轴之间的面积;
∫
p
~
(
z
)
d
z
\int\widetilde{p}(z)dz
∫p
(z)dz 红线与x轴之间区域面积;
在高维的情况下,接受-拒绝采样会出现两个问题,第一是合适的q(x)q(x)分布比较难以找到,第二是很难确定一个合理的 k 值。这两个问题会导致拒绝率很高,无用计算增加。
[1]https://blog.csdn.net/jteng/article/details/54344766
[2]https://blog.csdn.net/u010159842/article/details/78959515