人们用于贝叶斯推理的教科书MCMC算法有哪些众所周知的改进?


21

当我为某些问题编写蒙特卡洛模拟代码时,并且该模型非常简单,我使用了非常基础的教科书Gibbs采样。当无法使用Gibbs采样时,我编写了几年前学到的教科书Metropolis-Hastings。我对此的唯一想法是选择跳跃分布或其参数。

我知道有成百上千的专门方法可以改善这些教科书的选择,但我通常从不考虑使用/学习它们。通常感觉是要付出很多努力来改善已经很好地进行的工作。

但是最近我一直在思考,也许没有新的通用方法可以改善我一直在做的事情。自从发现这些方法以来已有数十年了。也许我真的过时了!

有没有众所周知的替代Metropolis-Hasting的方法:

  • 相当容易实现,
  • 像MH一样普遍适用
  • 并始终在某种意义上提高MH的结果(计算性能,准确性等)?

我知道针对非常专业的模型进行了一些非常专业的改进,但是每个人都使用一些我不知道的常规知识吗?


1
您是说Markov连锁店Monte Carlo吗?我可以想到的教科书对蒙特卡洛模拟的改进涉及对立和/或分层抽样,以及准蒙特卡洛。但是,仅提及Gibbs和Metropolis-Hastings表示贝叶斯计算。
StasK

@StasK,是的,我主要对贝叶斯模型和统计物理模型感兴趣(这只是对类似吉布斯分布p(x)= 1 / Z exp(-E(x)/ T)的贝叶斯推断)。对不起,我没有提到。
拉斐尔·卡尔萨维里尼

3
(+1)好吧,twalk是“最近”发布并已经在R,Python和Matlab中实现的一种不错的通用自适应算法。虽然效果很好,但是使用其他方法再次检查始终是一个好习惯。顺便说一句,MH是在R包mcmc中实现的。当然,还有许多其他功能,但是其中大多数都没有以这种普遍性级别实现和/或难以实现。时下另一个受欢迎的地区是顺序蒙特卡洛。我希望这有帮助。

2
您可能已经知道这一点,但是切片采样非常容易实现,并且避免了典型的“随机游走” Metropolis算法的某些陷阱。传统Metropolis算法的一个问题是随机游走类型的行为。他们没有有目的地朝着良好状态前进,而是跌跌撞撞,缓慢地向着良好地区前进。这是利用梯度信息的方法(例如HMC)背后的动机,但是切片采样也属于这一阵营,并且更加自动化。
家伙

1
我对ABC几乎一无所知,但是如果有人能解释一下ABC和MCMC方法之间的区别,我将很高兴...
Manoel Galdino

Answers:


20

我不是任何一个专家,但我认为无论如何我都会把他们放在那里看看社区的想法。欢迎更正。

一种越来越流行的方法,其实现起来并非十分简单,被称为汉密尔顿蒙特卡洛Hamiltonian Monte Carlo)(有时称为混合蒙特卡洛)。如Radford Neal 在本文中所述,它使用具有势能和动能的物理模型来模拟球在参数空间周围的滚动。物理模型需要大量的计算资源,因此您趋向于获得更少的更新,但是更新之间的相关性往往较低。HMC是新的STAN软件背后的引擎,该软件正被开发为BUGS或JAGS的更高效,更灵活的替代品,用于统计建模。

还有一整套方法涉及“加热”马尔可夫链,您可以将其视为向模型引入热噪声并增加对低概率状态进行采样的机会。乍一看,这似乎是个坏主意,因为您希望模型与后验概率成比例地进行采样。但是实际上,您最终只能使用“热”状态来帮助链更好地混合。仅当链处于其“正常”温度时才收集实际样本。如果操作正确,则可以使用加热链找到普通链无法到达的模式,这是因为低概率的大谷阻碍了从模式到模式的转换。这些方法的一些示例包括都市耦合MCMC平行回火退火重要性抽样

最后,您可以使用顺序蒙特卡洛当拒绝率很高而其他所有方法都将失败时粒子滤波我对这一系列方法了解得最少,因此我的描述在这里可能是不正确的,但我的理解是它的工作原理是这样的。即使您拒绝的机会本质上是一个,您也可以通过运行自己喜欢的采样器开始。与其拒绝所有样本,不如选择最不讨厌的样本,然后从那里初始化新的采样器,重复此过程,直到找到一些您可以实际接受的样本为止。然后返回并更正样本不是随机的事实,因为您没有从随机位置初始化采样器。

希望这可以帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.