什么是 无掉头采样器(NUTS)?

无掉头采样器(NUTS)是一种自适应哈密顿蒙特卡洛算法,它构造可逆轨迹,并在继续运动开始折返已探索区域时停止扩展。

快速了解

规范文档官方规范

工作原理

在 Hamiltonian 轨迹折返前停止

设轨迹两端为 q_minus、q_plus,对应动量为 p_minus、p_plus,Euclidean U-turn Check 会判断端点位移是否与任一端点动量形成负内积;若成立,继续积分通常不会高效探索新区域。

Hoffman 与 Gelman 的 NUTS 论文通过 Recursive Doubling 构造轨迹,并从合法状态中抽样,避免仅因节点更早进入树就获得额外权重;原始方法还引入 Dual-averaging Step-size Adaptation。

自适应路径长度不等于消除调参

NUTS 会适配每次轨迹运行多长,但 Step Size 与 Mass Matrix 仍决定数值稳定性和几何匹配,现代实现通常在 Warmup 中学习它们。步长过小会让每次转移昂贵,Metric 不匹配会迫使算法构建很深的树,步长过大则可能在到达有效 U-turn 前产生 Divergence。

Maximum Tree Depth 是计算保护上限,不是收敛目标。频繁触顶意味着轨迹被截断或探索效率低;如果不同时检查模型和参数化,只提高上限可能仅仅消耗更多计算。

把 NUTS 诊断视为联合契约

Stan 参考实现把 NUTS 与 Warmup Adaptation 结合,并报告 Divergence 和 Trajectory Depth。应把这些告警与 Rank-normalized Split R-hat、Bulk/Tail ESS、Monte Carlo Error、Energy Behavior 和多个链的 Trace 一起诊断。

NUTS 仍可能漏掉隔离 Mode,也会在 Funnel、重尾目标上遇到困难,并且不能直接更新离散参数。重新参数化与修订模型往往比单纯增加 Iteration 更有效。

主要特点

  • 在每次转移中自适应 HMC 轨迹长度
  • 通过端点位移与动量检测折返
  • 使用可逆树扩展构造候选状态
  • 通常在 Warmup 中适配 Step Size 与 Metric
  • 报告 Divergence 与 Maximum Tree-depth 事件
  • 仍要求目标参数连续且可微

常见用途

  1. 概率编程中的默认连续参数采样
  2. 重新参数化后的层级 Bayesian Model
  3. 固定 HMC 路径长度难以调节的后验
  4. 需要稳健轨迹选择的自动推断
  5. 用于验证近似方法的参考后验采样

示例

loading...
Loading code...

常见问题

NUTS 解决了 Hamiltonian Monte Carlo 的什么问题?

标准 HMC 需要固定 Leapfrog Step 数或 Integration Time。路径过短会出现 Random-walk 行为,过长则会折返并浪费计算;NUTS 通过可逆树扩展中的 U-turn 检测自适应路径长度。

NUTS 能消除 HMC 的全部调参吗?

不能。它免除了手工选择路径长度,但 Step Size 与 Mass Matrix 仍需适配或配置。Warmup 长度、Target Acceptance、Maximum Tree Depth、初始化和参数化依然重要。

NUTS 达到 Maximum Tree Depth 代表什么?

这表示轨迹在满足常规停止行为前触及计算上限。偶发事件未必严重,但频繁触顶要求调查效率和后验几何,不能不经分析就自动提高上限。

NUTS 的 Divergence 只是普通拒绝吗?

不是。Divergence 表示数值积分无法准确跟随局部后验几何,可能对应有偏探索。应定位相关区域,并考虑缩小步长、重新参数化、加强先验或修订模型。

NUTS 能保证发现后验的每个 Mode 吗?

不能。梯度轨迹仍可能停留在某个隔离 Mode。存在多峰可能时,应使用分散多链、领域相关初始化、预测检查、R-hat、ESS 以及专门的多峰方法。

相关术语

相关文章