采样方法之拒绝采样

背景

在基于求逆分布的采样方法中,不免遇到不能求逆的复杂累计分布函数,此时可以借助于拒绝采样方法采样。

原理

拒绝采样的介绍通常从 π \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+y21, 则 n = n + 1 n=n+1 n=n+1. 采样 M M M次后,面积 S S S计算:
S = n / M S=n/M S=n/M.
图1:红色点计数为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)就好,如下图:
在这里插入图片描述
然后我们可以采样过程:

  1. 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);
  2. 从均匀分布 [ 0 , k q ( z 0 ) ] [0, kq(z_0)] [0,kq(z0)] 中采样 u 0 u_0 u0;
  3. 如果 u 0 &lt; p ~ ( z ) u_0&lt;\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 &lt; p ~ ( z ) ) p(accept)=P(z\in q(z) 且 u_0&lt;\widetilde {p}(z)) p(accept)=P(zq(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=k1p (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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值