贝叶斯网络中的变量消除

时间:2010-03-03 15:10:43

标签: artificial-intelligence

我们最近研究了变量消除,并且老师强调贝叶斯网络使得变量消除更有效率。 我对此感到有点困惑,为什么会这样呢? 希望你们能给我一些想法,非常感谢。

罗伯特

2 个答案:

答案 0 :(得分:2)

由于内置条件独立性假设,贝叶斯网络可以利用变量消除的顺序。

具体地,想象具有联合分布P(a,b,c,d)并且想要知道边际P(a)。如果您对条件独立性一无所知,可以通过总结b,c和d来计算。如果这些域具有k-ary域,则需要执行O(k ^ 3)运算。

另一方面,假设您有一个贝叶斯网,其中A是根,B是A的子,C是B的子,D是C的子。然后,您可以将关节重写为P(a | b)P(b | c)P(c | d)P(d)并尽可能地将三个求和分布在等式的右边。当您确实想要计算P(a)时,可以预先计算sum_d P(d)的值并存储此函数。同样,您可以预先计算P(c | d)* sum_d P(d)的值并存储它。

通过这种方式,您最终完成了O(k ^ w * + 1)的工作,其中W *是贝叶斯网络中任何节点的最大子节点数。在这种情况下,我们做O(k ^ 2)工作,这也是我们必须保留在内存中的最大条件概率表的大小。注意这比我们原来的O(k ^ 3)结果更好,如果我们有更多的变量会更好。

简而言之,BN的条件独立性允许您更有效地边缘化变量。对此的另一种解释可以在http://www.cs.uiuc.edu/class/sp08/cs440/notes/varElimLec.pdf找到。

答案 1 :(得分:1)

我认为这是因为一个可以消除的变量是一个只有一个变量依赖于它的变量。在贝叶斯网络中,这些很容易找到,因为它们是有一个孩子的节点。