图网络算法—变量消元与团树传播(精确推理)

图网络算法—变量消元与团树传播(精确推理)

1 概率图中的推理问题

首先,给定的联合概率分布:
p ( x ) = p ( x 1 , x 2 , . . . , x n ) = 1 Z ∏ c φ ( X c ) p(x)=p(x_1,x_2,...,x_n)=\frac{1}{Z}∏_cφ(X_c) p(x)=p(x1,x2,...,xn)=Z1cφ(Xc)
这里Z表示的是归一化因子, X c X_c Xc表示的是所有随机变量的一个子集,φ表示的是势函数。对于这一部分的理解,我在之前的博客中给出了叙述,感兴趣的读者可以参考我之前的文章。

根据上述的联合概率分布,一般情况下,我们可以定义出三种概率图的推理问题。

  1. 边缘概率推理
    p ( x a ) = ∑ x − x a p ( x ) p(x_a)=∑_{x-x_a}p(x) p(xa)=xxap(x)
    其中 x − x a x-x_a xxa表示除去随机变量 x a x_a xa之后的剩余的所有随机变量,即对除了随机变量 x a x_a xa之外的其他随机变量进行求和操作。
  2. 最大后验概率
    x ∗ = a r g m a x x ∈ X p ( x ) x^*=argmax_{x∈X}p(x) x=argmaxxXp(x)
    即对于所有的随机变量,求取一组随机变量的值,使得概率结果最大。即如下图所示:
    在这里插入图片描述
  3. 求取归一化因子:
    Z = ∑ x ∏ c φ c ( x c ) Z=∑_x∏_cφ_c(x_c) Z=xcφc(xc)
1.1 概率的精确推理和近似推理
  1. 首先,精确推理指的是通过概率图中节点事先定义的概率值,以及不同节点之间定义的边,进行精确的概率计算,获取最终结果。
  2. 近似推理指的是通过图中的节点和边,根据近似的概率计算过程来获取最终的概率计算结果。
  3. 在本文中,我们重点关注的是概率的精确推理。

2 变量消元算法

2.1 基本思想

首先,我们来介绍精确推理中最基本,也最容易理解的变量消元算法,顾名思义,变量消元算法就是通过已有的联合概率分布,逐步的消除与目标无关的随机变量(通过计算边缘概率的方式),最终计算出目标的边缘概率。举一个简单的例子,即下图所示:

在这里插入图片描述

如上图所示,我们的目标是求取随机变量A的边缘概率。首先,在计算的过程中,我们消除的是随机变量B,通过最左侧的联合概率分布可以看出,这一步,我们计算的是随机变量A,C的联合边缘概率分布。然后,我们消除变量C,即计算A的边缘概率分布,获得了最终的结果。

2.2 MRF中的变量消元法

首先,我们以一个链状的MRF为例,即如下图所示:

在这里插入图片描述
这里我们的最终目标是求的E的边缘概率。进一步,我们给出去基本的概率形式:

在这里插入图片描述
首先,我们选择随机变量A作为要消除的变量,此时,我们需要将所有包含随机变量A的势函数的连乘积进行求和操作,从上图中可以看出,包含随机变量A的的势函数只有 φ 1 ( A , B ) φ_1(A,B) φ1(A,B),则此时我们对于该势函数进行求和的操作,即如下的形式:

在这里插入图片描述
对随机变量A求和之后,当前的势函数只剩随机变量B,此时我们将计算之后的势函数定义为 τ ( B ) τ(B) τ(B),即如下面的计算形式:
在这里插入图片描述
此时,随机变量A已经被消除,进一步,我们来消除变量B,基本的流程与消除随机变量A的流程一致,首先将包含随机变量B的势函数放在一起(τ(B)也算B的势函数。),然后进行求和操作。即如下面的形式:

在这里插入图片描述

进一步,消除变量C和变量D,过程与上述相同,具体定义形式如下:

在这里插入图片描述

在这里插入图片描述
最终,可以获得最终的边缘概率结果 P ( E ) P(E) P(E)

2.3 贝叶斯网中的变量消除法

首先,我们给出贝叶斯网络的基本结构和其联合概率分布。
网络结构图如下:
在这里插入图片描述
进一步,定义其联合概率分布如下:

在这里插入图片描述

假设我们当前的目标为求J的取边缘概率,这意味着我们需要消除变量C,D,I,H,G,S,L变量。下面,我们按照这个顺序进行变量消除。首先,我们消除变量C。此时,包含变量C的势函数包括 φ c ( C ) φ D ( D , C ) φ_c(C)φ_D(D,C) φc(C)φD(D,C),我们定义 ψ 1 ( C , D ) = φ c ( C ) φ D ( D , C ) ψ_1(C,D)=φ_c(C)φ_D(D,C) ψ1(C,D)=φc(C)φD(D,C),此时对于变量C进行求和操作,即如下形式:
在这里插入图片描述
通过求和计算,此时当前的势函数中只包含随机变量D,定义该势函数为 τ 1 ( D ) τ_1(D) τ1(D)。进一步,我们消除其他变量,具体过程与消除变量C类似,定义形式如下图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最后,我们对上述的变量消元过程进行总结,具体如下图所示:

在这里插入图片描述

2.4 变量消元算法总结

根据上述的变量消元过程,我们来定义变量消元算法如下图所示:

在这里插入图片描述

下面,我们对变量消元法的时间复杂度进行分析。

  1. 假设当前的概率图模型共计包含n个随机变量,m个因子。 假设变量消元法要消去n个随机变量,则共计需要执行n步的消除操作(每一步消除一个随机变量)。假设每一个步消除变量 X i X_i Xi,则包含变量 X i X_i Xi的因子相乘得到 ψ i ψ_i ψi,对于 X i X_i Xi进行变量消除之后,得到新的因子 τ i τ_i τi,假设因子 ψ i ψ_i ψi中包含的随机变量的个数为 N i N_i Ni,设 N m a x = m a x i N i N_{max}=max_iN_i Nmax=maxiNi
  2. 首先,根据上述的变量消除的过程可以看出,对于一次消元,最多所涉及的随机变量为 N m a x N_{max} Nmax,最多所涉及的因子为m个,每一个因子最多能够涉及的变量为n个,则乘法最多的计算次数为 ( m + n ) N m a x (m+n)N_{max} (m+n)Nmax次,而加法对应的最多的计算次数为 n N m a x nN_{max} nNmax
  3. 进一步,假设每一个随机变量最多的取值为v个,因子 ψ i ψ_i ψi中的变量个数最多为k个,则事件复杂度为 O ( m v k ) O(mv^k) O(mvk)

3 团树传播算法

下面,我们来介绍概率图精确推理中的另外一个经典算法,即团树传播算法,团树传播算法的本质以变量消元算法相同,主要的区别是从不同的角度出发。变量消元算法中,主要是将全局的概率推理转换成局部的因子之间的乘积和求和的运算。 而团树传播算法是从结构的角度出发,首先将概率图整理成一个团树的结构,然后将概率推理的过程转换成团树节点之间的消息传递过程。传递过程中,执行的也是因子之间的乘积和求和过程。

3.1 团树构建—聚类图

定义: 对于给定的概率图模型,因子集为 φ = { φ i } φ=\{φ_i\} φ={φi},变量集合为X。聚类图是定义在概率图模型之上的一个无向图,每一个节点i是变量集的子集 C i ∈ X C_i∈X CiX。聚类图必须满足组保持的性质,即每一个因子φ必须与一个节点 C i C_i Ci关联,使得因子φ中的随机变量为聚类图中节点中的随机变量的子集,即 S c o p e [ φ ] ⊆ C i Scope[φ]⊆ C_i Scope[φ]Ci。同时,对于聚类图中的节点 C i C_i Ci和节点 C j C_j Cj之间的每一条边定义一个割集,即 S i , j ⊆ C i ∩ C j S_{i,j}⊆ C_i∩C_j Si,jCiCj。下面给出一个例子:

在这里插入图片描述

进一步,根据上述变量消元算法的消元顺序,我们可以构建对应的聚类图,具体形式如下:
在这里插入图片描述
在上图中,我们定义的联合概率分布为:

在这里插入图片描述
同时,变量消元的过程如下:
在这里插入图片描述
根据消元中涉及因子 ψ i ψ_i ψi和聚类图中节点的定义,我们定义聚类图中的节点为 C 1 = { C , D } , C 2 = { G , I , D } , C 3 = { G , I , S } , C 4 = { H , G , J } , C 5 = G , J , L , S , C 6 = { J , L , S } , C 7 = { J , L } C_1=\{C,D\},C_2=\{G,I,D\},C_3=\{G,I,S\},C_4=\{H,G,J\},C_5={G,J,L,S},C_6=\{J,L,S\},C_7=\{J,L\} C1={C,D},C2={G,I,D},C3={G,I,S},C4={H,G,J},C5=G,J,L,S,C6={J,L,S},C7={J,L},同时定义根据新产生的因子,可以构建聚类图中不同节点之间的割集,这里我就不给出具体形式了。 直接给出图示:

在这里插入图片描述

3.2 聚类图的性质
  1. 树状图: 在变量消元的过程中,每一个中间的因子被使用了一次,聚类图中的每一个节点传递一个消息给另外一个节点,因此整个的变量消元过程产生的聚类图为一个树状图。
  2. 族保持性质: 概率图模型中的每一个因子必须出现在某一个消元步骤,所以可以满足族保持的性质。
  3. 执行交叉性质: 对于聚类图而言,如果对于任意的变量 X ∈ C i , X ∈ C j X∈C_i,X∈C_j XCi,XCj,如果X也出现在两个节点之间唯一路径之间的唯一路径上的每一个节点,则该改聚类图满足执行交叉的性质。具体可以参考上述图中的4节点到7节点中随机变量J的传播。
  4. 定义: 如果聚类图同时满足上述的三个性质,我们称之为团树。通过变量消元法得到的一个聚类图为一个团树。
3.3 团树传播算法求解边缘概率

在本节中,我们首先给出团树传播算法的整体的算法描述:
在这里插入图片描述

  1. 首先,我们需要根据变量消元算法来定义聚类图的结构,这一步的关键是计算变量消元算法中每一步消元所涉及的变量产生的函数 ψ i ψ_i ψi确定下来,进一步,我们可以根据 ψ ψ ψ函数来确定聚类图中的节点。
    在这里插入图片描述
  2. 然后,我们选择最终要计算目标所在的节点为根节点,这里选择包含X的r节点作为根节点。
  3. 从各个叶子节点开始,计算边缘概率,并且逐步的向根节点r进行计算。计算方法与变量消元的过程类似,这里我们只给出计算公式。

在这里插入图片描述
4. 随着叶子节点向根节点的消息传递,可以计算出目标的边缘概率:
在这里插入图片描述

3.4 团树传播算法实例

根据上述的例子,我们来计算变量J的概率。首先,我们根据变量消元法来构造团树:

在这里插入图片描述

进一步,我们可以看到节点6和节点7均为节点5的一个子集,这里我们可以直接将其进行化简。得到的最终形式如下:

在这里插入图片描述
下面,根据变量消元的计算过程,进行信息传递到根节点,即如下形式:

在这里插入图片描述

最后,我们来分析一下求所有的节点的边缘概率的计算 次数,假设当前的团树中有m个节点,则信息传递一次到根节点为m-1次。这里我们选择一个任意的节点为根节点,先从叶子节点传递信息到根节点,再从根节点传递信息到叶子节点,每个节点分别计算自身的势函数在乘以邻居节点传递的信息。以下图为例:

在这里插入图片描述

可以看出,以3为根节点,当信息从两个方向传递过来的时候,即可计算该节点的边缘概率,同理以2节点为根节点也是同理,当同时计算1,4节点的时候,信息在整个路径上流动两次,即对于m个节点的团树,信息传递2(m-1)的步骤即可计算出所有节点的边缘概率。即信息在这个团树上传递两次即可计算每一个节点的边缘概率。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值