Bayesian Network
贝叶斯网络用有向无环图表示变量及其条件依赖关系,因此可以根据证据更新对成因的概率估计。
贝叶斯网络也称为信念网络,是一种概率图模型,通过有向无环图(DAG)表示一组随机变量及其条件依赖关系。每个节点代表一个变量,例如疾病、症状或传感器读数;每条箭头都从直接影响指向受其影响的变量。每个节点都存有一个条件概率表,给出其父节点取值的每种组合所对应的分布;这些表共同定义了所有变量的完整联合分布。给定部分变量的证据后,网络会计算其余变量更新后的概率,因此可用于不确定性下的诊断、风险评估和决策支持。Judea Pearl 在 20 世纪 80 年代发展了该领域的大部分理论,并因在概率推理与因果推理方面的工作获得 2011 年图灵奖。
结构与条件概率表#
该图编码了条件独立性:已知某个变量的父节点后,该变量便独立于所有非后代变量。这样,联合分布就能分解为较小的局部部分:P(X1, ..., Xn) = P(X1 | parents(X1)) × ... × P(Xn | parents(Xn))。Pearl 研究中的经典入室盗窃警报网络,在 Russell 和 Norvig 的教科书《人工智能:一种现代方法》中广泛使用,包含五个是非变量。入室盗窃或地震都可能触发家庭警报器,警报器响起后,两位邻居 John 和 Mary 会给屋主打电话。
五个二元变量的完整联合概率表需要 31 个独立概率。该网络只需要 10 个:入室盗窃和地震各 1 个,警报器在其两个父节点每种取值组合下有 4 个,每位邻居在警报器状态下各有 2 个。变量增多后,节省会迅速扩大,因为每个表的大小只取决于该节点的父节点数量。
推理:根据证据更新信念#
推理会固定观测到的变量,并通过在图中应用贝叶斯定理来计算查询变量的后验分布。推理可以沿任意方向进行:从原因到结果(预测)、从结果到原因(诊断),以及在共同结果的原因之间进行。最后一种模式称为解释消除:一旦得知警报器响过,若又得知发生了地震,入室盗窃的概率就会降低。通过枚举或变量消除进行精确推理,在小型网络或树状网络上可行,但一般情况下属于 NP-hard 问题,因此大型网络会采用似然加权、Gibbs 采样或循环信念传播等近似方法。
此示例通过枚举回答教科书中的查询 P(Burglary | John calls, Mary calls),并对未观测到的地震和警报器变量求和,以计算因子化后的联合分布:
from itertools import product
# Conditional probability tables of the burglary-alarm network
p_burglary, p_earthquake = 0.001, 0.002
p_alarm = {(True, True): 0.95, (True, False): 0.94, (False, True): 0.29, (False, False): 0.001}
p_john = {True: 0.90, False: 0.05} # P(John calls | alarm)
p_mary = {True: 0.70, False: 0.01} # P(Mary calls | alarm)
def bern(p, value):
"""Return the probability of a binary outcome with success probability p."""
return p if value else 1 - p
# Evidence: both neighbors called. Sum the factored joint over the hidden variables.
joint = {True: 0.0, False: 0.0}
for b, e, a in product([True, False], repeat=3):
joint[b] += bern(p_burglary, b) * bern(p_earthquake, e) * bern(p_alarm[b, e], a) * p_john[a] * p_mary[a]
print(f"P(burglary | John and Mary call) = {joint[True] / sum(joint.values()):.3f}")脚本输出 0.284,与教科书给出的答案相同。两通电话会将入室盗窃的概率从千分之一提高到约 28%;其余 72% 的可能性对应没有发生入室盗窃的解释,例如警报器由地震或故障触发,因为入室盗窃十分罕见。
从数据中学习贝叶斯网络#
网络可以根据专家知识手动构建、从数据中学习,也可以兼而有之。参数学习会根据观测频率填充条件概率表,并使用先验概率平滑罕见组合;如果有些值缺失,则使用期望最大化算法。结构学习则搜索图本身:可以使用贝叶斯信息准则等标准为候选图评分,也可以像 PC 算法那样运行条件独立性检验。学习得到的箭头表示统计依赖关系;若要将其解释为因果关系,还需要因果发现领域研究的额外假设。pgmpy 等 Python 库实现了这两类学习,以及精确和近似推理。
实际应用#
- 医学诊断:网络将疾病与其导致的症状和检测结果关联起来,因此临床医生的观察会更新各种病症的概率;每个结论都可以沿着图追溯,这是一种可解释人工智能。
- 故障诊断:工业和 IT 系统会建模组件故障如何传播到警报和读数。在视觉检测中,YOLO26 检测器发现的缺陷类别可以作为观测证据输入网络,用来更新每种上游根本原因的概率,例如工具磨损或机器校准不当。
- 风险评估:生态学家、保险公司和安全工程师会在网络中结合稀疏数据与专家判断,以估算罕见事件发生的可能性。










