一句话定义:MCMC(Markov Chain Monte Carlo,马尔可夫链蒙特卡洛)是一类采样算法:当目标概率分布太复杂、没法直接生成样本时,构造一条马尔可夫链(Markov chain),让它在长期运行后收敛到目标分布,再从链上取样本。
为什么需要它:很多任务最后都要算期望,比如 x 服从某个分布 p(x),要求 f(x) 的平均值。如果 p 是简单分布,像正态分布,直接采样即可;但贝叶斯推断里的后验分布 p(θ|数据) 往往是“似然 × 先验”再归一化,那个归一化常数很难算,高维下更没法直接采样。MCMC 的好处是绕开归一化常数,只需要知道未归一化的密度。
原理与比方:马尔可夫链是“下一步只看现在”的随机过程。设想你在一座陌生山城调查居民收入分布,但不能挨家挨户普查。你按规则随机游走:从当前位置提一个邻近地点,如果那里目标密度更高,就经常搬过去;如果更低,也按一定概率搬过去,而不是完全拒绝。走足够久后,你在各区域停留的时间比例会接近目标分布。这里的“走”就是链的转移,“足够久后”指收敛到平稳分布(stationary distribution)。常见实现有 Metropolis-Hastings、Gibbs sampling(吉布斯采样)。实际使用要丢掉预热期(burn-in)样本,并关注混合速度、自相关和有效样本量(Effective Sample Size, ESS)。
与相邻概念的区别:
| 概念 | 做法 | 特点 |
|---|---|---|
| 蒙特卡洛 | 直接从分布采样后平均 | 简单直接,但要求能采样 |
| MCMC | 构造马尔可夫链间接采样 | 适合复杂高维分布,但慢、样本相关 |
| 变分推断 | 用简单分布逼近目标 | 快、可扩展,但近似可能有偏 |
| 拒绝/重要性采样 | 从提议分布采样再修正权重 | 低维好用,高维常失效 |
对从业者的意义:MCMC 是贝叶斯统计、概率编程、物理模拟和隐变量模型中的基础工具。它提醒我们:复杂分布不一定要“直接抽”,可以“慢慢走”。工程上别只看一条链的结果,最好跑多条链、看轨迹图、算收敛诊断;如果模型很大、数据很多,也要权衡 MCMC 的精度与变分方法的速度。具体诊断工具和阈值以所用库的官方页面为准。
