从非归一化密度中进行采样的计算效率最高的方法是什么?

机器算法验证 分布 贝叶斯 采样 马尔可夫链蒙特卡罗
2022-04-07 20:47:19

编辑:在做了更多研究之后,似乎切片采样可能是要走的路。我已经看到它在如何对 Gibbs 采样所需的单变量分布进行采样的上下文中提到了很多。对此有何想法/意见?还有其他可能更好的算法吗?

这是一个半统计半方法论的问题,所以请对任何类型的解决方案保持开放的态度。

我最近一直在使用 Gibbs Sampling 来运行贝叶斯模型并从它们的后验预测分布中进行采样。通常,我一直在使用共轭分布,例如高斯分布的线性回归β具有高斯先验和 Gamma 分布的噪声项ϵt. 但在我看来,MCMC 的部分真正价值应该是,与消息传递和变分算法不同,分布不一定需要是共轭的。从理论上讲,我应该能够使用任何分布,并且 Gibbs Sampling 应该仍然可以工作。

所以,一旦我有了分布P(θ|D)=P(D|θ)P(θ),我之前所做的是在纸上计算分布的形式,将其转换为我知道的分布并计算出它的参数,以便我可以从中采样。

我的问题是:

  1. 在这种情况下,使用常规 Metropolis-Hastings 比使用 Gibbs 抽样更好吗?
  2. 你知道做这种符号操作的好图书馆,所以我不必手动做吗?
  3. 如果找不到共轭分布,例如,如果我正在使用我自己发明的一些疯狂分布,那么可以最有效地从哪些算法中采样P(θ|D)尽管我不知道它的归一化常数?

我的主要兴趣是#3,因为它是一种包罗万象的解决方案——我知道拒绝抽样算法系列,但在运行抽样算法时我必须产生另一个抽样似乎很疯狂算法。解决此问题的最有效方法是什么?

非常感谢!

杰森

2个回答

首先,P(θ,D)=P(D|θ)P(θ)并不是P(θ|D). 也许它是一种类型,因为您将其称为非规范化版本。其次,您可能不需要运行两个拒绝采样算法,因为之前的P(θ)通常可以直接采样,然后你可以拒绝它P(D|θ). 什么是维度θ? 只有当您对多维分布的联合(或边际、期望等)感兴趣时,吉布斯才有意义。我认为 Metropolis Hastings 可能是有益的,如果直接从P(θ)和拒绝使用P(D|θ)导致整体接受率非常低。

我知道Mathematica 和SymPy中有一些符号数学功能。

这完全取决于系统的三个方面:

  • 模式数
  • 维度
  • 的相关结构θ

如果您希望所有参数都有一个唯一的解决方案,并且您的后验是单峰的,那么使用您刚才引用的所有方法进行采样非常容易,我不会再费心去进一步研究,因为您总是会以全局最大值结束的后部。

如果θ有很多坐标,切片采样可能仍然有效,尽管我不太了解这种方法。但是,作为 Gibbs 采样的一种形式,我觉得 Slice 采样有以下缺点。阅读Neal 2003年的文章第712页,切片采样按如下方式进行

(a) 画出一个实数值,y, 均匀地从(0,f(x0)),从而定义一个水平“切片”:S=x:y<f(x). 注意x0总是在S.

(b) 找到一个区间,I=(L,R), 大约x0包含切片的全部或大部分。

(c) 画出新的点,x1,从这个区间内的切片部分。

如果我没记错的话,步骤(b)实际上可能会非常痛苦,如果θ(在尼尔的符号中,xi) 高度相关。你最终会得到一个无限小的补丁I, 收敛会很慢。

我个人是Hybrid monte carlo (Duane 1987)的忠实粉丝,它是结合了分子动力学的蒙特卡罗(例如过度松弛,另请参见 Neal 论文的结尾)。它的优点是您提出了一致的更改θ的坐标,因为它们同时被修改。它带有您需要调整的其他参数,但我相信它真的很强大。

编辑:这里是参考。由于它是受版权保护的材料,我链接到期刊页面,您可以在其中尝试下载论文。 这个是免费 的这个需要付费订阅,但是如果你找的话可以在google上找到