汉密尔顿·蒙特卡洛(Hamiltonian Monte Carlo):如何解读“大都市-哈斯特”提案?


9

我想了解汉密尔顿·蒙特卡洛(HMC)的内部工作原理,但是当我们用Metropolis-Hasting提案取代确定性时间积分时,无法完全理解该部分。我正在阅读Michael Betancourt撰写的引人入胜的入门论文《哈密尔顿蒙特卡洛概念概论》,因此我将沿用其中的相同符号。

背景

马尔可夫链蒙特卡洛(MCMC)的总体目标是逼近目标变量的分布。π(q)q

HMC的想法是引入辅助的“动量”变量以及与建模为“位置” 的原始变量结合。位置-动量对形成一个扩展的相空间,可以用哈密顿动力学来描述。联合分布可以用微规范分解来表示:pqπ(q,p)

π(q,p)=π(θE|E)π(E)

其中表示给定能级上的参数,也称为典型集合。参见图21和图22进行说明。θE(q,p)E

在此处输入图片说明

原始的HMC程序包括以下两个交替步骤:

  • 在能量水平之间执行随机过渡的随机步骤,以及

  • 确定性步骤,沿着给定的能量水平执行时间积分(通常通过跳跃式数值积分实现)。

在本文中,有人认为越级跳跃(或辛积分器)具有小的误差,会引入数值偏差。因此,与其将其视为确定性步骤,不如将其转变成Metropolis-Hasting(MH)提案以使该步骤成为随机步骤,并且所产生的过程将从分布中产生确切的样本。

MH提案将执行步越级操作,然后反转动量。然后,该提案将以以下接受概率被接受:L

a(qL,pL|q0,p0)=min(1,exp(H(q0,p0)H(qL,pL)))

问题

我的问题是:

1)为什么将确定性时间积分转换为MH提议的这种修改会消除数值偏差,以使生成的样本完全符合目标分布?

2)从物理学的角度来看,能量在给定的能量水平上是守恒的。这就是为什么我们能够使用汉密尔顿方程的原因:

dqdt=Hp,dpdt=Hq

从这个意义上说,能量在典型集合上的任何地方都应该恒定,因此应当等于。为什么在能量上存在差异,可以构造接受概率?H(q0,p0)H(qL,pL)

Answers:


7

确定性哈密顿轨迹仅因其与目标分布一致而有用。特别地,具有典型能量的轨迹投射到目标分布的高概率区域上。 如果我们可以精确地整合汉密尔顿方程组并构造出明确的汉密尔顿轨迹,那么我们将已经有了一个完整的算法,不需要任何接受步骤

不幸的是,在一些非常简单的示例之外,我们无法完全集成汉密尔顿方程。 这就是为什么我们必须引入辛辛苦苦的积分器。辛积分器用于构造高精度的数值逼近,以精确地解析我们无法解析的哈密顿轨迹。辛积分器固有的小误差导致这些数值轨迹偏离真实轨迹,因此数值轨迹的投影将偏离目标分布的典型集合。我们需要介绍一种纠正此偏差的方法。

汉密尔顿·蒙特卡洛的最初实现方式是将固定长度的轨迹的终点视为建议,然后对该建议应用了Metropolis接受程序。如果数字轨迹积累了太多的误差,因此偏离了初始能量太远,那么该提议将被拒绝。换句话说,验收程序会丢弃最终与目标分布的典型集合相距太远的提议,因此我们保留的样本只有属于典型集合的那些样本。

请注意,我在概念文件中主张的更现代的实现实际上不是Metropolis-Hastings算法。采样随机轨迹,然后从该随机轨迹中采样一个随机点是校正辛辛积分器引入的数值误差的一种更通用的方法。Metropolis-Hastings只是实现此通用算法的一种方法,但是切片采样(如NUTS中所做的那样)和多项采样(如Stan中目前所做的那样)的效果也一样好,甚至更好。但是最终直觉是相同的-我们正在概率选择数值误差小的点,以确保从目标分布中获得准确的样本。


谢谢@Michael Betancourt!从概念上讲,现在我基于积分状态偏离轨迹的多少,使时间积分步骤具有概率性。但是,接受概率的构建方式对我而言并不完全有意义,因为我们似乎鼓励偏差导致能量降低?如果远小于,即使它偏离了轨迹很多,我们最终还是总是接受提议吗?H q 0p 0H(qL,pL)H(q0,p0)
cwl

1
是的,但是由于高维空间中的体积是如何工作的(朝向表面外部的体积总是比朝向表面内部的体积大),轨迹花费的时间成倍增加,而不是较低能量。因此,当您将提案(有利于较高能量)与验收(有利于较低能量)相结合时,您将在初始能量附近恢复平衡。
Michael Betancourt
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.