什么是 哈密顿蒙特卡洛(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 失效
常见用途
- 大量连续参数的 Bayesian Inference
- 经过合理重新参数化的层级模型
- 具有强线性相关的后验采样
- 结合自动微分的概率编程
- 验证更快速的近似后验方法
示例
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、预测检查和关键后验切片。