背景
概率图模型通常很复杂,难以精确求解。随机模拟等近似算法是处理复杂概率图模型的一种有效手段。许多近似算法的一个关键步骤是生成符合特定分布的样本。对于一些标准的概率分布(如均匀分布、正太分布、指数分布等),通常容易进行采样(例如Matlab 的 Statistics Toolbox 支持许多标准的概率分布)。但是对于复杂的概率分布,很难直接进行采样,因此,我们需要借助其他的手段。
在贝叶斯方法中,我们常需要根据观察到的数据集合 D ,估计模型参数
p(θ|D)=p(D|θ)p(θ)p(D)
其中
p(D)=∫θp(D|θ)p(θ) dθ
为归一化常数,常常难以计算(函数形式复杂,高维)。
我们下面的讨论将考虑从概率分布 p(z) 中采样, p(z) 可能是未归一化的,即有如下形式:
p(z)=1Zpp~(z)
其中
p~(z)
可以很容易地计算出来,但是
Zp
未知。
下面将介绍两种针对复杂概率分布的采样方法:接受-拒绝采样、重要性采样。
接受-拒绝采样(accept-rejct sampling)
接受-拒绝采样基于这样一个前提: 对一个随机变量取样, 等价于从这个变量所服从的密度函数下方的区域均匀取样。当然, 取样的结果是变量值,如果是一元变量, 取样后得到的是一元变量的值。
上图显示了采样的过程。我们需要生成符合概率分布 p(z) 的样本。 q(z) 表示选择的建议分布(proposal distribution)。建议分布应选择简单的分布(如正态分布),目的是容易直接进行采样。整个计算过程可以概括如下:
- 选择一个易于采样的建议分布 q(z)
- 寻找一个常数 k ,使
<