1. 从“能讲道理”到“能打胜仗”:概率图模型的黄金年代与隐忧
如果你在2010年前后进入机器学习这个圈子,大概率会经历一个“概率图模型至上”的阶段。那时候,如果你跟别人说你在做序列标注,对方第一反应会问:“用的HMM还是CRF?”如果你说在做医疗诊断或者故障推理,对方会默认你手里有一张贝叶斯网络。那个年代,概率图模型(Probabilistic Graphical Models,简称PGM)几乎是“可解释AI”的代名词——它能把变量之间的依赖关系画成一张图,每个节点代表一个随机变量,每条边代表条件依赖,整个世界的结构被写得清清楚楚。
我最早接触的是隐马尔可夫模型(HMM)。当时做一个简单的词性标注任务,HMM的三要素——初始状态概率、状态转移概率、发射概率——用前向-后向算法一算,维特比解码一出,结果就出来了。最让人安心的是,你可以打开模型,指着某个转移概率说:“你看,动词后面接名词的概率是0.7,所以这里标注成名词是合理的。”这种透明度是后来那些动辄几千万参数的神经网络给不了的。
但问题也恰恰出在这里。HMM有两个硬性假设:一是齐次马尔可夫性,即当前状态只依赖前一个状态;二是观测独立性,即当前观测只依赖当前状态。这两个假设在真实世界里几乎不成立。比如在命名实体识别中,“北京市”作为一个地名,它的下一个词是“政府”还是“长”,显然不只依赖于“市”这个字的状态,还依赖于更早的上下文。HMM为了计算可行性,硬生生把长距离依赖砍掉了。
于是条件随机场(CRF)登场了。CRF直接对条件概率P(Y|X)建模,不再假设观测独立,而且可以自定义特征函数,把窗口内任意上下文信息都塞进去。我在一个中文分词项目里用过CRF,特征模板里加了前两个字、后两个字、词性、是否数字等几十个特征,F1值比HMM高了将近8个百分点。那时候我觉得,CRF就是序列标注的终极答案。
但CRF也有它的代价。特征工程变成了一个无底洞。每换一个领域,你就要重新设计特征模板。做新闻分词和做医疗分词,特征完全不一样。更麻烦的是,CRF的训练和解码复杂度随着标签数量和特征数量线性增长,当标签集合扩大到几百个(比如细粒度的实体类型),推理速度就肉眼可见地慢下来了。贝叶斯网络同样面临这个问题:当变量数量增多、依赖关系变复杂时,精确推理的复杂度是指数级的,只能退而求其次用近似推理,而近似推理又引入了新的不确定性。
所以,概率图模型的“结构清晰”是一把双刃剑。它把世界写清楚了,但写清楚的前提是你得先知道世界长什么样。换句话说,结构需要人来定义。而人定义结构的能力,在面对高维、非结构化数据(图像、语音、自然语言)时,很快就触到了天花板。
2. 黑箱神经网络的逆袭:它到底做对了什么?
神经网络并不是什么新东西,上世纪八九十年代就火过一阵,后来因为算力不足和数据稀缺沉寂了。真正让它翻身的,是三个条件的同时成熟:大规模标注数据、GPU并行计算、以及更有效的训练技巧(ReLU、Dropout、BatchNorm等)。但这些都是外部条件,从模型本身来看,神经网络战胜概率图模型的核心原因,我认为是它把“结构定义权”从人手里拿走了,交给了数据和优化算法。
2.1 从“人写规则”到“机器找规律”
概率图模型的结构(哪些变量之间有边、边指向哪里)通常需要领域专家来设计。比如做一个疾病诊断的贝叶斯网络,你得先请医生告诉你哪些症状和哪些疾病相关,然后画出有向无环图。这个过程极其昂贵,而且一旦专家判断有误,整个模型就偏了。
神经网络则完全不同。一个多层感知机或者Transformer,你只需要定义输入和输出,中间的隐藏层结构虽然也是人设计的(层数、宽度、注意力头数),但具体的特征表示和交互关系是网络在训练中自己学出来的。换句话说,概率图模型是“先验结构驱动”,神经网络是“数据驱动”。当数据量足够大时,数据驱动的模式识别能力远超人工定义的结构。
我做过一个对比实验:在同一个情感分类任务上,用朴素贝叶斯(一种最简单的概率图模型)和用LSTM。朴素贝叶斯需要我手动做特征工程,比如提取情感词、否定词、程度副词;LSTM直接把词向量序列喂进去,什么都不用管。结果LSTM的准确率比朴素贝叶斯高了12个百分点。更关键的是,当我把训练数据从1万条增加到10万条时,LSTM的性能还在涨,而朴素贝叶斯早就饱和了。
2.2 分布式表示:把离散符号变成连续空间里的向量
概率图模型处理离散变量时,通常用one-hot或者频次统计。这种表示是稀疏的、正交的,两个词之间没有任何“距离”概念。而神经网络通过嵌入层(Embedding)把每个词映射到一个低维稠密向量,语义相似的词在向量空间里距离更近。这个看似简单的变化,实际上解决了概率图模型的一个根本痛点:泛化。
在HMM里,如果训练集中没有出现过“猫”这个观测,那么“猫”的发射概率就是零,模型完全无法处理。而在神经网络里,“猫”的向量和“狗”的向量很接近,模型即使没见过“猫”,也能根据“狗”的上下文做出合理推断。这种平滑性和泛化能力,是概率图模型难以企及的。
2.3 端到端训练:让所有组件一起优化
概率图模型往往是流水线式的:先做特征提取,再训练分类器,最后做后处理。每个阶段独立优化,误差会累积。而神经网络是端到端的,从输入到输出,所有参数通过反向传播一起更新。这意味着底层特征提取器会主动学习对最终任务有用的表示,而不是被动地服务于某个中间目标。
举个例子,在OCR任务中,传统方法先用HMM做字符分割,再用CRF做字符识别,分割错误会直接导致识别失败。而基于CNN+RNN+CTC的端到端模型,直接输入整张图片,输出字符序列,分割和识别在同一个网络中联合优化,错误率大幅下降。
3. 概率图模型真的“输”了吗?——被忽略的融合与互补
说概率图模型“输给了”神经网络,其实是一种过于简化的叙事。更准确的说法是:在大多数以预测精度为唯一目标的基准测试上,神经网络确实赢了;但在需要不确定性量化、因果推断、小样本学习、以及严格可解释性的场景里,概率图模型依然不可替代。而且,两者并不是非此即彼的关系,融合才是真正的前沿。
3.1 神经网络的不确定性困境
一个训练好的神经网络,面对一个从未见过的输入,可能会给出一个置信度很高的错误答案。比如一个图像分类器,把一张噪声图识别成“熊猫”,置信度99%。这在自动驾驶、医疗诊断等高风险场景里是致命的。而概率图模型天然输出概率分布,你可以直接得到“这个诊断有70%的把握”这样的结论。
为了解决这个问题,贝叶斯神经网络(Bayesian Neural Network)被提出来,它在网络权重上放置先验分布,通过变分推断或蒙特卡洛采样来近似后验。这其实就是把概率图模型的思想注入神经网络。虽然计算成本高,但在需要可靠不确定性的场景里,这是目前最靠谱的方案之一。
3.2 结构化预测中的CRF层:神经网络的“概率图外挂”
如果你用过BiLSTM-CRF做命名实体识别,你就已经见证了概率图模型和神经网络的完美结合。BiLSTM负责从字符或词序列中提取上下文特征,输出每个位置的发射分数;CRF层则在这些分数之上建模标签之间的转移约束(比如“I-ORG”不能跟在“B-PER”后面)。这个CRF层本质上就是一个概率图模型,它保证了输出标签序列的全局一致性。
这个架构之所以强大,是因为它各取所长:神经网络负责从原始输入中学习复杂的非线性特征,CRF负责在输出空间上施加结构约束。如果没有CRF层,BiLSTM可能会输出一些不合法的标签序列;如果没有BiLSTM,CRF又需要大量人工特征。两者结合,效果远超单独使用任何一个。
3.3 变分自编码器与生成模型:概率图模型的“转世”
变分自编码器(VAE)和扩散模型(Diffusion Model)这些生成模型,骨子里其实都是概率图模型。VAE假设存在一个隐变量z,观测数据x由z生成,目标是最大化边际似然的下界(ELBO)。这完全就是概率图模型的思路,只不过用神经网络来参数化生成分布和推断分布。扩散模型更是明确地定义了一个马尔可夫链,通过逐步加噪和去噪来建模数据分布。
所以,概率图模型并没有消失,它只是换了一副面孔,以“深度生成模型”的形式重新回到了舞台中央。那些说“概率图模型已死”的人,可能没有意识到,他们每天用的Stable Diffusion,本质上就是一个大规模的概率图模型。
4. 实战视角:什么时候该用概率图模型,什么时候该上神经网络?
这个问题没有标准答案,但根据我这些年的踩坑经验,可以给出一个粗略的决策框架。
4.1 数据量决定上限
如果你的标注数据少于几千条,神经网络很容易过拟合,这时候概率图模型(尤其是朴素贝叶斯、HMM)反而更稳。因为概率图模型的参数数量通常远少于神经网络,先验假设起到了正则化作用。我做过一个实验:在只有500条训练样本的文本分类任务上,朴素贝叶斯和SVM的表现都优于BERT微调。但当数据量增加到5万条时,BERT全面碾压。
4.2 可解释性要求决定下限
如果你需要向非技术人员解释模型的决策依据,概率图模型是首选。比如在金融风控中,你需要告诉客户“为什么拒绝这笔贷款”,一个决策树或者贝叶斯网络可以给出清晰的规则路径。而神经网络只能给出特征重要性排序,无法提供因果解释。当然,现在有一些事后解释方法(如SHAP、LIME),但它们只是近似,不如概率图模型直接。
4.3 结构化程度决定架构选择
如果你的输出空间有很强的结构约束(如序列标注中的标签转移、句法分析中的树结构),那么把概率图模型作为输出层(如CRF)是明智的。如果你的输入是高度非结构化的(如图像像素、音频波形),那么用神经网络做特征提取几乎是唯一选择。两者结合,往往能取得最佳效果。
4.4 一个具体的选型对照表
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 小样本文本分类 | 朴素贝叶斯 / SVM | 参数少,不易过拟合 |
| 序列标注(NER、分词) | BiLSTM-CRF / BERT-CRF | 神经网络提特征,CRF保结构 |
| 图像分类(大数据) | CNN / ViT | 神经网络擅长处理高维连续信号 |
| 医疗诊断辅助 | 贝叶斯网络 + 神经网络 | 需要不确定性量化和因果解释 |
| 生成任务(图像、文本) | VAE / Diffusion / GAN | 深度生成模型本质是概率图模型 |
| 实时推理(低延迟) | HMM / 线性CRF | 解码复杂度低,速度快 |
这个表不是绝对的,但可以作为一个起点。实际项目中,我通常会先跑一个简单的概率图模型作为baseline,然后再尝试神经网络。如果神经网络提升不明显,或者数据量太小,就果断回到概率图模型。
5. 那些年我踩过的坑:从概率图模型迁移到神经网络的血泪教训
5.1 特征工程惯性:别再把特征喂给神经网络了
刚从CRF转到LSTM的时候,我习惯性地把之前设计的几十个特征(前后缀、词性、词典匹配等)拼接到词向量后面。结果发现,模型性能不仅没提升,反而下降了。后来才明白,神经网络有强大的表示学习能力,你手工加的特征反而可能引入噪声,干扰网络自己找规律。正确的做法是:只给原始输入(词序列、字符序列),让网络自己学。如果非要加外部知识,用注意力机制或者预训练词向量来注入,而不是简单拼接。
5.2 概率图模型的“零概率”陷阱
用HMM或朴素贝叶斯时,如果某个观测在训练集中没出现过,对应的概率就是零,整个序列的概率乘积就变成零。这时候必须做平滑(拉普拉斯平滑、古德-图灵估计等)。但神经网络没有这个问题,因为嵌入层和softmax天然是稠密的。所以从概率图模型迁移到神经网络时,不要忘了去掉那些为平滑而设计的复杂逻辑,它们在新架构里是多余的。
5.3 解码策略的差异:维特比 vs 贪心 vs 束搜索
概率图模型通常用维特比算法做全局最优解码,保证输出序列概率最大。神经网络如果直接做分类,往往用贪心解码(每个位置取argmax),这可能导致标签序列不合法。所以如果你在神经网络上面加了CRF层,记得用维特比解码;如果没有CRF层,至少要用束搜索(beam search)来近似全局最优。我见过有人用贪心解码跑BiLSTM,然后抱怨效果不如CRF,其实问题出在解码策略上,不是模型本身。
5.4 训练数据的标注一致性
概率图模型对标注噪声相对鲁棒,因为它的参数是统计出来的,个别错误样本影响有限。但神经网络对标注噪声非常敏感,尤其是端到端训练时,错误标签会通过反向传播放大。所以如果你打算从概率图模型切换到神经网络,先花时间清洗标注数据,确保一致性。我吃过这个亏:在一个实体识别项目里,同一批数据用CRF跑F1是85%,用BERT跑只有78%,排查了半天才发现是标注规范不统一导致的。
6. 写在最后:工具没有优劣,只有合不合适
这些年我最大的体会是,不要迷信任何一种模型。概率图模型和神经网络各有各的适用边界,真正的高手是知道在什么场景下用什么工具,甚至把两者结合起来。HMM、CRF、贝叶斯网络这些经典方法,至今仍然是我做小样本、强解释性项目时的首选。而神经网络在处理大规模非结构化数据时,确实无可替代。
如果你正在纠结选哪个,我的建议是:先花半天时间跑一个最简单的概率图模型baseline,再花半天时间跑一个最简单的神经网络baseline。对比一下两者的性能和训练成本,答案往往就出来了。不要一上来就追求最先进的架构,很多时候,简单的模型加上干净的数据,比复杂的模型加上脏数据要有效得多。
最后分享一个我常用的技巧:在神经网络输出层加一个CRF,几乎总是能带来1到3个百分点的提升,而且实现成本很低。这个小小的“概率图外挂”,是我从概率图模型时代带到神经网络时代的最有价值的遗产。