Hamiltonian Monte Carlo:如何理解 Metropolis-Hasting 提议?

机器算法验证 马尔可夫链蒙特卡罗 蒙特卡洛 汉密尔顿-蒙特卡罗
2022-03-01 08:47:26

我试图理解哈密顿蒙特卡洛(HMC)的内部工作,但是当我们用 Metropolis-Hasting 提议替换确定性时间积分时无法完全理解部分。我正在阅读 Michael Betancourt 撰写的很棒的介绍性论文A Conceptual Introduction to Hamiltonian Monte Carlo,因此我将遵循其中使用的相同符号。

背景

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

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

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

在哪里θE表示参数(q,p)在给定的能量水平上E,也称为典型集参见论文的图 21 和图 22 进行说明。

在此处输入图像描述

原始 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). 为什么存在允许我们构建接受概率的能量差异?

1个回答

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

不幸的是,除了一些非常简单的例子之外,我们不能精确地整合汉密尔顿方程。 这就是为什么我们必须引入辛积分器辛积分器用于构建我们无法解析求解的精确哈密顿轨迹的高精度数值近似。辛积分器中固有的小误差导致这些数值轨迹偏离真实轨迹,因此数值轨迹的投影将偏离目标分布的典型集合。我们需要引入一种方法来纠正这种偏差。

Hamiltonian Monte Carlo 的最初实现将固定长度轨迹中的最后一点视为提议,然后对该提议应用 Metropolis 接受程序。如果数值轨迹累积了太多的误差,因此偏离初始能量太远,那么这个提议就会被拒绝。换句话说,接受过程会丢弃最终与目标分布的典型集合相距太远的提案,因此我们保留的唯一样本是那些属于典型集合的样本。

请注意,我在概念论文中提倡的更现代的实现实际上并不是 Metropolis-Hastings 算法。对随机轨迹进行采样,然后从该随机轨迹中抽取一个随机点是校正辛积分器引入的数值误差的更通用方法。Metropolis-Hastings 只是实现这种更通用算法的一种方法,但是切片采样(如在 NUTS 中所做的)和多项式采样(如目前在 Stan 中所做的)工作得一样好,甚至更好。但最终的直觉是相同的——我们概率性地选择具有小数值误差的点,以确保来自目标分布的精确样本。