设想一个普通的周末家庭聚会:爷爷先开始咳嗽,两天后爸爸也打喷嚏,再后来孩子发起了低烧。家里人心照不宣地画出了一条“传染链”——爷爷传染给了爸爸,爸爸又传染给了孩子。如果把这关系画成一张图:三个人是三个圈,传染方向是带箭头的线,就得到了一张最简单的地图。这张地图不仅能解释“谁传给了谁”,还能回答一个更值钱的问题:如果孩子病了,最可能的传染源头是谁?贝叶斯网络,就是这张地图的数学化版本。它把“多个变量互相影响”这件事,变成一张有向无环图:节点代表变量,箭头代表依赖,整张图则编码了所有变量联合出现的概率。有了它,你可以正向推演(爷爷病了,孩子感冒概率多高),也可以反向诊断(孩子确诊,爷爷被感染概率多大)。

岗位关联

学会贝叶斯网络,你就掌握了一种把“多因素互相影响”拆解成一张可计算图表的建模思想。它是医疗 AI、金融风控、推荐系统和因果推断中最常用的底层工具之一,直接决定你能否把数据变成可靠的决策支持。

目录
  1. 可视化演示
  2. 有向无环图
  3. 条件概率基础
  4. 联合概率分解
  5. 条件独立性
  6. 贝叶斯推断
  7. 参数学习
  8. 典型应用场景
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示医疗诊断贝叶斯网络的有向无环图结构和概率推断过程,通过滑块调节先验参数观察后验概率变化。

本节配有交互动效(进入视口后自动加载,约 3KB)。

DAG结构:有向无环图编码条件依赖 节点=随机变量,有向边=条件依赖 联合概率按链式分解大幅减少参数 P(X) = ∏ P(Xi | Pa(Xi)) DAG无环约束保证拓扑序可分解。

有向无环图

聚会第三天,家人开始按“谁传给了谁”画图。爷爷的圈指向爸爸的圈,爸爸的圈指向孩子的圈——一张图就勾勒出了整场感冒的传播脉络。这张图中最重要的规则是:箭头只能往前指,不能绕回自己形成闭环。因为感冒不可能让爷爷再反过来被孙子传染一遍(至少在这段时间内不可能),概率的逻辑也需要这种“不回头”的保证。

在贝叶斯网络中,这张图被称为有向无环图(Directed Acyclic Graph,DAG)。每个节点代表一个随机变量,比如“爷爷是否感冒”;每条有向边表示父节点对子节点的直接条件依赖,比如爷爷的状态会影响爸爸的状态。贝叶斯网络的精巧之处在于:它把“所有变量一起出现的联合概率”压缩成每个变量只依赖其父节点的条件概率乘积。这样一来,原本需要记录 \(2^n\) 个数值的全联合表,被拆成若干张小表,存储和计算都大幅简化。

P(X1,…,Xn)=∏i=1nP(Xi∣Parents(Xi))\displaystyle P(X_1,\dots,X_n)=\prod_{i=1}^{n}P(X_i\mid \text{Parents}(X_i))

1. 联合分布:左边 \(P(X_1,\dots,X_n)\) 表示所有随机变量同时发生的概率,是整场“感冒账本”的总和。

P(X1,…,Xn)\displaystyle P(X_1,\dots,X_n)

2. 连乘符号:\(\prod_{i=1}^{n}\) 将 \(n\) 个条件概率依次相乘,对应“传播链条逐级传递”的假设。

∏i=1n\displaystyle \prod_{i=1}^{n}

3. 条件概率项:\(P(X_i \mid \text{Parents}(X_i))\) 表示每个变量在已知父节点状态时的概率,它的“考官”只有直接父节点。

P(Xi∣Parents(Xi))\displaystyle P(X_i \mid \text{Parents}(X_i))

这张传染链地图告诉我们一个关键思想:全局依赖可以由局部依赖叠加而成。正如家里的每个人只需知道自己被谁直接传染,整场聚会的感染模式就能被完整重现。

条件概率基础

判断爸爸会不会生病,不能只看爷爷病没病,还要看“爷爷已病时爸爸病倒的比例”和“爷爷没病时爸爸病倒的比例”。这就是条件概率:在给定某个前提后,重新评估事件发生的可能性。它像一把体温计,把“已知信息”插进去,读出更新的健康概率。

贝叶斯网络的每个箭头都携带一张条件概率表。例如 \(P(F=1 \mid G=1)=0.8\) 表示爷爷生病时爸爸有 80% 概率被传染;\(P(F=1 \mid G=0)=0.2\) 表示爷爷没病时爸爸仍有 20% 概率从社区感染。先验概率则是没有任何证据时的初始信念,比如 \(P(G=1)=0.3\),这是从往年聚会数据里统计出来的“爷爷一开场就带病来的概率”。

把条件概率倒过来用,就是贝叶斯公式。它回答的是“看到结果后反推原因”的问题:如果爸爸真的生病了,爷爷是传染源的概率有多大?

P(G∣F)=P(F∣G) P(G)P(F∣G) P(G)+P(F∣¬G) P(¬G)\displaystyle P(G\mid F)=\frac{P(F\mid G)\,P(G)}{P(F\mid G)\,P(G)+P(F\mid \neg G)\,P(\neg G)}

1. 分子:\(P(F \mid G)P(G)\) 表示“爷爷生病且爸爸被他传染”的联合路径权重。

P(F∣G) P(G)\displaystyle P(F\mid G)\,P(G)

2. 分母:加上 \(P(F \mid \neg G)P(\neg G)\),涵盖“爷爷没病但爸爸从别处感染”的所有可能,保证概率总和为 1。

P(F∣G) P(G)+P(F∣¬G) P(¬G)\displaystyle P(F\mid G)\,P(G)+P(F\mid \neg G)\,P(\neg G)

3. 除法的意义:用“目标路径的权重”除以“所有路径的总权重”,得到归一化后的后验概率。

P(G∣F)\displaystyle P(G\mid F)

代入数字:\(0.8 \times 0.3 = 0.24\),分母为 \(0.24 + 0.2 \times 0.7 = 0.38\),所以 \(P(G \mid F) \approx 0.632\)。也就是说,看到爸爸生病后,爷爷是传染源的概率从先验 0.3 提高到了约 0.63。这正是体温计的功能:证据让信念升温。

联合概率分解

如果要把全家三人“谁病谁没病”的所有可能性都列出来,需要记录 \(2^3=8\) 个联合概率。若是 10 个家庭成员,就是 1024 个;30 个人,十亿级别——这显然不现实。聪明的做法是像记账一样,沿着传播链逐层展开:先记爷爷的先验,再记爸爸在爷爷条件下的概率,最后记孩子在爸爸条件下的概率。

这种展开方式叫链式法则。它对任何概率分布都成立,因为联合概率总可以按变量顺序逐级条件化。而贝叶斯网络的价值在于:无环图的结构告诉我们很多条件关系是多余的。以“爷爷→爸爸→孩子”这条链为例,孩子是否生病在给定爸爸状态后,其实不需要再直接考虑爷爷——爷爷的影响已经全部折算进爸爸的状态里了。

P(G,F,C)=P(C∣F) P(F∣G) P(G)\displaystyle P(G,F,C)=P(C\mid F)\,P(F\mid G)\,P(G)

1. 联合概率:左边 \(P(G,F,C)\) 表示爷爷、爸爸、孩子三人状态的联合概率,0 或 1 共八种组合。

P(G,F,C)\displaystyle P(G,F,C)

2. 孩子项:\(P(C \mid F)\) 表示孩子只直接依赖爸爸,这是结构赋予的简化。

P(C∣F)\displaystyle P(C\mid F)

3. 爸爸项:\(P(F \mid G)\) 表示爸爸只直接依赖爷爷,承接上游信息。

P(F∣G)\displaystyle P(F\mid G)

4. 爷爷项:\(P(G)\) 是无父节点的先验概率,一切传播的源头。

P(G)\displaystyle P(G)

用这个“概率账本”可以算出 \(P(F=1)=0.38\),进而算出 \(P(C=1)=0.652\)。整场聚会的感冒风险,就从这三张乘法表中完整推导出来。账本越细,越能体现图结构省下的巨量空间。

条件独立性

在传染链中有一个微妙而重要的现象:如果爸爸的状态已经确知——比如爸爸确定没病——那么爷爷是否生病,对判断孩子是否生病还有帮助吗?没有。因为爷爷对孩子的影响必须通过爸爸传递,而爸爸这条通道已经“封闭”了。此时我们说:给定爸爸后,爷爷与孩子条件独立。

条件独立用公式可以写成 \(P(C \mid G, F) = P(C \mid F)\),意思是“多知道爷爷的信息不会改变孩子的概率分布”。这个概念是贝叶斯网络计算效率的第二大支柱。判断两组节点是否条件独立,有一套系统的方法叫 d-分离(directional separation):在一个有向无环图中,如果所有连接两组的路径都被“证据节点”阻断,那么这两组节点在给定证据后条件独立。链式结构中的中间节点被观测时,路径即被阻断;碰撞结构中,后代被观测时反而会打开路径。

P(C∣G,F)=P(C∣F)\displaystyle P(C\mid G,F)=P(C\mid F)

1. 条件概率:左边 \(P(C \mid G, F)\) 表示同时知道爷爷和爸爸状态时,孩子生病的概率。

P(C∣G,F)\displaystyle P(C\mid G,F)

2. 等式:右边 \(P(C \mid F)\) 只保留爸爸条件,说明爷爷的信息被“屏蔽”。

P(C∣F)\displaystyle P(C\mid F)

3. 等价含义:等式成立意味着 \(C\) 与 \(G\) 在给定 \(F\) 后独立,联合概率可以进一步化简。

P(G,F,C)=P(C∣F) P(F∣G) P(G)\displaystyle P(G,F,C)=P(C\mid F)\,P(F\mid G)\,P(G)

这就是马尔可夫性:给定父节点后,一个节点与其所有非后代节点条件独立。它保证了贝叶斯网络的分解不会“重复计算”信息,也让推断算法可以像剥洋葱一样一层层隔离问题。

贝叶斯推断

现在进入全家人最关心的问题:孩子确诊了,到底是谁传给他的?从直觉上,孩子生病这个“证据”会让爷爷和爸爸的嫌疑同时上升,但上升幅度不同。贝叶斯推断给出了精确的数值答案。它像一个侦探,从现场(症状)出发,沿着传播链反方向寻找源头。

推断分为两种方向。正向推理是从原因到结果:已知爷爷生病的概率,计算孩子生病的概率,这通过联合概率分解求和即可完成。反向诊断则相反:已知孩子生病,计算爷爷生病的后验概率,这需要把证据沿箭头反向传导,用贝叶斯公式把条件概率“调转方向”。整个过程中,对所有不能直接观测的变量进行求和(边缘化)是无害的,只要最后除以证据概率完成归一化。

P(G=1∣C=1)=∑FP(C=1∣F) P(F∣G=1) P(G=1)∑G∑FP(C=1∣F) P(F∣G) P(G)\displaystyle P(G=1\mid C=1)=\frac{\sum_{F}P(C=1\mid F)\,P(F\mid G=1)\,P(G=1)}{\sum_{G}\sum_{F}P(C=1\mid F)\,P(F\mid G)\,P(G)}

1. 分子求和:\(\sum_{F}P(C=1\mid F)P(F\mid G=1)P(G=1)\) 表示“爷爷生病、爸爸可能病也可能不病”的所有路径概率之和,结果为 0.246。

∑FP(C=1∣F) P(F∣G=1) P(G=1)\displaystyle \sum_{F}P(C=1\mid F)\,P(F\mid G=1)\,P(G=1)

2. 分母双重求和:\(\sum_{G}\sum_{F}\) 把所有爷爷状态和爸爸状态组合都纳入,得到孩子生病的边际概率 0.652。

∑G∑FP(C=1∣F) P(F∣G) P(G)\displaystyle \sum_{G}\sum_{F}P(C=1\mid F)\,P(F\mid G)\,P(G)

3. 比值:\(0.246 / 0.652 \approx 0.377\),即孩子确诊后爷爷感染的后验概率。

P(G=1∣C=1)≈0.377\displaystyle P(G=1\mid C=1)\approx 0.377

从 0.3 到 0.377,爷爷的“嫌疑值”上升了。如果孩子是家庭聚会的密切接触人群,这个数值在真实系统中会被进一步放大。贝叶斯网络就这样把侦探的直觉,变成了可审计、可重复的概率计算。

参数学习

以上所有计算都依赖条件概率表,比如 \(P(F=1 \mid G=1)=0.8\)。这些数字从哪来?答案是数据。医院收集上千个类似家庭的记录:爷爷是否生病、爸爸是否生病、孩子是否生病,然后统计频率,得到一张张条件概率表。这个过程叫参数学习,相当于用真实世界的历史数据给贝叶斯网络“校准体温计”。

最常用的学习方法是极大似然估计(Maximum Likelihood Estimation,MLE)。它的思想很朴素:选择一组概率参数,使得我们观测到的数据出现的可能性最大。比如在 100 个“爷爷生病”的样本中,有 80 个爸爸也生病,那么 \(P(F=1 \mid G=1)=80/100=0.8\) 就是最自然的估计。每个条件概率表都可以单独统计,因为贝叶斯网络的分解结构让不同参数之间互不干扰。

θ^ijk=Nijk∑kNijk\displaystyle \hat{\theta}_{ijk}=\frac{N_{ijk}}{\sum_{k}N_{ijk}}

1. 分子 \(N_{ijk}\):样本中父节点取第 \(j\) 种状态、当前节点取第 \(k\) 种状态的计数。

Nijk\displaystyle N_{ijk}

2. 分母求和:\(\sum_{k}N_{ijk}\) 是固定父节点状态后,当前节点所有状态的计数总和。

∑kNijk\displaystyle \sum_{k}N_{ijk}

3. 估计值:\(\hat{\theta}_{ijk}\) 就是该条件下第 \(k\) 种结果的经验概率。

θ^ijk\displaystyle \hat{\theta}_{ijk}

当某些组合的样本极少时(比如“爷爷生病但爸爸没病”只有 1 例),直接算出的 0.01 概率可能不稳健。这时可以引入平滑项,比如给每个计数加上一个小常数,避免出现“0 概率导致整个乘积归零”的尴尬。参数学习让贝叶斯网络从“拍脑袋的假设”变成“数据驱动的模型”。

典型应用场景

把感冒家族的三节点模型放大一万倍,就进入了真实的工业级应用。医院的急诊分诊系统里,节点可能是“是否感染流感”“是否发热”“是否接触过病例”“白细胞计数”等几十个变量,箭头连接的是医学上已知的依赖关系。当医生输入“发热+接触史”作为证据,系统立刻给出各类疾病的概率排序,辅助医生决策。这正是把“家族传染链”换成了“疾病→症状→诊断”的因果链。

在金融风控中,贝叶斯网络被用来建模“收入稳定性”“历史违约”“外部经济环境”等因素如何共同影响还款概率。银行输入某客户的已知信息(证据),网络反向推断其违约风险。故障诊断领域也有类似逻辑:传感器报警(证据)反向推算出最可能出故障的零部件。这些场景的共同点是:变量多、关系复杂、部分信息缺失,但已有知识可以画出依赖结构。

P(D=1∣T=1)=P(T=1∣D=1) P(D=1)P(T=1∣D=1) P(D=1)+P(T=1∣D=0) P(D=0)\displaystyle P(D=1\mid T=1)=\frac{P(T=1\mid D=1)\,P(D=1)}{P(T=1\mid D=1)\,P(D=1)+P(T=1\mid D=0)\,P(D=0)}

1. 患病先验 \(P(D=1)\):人群中某疾病的基线发病率,比如 1%。

P(D=1)\displaystyle P(D=1)

2. 灵敏度 \(P(T=1 \mid D=1)\):患者检测为阳性的概率,反映检测方法的捕捉能力。

P(T=1∣D=1)\displaystyle P(T=1\mid D=1)

3. 特异度 \(P(T=1 \mid D=0)\):健康者误报为阳性的概率,反映检测方法的误报率。

P(T=1∣D=0)\displaystyle P(T=1\mid D=0)

4. 后验 \(P(D=1 \mid T=1)\):看到阳性报告后真实的患病概率,由先验和检测特性共同决定。

P(D=1∣T=1)\displaystyle P(D=1\mid T=1)

从家族的感冒传播到医院的诊断系统,贝叶斯网络始终在做同一件事:把人类关于“谁影响谁”的常识画成一张图,再让概率在这张图上沿箭头双向流动。它不承诺奇迹,却给了复杂世界一种清晰、可解释的建模语言。

AI 应用场景

医疗辅助诊断:从感冒家族到急诊分诊

阶段:概率推理与决策支持

解决的问题:传统分诊依赖医生经验,面对多症状交叉时容易漏判;贝叶斯网络把“发热、咳嗽、接触史”等证据输入带箭头的模型,输出各疾病后验概率,帮助医生快速聚焦最可能的病因。

具体案例:某三甲医院急诊系统内置流感贝叶斯网络,包含“是否流感、是否新冠、是否普通感冒、发热度数、咳嗽严重度”等节点。患者录入症状后,系统 0.1 秒内给出三类疾病的概率排序,并将“建议隔离”触发阈值设为流感概率超过 0.6。

金融信用风控:评估“还款传染”的多因素网络

阶段:特征建模与风险预测

解决的问题:传统信用评分卡只能线性加权,难以表达“收入下降会通过负债率影响违约”这类传递性依赖;贝叶斯网络可以用有向边刻画多因素间的传导关系,并在资料缺失时仍能推断风险。

具体案例:某消费金融公司构建了含 23 个节点的风控贝叶斯网络,输入“职业稳定性、历史逾期、近期查询次数”,输出“90 天违约概率”。上线后坏账率下降 12%,且每条风控决策都能回溯到图上的概率路径,满足监管可解释要求。

工业设备故障根因排查:让传感器当“侦探”

阶段:异常诊断与根因分析

解决的问题:大型设备几十个传感器同时报警时,工程师难以定位真正的故障源头;贝叶斯网络把“冷却液温度、振动频率、轴承磨损”等节点连成依赖图,从报警证据反向推断最可能的根因。

具体案例:某风电场的齿轮箱监测系统用贝叶斯网络建模 12 个传感器信号与 4 类故障的关系。当“振动超限”与“油温升高”同时触发,系统输出“轴承磨损概率 0.72、润滑不足概率 0.21”,维修团队优先更换轴承,缩短停机时间约 40%。

Python 演示

python39 行
# -*- coding: utf-8 -*-"""感冒家族贝叶斯网络: 爷爷(G) -> 爸爸(F) -> 孩子(C)""" import itertools # 先验概率 P(G)p_g = {0: 0.7, 1: 0.3} # 条件概率 P(F|G): 外键 G, 内键 Fp_f_g = {0: {0: 0.8, 1: 0.2}, 1: {0: 0.2, 1: 0.8}} # 条件概率 P(C|F): 外键 F, 内键 Cp_c_f = {0: {0: 0.5, 1: 0.5}, 1: {0: 0.1, 1: 0.9}}  def joint(g, f, c):    """三个变量的联合概率"""    return p_g[g] * p_f_g[g][f] * p_c_f[f][c]  def infer(target, value, evidence):    """计算 P(target=value | evidence), 枚举全部 8 种状态求和"""    norm = 0.0    hit = 0.0    for g, f, c in itertools.product((0, 1), repeat=3):        state = {'G': g, 'F': f, 'C': c}        if all(state[k] == v for k, v in evidence.items()):            w = joint(g, f, c)            norm += w            if state[target] == value:                hit += w    return hit / norm if norm > 0 else 0.0  if __name__ == '__main__':    print('P(F=1)         =', round(infer('F', 1, {}), 4))    print('P(C=1)         =', round(infer('C', 1, {}), 4))    print('P(G=1|C=1)     =', round(infer('G', 1, {'C': 1}), 4))    print('P(F=1|G=1)     =', round(infer('F', 1, {'G': 1}), 4))
目的:实现一个三节点链式贝叶斯网络的精确枚举推断,输出条件概率与后验概率。
  1. def joint(g, f, c)按链式法则计算联合概率:先验乘两个条件概率,对应“爷爷→爸爸→孩子”的传染链。
  2. for g, f, c in itertools.product((0, 1), repeat=3)枚举三变量的全部 8 种状态组合,这是精确推断的基础。
  3. if all(state[k] == v for k, v in evidence.items())只保留满足证据条件的状态,过滤出与观测吻合的样本空间。
  4. norm += w累计证据概率,作为归一化分母。
  5. return hit / norm if norm > 0 else 0.0目标状态概率除以证据概率,得到后验条件概率。

常见误区

误区我以为贝叶斯网络里有箭头的方向一定代表因果,箭头从 A 指向 B,A 就一定是 B 的原因。

正解箭头表示的只是条件依赖关系,不保证因果。比如“鞋码”和“阅读能力”在儿童数据中存在依赖,画成箭头并不表示鞋码大导致阅读好;真正的原因是年龄。在感冒家族里,箭头像传染方向,但仅凭观测数据无法区分“爷爷传爸爸”还是“爸爸传爷爷”,必须结合领域知识或干预实验才能谈因果。

为何常见:箭头本身有指向性,人的直觉天然把“方向”等同于“因果”。

误区如果两个变量条件独立,那它们在任何情况下都不相关,我可以完全忽略其中一个。

正解条件独立是“在给定第三个变量后”才成立。在爷爷→爸爸→孩子链中,给定爸爸后爷爷和孩子条件独立;但如果不知道爸爸状态,爷爷和孩子在概率上仍然相关(爷爷病会提高爸爸病概率,进而提高孩子病概率)。忽略“给定”这个前提会严重误判依赖结构。

为何常见:初学者容易把 “independent“ 和 ”conditionally independent” 当成一回事,漏看条件部分。

误区“检测阳性的人有 90% 患病”和“患病的人 90% 检测阳性”我觉得意思差不多。

正解两者的条件方向完全相反,数值往往差异巨大。患病率 1%、灵敏度 90%、误报率 5% 时,P(患病|阳性) 只有约 15%,远低于 P(阳性|患病) 的 90%。贝叶斯公式的核心价值就是纠正这种“方向倒置”的直觉偏差。

为何常见:日常语言中“如果 B 那么 A”和“如果 A 那么 B”容易被混淆,数学上却需要严格的条件顺序。

误区既然网络编码的是联合概率,那我还是得把所有变量组合的概率都存下来,图只是好看的装饰。

正解贝叶斯网络最大的价值恰恰是避免存储全联合表。它把 \(2^n\) 项压缩成每个节点一张条件概率表,总存储量约等于所有节点及其父节点表的大小之和。在图结构稀疏时,存储量从指数级降为线性级,这正是它能处理几十个变量的原因。

为何常见:只看到联合分布的定义,没有理解分解公式带来的结构性简化。

误区贝叶斯网络里箭头是单向的,所以信息也只能单向流动,我不能用结果反推原因。

正解贝叶斯网络同时支持正向推演和反向诊断。反向推断用贝叶斯公式把条件概率“翻转”过来,证据从子节点沿依赖结构向上传导,计算所有可能父节点的后验概率。这是医疗诊断、故障排查场景的基石。

为何常见:图的箭头方向给人一种“单行道”的错觉,忽略了概率推理并非物理信息流。

面试题

Q1. 贝叶斯网络中“有向无环图”最主要的限制是?

单选题 · easy

  • A.边必须有方向且不允许形成回路← 正确答案
  • B.节点必须按数值大小排列
  • C.所有变量必须互相完全独立
  • D.图中只能存在一条依赖路径

答案:A。有向无环图要求每条边都有方向,且沿方向走不能回到起点。A 正确。节点无需按数值排列,变量也不要求独立,图中通常有多条路径,因此 B、C、D 均错误。

Q2. 贝叶斯网络里的每个节点通常表示什么?

单选题 · easy

  • A.一个随机变量← 正确答案
  • B.一条确定性的规则
  • C.一个训练数据样本
  • D.一组回归系数

答案:A。节点是随机变量,比如“爷爷是否感冒”,它的取值有概率含义。确定规则、样本、回归系数都不是节点承载的对象,因此选 A。

Q3. 链式结构 A→B→C 的联合概率应如何分解?

单选题 · easy

  • A.P(A)P(B|A)P(C|B)← 正确答案
  • B.P(C)P(B|C)P(A|B)
  • C.P(A)P(B)P(C)
  • D.P(A|B)P(B|C)P(C|A)

答案:A。链式法则按变量顺序逐级条件化:A 无父节点,B 依赖 A,C 依赖 B,因此是 P(A)P(B|A)P(C|B)。B 把方向调反了,C 假设独立,D 形成了依赖循环,均不符合链式结构。

Q4. 在链式结构 A→B→C 中,已知 B 的状态后,A 与 C 的关系是?

单选题 · mid

  • A.仍有直接的统计依赖
  • B.条件独立← 正确答案
  • C.概率必然完全相等
  • D.相互影响一定增强

答案:B。B 是 A 到 C 路径上的中间节点,给定 B 后路径被阻断,A 与 C 条件独立。A 错误,因为依赖必须通过 B 传递;C 认为概率相等没有依据;D 说影响增强与条件独立矛盾。

Q5. 已知 P(G)=0.3,P(F|G)=0.8,P(F|¬G)=0.2,则 P(G|F) 约为多少?

单选题 · mid

  • A.0.632← 正确答案
  • B.0.240
  • C.0.800
  • D.0.377

答案:A。分子 P(F|G)P(G)=0.8×0.3=0.24;分母分子再加 P(F|¬G)P(¬G)=0.2×0.7=0.14,合计 0.38;0.24÷0.38≈0.632。B 只是分子,C 是条件概率本身,D 是另一个后验值。

Q6. d-分离的主要作用是?

单选题 · mid

  • A.判断两组变量在给定证据下是否条件独立← 正确答案
  • B.计算网络的极大似然参数
  • C.把有向图转换成无向图
  • D.消除所有概率随机性

答案:A。d-分离通过检查所有路径是否被证据阻断,来判断条件独立性。它不涉及参数估计、图转换或随机性消除,因此 B、C、D 错误。

Q7. 用贝叶斯网络做反向诊断推断时,需要哪些操作?

多选题 · mid

  • A.设置证据变量的观测取值← 正确答案
  • B.对其他变量求和并归一化← 正确答案
  • C.保证图中没有有向边
  • D.省略所有先验概率

答案:AB。反向诊断先固定证据(A),再对非目标变量边缘化求和,最后除以证据概率完成归一化(B)。贝叶斯网络必须是有向图,先验概率是推断的必要输入,因此 C、D 错误。

Q8. 关于联合概率分解,下列说法正确的有?

多选题 · mid

  • A.只需存储各节点关于父节点的条件概率表← 正确答案
  • B.全联合表被拆成多张小表← 正确答案
  • C.每个节点的概率与其他节点完全无关
  • D.连乘结果等于原始联合概率← 正确答案

答案:ABD。贝叶斯网络将大表拆成条件概率小表并连乘还原联合概率,A、B、D 正确。C 错误,因为节点间存在边上的条件依赖,并非完全无关。

Q9. 参数学习中极大似然估计的核心思想是?

单选题 · hard

  • A.选一组参数使观测数据出现概率最大← 正确答案
  • B.选一组参数使先验概率最大
  • C.让所有条件概率表变成均匀分布
  • D.把网络结构改成完全连接图

答案:A。极大似然估计寻找让当前数据出现概率最高的参数组合,通常表现为频率统计。B 强调先验,C 是数据平滑但不是 MLE 的目标,D 是增大模型而非估计参数,均不符合。

Q10. 给定 P(G)=0.3,P(F|G)=0.8,P(F|¬G)=0.2,P(C|F)=0.9,P(C|¬F)=0.5,则 P(G=1|C=1) 约为?

单选题 · extreme

  • A.约 0.632
  • B.约 0.377← 正确答案
  • C.约 0.240
  • D.约 0.652

答案:B。先算 P(F=1)=0.8×0.3+0.2×0.7=0.38;再算 P(C=1)=0.9×0.38+0.5×0.62=0.652;分子 P(C=1|G=1)P(G=1)=(0.9×0.8+0.5×0.2)×0.3=0.246;后验=0.246÷0.652≈0.377。A 是 P(G|F) 的结果,C 是分子,D 是孩子边际概率。