$n$ 个二值变量的联合分布要 $2^n-1$ 个数,30 个变量就已超过十亿。但世界从不是全连接的。把直接依赖画成箭头,真正的信息在那些没画出的边里——每条缺边都断言一组条件独立,联合分布随之从指数塌成一堆小表的乘积。
更反直觉的是「解释消解」:草地湿可能因下雨,也可能因洒水器,两者本来无关;可一旦看到草地湿了,再得知昨夜下过雨,你对「洒水器开过」的信念立刻下降——雨已把湿解释掉。观测一个共同结果,会让它的两个原因凭空相关。
$\mathrm{pa}(X_i)$ 是 $X_i$ 在有向无环图中的父节点集。这行式子只说一件事:给定直接原因,一个变量与所有非后代无关。存储代价从 $2^n$ 降到 $\sum_i 2^{|\mathrm{pa}(X_i)|}$。图不是分布的插图——图就是分布的一半定义,另一半只是局部条件概率表。
这里有一部图论与概率论之间的词典。d-分离是纯组合的判定:只看路径怎么走、哪些节点被观测,不碰任何积分;结论却是关于分布的——图上分离蕴含分布中条件独立,且对几乎所有参数取值反过来也成立。用手指沿箭头描一遍就能回答的问题,等价于一族高维积分是否恒等。语法与语义的这种对应并非孤例(Day 19、Day 47):数学反复奖赏那些把语义问题降格成语法的人。
诊断系统 QMR-DT 用双层网络连接数百种疾病与数千个症状;遗传连锁分析沿家系图传播基因型信念。最深远的一步是 Pearl 把箭头从「依赖」升级为「因果」:加上干预算子 $do(x)$,图便能判定某个因果效应能否从纯观测数据识别(后门准则)——「相关不等于因果」第一次成为可计算的命题。
马尔可夫性质只有一句话:未来只通过「现在」依赖过去。当前状态是全部历史的充分统计量——记住它,日志就可以全丢。
想象一大群人在状态图上随机游走,每步按同样的规则跳。无论起始分布多古怪,走够多步后,人群的整体分布会停下来不再变化——每个状态的流入恰好等于流出。个体仍在乱跳,宏观形状已经凝固。
$P$ 是转移矩阵,$P_{ij}$ 是从 $i$ 跳到 $j$ 的概率;行向量 $\pi$ 是状态上的分布。式子说:$\pi$ 是 $P$ 属于特征值 1 的左特征向量——走一步后分布纹丝不动。链若不可约且非周期,$\pi$ 唯一;误差按 $|\lambda_2|^t$ 衰减,谱隙越大混合越快(Day 4、Day 48)。
规则完全是局部的——每个状态只知道自己往哪跳;结果却是全局且唯一的,而且恰是线性代数最基本的对象:特征向量。PageRank 正是这句话的兑现:「重要的页面被重要的页面链接」本是循环定义,特征向量方程把它解开了。
更漂亮的是把逻辑倒过来用:不是给定链求平稳分布,而是给定想采样的分布,反设计一条以它为平稳分布的链。细致平衡 $\pi_i P_{ij}=\pi_j P_{ji}$ 里只出现 $\pi$ 的比值,那个算不出来的归一化常数被约掉了——高维后验写不出来却采得出来,原因正在于此。
PageRank 与推荐系统的随机游走;MCMC 支撑起现代贝叶斯统计与 Ising 模型模拟;排队论用平稳分布算等待时间。Shannon 用马尔可夫链建模英文字母序列,是语言模型的史前史(Day 13)。最新一例是扩散模型:前向加噪是一条把数据打成高斯噪声的马尔可夫链,神经网络学的正是它的时间反演。
真实状态藏在幕后按马尔可夫链演化——说话人想发的音素、市场的牛熊、基因组当前在编码区还是非编码区。你只看得到它随机「渲染」出的观测:一段声波、一天涨跌、一个碱基。链在暗处走,你在明处猜。
难处在于:长度 $T$ 的观测有 $|S|^T$ 条隐藏路径都能解释它。救命的正是马尔可夫性质——历史不同但此刻停在同一状态的路径,对未来的影响完全一样,可以就地合并成一个数。
两组参数:转移 $A_{ij}=P(z_t=j\mid z_{t-1}=i)$,发射 $B_{jk}=P(x_t=k\mid z_t=j)$。前向递推为
$\alpha_t(j)$ 读作「产生了迄今全部观测 $x_{1:t}$、且此刻停在状态 $j$」的联合概率。方括号里那个求和就是全部秘密:它把所有通往 $j$ 的历史合并成一个数,因为未来只依赖 $j$、不依赖怎么走到 $j$;括号外乘上发射概率,吸收当前观测的证据。复杂度从 $O(|S|^T)$ 降到 $O(|S|^2T)$。
同一张格子,把 $\sum$ 换成 $\max$,算出的就不再是边缘概率,而是最可能的那条隐藏路径——这正是 Viterbi。两者长得一模一样绝非巧合:它们是同一套递推在不同半环上的实例,$(+,\times)$ 给出概率求和,$(\max,\times)$ 给出最优路径。算法骨架与它计算的代数被彻底分离了:换个半环就换了语义,最短路径与序列比对都落在这张表上。你以为在解一个问题,其实证明了一整族问题(Day 19)。
语音识别在深度学习之前由 HMM 统治三十年:隐状态是音素,发射模型刻画声学。生物信息学用它做基因预测与序列比对;Viterbi 译码跑在几乎每一部手机的卷积码解码器里(Day 33)。即便今天,端到端语音模型的 CTC 损失仍在跑同一套前向-后向递推,只是发射概率改由神经网络给出。
前三个概念其实是同一个算法的特例。把图看成一张通信网络:每个节点只知道自己与邻居的关系,它把「依我之见你该是什么样」总结成一条消息发出去,收齐邻居的消息后更新自己的信念。在树上跑一遍这个协议,每个节点得到的恰好是精确的边缘分布——而全局推断从未被任何节点整体执行过,它从局部对话中涌现。这正是分布式系统的世界观:没有中心协调者,全局一致由局部协议保证。
$\phi_i$ 是节点 $i$ 自带的证据,$\psi_{ij}$ 是边上的兼容度($i,j$ 取这对值有多合理),$N(i)\setminus j$ 是除 $j$ 以外的邻居——刚从 $j$ 听来的话不能再还给 $j$,否则信念会自我强化成回音室。求和把 $i$ 的所有可能性积掉,只留下对 $j$ 的意见。
图一旦有环,这套协议就失去理论保证,人们却照跑不误(loopy BP),效果常常好得离谱;十余年后才明白它其实在优化统计物理里的 Bethe 自由能。同一个方程在三个互不相干的领域各被独立发现过一次:统计物理的空腔法、编码论的 LDPC 译码、人工智能的信念传播。
精确推断不可行时还有第二条路:把推断变成优化——在一族简单分布 $q$ 里找最接近真后验的那个,最大化下界
第一项要求 $q$ 落在高概率区,第二项是 $q$ 的熵、阻止它塌成一个点;下界与 $\log P(x)$ 的间隙恰是 KL 散度。「算积分」于是换成了「跑梯度下降」——这正是 VAE 的目标函数。
LDPC 与 turbo 码用 loopy BP 译码,把速率推到 Shannon 极限附近(Day 13、Day 33)。VAE 与扩散模型的训练目标都是 ELBO 的变体。图神经网络的每一层就是消息传递的可学习版本——手工设计的势函数换成了神经网络;注意力机制也可读作全连接图上的一轮消息传递。深度学习并未废掉图模型,而是把它的推断步骤参数化了。