加-乘算法和最大化加和算法提供了树结构图中的推断问题的高效精确解法。然而,对于许多实际应用,我们必须处理带有环的图。
信息传递框架可以被推广到任意的图拓扑结构,从而得到一个精确的推断步骤,被称为联合 树算法(junction tree algorithm)(Lauritzen and Spiegelhalter, 1988; Jordan, 2007)。这里,我们简短地给出算法的关键步骤。这里不打算给出算法的细节,而是给出各个阶段的大致思想。如果我们的起始点是一个有向图,那么我们首先通过“伦理”步骤,将其转化为无向图。而如果起始点是无向图,那么这个步骤就不需要了。接下来,图被三角化(triangulated),这涉及到寻找包含四个或者更多结点的无弦环,然后增加额外的链接来消除无弦环。例如,在图8.36 所示的图中,环是一个无弦环,从而一个连接应该添加到在A和B之间或和之间。注意,三角化后的图的联合概率分布仍然由同样的势函数乘积定义,但是这些势函数现在被看做是扩展的变量集合上的势函数。接下来,三角化的图被用于构建新的树结构 无向图,被称为联合树(junction tree),它的结点对应于三角化的图的最大团块,它的链接将具有相同变量的团块对连接在了一起。这种方法中连接哪对团块是很重要的问题。正确的做法 是选择能得到最大生成树(maximal spanning tree)的连接方式,如下所述。对于连接了某个团块的所有可能的树,被选择的树是树的权值最大的一个,其中链接的权值是由它所连接的两个团块所共享的结点的数量,树的权值是链接的权值之和。由于三角化步骤的存在,得到的树满 足运行相交性质(running intersection property),意思是如果一个变量被两个团块所包含,那么它必须也被连接这两个团块的路径上的任意团块所包含。这确保了变量推断在图之间是相容的。最后,一个二阶段的信息传递算法,或者等价的加-乘算法,现在可以被应用于这个联合树,得到边缘概率分布和条件概率分布。虽然联合树算法听起来比较复杂,但是它的核心是一个简单的想法。我们已经利用这个想法研究了概率的分解性质,使得加和与乘积能够相互交换,从而可以进行部分求和,避免了直接对联合概率分布的操作。联合树的作用是提供一种组织这些计算的精确高效的方法。值得注意的是,这些完全是通过图操作实现的!
联合树对于任意的图都是精确的、高效的。对于一个给定的图,通常不存在计算代价更低的算法。不幸的是,算法必须对每个结点的联合概率分布进行操作(每个结点对应于三角化的图的一个团块),因此算法的计算代价由最大团块中的变量数量确定。在离散变量的情形中,计算代价会随着这个数量指数增长。一个重要的概念是图的树宽度(treewidth)(Bodlaender,1993),它根据最大团块中变量的数量进行定义。事实上,它被定义为最大团块的规模减一,来确保一个树的树宽度等于1。由于通常情况下,从一个给定的起始图开始,可以构建出多种不同的联合树,因此树宽度由最大团块具有最少变量的联合树来定义。如果原始图的树宽度比较 大,那么联合树算法就变得不可行了。