正如我们已经看到的,本章中讨论的大部分采样算法只需要概率分布的函数形式,忽略一个 可乘的常数。因此,如果我们有
那么为了从中采样,标准化常数的值(也被称为划分函数)是不需要的。然而,关于的信息对于贝叶斯模型比较是有用的,因为它表示模型证据(即观测数据能够生成模型的概率),因此我们对它的值如何得到很感兴趣。我们假设在的状态空间中,对函数求和或积分是不可行的。
对于模型比较来说,我们所需的实际是两个模型的划分函数的比值。将这个比值与先验概率的比值相乘可以得到后验概率的比值。之后可以用这个比值来进行模型选择或者模型平均。
一种估计划分函数比值的方法是使用概率分布的重要采样,这个概率分布的能量函数 为,即
其中是从定义的概率分布中抽取的样本。如果概率分布的划分函数可以解析地计算,例如它是一个高斯分布,那么的绝对值可以得到。
如果重要采样分布很好地匹配概率分布,即比值变化不大,那么这种方法会产生准确的结果。在实际应用中,对于本书中考察的复杂的模型,我们无法找到一个可以很容易地解析计算的重要采样分布。
于是,另一种方法是使用从马尔科夫链中得到的样本来定义重要采样分布。如果马尔科夫链的转移概率为,样本集合为,那么采样分布可以写成
这可以直接应用于式(11.72)。
计算两个划分函数的比值的方法需要对应的概率分布较好地匹配。如果我们希望找到一个复杂的概率分布的划分函数的绝对的值,那么这是一个很大的问题,因为只有对于相对简单的概率分布才能够直接计算划分函数,因此尝试直接估计划分函数的比值是无法完成的。使用链(chaining)方法,这个问题可以解决(Neal, 1993; Barber and Bishop, 1997)。这种方法涉及到 连续引入中间分布,这些分布是在我们可以计算标准化系数Z1的简单分布和所求的复杂概率分布之间进行的内插。于是我们有
其中,中间的比值可以使用蒙特卡罗算法进行确定,与之前讨论的一样。一种建立中间系统序 列的方法是使用一个包含连续参数0 ≤ α ≤ 1的势函数,在两个概率分布之间进行内插,即
如果式(11.74)中的中间比值使用蒙特卡罗算法得到,那使用一个单一的马尔科夫链可能要相对于每个比值都重新设置一个马尔科夫链的方式可能更高效。在这种情况下,马尔科夫链初始时设置为系统,然后在某个合适的迭代次数之后,移到序列中的下一个概率分布。然而需要注意的是,系统必须在每个阶段保持与均衡分布接近。