贝叶斯网络是图形模型,用于表示变量之间的概率关系,从而能够在不确定性下进行系统推理。 它们由节点(变量)组成,节点之间通过有向边(依赖关系)连接,每个节点都包含一个条件概率表(CPT),用于量化其可能性如何依赖于父节点。 例如,在医疗诊断网络中,节点可能表示症状(例如,发烧)和疾病(例如,流感),边表示疾病如何影响症状。 “发烧”的 CPT 将指定在患有流感的情况下发烧的概率。 这种结构使开发人员能够对复杂、真实的场景进行建模,在这种场景中,结果是不确定的并且受到多种因素的影响。
贝叶斯网络支持三种关键的推理类型:预测、诊断和互因。 预测推理使用原因来估计影响(例如,计算患者如果患有流感而出现发烧的可能性)。 诊断推理从观察到的影响向后推断原因(例如,确定在发烧的情况下患流感的概率)。 互因推理识别竞争原因如何解释一种影响(例如,如果患者同时患有流感和中暑,那么当确认另一种原因时,观察到发烧可能会“解释掉”一种原因)。 这些模式由诸如变量消除或马尔可夫链蒙特卡罗(MCMC)之类的算法提供支持,即使在大型网络中也可以有效地计算概率。 例如,使用贝叶斯网络的垃圾邮件过滤器可能会分析电子邮件特征(例如,关键字、发件人声誉)以在收到新数据时更新电子邮件是垃圾邮件的概率。
开发人员在诸如风险评估、故障诊断和决策支持系统之类的应用程序中使用贝叶斯网络,因为它们可以处理不完整的数据并将领域知识与观察到的证据相结合。 例如,自动驾驶汽车可能会使用它们来建模传感器可靠性和环境条件,以评估碰撞风险。 一个关键的优势是它们能够在使用诸如近似推理(例如,循环信念传播)之类的技术进行扩展,而当精确计算变得计算量大时。 但是,构建准确的网络需要仔细设计依赖关系并验证概率估计,这通常涉及与领域专家的协作。 诸如 PyMC 或 pgmpy 之类的库简化了实现,使开发人员可以专注于构建问题而不是导出复杂的概率方程。