什么是 哈密顿蒙特卡洛(HMC)?

哈密顿蒙特卡洛(HMC)是一种马尔可夫链蒙特卡洛方法,它为连续参数增加辅助动量,通过近似 Hamiltonian Dynamics 产生远距离候选,再使用 Metropolis 步骤修正数值积分误差。

快速了解

规范文档官方规范

工作原理

把后验几何转成 Hamiltonian Dynamics

HMC 定义势能 V(q) = -log pi(q),并通常使用二次动能 T(p) = 0.5 p^T M^-1 p。Hamilton Equation 在连续时间中移动位置 q 和动量 p,同时保持总能量。辅助动量使算法能提出远距离、有方向的候选,又不改变 q 所需的边缘目标。

Neal 的 HMC 综述解释了 Volume Preservation 与 Reversibility 如何使这些轨迹成为合法 Metropolis Proposal。HMC 需要梯度,通常在无约束参数空间中运行。

通过 Leapfrog 近似轨迹

Leapfrog Integrator 交替执行半步动量更新和整步位置更新。它具有可逆与保体积性质,但离散化仍会轻微改变 Hamiltonian,因此终点按 min(1, exp(H_start - H_end)) 接受。Step Size 过大会造成拒绝或 Divergence,过小则浪费梯度计算。

Trajectory Length 与 Mass Matrix 同样重要。路径过短会退化为 Random Walk,过长会重复已走过的区域,尺度不合适的 Metric 则迫使算法使用很小步长。Warmup 可以适配这些参数,但正式采样必须使用有效性明确的转移。

把 Divergence 当作探索缺失证据

Stan HMC 手册把 Divergent Transition 视为数值轨迹无法跟随困难后验几何的告警。提高 Target Acceptance 可以缩小 Step Size,但持续 Divergence 往往需要重新参数化、增强可辨识性或修订模型。

应运行多个链,并检查 Divergence、Maximum Trajectory Depth、Energy Behavior、Rank-normalized Split R-hat、Bulk/Tail ESS 与 Monte Carlo Error。HMC 无法自然更新离散参数,也仍可能漏掉相互隔离的 Mode。

主要特点

  • 使用目标密度梯度引导候选轨迹
  • 为参数增加临时辅助动量变量
  • 通过可逆保体积的 Leapfrog 构造轨迹
  • 使用 Metropolis 决策修正积分误差
  • 适合相关的连续高维后验
  • 可能因 Divergence、离散状态和隔离 Mode 失效

常见用途

  1. 大量连续参数的 Bayesian Inference
  2. 经过合理重新参数化的层级模型
  3. 具有强线性相关的后验采样
  4. 结合自动微分的概率编程
  5. 验证更快速的近似后验方法

示例

loading...
Loading code...

常见问题

HMC 与 Random-walk Metropolis 有什么区别?

Random-walk Proposal 不利用目标几何,通常会缓慢扩散;HMC 使用梯度与动量产生协调的远距离候选,再通过 Metropolis 步骤修正 Leapfrog 数值积分误差。

Hamiltonian Monte Carlo 为什么需要梯度?

负对数密度的梯度提供 Force,让轨迹沿目标 Typical Set 弯曲。缺失、不连续或数值不稳定的梯度会破坏这条轨迹,导致算法无效或效率显著下降。

HMC 的 Divergent Transition 为什么发生?

Step Size 对局部尖锐曲率过大时,数值轨迹会失真;Funnel、弱可辨识和糟糕参数化经常暴露这一问题。持续 Divergence 意味着探索可能有偏,不能忽略。

HMC 能直接采样离散参数吗?

不能。Leapfrog Dynamics 需要连续空间上的梯度。离散变量应被边缘化、枚举,或在更大推断流程中使用另一种合法转移更新。

应该如何比较 HMC 性能?

比较单位时间 Effective Sample 与 Monte Carlo Error,而不是只看接受率;同时检查 Divergence、Trajectory Limit、Energy Diagnostic、R-hat、Bulk/Tail ESS、预测检查和关键后验切片。

相关术语

相关文章