马尔可夫链蒙特卡洛:藏在现代 AI 底下的 1953 算法
来源:dev.to — 2026-09-06
📋 概述
作者用「顺着讲而非倒着讲」的方式拆解那个发明于 1953 年、内存比本页 favicon 还小的机器上、如今用于天气预报、黑洞并合模型拟合与每个严肃贝叶斯库的算法——MCMC。它其实是两个简单想法的拼接:蒙特卡洛(往圆里扔飞镖求 π,本质是用随机采样近似难以解析的积分)+ 马尔可夫链(只记当前状态的无记忆过程,长期趋近与起点无关的平稳分布)。反转的洞察是:如果你有一条其平稳分布恰为你想要那个分布的马尔可夫链,你就拥有了一台能从你根本没法直接采样的分布里采样的机器。
🔑 核心要点
- 两半拼合:Monte Carlo 用随机采样近似积分(扔飞镖算 π 就是把圆方面积比统计出来),Markov chain 提供只依赖当前态、无记忆的采样器——「马尔可夫链给你样本,蒙特卡洛给你答案,两半缺一不可」
- 贝叶斯后验卡在分母的证据积分上:十个参数的网格化就落到 10^20 次求值、维数灾难必死;MCMC 的破局是不求「这点的后验概率」只问「新点比站在的点好多少」——一个比值里证据在上下同时出现、于是约掉
- Metropolis-Hastings 完整算法极短:Propose(在当前位置周围高斯采样)→ Score(算未归一化后验比 R)→ Decide(R≥1 必移,R<1 以概率 R 移)——偶尔的下坡移动正是把贪心优化器变成采样器的关键
- 工程细节决定成败:必须在 log 空间算避免 float64 下溢;被拒绝也要记录原位(否则系统性少计尖峰);步长是唯一旋钮,太窄接受率虚高却龟速移动、太宽几乎全拒,目标是约 20–25% 接受率并永远打印它
- burn-in 不是 hack 而是无记忆性的直接推论:从错误起点跋涉出的样本描述的是你的坏猜测而非后验,删掉开头几千个即可;现代 Stan/PyMC 用带梯度的 HMC/NUTS 取代盲目的局部乱走
💡 金句
你永远不去计算那个不可能算的东西,你只是安排自己永远用不到它。
👍 0
👎 0
← 返回 dev.to 首页