本章中,我们希望解决的基本的问题涉及到关于⼀个概率分布p(z)寻找某个函数 f(z) 的期望。这⾥, z 的元素可能是离散变量、连续变量或者⼆者的组合。因此,在连续变量的情形下,我们希望计算下⾯的期望
我们假设,使⽤解析的⽅法精确地求出这种期望是⼗分复杂的。因此,我们采用采样的方法抽取出样本,计算出对应的值
本章的采样方法主要包括:重要采样、拒绝采样、蒙特卡罗采样、吉布斯采样、切片采样和混合蒙特卡罗采样等
基本采样方法
这里,我们研究从一个给定的概率分布中生成随机样本的方法
标准概率分布
这考虑如何从简单的非均匀分布中生成随机数。可以从均匀分布开始,利用变换的方法,形成所需要计算的概率分布,并求出这个概率分布的不定积分的反函数。
假设 z 在区间
这里,y所具有的分布是我们希望的得到的分布形式。对上式积分,有:
它就是 p(y) 的不定积分,因此 y=h−1(z) 。
这里存在两个难点:(1)变换 f 不容易构造(2)不定积分不一定容易求解
为了对非均匀分布采样,考虑另外的方法:拒绝采样和重要采样,但它们只能处理单变量概率分布的情况。
拒绝采样
拒绝采样的思想是,目前需要采样的概率分布形式复杂,我们引入相对简单的概率分布(提议分布,proposal distribution),这个概率分布能覆盖目标分布,然后直接在提议分布上采样,通过一定的准则选择拒绝还是接受当前的采样值。
假设我们希望从概率分布
z,我们能够很容易计算 p(z) ,即:
现在,我们引入简单的提议分布 q(z) 和常数k,使得:
则函数 kq(z) 被称为比较函数。整体情况下图说明。拒绝采样器的每个步骤涉及到⽣成两个随机数。⾸先,我们从概率分布 q(z) 中⽣成⼀个数 z0 。接下来,我们在区间 [0,kq(z0)] 上的均匀分布
中⽣成⼀个数 u0 。这对随机数在函数 kq(z) 的曲线下⽅是均匀分布。最后,如果 u0>widetildep(z0) ,那
么样本被拒绝,否则 u0 被保留。因此,如果它位于图11.4的灰⾊阴影部分,它就会被拒绝。这样,剩余的点对在曲线 widetildep(z) 下⽅是均匀分布的,因此对应的z值服从概率分布 p(z) 。
一个样本的接受率为 p˜(z)kq(z) ,因此整体样本的接受率为:
显然,k越大,整体接受率越低,因此k越低越好,但是k有需要满足限制 kq(z) 处处不小于 p˜(z)
一般而言, q(z) 的形式不啊后确定,可以直接基于概率分布 p(z) 构建提议分布的函数形式。首先,可以从 ln p(z) 的某些格点处开始计算,计算对应的切线,将各个切线连起来形成界限函数。然后从界限分布中采样,如果样本被接受,则他是所求概率分布的样本;反之,将它并入格点的机会中,计算新的切线,优化界限函数。随着格点数量的增加,界限函数对目标概率分布的近似效果逐渐变好。
缺点:因为目标概率分布的情况复杂,找到⼀个较好的提议分布和⽐较函数是⼀件相当困难的事情。此外,接受率随着维度的指数下降是拒绝采样的⼀个⼀般特征。虽然拒绝采样在⼀维或⼆维空间中是⼀个有⽤的⽅法,但是它不适⽤于⾼维空间
重要采样
这种采样方法主要用于估计概率分布的期望。与拒绝采样不同,重要采样不拒绝任何的采样结果,而是给提议分布上的采样结果赋予权重
同样假设直接从 p(z) 采样无法完成,但是给定z, p(z) 很容易计算。为了计算期望,我们均匀地对z空间采样,然后计算期望:
显然,这种采样是非常低小的,因为一般而言,目标概率分布都将它的大部分质量限制在z空间的一个很小的区域,也就是说只有很小部分的样本会对求合适产生贡献。
这里再次引入提议分布 q(z) ,期望可以表示为: