在群山环抱的小村落里,村民们住在蜿蜒岔开的坡路上——有人住在山脚的集市口,有人住在半山腰的果园边,还有人住在最高处的瞭望塔。每个人都只清楚自家的一亩三分地:面粉店老板知道自己的库存,面包师傅知道自己的订单。可全村人最想知道的是同一个问题:明天赶集时,大家的整体行情到底怎么样?没有谁跑得过来所有人家,只能托邻居带口信。奇妙的是,只要路不绕圈,口信来回传两轮,每户人家都能精确算出全村的整体状况;就算有些路围成了圈、口信在圈子里打转,人们也能靠“传完就停”的土办法,得到八九不离十的答案。这小村落里的智慧,就是概率图模型推断的基石——信念传播。 信念传播让每个节点只跟邻居交换“局部看法”,却能把全局的信念算得清清楚楚。对 AI 从业者来说,它是理解概率推断、设计推荐系统、调试图像算法和通信解码器的必备底层直觉,也是从“会用工具”走向“读懂模型”的关键一步。
掌握信念传播,你就掌握了概率模型推断的发动机:无论在推荐、视觉还是通信领域,它都是让“局部信息汇聚成全局判断”的那套底层密码,是工程师从调参走向建模的必修内功。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
图的要素:先看清村落的邻里关系
让我们先在这座小村落里走一圈。面粉店老板认识面包师傅,面包师傅认识糕点店主,糕点店主又认识集市口的农夫——这些“认识”构成了村落的关系网。村民各自只知道自家的买卖(这是他的“私人观察”),但真正让全村连成一体的,是每家店铺之间的那种“默契”:面包师傅进的货总是跟着面粉店的库存走,糕点店的销量又总跟面包的出炉量挂钩。在概率图模型里,这一切被抽象成三个要素:节点(村民/变量)、边(邻里关系/概率依赖)、因子(邻里默契/局部函数)。
把镜头拉近一点看技术细节。一个包含 \(n\) 个变量的联合分布,可以被分解为许多只管局部变量的因子之积——这正是图结构带来的巨大简化:不用一张巨大的表去描述全村的组合情况,只需要每家店铺的“小账本”。
除此之外,还有一类特殊要素——观测证据。好比村里已经发生的既成事实:面粉店的库存见底了,这是板上钉钉的。在模型中,这样的变量取值被固定,所有推断都要在这个“已知事实”之上进行。搞清楚了节点、边、因子和观测,我们才能谈接下来的消息传递。
- 联合分布 \(P\)所有村民状态(变量取值)共同出现的概率。
- 配分函数 \(Z\)归一化常数,保证所有可能情况的概率之和为 1。
- 因子乘积 \(\prod f_a\)把每个局部“小账本”乘在一起。
- 因子邻域 \(x_{\mathcal{N}(a)}\)因子 \(a\) 只关心自己相关的那些变量,正如面包师傅的账本只涉及他自己和面粉店。
变量消除:村长逐个谈话的笨办法
村长想知道全村对明年集市行情的整体预期,但他年纪大了,腿脚不便,只好一个一个找人谈。他先找山脚的农夫,把农夫的看法连同对他邻居的推测抄进笔记本,然后合上本子,这个人的意见就从桌面上“消失”了——但精华留在了笔记里。接着他去找下一位……如此反复,最后翻开笔记本,剩下的就是他对全村总貌的总结。这个过程就叫变量消除:每谈完一个人,就把他“边缘化”掉。
在数学上,“把一个人谈完”意味着:先把所有与他有关的因子乘起来,再对他所有可能的取值做求和,最终产出一个更小、更粗糙的新因子。这个新因子保留了他对邻居的影响,但他本人已经从计算中被“求和掉了”。
消元的顺序很有讲究。先谈农夫还是先谈面包师傅,中间笔记本上的内容大小可能天差地别——某些顺序会产生巨大的中间因子,把计算量撑爆。这正是变量消除法的软肋。不过,如果让聪明的村长换一种思路:每家店铺先把话传给邻居,邻居汇总后接着往下传,而不是村长本人一趟趟跑——这,就过渡到了信念传播的消息传递思想。
- 新因子 \(\tau(x_S)\)消除 \(X\) 后剩下的“笔记本摘要”,只涉及剩余变量。
- 被消变量 \(x_X\)这次谈话要“送走”的那个村民。
- 求和边缘化 \(\sum\)把 \(X\) 的所有可能取值都考虑一遍再相加,相当于“不管他怎么想,把各种情况汇总”。
- 因子相乘 \(\prod\)先乘起所有涉及 \(X\) 的账本,再统一谈判。
消息定义:口信的格式是“我对你的看法”
村民之间传口信是有讲究的。张三托人给李四带话,绝不会说“我觉得我自己家怎么样”,而是说:“依我这边掌握的情况,我觉得你家明天的行情应该是这样、那样的。”口信只谈论对方,不夹带其他家的杂音——这是消息传递最微妙的规矩。在信念传播里,节点 \(i\) 传给节点 \(j\) 的消息记作 \(\mu_{i\to j}(x_j)\),它是一个关于 \(x_j\) 的函数:对 \(j\) 的每一种可能取值,给出一个非负的权重,表示“我认为你有多大概率是这个状态”。
消息怎么算出来?节点 \(i\) 会综合三样东西:自己亲眼看到的观测(本地势 \(\phi_i\))、和 \(j\) 之间的那份默契(边势 \(\psi_{ij}\))、以及所有其他邻居传给自己的口信。唯独要排除来自 \(j\) 自己的消息——否则就是把自己的话绕一圈又听回来,等于自己给自己作证。
这条消息公式一旦定义好,全村的消息就能像接力棒一样传起来了。而消息传完之后,每个村民最终怎么给出自己的判断?这就进入和积算法。
- 消息 \(\mu_{i\to j}(x_j)\)\(i\) 写给 \(j\) 的口信,内容是关于 \(j\) 的状态估计。
- 本地观测 \(\phi_i(x_i)\)\(i\) 自己看到的“私人事实”。
- 边势 \(\psi_{ij}\)\(i\) 与 \(j\) 之间的邻里默契,两者状态有多“合拍”。
- 排除回流 \(\prod_{k\ne j}\)乘上除 \(j\) 以外所有邻居的口信,唯独不听 \(j\) 自己的。
- 求和 \(\sum_{x_i}\)把 \(i\) 自身所有可能状态“打包”进这个口信里。
和积算法:两轮传遍全村的口信接力
村里的传话方案定了:第一轮,叶子住户(比如山顶瞭望塔的人)先把口信传给下一家,下一家把自己的情况加进去继续传,一路汇聚到村长家;第二轮,村长再把汇总后的整体判断原路传回去,每家每户补上自己缺失的全局信息。这就是信念传播的“两轮协议”——先从叶子到根汇聚,再从根到叶子分发。
当所有该到的口信都到手后,村民 \(i\) 的最终判断 \(\b_i(x_i)\)(叫作信念或边际)就是把所有邻居的口信乘起来,再乘上自己的私人观测,最后统一归一化。这个信念就是“基于全村信息,我认为自己处于某种状态的概率”。
有趣的是,这套“求和+乘积”的操作,和村长逐个谈话的变量消除法在树状结构上得到的结果完全一样。区别在于:BP 把中间产物(口信)缓存下来反复使用,避免了重复计算。于是,一个朴素但深刻的结论浮出水面——只要村落的路不绕圈,这种方法算出的答案就是精确的。
- 信念 \(b_i(x_i)\)节点 \(i\) 对自身状态的最终估计。
- 本地观测 \(\phi_i\)自家账本——亲眼所见的事实。
- 所有邻居口信 \(\prod_{k\in \mathcal{N}(i)}\)这次不需要排除任何人,因为所有口信都有资格参与最终判断。
- 归一化常数 \(Z_i\)让信念在所有状态上的总和等于 1,成为一个合法的概率分布。
树精确性:无环土地上的精确账本
什么才算“不绕圈的路”?在图上,如果任意两个村民之间只有一条路径可以到达,这种结构就叫树(单连通图)。山坡上的小路像树枝一样纯粹分叉,没有任何一条路会绕回原点。在这样的村里,消息传递有一个美妙性质:从叶子传向根时,每条消息都完整地带上了自己那棵子树的全部信息;等根再把整体信息传回来,每家每户就同时掌握了自己子树的信息和外部世界的信息——两边一合,就是全局精确解。
于是有定理:在树上,信念传播经过(叶子→根)+(根→叶子)的两轮完整传递后,每个节点的信念精确等于在该节点观测条件下的后验概率。
从算法角度看,树上的 BP 本质上是一种动态规划:它把“求全局边际”这个大问题拆成许多子树的小问题,每个消息只计算一次,避免了指数级的重复计算。复杂度从暴力枚举的 \(O(k^n)\) 降到 \(O(n\cdot k^2)\) 量级——这正是它能处理成百上千个变量的原因。可问题来了:如果村里真的有环形的路,这套精确账本还成立吗?
- 信念 \(b_i(x_i)\)经过两轮传递后节点 \(i\) 的最终信念。
- 精确后验 \(P(x_i \mid \mathcal{E})\)在已经观测到证据 \(\mathcal{E}\) 的条件下,节点 \(i\) 的真实后验边际概率。
- 对所有节点成立 \(\forall i\)不只是某个特定节点,而是树上每一个节点都能拿到精确答案。
Loopy逼近:有环村落里为什么口信够用
小村落的东边新修了一条环山路:张三认识李四、李四认识王五、王五又绕回来认识张三。消息在这样的圈子里传递会发生什么?张三的话传到李四,李四添油加醋传给王五,王五再传回张三——张三听到的居然是自己原本那番话被绕了一圈的“回音”。理论上,这口信会在圈子里永远打转,永远无法像树那样自然停稳。这种在含环图上强行运行信念传播的做法,就叫 Loopy BP(环状置信传播)。
Loopy BP 的操作其实很朴素:干脆不去管环不环,把每条消息初始化为均匀分布,然后按同样的消息公式一遍遍更新,直到消息不再明显变化或者达到预设的最大轮数。这样做完全失去了“精确”的保证——可能收敛到某个近似解,也可能来回震荡永远不收敛。
尽管 Loopy BP 在理论上“不保证收敛、收敛了也不保证精确”,但实践中它却出奇地好用。原因在于,很多真实系统的图虽然带环,但环都比较长、相互作用比较弱,消息绕一圈后的“回音”影响有限。于是,近似结果往往和精确值非常接近。工程师们早就发现:与其对大图做指数级精确计算,不如跑几十轮 Loopy BP,用可接受的计算量换一个足够好的答案。
- 阻尼系数 \(\alpha\)新信息的采信比例,一般取 0.5 左右,“折中折中再决定”。
- 保留旧消息 \((1-\alpha)\mu^{(t)}\)上一轮的口信仍有一票话语权,避免突然大转弯。
- 采信新消息 \(\alpha\,\tilde{\mu}\)按和积规则刚算出的新鲜口信,只被部分采纳。
收敛性质:口信什么时候才算传到头
村里传口信总得有个收工的规矩。村民们约定:每轮传完,比一比每条口信和上一轮的差别,找出变化最大的一条;如果连“变化最大的那条”都小到可以忽略,就判定口信已经稳定,全村收工。这个规矩就是收敛判据。
当 \(\Delta < \varepsilon\)(比如 \(\varepsilon = 10^{-4}\))时停止迭代。如果消息一直停不下来呢?那就启动两条兜底策略:阻尼——把新旧消息折中,给秋千增加空气阻力;最大迭代数——无论如何最多跑 100 轮,到点强制收工,拿当前信念当结果。
还有一个值得知道的理论背景:当 Loopy BP 收敛时,它其实是在寻找某个变分自由能(Bethe 自由能)的局部驻点。换句话说,收敛的消息组合对应着某种意义下“最优”的近似分布——虽然不精确,但有数学依据,不是纯碰运气。这解释了为什么工程上敢放心用 Loopy BP 处理几百万节点的大图。
- 最大变化 \(\max\)在全部消息、全部状态中找出变化最剧烈的那一档。
- 新旧差值 \(|\mu^{(t+1)}-\mu^{(t)}|\)这条口信这轮和上轮差了多少。
- 阈值判断 \(\Delta < \varepsilon\)连最剧烈的变化都低于阈值,说明所有口信都稳定了。
工业应用:从村落口信到芯片上的毫秒级推断
传口信的小村落智慧,早就悄悄走进了当代最前沿的工程现场。第一个落地位是通信解码:你手机里的 Wi-Fi 和 5G 信号在传输时会用 LDPC 码做纠错,而 LDPC 解码器的核心算法就是信念传播——数万个比特节点和校验节点在芯片上互相传消息,只需几毫秒就能把正确比特“投票”出来。这是 Loopy BP 最光辉的工业战绩:图上有环、不保证收敛,但精心设计的码字让消息几乎总能传对。
第二个落地位是图像去噪:把每个像素看成一个节点,相邻像素之间有权重约束“邻居颜色不应该差太远”,跑一轮或几轮 BP,每个像素就根据周围像素的消息修复自己的颜色。这是经典的低层视觉任务,也是 BP 在图像处理中的标准用法。第三个落地位是推荐系统:用户和物品构成一张二部图,用户对物品的评分构成观测证据,BP 能估计出用户对未购买物品的偏好边际,从而给出推荐排序。
从山间村落的口信,到芯片里的 LDPC 解码,信念传播用同一个朴素思想——局部消息汇聚成全局判断——贯穿了从图模型理论到工业系统的整条链路。对工程师而言,理解这封“口信”怎么传,就等于拿到了概率推断世界的通用钥匙。
- 信念最大 \(\arg\max\)在所有候选状态中挑信念最大的一个。
- 节点输出 \(\hat{x}_i\)最终给该节点贴上的标签(解码比特/像素颜色/偏好等级)。
- 基于信念 \(b_i(x_i)\)输出完全由 BP 算出的信念决定。
AI 应用场景
5G/Wi-Fi 通信中的 LDPC 解码
阶段:模型推断 / 信号解码
解决的问题:无线信号在信道中传输会引入大量比特错误,传统查表解码复杂度随码长指数爆炸,无法满足毫秒级实时解码需求。Loopy BP 把几万个比特节点和校验节点组织成图,节点间并行传递“这个比特该是 0 还是 1”的消息,几十轮迭代即可完成解码,硬件实现简单且吞吐极高。
具体案例:一部手机每次接收数据包,芯片内 LDPC 解码器都要跑若干轮信念传播。以 5G NR 标准中常用的码率 1/3 LDPC 码为例,迭代 10~20 轮内就能把误码率压到 \(10^{-6}\) 以下——这正是你视频通话不花屏的关键技术之一。
低层视觉中的图像去噪与修复
阶段:数据预处理 / 图像恢复
解决的问题:照片在暗光或压缩传输中出现噪点,逐像素独立处理会丢失空间连续性。BP 将图像建模成网格图:像素是节点、相邻像素的相似性是边势,观测噪点是证据,通过消息传递让每个像素参考邻居“投票”恢复真实颜色,在保持边缘的同时去除噪点。
具体案例:医学影像去噪中,CT 低剂量扫描图像噪声强但组织边界需要保留。用网格图上的 Loopy BP 做几轮消息传递,能得到比高斯滤波更锐利、比深度学习更可解释的恢复结果,且无需训练数据。
推荐系统中的用户偏好估计
阶段:模型推断 / 个性化排序
解决的问题:用户-物品评分矩阵稀疏,直接矩阵分解要全局优化代价高昂。BP 把用户和物品建成二部图,评分是边上的观测证据,通过消息传递估计每个用户对未交互物品的偏好边际,计算可并行、可增量更新,适合大规模在线推荐。
具体案例:某视频平台对新用户冷启动时,先用少量行为证据构建用户-视频图,跑 BP 得到用户对各内容类别的偏好边际,再结合规则排序完成首屏推荐——从点击到出结果只需几十毫秒,模型可解释性远好于纯深度模型。
Python 演示
def bp(edges, node_pot, edge_pot, iters): """在无向图上跑同步信念传播,变量为二值,消息是长度为2的分布向量。""" adj = {} for (i, j) in edges: adj.setdefault(i, []).append(j) adj.setdefault(j, []).append(i) n = len(adj) msgs = {} for i in adj: for j in adj[i]: msgs[(i, j)] = [1.0, 1.0] def new_message(i, j): # mu_(i->j)(xj) = sum_xi node_pot[i][xi] * edge_pot[xi][xj] # * prod_{k in adj[i], k != j} msgs[(k, i)][xi] res = [0.0, 0.0] for xj in (0, 1): for xi in (0, 1): prod = node_pot[i][xi] * edge_pot[xi][xj] for k in adj[i]: if k == j: continue prod *= msgs[(k, i)][xi] res[xj] += prod s = res[0] + res[1] return [res[0] / s, res[1] / s] if s > 0 else [0.5, 0.5] for _ in range(iters): new_msgs = {} for (i, j) in msgs: new_msgs[(i, j)] = new_message(i, j) msgs = new_msgs beliefs = [] for i in range(n): b = [node_pot[i][0], node_pot[i][1]] for k in adj[i]: b[0] *= msgs[(k, i)][0] b[1] *= msgs[(k, i)][1] s = b[0] + b[1] beliefs.append([b[0] / s, b[1] / s]) return beliefs def main(): node_pot = {i: [0.8, 0.2] for i in range(4)} # 每个节点偏向状态0 edge_pot = [[1.5, 0.5], [0.5, 1.5]] # 邻居偏好状态相同 tree = [(0, 1), (1, 2), (2, 3)] # 链 A-B-C-D print('树状链路上跑3轮(恰好等于树直径):') for i, b in enumerate(bp(tree, node_pot, edge_pot, 3)): print(' 节点 %d: P(x=0)=%.4f P(x=1)=%.4f' % (i, b[0], b[1])) loop = tree + [(3, 0)] # 加上一条边形成环 print('带环图上跑60轮 Loopy BP:') for i, b in enumerate(bp(loop, node_pot, edge_pot, 60)): print(' 节点 %d: P(x=0)=%.4f P(x=1)=%.4f' % (i, b[0], b[1])) if __name__ == '__main__': main()
adj.setdefault(i, []).append(j)把边表转成邻接表,构建“谁认识谁”的村落关系。msgs[(i, j)] = [1.0, 1.0]每条有向消息初始化为均匀分布,表示“还没谈,先不偏不倚”。if k == j: continue关键规则:计算发给 j 的口信时跳过 j 自己,避免信息的“自我循环”。prod *= msgs[(k, i)][xi]把其他所有邻居的口信乘起来,正是消息公式中的连乘。res[xj] += prod对 xi 求和,完成边缘化:把 i 的各种状态“打包”掉。s = res[0] + res[1]归一化,让消息成为一个合法的概率分布。for _ in range(iters): new_msgs = {...}同步更新:所有消息基于上一轮旧消息同时计算,保证顺序公平。b[0] *= msgs[(k, i)][0]计算最终信念:自己的观测 × 所有邻居的到访消息。tree = [(0, 1), (1, 2), (2, 3)]构造一条链,直径是 3,跑 3 轮消息正好传遍全树。loop = tree + [(3, 0)]加一条边形成环,见证 Loopy BP 的近似行为。
常见误区
误区教程里每个例子跑几轮就停了,我以为信念传播在任何图上都保证会收敛,最多是慢一点。
正解收敛只在树(无环图)上有保证。在含环图上,Loopy BP 可能收敛,也可能在两个或多个状态之间来回震荡永远停不下来。工业实现中必须设置最大迭代数作为兜底,配合阻尼技巧提高收敛概率。
为何常见:入门教程几乎都以树为例演示,树上的 BP 两轮就精确收敛,容易让人误以为“迭代总会停”。
误区既然不保证收敛、收敛也不保证是精确后验,那 Loopy BP 应该只是个教学玩具,真实系统不会用它。
正解恰恰相反,Loopy BP 是 LDPC 解码、图像去噪、立体匹配等系统的标准工业算法。它给的近似解在大量真实图上精度足够,而计算代价远低于精确推断。LDPC 码正是靠 BP 的强近似能力才能在手机芯片上毫秒级解码。
为何常见:教材强调“树=精确”,把“近似”和“没用”画了等号,忽略了工程中对精度与算力的权衡。
误区多传几轮消息等于多收集信息,信念应该会一直变好,最终靠近精确值甚至超过它。
正解在环上,消息经过环路后会转回来重复计算同一条信息,产生“过置信”——相当于自己听自己的回音还当真了。多轮迭代可能让信念越来越自信,却离真相越来越远。收敛的信念不等于正确的信念,这是 Loopy BP 最需要警惕的现象。
为何常见:直觉上“交流越多越好”在生活中成立,但在带反馈回路的图上,循环依赖会让信息失真,这违反日常直觉。
误区名字里有“贝叶斯”,所以信念传播只能用在有向图(贝叶斯网络)上,马尔可夫随机场这类无向图不能用。
正解和积 BP 天然定义在因子图上,无论有向图还是无向图,都可以先统一转换到因子图再跑 BP。马尔可夫网络中常见的成对势能函数正是 BP 的标准输入,图像去噪用的网格图就是无向图。
为何常见:“Belief Propagation“里的”Belief“(信念)很容易被误读成”贝叶斯”,导致用户忽略它其实是图模型通用的推断引擎。
面试题
Q1. 信念传播中消息 \(\mu_{i\to j}(x_j)\) 传达的本质信息是什么?
- A.i 自己对自身取值的最终判断
- B.i 综合邻居信息对 j 的局部估计← 正确答案
- C.整个网络中所有节点的联合分布值
- D.节点 j 的原始观测数据值本身
答案:B。消息是 i 写给 j 的“口信”,内容只关于 j 的状态,且只包含 i 及其其他邻居的局部信息,正是“对 j 的局部估计”。A 是信念而非消息;C 是全局联合分布,超出了单条消息的职责;D 是观测本身,不是推断结果。
Q2. 在树状概率图上,BP 经过两轮完整消息传递后得到的边际信念是?
- A.近似估计且误差随树深度增长
- B.精确的后验边际概率分布值← 正确答案
- C.只有叶子节点的边际才是精确值
- D.多轮消息更新结果的算术平均
答案:B。树结构保证消息传递一次即可让信息覆盖全图,收敛后的信念等于后验边际 \(P(x_i|\mathcal{E})\),对所有节点成立。这是 BP 的核心定理之一,也是树与环的本质区别所在。
Q3. 变量消除法中,决定计算复杂度最关键的因素是?
- A.网络中观测证据数量的多少
- B.变量消元顺序和中间因子规模← 正确答案
- C.消息更新迭代是否使用阻尼系数
- D.联合概率分布是否做了归一化
答案:B。选择不同的消元顺序,会产生不同大小的中间因子;最大的中间因子规模决定了复杂度。这与证据数量关系不大,与阻尼和归一化更是无关,反映了图算法中“顺序即效率”的经典命题。
Q4. 关于 Loopy BP 在含环图上的行为,下列说法正确的是?
- A.必然收敛到精确的边际概率值
- B.可能不收敛但往往给出有效近似← 正确答案
- C.收敛后各节点边际总和必然大于 1
- D.消息必须按变量消除顺序依次更新
答案:B。含环图上 BP 既不保证收敛,也不保证精确,但实践中近似效果好且计算高效。B 是对 Loopy BP 最准确的描述。A 错在“必然”和“精确”;C 荒诞,信念归一化后不会大于 1;D 把变量消除的顺序要求错安到 BP 头上。
Q5. 节点 i 向 j 发送消息时,为什么要排除来自 j 自身的消息?
- A.避免信息回流造成重复计数误区← 正确答案
- B.减少乘法次数以大幅提高运行速度
- C.维持消息方向对称以满足归一化要求
- D.保证消息更新只能在无向图上进行
答案:A。如果接收来自 j 的消息,i 把 j 的话绕一圈又传回 j,等于 j 自己听见自己的回音并被当成了新证据,这就是环上过置信的根源。排除回流正是为了让消息只携带“外部世界”的信息,维护信息的独立性。
Q6. 树状图中 BP 与变量消除法的关系是?
- A.两者结果不同,BP 总是更精确
- B.树上 BP 等价于变量消除且结果精确← 正确答案
- C.变量消除是 BP 的一种特殊近似
- D.BP 只能处理因子图而变量消除不能
答案:B。树上消息传递的过程,等价于按某种顺序做变量消除;BP 通过消息缓存避免了重复计算,但最终结果与变量消除完全一致,都是精确后验。A、C、D 均与已知理论不符。
Q7. Loopy BP 中阻尼更新 \(\mu^{new}=(1-\alpha)\mu^{old}+\alpha\,\tilde{\mu}\) 的主要目的是?
- A.加快收敛并保证找到全局最优解
- B.抑制消息震荡以帮助近似收敛← 正确答案
- C.把近似边际精确化为真实后验
- D.删除图中全部环路使之成为树
答案:B。阻尼让新旧消息各让一步,相当于给消息迭代加“刹车”,降低震荡幅度,提高收敛概率。它不保证全局最优,也不能把近似变精确,更不可能改变图结构。B 准确描述了阻尼在工程中的角色。
Q8. 关于变量消除法与信念传播的关系,下列说法正确的有?
- A.树上 BP 与变量消除结果等价并且精确← 正确答案
- B.变量消除可视为单轮无缓存式的 BP 视角← 正确答案
- C.变量消元顺序对效率没有任何实际影响
- D.BP 通过缓存复用消息避免重复因子计算← 正确答案
答案:ABD。在树上,BP 的消息传递过程恰是变量消除的重组,两者给出同样的精确边际;变量消除每步消一个变量,可看作 BP 消息只传一次不留缓存。消元顺序显著影响中间因子规模,C 说法错误。BP 的消息复用正是其高效的关键,D 正确。
Q9. 在含环图上运行 Loopy BP,可能的结局包括?
- A.收敛到贝特变分自由能的一个局部驻点← 正确答案
- B.消息在某两个状态之间持续震荡不停止← 正确答案
- C.保证收敛到暴力枚举一致的精确边际值
- D.施加阻尼后从震荡状态转变为收敛状态← 正确答案
答案:ABD。收敛时 Loopy BP 对应某个变分自由能的稳定点,这是理论依据;也可能因环路反馈而震荡;阻尼可以抑制震荡,是工程常用技巧。C 错在“保证”和“精确”——含环图上没有任何收敛精确的保证。
Q10. 下列属于信念传播实际工业应用的是?
- A.LDPC 纠错码的近似低复杂度解码← 正确答案
- B.图像去噪中对像素标签做修复估计← 正确答案
- C.训练全连接网络时使用梯度下降
- D.推荐系统中估计用户偏好的边际← 正确答案
答案:ABD。LDPC 解码、图像去噪、推荐偏好估计都是 BP 的标志性落地场景。C 的梯度下降属于神经网络训练,与信念传播的消息传递机制无关,是常见的混淆项。