什么是 Metropolis-Hastings 算法?
Metropolis-Hastings 算法是一种马尔可夫链蒙特卡洛方法,它先提出候选状态,再用同时修正目标密度比和提议分布非对称性的概率决定是否接受。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
用接受率修正提议分布
当前状态为 x、候选满足 x' ~ q(x' | x)、未归一化目标为 pi 时,MH 接受概率是 alpha = min(1, pi(x') q(x | x') / (pi(x) q(x' | x)))。pi 的未知归一化常数会抵消;如果 q 对称,两个 Proposal 项也会抵消,否则漏掉反向比值将改变平稳分布。
Hastings 1970 年论文把原始对称 Metropolis 规则推广到更一般的 Proposal,并讨论 Monte Carlo 估计误差。Detailed Balance 能证明该构造保持目标分布,却不能证明有限链混合充分。
调节移动能力而不是盲追接受率
过窄的 Random-walk Proposal 接受率高但移动缓慢,过宽则可能连续拒绝。有效尺度取决于维度、后验几何、参数化和 Proposal Family,因此接受率只是症状,不是跨问题通用的优化目标。
Independent、Block、Component-wise 与 Adaptive Proposal 的成本不同。Adaptation 应限制在有效 Warmup 方案中;受约束参数应在合适的变换空间提议,并把所需 Jacobian 纳入目标密度。
审计支撑集、Mode 与 Monte Carlo 误差
Proposal 必须能够到达所有重要目标区域。Local Random Walk 可能在一个 Mode 内呈现平滑 Trace,却始终无法进入另一个 Mode;高接受率也可能对应几乎不移动。应从分散初值运行多个链,并检查 Trace、Jump Distance、连续拒绝段和 Mode Occupancy。
针对每个 Estimand 报告 Effective Sample Size 与 Monte Carlo Standard Error,而不是只报告迭代次数。还应在固定目标上比较 Proposal Scale 与参数化,并尽可能用解析真值或独立方法验证矩与概率。
主要特点
- 使用 Proposal、Target 与 Reverse Proposal 密度比
- 适用于只知道比例常数的目标分布
- 拒绝候选时必须保留当前状态
- 包含随机游走与独立提议等变体
- 可处理离散或不可微参数空间
- 高度依赖 Proposal 支撑集与混合质量
常见用途
- 从未归一化 Bayesian Posterior 采样
- 更新梯度采样器无法处理的离散参数
- 在更大 MCMC 流程中嵌入自定义 Proposal
- 构建 Metropolis-within-Gibbs 采样器
- 为高级采样器提供透明基线
示例
Loading code...常见问题
Metropolis-Hastings 为什么不需要目标分布归一化常数?
接受规则使用候选与当前状态的目标密度比,共同的未知归一化常数会抵消。但剩余 Log Density 与正反向 Proposal Probability 仍必须正确计算。
什么时候可以省略 Hastings Proposal Ratio?
只有相关状态之间的 Proposal 对称,即 `q(x'|x) = q(x|x')` 时才能抵消。Independent、Log-normal、Boundary-aware 与很多 State-dependent Proposal 都不对称,必须保留修正项。
MH 采样器应该追求多高的接受率?
不存在跨维度、Proposal Family 与 Target 通用的比例。应在确认探索能力的前提下,优化单位时间 Effective Sample 或 Monte Carlo Error,而不是只追逐记忆中的接受率数字。
可以删除 Metropolis-Hastings 的拒绝状态吗?
不可以。拒绝意味着下一链状态等于当前状态,停留时间正是链表示目标概率质量的方式之一。删除重复值会改变经验频率并使估计产生偏差。
MH 链为什么看似收敛却仍可能错误?
Local Proposal 可能在一个 Mode 内平稳移动却从未到达其他 Mode,Proposal Support 也可能排除合法区域。应结合分散多链、Mode 检查、ESS、Monte Carlo Error、Proposal 敏感性与已知真值模拟。