当使用非马尔可夫蒙特卡罗抽样方法时,例如接受-拒绝抽样,我们选择一个密度和一个已知常数这样充当我们目标分布的覆盖函数.
由于我们只能访问未知归一化常数的目标分布,因此我们并不真正知道归一化目标分布是什么样的。那么如何定义一个覆盖所有值的覆盖函数呢?到目前为止,我看到的唯一例子是基本模拟,其中的分析形式已经知道了。
当使用非马尔可夫蒙特卡罗抽样方法时,例如接受-拒绝抽样,我们选择一个密度和一个已知常数这样充当我们目标分布的覆盖函数.
由于我们只能访问未知归一化常数的目标分布,因此我们并不真正知道归一化目标分布是什么样的。那么如何定义一个覆盖所有值的覆盖函数呢?到目前为止,我看到的唯一例子是基本模拟,其中的分析形式已经知道了。
让, 在哪里是归一化常数。在很多情况下,只有已知并且是未知的。
要实施拒绝抽样,您需要这样,对于所有人,
那么对于所有人,
你不知道或者,但你应该能够找到, 如果你可以玩. (对于更高维度的分布,这更难做到)
算法接受时大于来自均匀随机变量的实现,这与大于实现。因此,该算法可以实现,即使不知道。
举个例子,考虑密度与
我目前不知道该密度的归一化常数是多少。(嗯,我可以说它不会离 1 太远,所以我有一些概念,但是能够在一个数量级内猜测它并没有多大帮助)
不难看出为了(如果不明显,看两边的四次方,从中肯定是清楚的),所以通过对称性无处不在,因此很明显在实线上。
因此,我可以使用放大 2 倍的标准拉普拉斯分布作为主要函数。(有一些更有效的选择,但使用这个简单的情况就足够了。请注意,我们现在确定未缩放密度的积分必须小于 2。)
我仍然不太清楚有问题的密度集成到什么程度,但我可以从中模拟。
事实上,这是一个(刚刚超过)一百万个值的直方图:
(并且刚刚运行代码来模拟这些值,我现在知道归一化常数是什么,因为您可以从接受率中得出一个近似值。未缩放密度的积分约为 1.397 - 用R中的积分函数,它给出1.396785,绝对误差<0.00011——所以归一化常数大约是它的倒数。)
更一般的选择原则是
其中是归一化目标,是提议密度。
例如,对于和
我们将有和
但是,如果您的目标未标准化,那么您只能靠运气尝试。(如果我错了请纠正我)