(交互)用于多模式后验的 MCMC

机器算法验证 采样 马尔可夫链蒙特卡罗 推理 收敛
2022-03-06 23:38:02

我正在尝试使用 MCMC 从具有许多模式的后部采样,这些模式彼此之间的距离特别远。似乎在大多数情况下,这些模式中只有一种包含我正在寻找的 95% hpd。我试图实现基于回火模拟的解决方案,但这并不能提供令人满意的结果,因为在实践中从一个“捕获范围”到另一个是昂贵的。

因此,在我看来,更有效的解决方案是从不同的起点运行许多简单的 MCMC,并通过使 MCMC 相互交互来深入研究主导解决方案。你知道是否有一些适当的方法来实现这样一个想法?

注意:我发现那篇论文http://lccc.eecs.berkeley.edu/Papers/dmcmc_short.pdf(分布式马尔可夫链蒙特卡洛,劳伦斯默里)看起来很接近我正在寻找的东西,但我真的不明白设计功能的Ri.

[编辑]:缺乏答案似乎表明我最初的问题没有明显的解决方案(使从不同起点从同一目标分布中采样的几个 MCMC 相互交互)。真的吗 ?为什么这么复杂?谢谢

4个回答

您应该尝试 multinest: https ://arxiv.org/pdf/0809.3437.pdf https://github.com/JohannesBuchner/MultiNest 这是一个贝叶斯推理引擎,可为您提供多模式分布的参数样本。

github 链接包含您按照说明编译和安装的多嵌套源代码。它还有一个更易于使用的 python 包装器。示例代码有一个用于约束您的参数的先前部分,以及一个包含您的可能性的可能性部分。设置文件包含您的所有设置,并在拟合后链接文件夹多嵌套输出。它会给你你的参数样本

首先,我建议寻找一种更好的方法,或者至少是一种具有更深入描述的方法,因为您所引用的论文中的“分布式马尔可夫链蒙特卡洛”似乎没有明确说明。优点和缺点没有很好地探索。有一种方法,最近出现在 arxiv 中,称为“虫洞哈密顿蒙特卡罗”,我建议检查一下。

回到您提供参考的论文,远程提案Ri(θi)描述得很模糊。在应用程序部分,它被描述为“在前面的 t/2 个样本上的最大似然高斯”。也许这意味着你平均最后的 t/2 值ith链?参考中给出的糟糕描述有点难以猜测。

[更新:] 在并行 MCMC 方法中可以找到多个链之间的交互以及将这一思想应用于从后验分布中采样,例如这里然而,运行多条链并迫使它们相互作用可能不适合多峰后验:例如,如果有一个非常明显的区域,其中大部分后验分布都集中,那么链的相互作用甚至可能通过坚持特定的区域,而不是探索其他不太明显的区域/模式。因此,我强烈建议寻找专为多模式问题设计的 MCMC。如果您想创建另一个/新方法,那么在您知道“市场”中有什么可用之后,您可以创建更有效的方法。

这似乎是计算统计中一个困难且持续存在的问题。但是,有一些不太先进的方法应该可以正常工作。

假设您已经找到了几种不同的后验模式,并且您很高兴这些是最重要的模式,并且这些模式周围的后验是否合理正常。然后,您可以计算这些模式下的 hessian(例如,在 R 中使用 optim 且 hessian=T),并且您可以将后验近似为法线(或 t 分布)的混合。参见 Gelman 等人的 p318-319。(2003 年)“贝叶斯数据分析”了解详情。然后,您可以使用正态/t 混合近似作为独立采样器中的提议分布,以从完整的后验中获取样本。

另一个我没有尝试过的想法是 Annealed Importance Sampling(Radford Neal,1998,链接在这里)。

尝试一种新的多模态 MCMC 方法,一种排斥吸引力的 Metropolis 算法(http://arxiv.org/abs/1601.05633)怎么样?这种多模式采样器使用单个调整参数(如 Metropolis 算法)并且易于实现。