贝叶斯网络 (Bayesian network)可用于表示联合概率分布 [11] 。贝叶斯网络的结构由节点和有向边组成的 有向非循环图 (directed acyclic graph)来定义 。每个节点对应一个变量。有向边连接成对的节点,图中不允许存在循环。有向边表示直接的概率关系 [12] 。与每个节点 X i 相关的是条件分布 P ( X i |Pa( X i )),其中Pa( X i )表示图中 X i 的父节点。算法2-2提供了贝叶斯网络数据结构的实现。示例2-5演示了贝叶斯网络在卫星监测问题中的应用。
算法2-2 使用一组变量、因子和图表示的离散贝叶斯网络。图数据结构由Graphs.jl提供
示例2-5 卫星监测问题的贝叶斯网络。此示例中贝叶斯网络的结构表示为有向无环图,如图2-14所示。与每个节点相关联的是条件概率分布 。示例2-5是一个贝叶斯网络,用于解决涉及5个二元变量的卫星监测问题。幸运的是,电池故障和太阳能电池板故障都非常罕见,尽管太阳能电池板故障比电池故障更容易发生。电池故障和太阳能电池板故障都有可能导致电气系统故障。除了电池故障或太阳能电池板故障之外,可能还有其他导致电气系统故障的原因,例如电源管理单元的问题。电气系统故障可能会导致轨道偏离,这可以通过望远镜从地球上观察到。它还将会导致通信中断,从而中断遥测和任务数据向各个地面站的传输。不涉及电气系统的其他异常可能会导致轨迹偏差和通信丢失。
图2-14 贝叶斯网络的结构表示为有向无环图
与5个变量中的每一个相关的是5个条件概率分布。因为 B 和 S 没有父对象,所以我们只需要指定 P ( B )和 P ( S )。如下的实现代码创建了一个贝叶斯网络结构,其中包含相关因子表元素的示例值。因子表中的元组索引到变量的值域中,所有变量的值域都是{0,1}。例如,( e =2, b =1, s =1)对应于( e 1 , b 0 , s 0 )。
贝叶斯网络的 链式规则 (chain rule)规定了如何根据局部条件概率分布来构造联合分布。假设我们有变量 X 1: n 并希望计算关于所有这些变量特定赋值的概率值 P ( X 1: n )。根据链式规则:
其中,pa( x i )是 X i 父节点的特定赋值。算法2-3提供了贝叶斯网络的实现,该算法中使用离散因子表示条件概率分布。
算法2-3 给定贝叶斯网络bn,用于计算其赋值概率的函数。例如,如果bn如示例2-5中所定义,那么a=(b=1,s=1,e=1,d=2,c=1),probability(bn,assignment(a))将返回值0.034228655999999996
在卫星监测的示例中,假设我们想计算不出现任何故障的概率,即 P ( b 0 , s 0 , e 0 , d 0 , c 0 )。根据链式法则:
如果需要完全指定5个变量 B 、 S 、 E 、 D 和 C 的联合分布,那么我们将需要2 5 —1=31个独立参数。贝叶斯网络中假设的结构允许我们仅使用1+1+4+2+2=10个独立参数来指定联合分布。这里10和31之间的差异并不显著,但在更大的贝叶斯网络中,这种在参数数量上的内存节省可能会变得巨大。贝叶斯网络的强大之处在于其减少指定联合概率分布所需参数数量的能力。