背景
在基于求逆分布的采样方法中,不免遇到不能求逆的复杂累计分布函数,此时可以借助于拒绝采样方法采样。
原理
拒绝采样的介绍通常从π的计算或者圆的面积的计算开始。这里我们求面积为例。
已知:边长为1的矩形,在不知道π的值的情况下,求其内切圆面积。
采样方法求解:记n=0; 在该矩形内均匀采样(x,y)数据对,如果x2+y2≤1, 则n=n+1. 采样M次后,面积S计算:
S=n/M.

对于不能求逆的概率分布的采样,我们采用类似的思路。
假设待采样的分布为p(z), 甚至可以可以有更复杂的情况,我们仅仅知道分布p(z)的未归一化版本p(z):
p(z)=Zpp(z), Zp 为归一化系数,很难计算,未知。(实际上,在统计学习中,经常遇到将一些函数f(z)归一化,当成概率对待,但是由于种种原因,不能得到归一化系数。)
在当前情况下,我们采样符合p(z)的样本集合。
此时需要选择一个容易采样的分布q(z),或者直接采样,或者需要求逆采样方法。q(z) 通常被称为proposal distribution。最好q(z)与p(z)有相似的形状。然后选择合适k,使得kq(z)≥p(z)对任意的z 成立。为了提高采样效率,kq(z) 最好刚好覆盖 p(z)就好,如下图:

然后我们可以采样过程:
- 从q(z)中采样z0(实际是先在横轴定义域均匀分布中采样z0′,进过变换得到符合分布q(z)的z0);
- 从均匀分布[0,kq(z0)] 中采样u0;
- 如果u0<p(z)接受样本z0, 否则拒绝。
这样经过m次采样后得到的样本集{zi}i=1n符合分布p(z).
并且:
红色曲线下面积等于:mn
任意一次采样的接受概率计算如下(也就是两步采样值落入红线与x轴之间区域面积与蓝线和x轴之间的面积的比值):
对所有可能被接受的z的概率积分(加权求和):
p(accept)=P(z∈q(z)且u0<p(z))
p(accept)=∫kq(z)p(z)q(z)dz=k1∫p(z)dz
∫kq(z)dz=k 为蓝线和x轴之间的面积;
∫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