尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

概率图模型学习路线:从贝叶斯网络到变分推断

概率图模型学习路线:从贝叶斯网络到变分推断 概率图模型这个方向我一直觉得是学机器学习最容易踩空的一块。你说它基础吧面试题里HMM和卡尔曼滤波隔三差五出现你说它高深吧真到跑模型的时候大多数工程师其实只把图模型当背景知识真正动手做推断的机会少之又少。最近我完整刷了一轮圣母大学那套25讲的研究生课程《概率图模型PGM》从贝叶斯网络、马尔可夫随机场一路讲到HMM、卡尔曼滤波和变分推断中英字幕齐全算是把这套知识体系的脉络重新捋了一遍。这篇就来聊聊课程里真正值钱的部分以及我刷完这轮课之后整理出来的学习路线和踩坑记录。如果你正在做机器学习、数据挖掘、机器视觉或者自然语言处理这套PGM课程值得你好好啃一遍。它不是那种给你讲个概念就完事的科普视频而是真正的研究生课节奏每一讲都带数学推导作业和阅读材料也安排得明明白白。我的建议是不要把它当成普通的B站收藏夹吃灰视频而是按照下面这套方法拆成5个主题系统地过一遍。1. 课程定位与整体版图25讲到底讲了什么1.1 课程框架一个表示-推断-学习的完整闭环这套课程最让我认可的地方是它的结构非常像一本正经的PGM教材按三块展开表示、推断、学习。表示部分教你怎么把现实问题画成图模型推断部分教你怎么在给定观测时算出感兴趣的后验分布学习部分教你怎么从数据中估计模型参数。我在实际项目中摸索出来的经验是很多人只会画图表示一遇到给定证据求概率推断就卡壳更别提从数据反推参数学习了。这课程把三块一次讲透25讲下来流程是完整的没有虎头蛇尾。由于是研究生课25讲里大约一半时间在讲推理和近似推理的数学另一半在讲经典模型的建模逻辑。贝叶斯网络、马尔可夫随机场这两种表示方式占了前三分之一后面从隐马尔可夫模型讲到卡尔曼滤波再转到变分推断和采样方法。整体下来你会发现课程其实在帮你搭一座桥桥的一端是图结构描述规律另一端是动态系统和复杂模型下的贝叶斯推断。这个视角对我之后看扩散模型、SSM这类新东西帮助特别大。1.2 课程难度与适合人群别被研究生课吓退说句实话这套课程对数学基础是有要求的。概率论和线性代数至少要到大二水平微积分的基本功得扎实不然看到雅可比矩阵和多元高斯分布的时候容易懵。课程里默认你会求导、会矩阵运算、能读懂求和符号和积分符号这三点缺一个都很难跟。但也不需要你达到数学系级别只要静下心来把每一步推导都在草稿纸上跟一遍大部分内容还是能啃下来的。我建议这几类人重点考虑想搞机器学习算法岗的应届生做视觉、语音、NLP但一直没系统学过概率模型的研究生以及在推荐系统或时序预测里经常碰到状态空间模型的工程师。如果你是纯业务开发平时只调包跑深度学习那这套课前期看个热闹就好不用强迫自己刷完但如果真的想突破算法底层理解力这套课值得反复刷。2. 贝叶斯网络与马尔可夫随机场两种图模型的核心差异2.1 贝叶斯网络用有向图编码因果关系贝叶斯网络Bayesian Network在课程里的定义很清晰一个有向无环图节点是随机变量边表示条件依赖关系。它最大的价值是给了你一个分解联合概率的脚手架。比如学生成绩的例子成绩G同时受到课程难度D和智商I的影响推荐信L只跟成绩G有关那联合分布P(D,I,G,L)就可以分解成P(D)P(I)P(G|D,I)P(L|G)。这个分解不是可有可无的优化而是把指数级复杂度的问题压到多项式级否则变量一多联合概率表根本存不下。课程里会重点讲d-分离d-separation判据也就是怎么从图结构里读出条件独立关系。比如链式结构A→B→C里给定B以后A和C独立叉式结构A←B→C里给定B以后A和C也独立。这个在给定证据后哪些变量之间还有关联的判断几乎是一切图模型推断的起点。我自己的体会是d-分离这块一定要动手画几个图自己推一遍光看视频很容易觉得自己懂了一遇到具体问题就分不清head-to-head和tail-to-tail的情况。2.2 马尔可夫随机场无向图背后的势函数与配分函数和贝叶斯网络不同马尔可夫随机场Markov Random FieldMRF用无向图建模变量之间的对称关联。它不关心谁导致谁只关心谁和谁必须放在一起考虑。在这个框架里核心对象是团clique上的势函数potential function联合分布通过所有团的势函数相乘再归一化得到分母那个归一化常数就是配分函数partition function。配分函数是个狠角色。课程里反复强调MRF的大多数困难都源于这个Z它要对所有变量取值求和或积分。图像去噪、语义分割这种CV场景里经常要用MRF因为像素之间的约束天然是对称的——相邻像素同类的概率大但我不能说左边的像素导致了右边的像素。学到这里你会明白为什么图模型里精确推断那么难很多问题本质上都是在和配分函数搏斗。2.3 有向还是无向项目里怎么选这两套框架的选择在我实际做项目时有一套朴素的判断标准如果你能明确说出变量之间谁影响谁的方向性关系比如疾病导致症状、信号导致观测那优先考虑贝叶斯网络如果你只知道变量之间有关联但方向不重要比如图像像素、社交网络好友关系那MRF更自然。课程里专门有一节讲有向图如何转成无向图moralization以及无向图在某些条件下也能转成有向图。这节看起来偏理论但搞清楚之后再看那些用图模型统一理解的论文会轻松很多。3. HMM与卡尔曼滤波动态系统里的状态推断3.1 HMM的三把钥匙前向、维特比、Baum-Welch隐马尔可夫模型HMM是课程里第一个完整展开的动态模型。它的设定非常贴合现实系统有一个看不见的状态序列每个状态会产生一个可见的观测状态之间按转移矩阵变化。课程把HMM的三大经典问题讲得很透评估问题用前向算法算观测序列的概率解码问题用维特比算法求最可能的状态序列学习问题用Baum-Welch算法本质是EM从数据里估计转移矩阵和发射概率。我刷课时的最大收获是终于把前向算法和后向算法之间的关系理顺了。前向算法是从时间1走到时间T维护一个到达某状态时所有路径的概率和后向算法是从时间T走回时间1维护从某状态出发生成后续观测的概率。两者结合能得到每个时间点上状态的平滑后验分布这在语音识别、词性标注、基因序列分析里都是标配。维特比算法看起来只是在前向算法里把求和换成取max但这一步性质完全不同——前向算的是边际概率维特比算的是联合最优路径两者的数值经常对不上别搞混。3.2 卡尔曼滤波线性高斯假设下的解析解卡尔曼滤波Kalman Filter在我眼里就是HMM在连续状态空间、线性高斯条件下的正统升级版。如果把HMM的有限状态换成连续状态状态转移和观测都满足线性关系噪声都假设为高斯那么贝叶斯滤波的每一步都能写成封闭形式的解析解——这就是卡尔曼滤波。课程里给出了完整的预测和更新两个步骤状态转移矩阵F、观测矩阵H、过程噪声协方差Q、观测噪声协方差R每一个参数的物理含义都讲得很清楚。卡尔曼滤波的数学思想可以概括为预测阶段用模型外推状态和不确定性更新阶段用观测数据修正外推结果修正的幅度取决于对模型和对观测的信任程度这个信任程度就是卡尔曼增益K。K越大说明越信任观测K越小说明越信任模型。这套预测-更新-再预测的滚动逻辑和工程里常见的惯性导航、GPS融合、目标跟踪完全契合。我在做目标跟踪项目时先用检测器给出带噪声的位置观测再用卡尔曼滤波平滑轨迹代码只要几十行效果却比纯平滑窗口稳定得多。扩展卡尔曼滤波EKF也值得跟一遍本质是用一阶泰勒展开把非线性函数线性化课程里这块讲得比较快但足够你入门。3.3 从HMM到卡尔曼滤波一枚硬币的两面课程的高明之处在于它不把HMM和卡尔曼滤波当成两个孤立的模型而是放在同一个状态空间模型框架里讲。离散状态对应HMM连续状态加线性高斯对应卡尔曼滤波推理的核心都是在给定观测序列后计算当前状态的后验分布。这个统一视角特别解渴。我后来看强化学习里的POMDP、机器人里的粒子滤波靠的就是这个底子。如果只学模型不看共性你会在框架切换时觉得很乱抓住状态推断这条主线之后整套知识会自动归位。4. 变分推断把后验问题变成优化问题4.1 为什么需要近似推断精确推断的墙有多厚课程从贝叶斯网络和MRF的精确推断讲起但很快告诉你现实很残酷树状图可以用消息传递精确推断但只要图里出现环精确推断就是NP难题。更别说模型一复杂后验分布根本没有封闭解。这时候就必须上近似推断。课程把近似推断分成两大类确定性近似变分推断和随机近似MCMC。变分推断的思路特别工程化既然真实后验算不出来那就找一个形态简单的分布q去逼近它把推断问题转化为优化问题。4.2 ELBO的推导逻辑目标函数是怎么来的变分推断最劝退的地方就是ELBO的推导。课程里把它拆得很细对数边际似然log P(X)可以分解成ELBO加上KL散度ELBO等于证据下界。你要最大化ELBO等价于最小化q和真实后验之间的KL散度。用数学语言写就是log P(X) E_q[log P(X,Z)] - E_q[log q(Z)] KL(q(Z) || P(Z|X))前两项合起来就是ELBO最后一项KL永远非负所以ELBO一定是log P(X)的下界。我第一次看到这个公式的时候很懵后来自己推了一遍才明白优化ELBO其实是在拟合真实后验和尽量压缩q的复杂度之间找平衡。课程里特别强调ELBO里有两项一项让q尽量解释数据另一项让q不要偏离先验太远这就是变分推断里重构损失正则项的雏形——等你之后看VAE会发现VAE的损失函数就是从这个ELBO直接变出来的。4.3 平均场假设与坐标上升课程里的变分推断实操部分核心是平均场假设把复杂的后验分布拆成多个互相独立的因子每个因子单独优化。虽然这个独立性假设在真实问题里有些粗暴但胜在把一个巨大的联合分布优化问题拆成N个小问题每个小问题都可以用坐标上升迭代求解。我在LDA主题模型里手动写过一次变分EM跑完那一刻才真正理解坐标上升的滋味每轮更新一个因子的参数固定其他因子循环到收敛。这里有一个非常容易踩的坑平均场变分推断只会收敛到局部最优而且它倾向低估后验方差。换句话说q算出来的置信区间常常比真实后验更窄。课程里会用具体例子展示这个偏差我在做贝叶斯线性回归时也验证过这一点。所以我的建议是变分推断适合大规模数据和快速迭代的场景但如果后验分布的形状对你很重要那MCMC采样更保险。5. 推断算法脉络与学习路径实操建议5.1 消息传递从变量消去到信念传播课程最后一个大主题是消息传递算法也就是把推断算法统一成一棵树上的信息流转过程。变量消去算法是最直观的精确推断逐个消去变量重复求和和乘法的交替。但变量消去有个问题你为了算某一个边际概率消去变量后换一个查询又得重新算一遍。信念传播belief propagation的改进是把中间结果以消息的形式在图上缓存和传递这样一次完整的消息传递之后每个节点都能拿到自己的边际分布。课程讲的完整消息传递其实就是和积算法在前向-后向算法、HMM的Baum-Welch、树上的卡尔曼滤波之间的统一。我第一次意识到前向算法里传的那个α和小树上消息传递传的那个m本质是同一个东西的时候真有打通任督二脉的感觉。课程还讲了max-sum算法就是消息传递和维特比算法的结合用它来做最大后验推断。总的来说这一章是整门课的心脏值得放慢速度精读。5.2 刷课路线我把25讲拆成了6周计划如果你决定啃这套课我建议不要按部就班一天一讲而是按主题分组。我的刷法是这样第一周看贝叶斯网络相关的讲次重点做d-分离和联合概率分解的练习第二周看MRF重点是看懂配分函数和势函数的关系第三周专门攻HMM把前向、维特比和Baum-Welch手动实现一遍第四周看卡尔曼滤波和扩展卡尔曼用一个小目标跟踪例子验证第五周看变分推断重点推导ELBO第六周回顾消息传递把所有模型串起来。这个节奏看起来慢但每一步都走实了后面复习几乎不需要再翻视频。配套材料方面建议对照Koller的《Probabilistic Graphical Models》看很多定理证明和例子是课程的直接来源。另外Bishop的《Pattern Recognition and Machine Learning》第8章和第13章也值得翻一翻特别是HMM和线性动态系统那两节和课程互补性很强。网上还能找到很多PGM的讲义和习题集配合课程作业一起做效果比只看视频好太多。5.3 项目实战中常见的三个坑第一图结构拍脑袋定不做灵敏度分析。很多人在MRF里手动设势函数参数设完就再也不动了。实际上参数对结果影响极大尤其是图像分割里平滑项权重。我的做法是先用网格搜索粗调一遍观察结果对参数的敏感程度再定最终值。第二把变分推断当成万能近似工具。前面说了平均场变分推断低估方差如果后验是多峰的VI结果会是一团糊。我有一次做混合模型的推断最后q分布看起来完全不合理换成MCMC才拿到正常的后验。第三忽略观测噪声的协方差R。卡尔曼滤波里R不是拍脑袋设的它对状态估计的平滑程度有决定性影响。R设小了滤波器会过度相信噪声很大的观测状态估计抖动严重R设大了滤波器反应迟钝目标突然转向时跟不上。做目标跟踪的话最好用一小段真值数据离线标定R再上在线场景。6. 结语前的最后一点体会把这25讲完整刷完一遍之后我最大的感受是概率图模型不是一个过时的传统方法而是理解现代生成式模型和贝叶斯深度学习的底层语言。扩散模型里的去噪过程、VAE里的ELBO、Transformer里的注意力加权这些热词背后都能看到PGM思想的身影。如果你正在算法这条路上爬坡这套课值得你花两到三个月慢慢啃绝对不亏。最后再分享一个小技巧刷课的时候准备一个草稿本每看完一讲不翻笔记凭记忆把这一讲的核心公式和推导流程默写出来。这个动作看起来笨但我试过比刷三遍视频都管用。
返回列表