9 概率图模型
1 背景
概率图模型使用图的方式表示概率分布。为了在图中添加各种概率,首先总结一下随机变量分布的一些性质。
1.1 概率的基本性质
我们假设现在有一组高维随机变量, p ( x 1 , x 2 , . . . , x n ) p(x_1,x_2,...,x_n) p(x1,x2,...,xn).它有两个非常基本的概率,也就是条件概率和边缘概率,以及根据这两个基本的概率,我们可以得到两个基本的运算法则:Sum Rule 和 Product Rule。并且根据这两个基本的法则,我们可以推出Chain Rule 和Bayesian Rule。
- 边缘概率: p ( x 1 ) p(x_1) p(x1)
- 条件概率: p ( x i ∣ x j ) p(x_i|x_j) p(xi∣xj)
- Sum Rule: p ( x 1 ) = ∫ p ( x 1 , x 2 ) d x 2 p(x_1)=\int p(x_1,x_2)dx_2 p(x1)=∫p(x1,x2)dx2
- Product Rule: p ( x 1 , x 2 ) = p ( x 1 ∣ x 2 ) p ( x 2 ) p(x_1,x_2)=p(x_1|x_2)p(x_2) p(x1,x2)=p(x1∣x2)p(x2)
- Chain Rule: p ( x 1 , x 2 , ⋯ , x p ) = ∏ i = 1 p p ( x i ∣ x i + 1 , x i + 2 ⋯ x p ) p(x_1,x_2,\cdots,x_p)=\prod\limits_{i=1}^pp(x_i|x_{i+1,x_{i+2} \cdots}x_p) p(x1,x2,⋯,xp)=i=1∏pp(xi∣xi+1,xi+2⋯xp)
- Bayesian Rule: p ( x 2 ∣ x 1 ) = p ( x 1 , x 2 ) p ( x 1 ) = p ( x 1 , x 2 ) ∫ p ( x 1 , x 2 ) d x 2 = p ( x 2 ∣ x 1 ) p ( x 1 ) ∫ p ( x 2 ∣ x 1 ) p ( x 1 ) d x 2 p\left(x_{2} | x_{1}\right)=\frac{p\left(x_{1}, x_{2}\right)}{p\left(x_{1}\right)}=\frac{p\left(x_{1}, x_{2}\right)}{\int p\left(x_{1}, x_{2}\right) d x_{2}}=\frac{p\left(x_{2} | x_{1}\right) p\left(x_{1}\right)}{\int p\left(x_{2} | x_{1}\right) p\left(x_{1}\right) d x_{2}} p(x2∣x1)=p(x1)p(x1,x2)=∫p(x1,x2)dx2p(x1,x2)=∫p(x2∣x1)p(x1)dx2p(x2∣x1)p(x1)
1.2 条件独立性
为什么要引入条件独立性呢?可以看到,在链式法则中,如果数据维度特别高,那么的采样和计算非常困难,联合概率使用链式法则 p ( x 1 , x 2 , ⋯ , x p ) = ∏ i = 1 p p ( x i ∣ x i + 1 , x i + 2 ⋯ x p ) p(x_1,x_2,\cdots,x_p)=\prod\limits_{i=1}^pp(x_i|x_{i+1,x_{i+2} \cdots}x_p) p(x1,x2,⋯,xp)=i=1∏pp(xi∣xi+1,xi+2⋯xp)会爆炸。
因此我们需要在一定程度上作出简化,来说说我们简化运算的思路。
- 假设每个维度之间都是相互独立的,那么我们 p ( x 1 , x 2 , ⋯ , x p ) = ∏ l i m i t s i = 1 p p ( x N ) p(x_1,x_2,\cdots,x_p)=\prod\\limits_{i=1}^pp(x_N) p(x1,x2,⋯,xp)=∏limitsi=1pp(xN)。比如,朴素贝叶斯就是这样的设计思路,也就是 p ( x ∣ y ) = ∏ i = 1 N p ( x i ∣ y ) p(x|y)=\prod\limits_{i=1}^Np(x_i|y) p(x∣y)=i=1∏Np(xi∣y)。但是,这个假设太强了,实际情况中的依赖比这个要复杂很多。所以我们像放弱一点,增加之间的依赖关系,于是我们有提出了马尔科夫性质(Markov Propert)。
- 假设每个维度之间是符合马尔科夫性质(Markov Propert) 的。所谓马尔可夫性质就是,对于一个序列 { x 1 , x 2 , ⋯ , x N } \left\{x_{1}, x_{2}, \cdots, x_{N}\right\} {x1,x2,⋯,xN},第 i i i 项仅仅只和第 i − 1 i-1 i−1 项之间存在依赖关系。用符号的方法我们可以表示为: X j ⊥ X i + 1 ∣ x i , j < i X_{j} \perp X_{i+1} | x_{i}, j<i Xj⊥Xi+1∣xi,j<i
- 在HMM 里面就是这样的齐次马尔可夫假设,但是还是太强了,我们还是要想办法削弱。自然界中经常会出现,依赖关可能是随意的,序列之间不同的位置上存在依赖关系,因此我们提出了条件独立性。
- 条件独立性:条件独立性假设是概率图的核心概念。它可以大大的简化联合概率分布。而用图我们可以大大的可视化表达条件独立性。我们可以描述为: X A ⊥ X B ∣ X C X_A\perp X_B|X_C XA⊥XB∣XC 而 X A , X B , X C X_A,X_B,X_C XA,XB,XC 是变量的集合,彼此之间互不相交。
1.3 概率图的算法分类
概率图模型采用图的特点表示上述的条件独立性假设,节点表示随机变量,边表示条件概率。大致可以分为三类,表示(Representation),推断(Inference) 和学习(Learning)。
1.3.1 Representation
知识表示的方法,可以分为有向图,Bayesian Network;和无向图,Markov Network,这两种图通常用来处理变量离散的情况。对于连续性的变量,我们通常采用高斯图,同时可以衍生出,Gaussian Bayesian Network 和Guassian Markov Network。
1.3.2 Inference
推断可以分为精准推断和近似推断。所谓推断就是给定已知求概率分布 。近似推断中可以分为确定性推断(变分推断) 和随机推断(MCMC),MCMC 是基于蒙特卡罗采样的。
1.3.3 Learning
学习可以分为参数学习和结构学习。在参数学习中,参数可以分为变量数据和非隐数据,我们可以采用有向图或者无向图来解决。而隐变量的求解我们需要使用到 EM 算法,这个EM 算法在后面的章节会详细推导。而结构学习则是,需要我们知道使用哪种图结构更好,比如神经网络中的节点个数,层数等等,也就是现在非常热的Automate Machine Learning。
2 有向图-贝叶斯网络 Bayesian Network
概率图模型中,图是用来表达的,将概率嵌入到了图中之后,使得表达变得非常的清晰明了。在我们的联合概率计算中,出现了一些问题: p ( x 1 , x 2 , ⋯ , x N ) = p ( x i ) ∏ i = 1 N p ( x i ∣ x 1 : i − 1 ) p\left(x_{1}, x_{2}, \cdots, x_{N}\right)=p\left(x_{i}\right) \prod_{i=1}^{N} p\left(x_{i} | x_{1: i-1}\right) p(x1,x2,⋯,xN)=p(xi)i=1∏Np(xi∣x1:i−1)这样的计算维度太高了,所以我们引入了条件独立性,表达为 X A ⊥ X B ∣ X C X_{A} \perp X_{B} | X_{C} XA⊥XB∣XC。
已知联合分布中,各个随机变量之间的依赖关系,那么可以通过拓扑排序(根据依赖关系)可以获得一个有向图。而如果已知一个图,也可以直接得到联合概率分布的因子分解: p ( x 1 , x 2 , ⋯ , x N ) = ∏ i = 1 N p ( x i ∣ x p a { i } ) p\left(x_{1}, x_{2}, \cdots, x_{N}\right)=\prod_{i=1}^{N} p\left(x_{i} | x_{p a\{i\}}\right) p(x1,x2,⋯,xN)=i=1∏Np(xi∣xpa{i})其中, p a i pa{i} pai 表示为 x i x_{i} xi 的父亲节点。而概率图可以有效的表达条件独立性,直观性非常的强,我们接下来看看概率图中经典的三种结构。
2.1 概率图的三种基本结构
对于一个概率图,我们可以使用拓扑排序来直接获得条件独立性的关系。如果存在一个关系由一个节点
x
i
x_{i}
xi 指向另一个节点
x
j
x_{j}
xj,我们可以记为
p
(
x
j
∣
x
i
)
p(x_{j}|x_{i})
p(xj∣xi)。我们现在需要定义一些规则来便于说明,对于一个概率图如下所示:
对于一个箭头——>来说,箭头所在的方向称为Head,另一端被称为Tail。
2.1.1 Tail to Tail 结构
Tail to Tail 的模型结构图,如下图所示,由于b 节点在 a 节点和 c 节点的Tail 部分,所以被我们称为Tail to Tail 结构。
我们使用因子分析来计算联合概率可以得到:
p
(
a
,
b
,
c
)
=
p
(
b
)
p
(
a
∣
b
)
p
(
c
∣
b
)
p(a,b,c) = p(b)p(a|b)p(c|b)
p(a,b,c)=p(b)p(a∣b)p(c∣b)
使用链式法则,同样我们也可以得到:
p
(
a
,
b
,
c
)
=
p
(
b
)
p
(
a
∣
b
)
p
(
c
∣
b
,
a
)
p(a,b,c) = p(b)p(a|b)p(c|b,a)
p(a,b,c)=p(b)p(a∣b)p(c∣b,a)
对比一下上述两个公式,可以对比得到:
p
(
c
∣
b
)
=
p
(
c
∣
b
,
a
)
p(c|b) = p(c|b,a)
p(c∣b)=p(c∣b,a)
实际上,这里就已经就可以看出
a
⊥
c
a \perp c
a⊥c 了,因为a 的条件增不增加都不会改变c 的概率,所以a 和c 之间是相互独立的。
p
(
c
∣
b
)
p
(
a
∣
b
)
=
p
(
c
∣
b
,
a
)
p
(
a
∣
b
)
=
p
(
a
,
c
∣
b
)
(
后
一
个
等
号
同
乘
以
p
(
a
)
可
看
出
)
⇒
p
(
c
∣
b
)
p
(
a
∣
b
)
=
p
(
a
,
c
∣
b
)
\begin{array}{l} p(c | b) p(a | b)=p(c | b, a) p(a | b)=p(a, c | b) (后一个等号同乘以p(a)可看出)\\ \quad \Rightarrow p(c | b) p(a | b)=p(a, c |b) \end{array}
p(c∣b)p(a∣b)=p(c∣b,a)p(a∣b)=p(a,c∣b)(后一个等号同乘以p(a)可看出)⇒p(c∣b)p(a∣b)=p(a,c∣b)这样,我们就可以看得很明白了。这就是条件独立性,在
b
b
b 的条件下,
a
a
a 和
c
c
c 是独立的。实际在概率图中就已经蕴含这个分解了,只看图我们就可以看到这个性质了,这就是图的直观性,条件独立性和图是一样的。那么
a
⊥
c
a\perp c
a⊥c 可以被我们看为:给定
b
b
b 的情况下,如果
b
b
b 被观测到,那么
a
a
a 和
c
c
c 之间是阻塞的,也就是相互独立。
此规则并不是强加上去的,是我们用概率图的因子分解表示联合概率后,本身存在的现象,我们在证明此现象存在后,总结出的规律,根据此规律可以直接看图得出结论。
2.1.2 Head to Tail 结构
其实,和Head to Head 结构的分析基本是上一模一样的,我们可以得到
a
⊥
c
∣
b
a \perp c | b
a⊥c∣b。也就是给定
b
b
b 的条件下,
a
a
a 和
c
c
c 之间是条件独立的。也就是
b
b
b 被观测的条件下,路径被阻塞。
使用因子分解可以得到:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
a
∣
b
)
p
(
c
∣
b
)
p(a,b,c) = p(a)p(a|b)p(c|b)
p(a,b,c)=p(a)p(a∣b)p(c∣b)使用链式法则,可以得到:
p
(
a
,
b
,
c
)
=
p
(
b
)
p
(
a
∣
b
)
p
(
c
∣
b
,
a
)
p(a,b,c) = p(b)p(a|b)p(c|b,a)
p(a,b,c)=p(b)p(a∣b)p(c∣b,a)对比一下上述两个公式,可以对比得到:
p
(
c
∣
b
)
=
p
(
c
∣
b
,
a
)
p(c|b) = p(c|b,a)
p(c∣b)=p(c∣b,a)
实际上,这里就已经就可以看出
a
⊥
c
∣
b
a \perp c | b
a⊥c∣b。
2.1.3 Head to Head 结构
在默认情况下
a
⊥
b
a\perp b
a⊥b,也就是若
c
c
c 被观测,
a
a
a 和
b
b
b 之间是有关系的。我们可以推导一下默认情况。
使用因子分解:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
)
p
(
c
∣
a
,
b
)
p(a,b,c) = p(a)p(b)p(c|a,b)
p(a,b,c)=p(a)p(b)p(c∣a,b)使用链式法则:
p
(
a
,
b
,
c
)
=
p
(
b
)
p
(
a
∣
b
)
p
(
c
∣
b
,
a
)
p(a,b,c) = p(b)p(a|b)p(c|b,a)
p(a,b,c)=p(b)p(a∣b)p(c∣b,a)对比一下上述两个公式,可以对比得到:
p
(
b
)
=
p
(
b
∣
a
)
p(b) = p(b|a)
p(b)=p(b∣a)可得
a
⊥
b
a \perp b
a⊥b。但是当
c
c
c 被观测后,上述关系不在成立。
2.1.4 三种结构对比
三种结构我们在上面都已经进行分析过了,其实大家发现Tail to Tail,Head to Tail 都比较正常,但是Head to Head 有点不对劲。因为不太符合条件独立性,因为当 c 被观察到的时候,a 和 b 之间反而有关系了。这实际上让人有点费解。
我们来举个例子:在图4 中的三个事件,我们引入一个故事。
- c:小明喝醉了。
- a:小明酒量小。
- b:小明心情不好。
我们想要知道
p
(
a
∣
c
)
=
p
(
a
∣
b
,
c
)
p(a|c) = p(a|b,c)
p(a∣c)=p(a∣b,c) 是否会成立?如果等号成立的话 a 和 b 之间一定是相互独立的。这个我们在Tail to Tail 那一节就已经说过了。
我们假设小明喝醉了是因为小明心情不好的概率是 0.8,那么当我们知道小明喝醉了并且小明今天的心情不好的情况下,知道他酒量小的概率一定是小于0.8 的。大家想想就知道了,其实很简单的。
那么给定了
c
,
a
c,a
c,a 和
b
b
b 之间反而无法分离了。这有点反常,反而使Inference 变得困难了,恰好反过来了。那么我们怎么解决这种情况呢?我们下一小节会解决这个问题。
这里用一个例子解释一下三种情况
情况一:将 a 看作父亲, 看作 b,c 儿子,当 a 存在时,两个儿子之前是有关系的,不独立,若父亲被观测(即出事了),那么 b,c 就相互独立了
情况二:将 a 看作爷爷, b 是父亲, c 是儿子,当 b 存在时,爷爷和儿子是有关系的,若父亲被观测(即出事了),那么 b 就相互独立了
情况三:将 a,b 看作父亲和母亲, c 是儿子。当儿子不存在时,a,b 可能还没有结婚或恋人关系,所以是相互独立的,若儿子被观测(即出生了),那么 a,b 就不再独立了
2.2 D-Separation
上一小节中,我们已经大致介绍了概率图之间的三种基本拓扑结构。下面我们来介绍一下,这三种拓扑结构的运用,以及如何扩展到我们的贝叶斯模型中。
接下来介绍一种判断规则:判断集合是不是具有条件独立性?
此方法称为D-Seperation,有两个规则
2.2.1 D-separation
假设我们有三个集合,
X
A
,
X
B
,
X
C
X_{A},X_{B},X_{C}
XA,XB,XC,这三个集合都是可观测的,并且满足
X
A
⊥
X
C
∣
X
B
X_{A}\perp X_{C}|X_{B}
XA⊥XC∣XB。那我们想想,如果有一些节点连成的拓扑关系图,若其中一个节点
a
∈
X
A
,
c
∈
X
C
a \in X_{A}, c \in X_{C}
a∈XA,c∈XC,那么如果
a
a
a 和
c
c
c 之间相互独立,他们之间连接的节点需要有怎样的条件?我们通过一个图来进行描述。
根据上一小节可知,假如从
a
a
a 到
c
c
c 中间通过一个节点
b
b
b,那么路径什么时候是连通的?什么时候又是阻塞的呢?我们可以分两种情况来讨论,为什么是两种?上一节我们就已经讲解过,Tail to Tail 结构和Head to Tail 结构其实是一样的,但是Head to Head 结构是反常的。
所以我们就分开进行讨论。
- 如果是Tail to Tail 结构和Head to Tail 结构,那么中间节点 b 1 , b 2 b1,b2 b1,b2 必然要位于可观测集合 X B X_B XB 中,那么 a a a 和 c c c 才是相互独立的。
- 如果是Head to Head 结构,那就不一样了,在一般情况下 a ⊥ c a\perp c a⊥c,那就是 b ∉ X B b \notin X_{B} b∈/XB,包括他的子节点都不可以被观测到,不然就连通了。
针对D-Seperation图,我们使用这两条规则依次检查所有结点,若都满足,则称 X A , X C X_{A},X_{C} XA,XC 对于 X B X_{B} XB 是条件独立的。
也就是存在集合 X A , X B , X C X_{A},X_{B},X_{C} XA,XB,XC,当 X B X_{B} XB 中的随机变量被观测的情况下, X A X_{A} XA 与 X C X_{C} XC 中的随机变量相互独立,则称 X B X_{B} XB 是 X A , X C X_{A},X_{C} XA,XC 的D-Separation。
实际上还有一个名字,叫做全局马尔科夫性质(Global Markov Property)。D-Separation 非常的关键,我们可以直接用这个性质来检测两个集合关于另外一个集合被观测的条件是不是条件独立。
2.2.2 Markov Blanket
定义:在随机变量的全集 U U U中,对于给定的变量 X ∈ U X \in U X∈U 和变量集合 M B ∈ U MB \in U MB∈U,若有 X ⊥ ( U − M B − X ) ∣ M B X \perp ( U-MB-X )|MB X⊥(U−MB−X)∣MB 则称能满足上述条件的最小变量集MB为X的马尔科夫毯(Markov Blanket)。
D 划分应用在贝叶斯定理中:定义
x
−
i
x_{-i}
x−i 为
{
x
1
,
x
2
,
⋯
,
x
i
−
1
,
x
i
+
1
,
⋯
,
x
N
}
\left\{x_{1}, x_{2}, \cdots, x_{i-1}, x_{i+1}, \cdots, x_{N}\right\}
{x1,x2,⋯,xi−1,xi+1,⋯,xN},这个序列中不包括
x
i
x_{i}
xi,那么,假设除了
x
i
x_{i}
xi 节点,其它的节点都是可观测的,那么我们需要计算概率:
p
(
x
i
∣
x
−
i
)
=
p
(
x
i
,
x
−
i
)
p
(
x
−
i
)
=
p
(
x
)
∫
x
i
p
(
x
)
d
x
i
=
∏
j
=
1
N
p
(
x
j
∣
x
p
a
(
j
)
)
∫
x
i
∏
j
=
1
N
p
(
x
j
∣
x
p
a
(
j
)
)
d
x
i
p\left(x_{i} | x_{-i}\right)=\frac{p\left(x_{i}, x_{-i}\right)}{p\left(x_{-i}\right)}=\frac{p(x)}{\int_{x_{i}} p(x) d x_{i}}=\frac{\prod_{j=1}^{N} p\left(x_{j} | x_{p a(j)}\right)}{\int_{x_{i}} \prod_{j=1}^{N} p\left(x_{j} | x_{p a(j)}\right) d x_{i}}
p(xi∣x−i)=p(x−i)p(xi,x−i)=∫xip(x)dxip(x)=∫xi∏j=1Np(xj∣xpa(j))dxi∏j=1Np(xj∣xpa(j))我们分析一下上述等式,我们可以分成两部分,将和
x
i
x_{i}
xi 相关的部分记为
Δ
ˉ
\bar{\Delta}
Δˉ , 将和
x
i
x_{i}
xi 不相关的部分记为
Δ
{\Delta}
Δ,那么上式可改写为
p
(
x
i
∣
x
−
i
)
=
Δ
⋅
Δ
ˉ
∫
x
i
Δ
⋅
Δ
ˉ
d
x
i
=
Δ
⋅
Δ
ˉ
Δ
⋅
∫
x
i
Δ
ˉ
d
x
i
=
=
Δ
ˉ
∫
x
1
Δ
ˉ
d
x
i
p\left(x_{i} | x_{-i}\right)=\frac{\Delta \cdot \bar{\Delta}}{\int_{x_{i}} \Delta \cdot \bar{\Delta} d x_{i}}=\frac{\Delta \cdot \bar{\Delta}}{\Delta \cdot \int_{x_{i}} \bar{\Delta} d x_{i}}==\frac{\bar{\Delta}}{\int_{x_{1}} \bar{\Delta} d x_{i}}
p(xi∣x−i)=∫xiΔ⋅ΔˉdxiΔ⋅Δˉ=Δ⋅∫xiΔˉdxiΔ⋅Δˉ==∫x1ΔˉdxiΔˉ
那么
x
i
x_{i}
xi 和其他所有点的关系可以被化简为只和
x
i
x_{i}
xi 相关的点的关系。那么,我们将这个关系大致抽象出来,通过图来进行分析,找一找哪些节点是和
x
i
x_{i}
xi 相关的,直观性也是概率图模型的一大优点。假设
x
i
x_{i}
xi 是可以被观测到的:
P
(
x
i
∣
x
−
i
)
P(x_{i}|x_{-i})
P(xi∣x−i) 首先包括一部分为
P
(
x
i
∣
x
−
i
)
P(x_{i}|x_{-i})
P(xi∣x−i) ,第二部分为
p
(
x
c
h
i
l
d
(
i
)
∣
x
i
,
x
p
a
(
c
h
i
l
d
(
x
i
)
)
)
p(x_{child(i)}|x_{i},x_{pa(child(xi))})
p(xchild(i)∣xi,xpa(child(xi)))。为什么第二部分可以这样写呢?首先
x
i
x_{i}
xi 作为两个父亲节点,得到两个孩子节点,毫无疑问对吧,那么我们可以写成
p
(
x
c
h
i
l
d
(
i
)
∣
x
i
)
p(x_{child(i)}|x_i)
p(xchild(i)∣xi)。但是和
p
(
x
c
h
i
l
d
(
i
)
)
p(x_{child(i)})
p(xchild(i)) 相关的变量除了
x
i
x_{i}
xi 肯定还有其他的,也就是
x
p
a
(
c
h
i
l
d
(
x
i
)
)
x_{pa(child(xi))}
xpa(child(xi)),所以我们就可以得到
p
(
x
c
h
i
l
d
(
i
)
∣
x
i
,
x
p
a
(
c
h
i
l
d
(
x
i
)
)
)
p(x_{child(i)}|x_{i},x_{pa(child(xi))})
p(xchild(i)∣xi,xpa(child(xi)))。
实际上,这些 x i x_{i} xi 周围的节点,也就是我用阴影部分画出的那些,可以被称为Markov Blanket。
从图上看就是留下父亲,孩子,孩子的另一个双亲,其他的节点可以忽略,也就是和周围的关系的连接。
换句话说,一个人的马尔可夫毯就是和你有关系的所有人(按式2-16定义)。如果想要调查这个人,总不能把全社会的所有人都调查一下吧(大量的特征冗余),其实只要找出这个人的马尔可夫毯人群调查一下就好了(特征选择)。特别地,如果这个社会是贝叶斯网络,马尔可夫毯人群只包括自己的家人,相当于人只与自己的家人有关系,和其他人没关系,是一种简化的模型。
贝叶斯网络,它是一个有向无环图(Directed Acyclic Graph, DAG),结点之间的连结都是有向箭头,且不能沿着箭头走一圈。贝叶斯网络是马尔可夫链的推广,马尔可夫链限定了结构只能是一条链,而贝叶斯网络则不再限定结构是一个链,但二者都遵守马尔可夫假设,即一个结点只依赖于它的上一个节点(一阶马尔可夫假设)。
参考:https://www.cnblogs.com/wt869054461/p/9899929.html
梳理一下:D-Separation 是在概率图中,帮助我们快速的判断条件独立性。对于一个节点,它和哪些节点相关,它和父亲,孩子,孩子的另一个双亲这三种节点相关,这三种点的集合就是Markov Blanket。在概率图中,我们用 p ( x 1 , x 2 , ⋯ , x N ) = p ( x i ) ∏ i = 1 N p ( x i ∣ x 1 : i − 1 ) p\left(x_{1}, x_{2}, \cdots, x_{N}\right)=p\left(x_{i}\right) \prod_{i=1}^{N} p\left(x_{i} | x_{1: i-1}\right) p(x1,x2,⋯,xN)=p(xi)∏i=1Np(xi∣x1:i−1)和 p ( x 1 , x 2 , ⋯ , x N ) = ∏ i = 1 N p ( x i ∣ x p a { i } ) p\left(x_{1}, x_{2}, \cdots, x_{N}\right)=\prod_{i=1}^{N} p\left(x_{i} | x_{p a\{i\}}\right) p(x1,x2,⋯,xN)=∏i=1Np(xi∣xpa{i})两种表达形式是等价的。第一种是最完备的表达方法,第二种的表达是简化版本,蕴含了概率图中得到的条件独立性关系简化的结果。
2.3 例子
实际应用的模型中,对这些条件独立性作出了假设,从单一到混合,从有限到无限(时间,空间)可以分为单一,混合,时间和连续四个角度,下面看一下这个四个方法是一步一步越来越难的。
2.3.1 单一
单一最典型的代表就是 Naive Bayesian,这是一种 classification 的模型。对于 p ( x ∣ y ) p(x|y) p(x∣y) 的问题来说,假设各维度之间相互独立,单一的条件独立性假设 p ( x ∣ y ) = ∏ i = 1 p p ( x i ∣ y ) p(x|y)=\prod\limits_{i=1}^pp(x_i|y) p(x∣y)=i=1∏pp(xi∣y),在 D 划分后,所有条件依赖的集合就是单个元素。
概率图模型表示如下所示:
很显然是一个Tail to Tail 的模型,我们很简单可以得出
x
1
⊥
x
2
⊥
⋯
⊥
x
N
x_{1}\perp x_{2} \perp \cdots \perp x_{N}
x1⊥x2⊥⋯⊥xN。
2.3.2 混合
最常见的就是 Gaussian Mixture Model (GMM),这是一种聚类模型,将每个类别拟合一个分布,计算数据点和分布之间的关系来确定,数据点所属的类别。我们假设 Z 是一个隐变量,并且 Z 是离散的变量,
z
1
,
z
2
,
⋯
,
z
k
z_1,z_2,\cdots,z_k
z1,z2,⋯,zk,
p
(
x
∣
z
)
=
N
(
μ
,
Σ
)
p(x|z)=\mathcal{N}(\mu,\Sigma)
p(x∣z)=N(μ,Σ),我们用模型可以表示为:
2.3.3 时间
时间上我们大致可以分成两种。第一种是Markov chain,这是随机过程中的一种;第二种是Gaussian Processing,实际上就是无限维的高斯分布。
实际上时间和混合可以一起看,我们称之为动态系统模型。并且,我们就可以衍生出三种常见的模型,这里讲的比较的模糊,在后面的章节我们会进行详细的分析。第一种是隐马尔可夫模型(HMM),这是一种离散的模型;第二种是线性动态系统(LDS),这是一种线性的连续的模型,包括典型的Kalman Filter。第三种是Particle Filter,一种非高斯的,非线性的模型。
2.3.4 连续
高斯贝叶斯网络Guassian Bayesian Network
2.3.5 组合
组合上面的分类如:GMM 与时序结合:动态模型
a. HMM(离散)
b. 线性动态系统 LDS(Kalman 滤波)
c. 粒子滤波(非高斯,非线性)
上一小节中,我们分析了有向图Bayesian Network,得到了因子分解法。虽然,有向图中可以方便直观的表达条件独立性,但是它也有它的局限性。也就是我们提到的对于Head to Head 的结构来说,当中间节点被观察到的时候,反而是两端的节点是相关的。这违反了条件独立性的特点,也就是当某些变量被观察到时,其他变量之间是独立的特点,这种情况有点反常,并不太好办。
但是,在无向图中就完全不会出现这样的情况,因为本来就没有方向,而且在无向图中也有类似的D-Separation 性质。
3 Markov网络
3.1 Markov网络中的条件独立
Markov 中的条件独立,大致可以被我们分成三种情况,Global Markov,Local Markov 和Pair Markov。
3.1.1 Global Markov
假设现在有三个集合
X
A
⊥
X
B
∣
X
C
X_{A} \perp X_{B} |X_{C}
XA⊥XB∣XC,我们想得到
a
∈
X
A
,
b
∈
X
B
a \in X_{A},b \in X_{B}
a∈XA,b∈XB 之间相互独立,这个应该怎么办?我们给出,只有a 和b 的中间节点至少有一个位于C 中,那么我们就可以得到
a
∈
c
a\in c
a∈c。
3.1.2 Local Markov
我们以下图的一个Markov Network 为例,
局部马尔可夫指:针对某个结点,当给定它的邻居结点时,它独立于其余结点。
用文字的语言来描述就为 x ⊥ ( X − x − N e i g h b o u r ( x ) ) ∣ N e i g h b o u r ( x ) x\perp (X-x-Neighbour(\mathcal{x}))|Neighbour(x) x⊥(X−x−Neighbour(x))∣Neighbour(x)。那么在这个图中,我们就可以表示为 a ⊥ { e , f } ∣ { b , c , d } a \perp\{e, f\} |\{b, c, d\} a⊥{e,f}∣{b,c,d}。
3.1.3 Pair Markov
成对马尔可夫性质可以被我们描述为: x i ⊥ x j ∣ x − i − j ( i ≠ j ) x_{i} \perp x_{j} | x_{-i-j}(i \neq j) xi⊥xj∣x−i−j(i=j)。其中, x − i − j x_{-i-j} x−i−j 为从全集中去掉 x i x_{i} xi 和 x j x_{j} xj 而留下了的集合。
那么条件独立性就可以体现在,Global,Local 和Pair 中。其中Global <=> Local <=> Pair。也就是这三种条件独立的方法得到的结果是一样的。
3.2 因子分解法
我们想一想在一个无向图中,如何来体现我们想要的条件独立性。这里的引入和之前的不太一样,我们首先需要引入几个概念。团: 这是一个关于节点的集合,集合中的节点是相互连通的。而最大团,就很好理解了吧,也就是最大的连通子集。我们可以将无向图的分离定义到团上,我们假设
c
1
,
c
2
,
⋯
c
k
c_1,c_2,\cdots c_k
c1,c2,⋯ck 表示为团,共有 K 个团。那么,我们可以将联合概率定义为:
p
(
x
)
=
1
Z
∏
i
=
1
k
ϕ
(
x
c
i
)
p(x)=\frac{1}{Z} \prod_{i=1}^{k} \phi\left(x_{c_{i}}\right)
p(x)=Z1i=1∏kϕ(xci)其中,
z
z
z 是归一化因子,因为没有归一化因子的话,这不能被称为一个概率分布,因为概率分布首先就要保证和等于1。那么,
z
z
z 被定义为:
z
=
∑
x
∏
i
=
1
k
ϕ
(
x
c
i
)
=
∑
x
i
⋯
∑
x
N
∏
i
=
1
k
ϕ
(
x
c
i
)
z=\sum_{x} \prod_{i=1}^{k} \phi\left(x_{c_{i}}\right)=\sum_{x_{i}} \cdots \sum_{x_{N}} \prod_{i=1}^{k} \phi\left(x_{c_{i}}\right)
z=x∑i=1∏kϕ(xci)=xi∑⋯xN∑i=1∏kϕ(xci)而这里的因子分解法必定和Global,Local 和Pair 都是等价的。
接下来需要证明这种因子分解与条件独立性等价。
3.3 Gibbs Distribution 和Exponential Distribution
这个部分是上面部分的一个加深理解,首先我们需要总结一下。
- Global Markov: X A ⊥ X C ∣ X B X_{A} \perp X_{C} | X_{B} XA⊥XC∣XB 。如果 A , B , C A, B, C A,B,C, 满足 Sep ( A , C ∣ B ) \operatorname{Sep}(A, C | B) Sep(A,C∣B), Sep 代表 D-Separation,那么 X A ⊥ X C ∣ X B X_{A} \perp X_{C} | X_{B} XA⊥XC∣XB
- Local Markov Network: x i ⊥ x − i − n b ( i ) ∣ x n b ( i ) x_{i} \perp x_{-i-n b(i)} | x_{n b(i)} xi⊥x−i−nb(i)∣xnb(i), 其实 n b ( i ) \mathrm{nb}(\mathrm{i}) nb(i): neighbor of node i o i_o io
- Pair Markov: x i ⊥ x j ∣ x − i − j x_{i} \perp x_{j} | x_{-i-j} xi⊥xj∣x−i−j
1 ⇔ 2 ⇔ 3 ⇔ 1 \Leftrightarrow 2 \Leftrightarrow 3 \Leftrightarrow 1⇔2⇔3⇔因子分解(基于最大团)。这里面实际上是有个 Hammesley-Clifford 定理的,这个定理的证明非常的困难,我们这里就不做过多的阐述。
因子分解:在我们之前的定义中, p ( x ) = 1 Z ∏ i = 1 k ϕ ( x c i ) p(x)=\frac{1}{Z} \prod_{i=1}^{k} \phi\left(x_{c_{i}}\right) p(x)=Z1i=1∏kϕ(xci) c i c_{i} ci:最大团; x c i x_{c_{i}} xci:最大团的随机变量集合; ϕ ( x c i ) \phi (x_{c_{i}}) ϕ(xci):势函数,必须为正。这里的概念都是来自于统计学和热力学的过程。这里的势函数还有可以做文章的地方。
因为,势函数必定为正,我们可以将势函数表达为
ϕ
(
x
c
i
)
=
exp
(
−
E
(
x
c
i
)
)
\phi(x_{ci})=\exp(-E(x_{ci}))
ϕ(xci)=exp(−E(xci))其中,
E
(
x
c
i
)
E(x_{ci})
E(xci) 称为Energy function。实际上用这种形式表达的
p
(
x
)
p(x)
p(x) ,为Gibbs Distribution,或者又被称之为Boltzman Distribution(玻尔兹曼分布)。有了
ϕ
(
x
c
i
)
\phi(x_{ci})
ϕ(xci)的形式,我们可以进一步推导得:
p
(
x
)
=
1
Z
∏
i
=
1
K
ϕ
(
x
c
i
)
=
1
Z
∏
i
=
1
K
exp
{
−
E
(
x
c
i
)
}
=
1
Z
exp
{
−
∑
i
=
1
k
E
(
x
c
i
)
}
p(x)=\frac{1}{Z} \prod_{i=1}^{K} \phi\left(x_{c_{i}}\right)=\frac{1}{Z} \prod_{i=1}^{K} \exp \left\{-E\left(x_{c_{i}}\right)\right\}=\frac{1}{Z} \exp \left\{-\sum_{i=1}^{k} E\left(x_{c_{i}}\right)\right\}
p(x)=Z1i=1∏Kϕ(xci)=Z1i=1∏Kexp{−E(xci)}=Z1exp{−i=1∑kE(xci)}
我们再来回顾一下指数族分布,指数族分布的通用表达形式为:
p
(
x
)
=
h
(
x
)
exp
{
η
T
ϕ
(
x
)
−
A
(
η
)
}
=
h
(
x
)
1
Z
(
η
)
exp
{
η
T
ϕ
(
x
)
}
p(x)=h(x) \exp \left\{\eta^{T} \phi(x)-A(\eta)\right\}=h(x) \frac{1}{Z(\eta)} \exp \left\{\eta^{T} \phi(x)\right\}
p(x)=h(x)exp{ηTϕ(x)−A(η)}=h(x)Z(η)1exp{ηTϕ(x)}
在这里我们把 e x p − A ( η ) exp^{-A(\eta)} exp−A(η),直接记为 Z ( η ) Z(\eta) Z(η)。大家观察就会发现势函数也就是Gibbs Distribution 就是一个指数族分布,可见因子分解后的 p ( x ) p(x) p(x) 服从指数族分布。
Gibbs 是来自统计物理学,形式上和指数族分布时一样的。而指数族分布实际上是由最大熵分布得到的,那么我们可以理解Gibbs 分布也是有最大熵原理得到的。而马尔可夫随机场(Markov Random Field) 实际上等价于Gibbs 分布。至于为什么?这实际上全部都在Hammesley-Clifford 定理中,有兴趣的同学,请自行查阅。
推断(Inference) 这个词,对于有一定机器学习基础的同学来说,一定是听说过,这也是贝叶斯方法中一个非常重要的理论性研究。那么什么是推断呢?推断说白了,就是求概率。比如,对于一个联合概率密度函数 p ( x ) = p ( x 1 , x 2 , ⋯ , x p ) p(x) = p(x_1,x_2,\cdots,x_p) p(x)=p(x1,x2,⋯,xp)。我们需要求的有哪些呢?
- 边缘概率: p ( x i ) = ∑ x 1 ⋯ ∑ x i − 1 ⋯ ∑ x i + 1 ⋯ ∑ x p p ( x ) p\left(x_{i}\right)=\sum_{x_{1}} \cdots \sum_{x_{i-1}} \cdots \sum_{x_{i+1}} \cdots \sum_{x_{p}} p(x) p(xi)=∑x1⋯∑xi−1⋯∑xi+1⋯∑xpp(x)
- 条件概率: p ( x A ∣ x B ) p\left(x_{A} | x_{B}\right) p(xA∣xB), 令 x = x A ∪ x B x=x_{A} \cup x_{B} x=xA∪xB
- MAP Inference:也就是 z ^ = arg max z p ( z ∣ x ) ∝ argmax p ( x , z ) \hat{z}=\arg \max _{z} p(z | x) \propto \operatorname{argmax} p(x, z) z^=argmaxzp(z∣x)∝argmaxp(x,z) 因为, p ( z ∣ x ) = p ( x , z ) p ( x ) ∝ p ( x , z ) p(z | x)=\frac{p(x, z)}{p(x)} \propto p(x, z) p(z∣x)=p(x)p(x,z)∝p(x,z)
因为我们的目标是求一个最优的参数
z
z
z,并不需要知道具体的数值是多少,只要知道谁大谁小就行,所以
p
(
x
)
p(x)
p(x) 可以直接不看了。
现在我们知道了,Inference 在求什么?下一步,我们要总结Inference 有哪些方法。
============ 推断============
求边缘,条件和MAP
1 背景
1.1 Inference 求解方法
1.1.1 精准推断(Deterministic Inference)
- Variable Elimination (VE):变量消除法;
- Belief Propagation (BP): 信念传播,这个可不是我们之前学习的反向传播算法,这里需要注意。同时这个算法衍生出的Sum Product Algorithm,这就是推断的核心,这是一种树结构的;
- Junction Tree Algorithm:这是一种普通图结构。
1.1.2 近似推断(Approximate Inference)
- 典型的有有向环(Loop Belief Propagation);
- 采样方法,包括Mente Carlo Inference:Importance Sampling,MCMC——随机近似;
- 变分推断(Variational Inference)——确定性近似。
1.2 隐马尔可夫模型(Hidden Markov Model)
Hidden Markov Model (HMM) 算法将在后面的章节中做详细的描述,在这一小节中,我们主要做一点概述性的描述。HMM 的模型可视化为上图所示,其中 I 是隐变量,O 也就是我们的观测变量。
我们主要考虑三个问题,在三个问题为 Inference 的问题。
- Evaluation,也就是求一个边缘密度 p ( O ) = ∑ I P ( I , O ) p(O)=\sum_{I} P(I, O) p(O)=∑IP(I,O)。
- Learning,也就是寻找 λ ^ ∘ \hat{\lambda}_{\circ} λ^∘
- Decoding: I ^ = argmax I \hat{I}=\operatorname{argmax}_{I} I^=argmaxI,包括Vitebi Algorithm,这是一个动态规划算法。而隐马尔可夫模型实际上一种动态规划模型(Dynamic Bayesian Network)。
2 变量消除:Variable Elimination
在上一小节中,我们简单的介绍了推断的背景和分类,我们知道了大致有哪些推断的方法。推断的任务可以被我们介绍为:给定已知的 p ( x ) = p ( x 1 , x 2 , ⋯ , x p ) p(x) = p(x_1,x_2,\cdots,x_p) p(x)=p(x1,x2,⋯,xp),我们需要求的有三个:
- 边缘概率: p ( x i ) = ∑ x 1 , ⋯ , x i − 1 , x i + 1 , ⋯ , x p p ( x 1 , x 2 , ⋯ , x p ) p\left(x_{i}\right)=\sum_{x_{1}, \cdots, x_{i-1}, x_{i+1}, \cdots, x_{p}} p\left(x_{1}, x_{2}, \cdots, x_{p}\right) p(xi)=∑x1,⋯,xi−1,xi+1,⋯,xpp(x1,x2,⋯,xp)
- 条件概率: p ( x A ∣ x B ) p(x_A|x_B) p(xA∣xB),也就是在已知 x B x_B xB 集合的情况下,如何求得 x A x_A xA 集合的概率。
- 最大后验概率(MAP): x ^ A = argmax x A p ( x A ∣ x B ) = argmax p ( x A , x B ) \hat{x}_{A}=\operatorname{argmax}_{x_{A}} p\left(x_{A} | x_{B}\right)=\operatorname{argmax} p\left(x_{A}, x_{B}\right) x^A=argmaxxAp(xA∣xB)=argmaxp(xA,xB)。
下面我们要介绍最简单的一个精确推断中的东西,名为变量消除法(Variable Elimination)。这是一种最简单的推断方法,也是我们学习推断法的核心概念之一。下面我们做详细的解释。
2.1变量消除法(Variable Elimination Algorithm)
假如我们有一个马氏链:
那么我们怎么来求
p
(
d
)
p(d)
p(d) 呢?根据公式我们可以得到:
p
(
d
)
=
∑
a
,
b
,
c
p
(
a
,
b
,
c
,
d
)
p(d)=\sum_{a,b,c}p(a,b,c,d)
p(d)=a,b,c∑p(a,b,c,d)
然后使用因子分解,我们可以得到:
p
(
d
)
=
∑
a
,
b
,
c
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
b
)
p
(
d
∣
c
)
p(d)=\sum_{a,b,c}p(a)p(b|a)p(c|b)p(d|c)
p(d)=a,b,c∑p(a)p(b∣a)p(c∣b)p(d∣c)
假定,
a
,
b
,
c
,
d
a,b,c,d
a,b,c,d 都为均匀离散的二值random variable,所以
a
,
b
,
c
,
d
∈
0
,
1
a,b,c,d\in{0,1}
a,b,c,d∈0,1。
所以,
p
(
d
)
=
p
(
a
=
0
)
⋅
p
(
b
=
0
∣
a
=
0
)
⋅
p
(
c
=
0
∣
b
=
0
)
⋅
p
(
d
∣
c
=
0
)
+
p
(
a
=
1
)
⋅
p
(
b
=
0
∣
a
=
1
)
⋅
p
(
c
=
0
∣
b
=
0
)
⋅
p
(
d
∣
c
=
0
)
+
⋯
+
p
(
a
=
1
)
⋅
p
(
b
=
1
∣
a
=
1
)
⋅
p
(
c
=
1
∣
b
=
1
)
⋅
p
(
d
∣
c
=
1
)
)
\begin{aligned} p(d) &=p(a = 0) \cdot p(b = 0|a = 0) \cdot p(c = 0|b = 0) \cdot p(d|c = 0) \\ & +p(a = 1) \cdot p(b = 0|a = 1) \cdot p(c = 0|b = 0) \cdot p(d|c = 0) \\ &+\cdots \\ &+p(a = 1) \cdot p(b = 1|a = 1) \cdot p(c = 1|b = 1) \cdot p(d|c = 1) \end{aligned})
p(d)=p(a=0)⋅p(b=0∣a=0)⋅p(c=0∣b=0)⋅p(d∣c=0)+p(a=1)⋅p(b=0∣a=1)⋅p(c=0∣b=0)⋅p(d∣c=0)+⋯+p(a=1)⋅p(b=1∣a=1)⋅p(c=1∣b=1)⋅p(d∣c=1))实际上,这里有8 个因子的积。那么我们来做进一步的分析,我们可以令
p
(
d
)
=
∑
a
,
b
,
c
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
b
)
p
(
d
∣
c
)
=
∑
b
,
c
p
(
c
∣
b
)
p
(
d
∣
c
)
∑
a
p
(
a
)
p
(
b
∣
a
)
\begin{aligned} p(d) &=\sum_{a,b,c}p(a)p(b|a)p(c|b)p(d|c) \\ & =\sum_{b,c}p(c|b)p(d|c)\sum_{a}p(a)p(b|a) \end{aligned}
p(d)=a,b,c∑p(a)p(b∣a)p(c∣b)p(d∣c)=b,c∑p(c∣b)p(d∣c)a∑p(a)p(b∣a),而
∑
a
p
(
a
)
p
(
b
∣
a
)
=
p
(
a
,
b
)
\sum_a p(a)p(b|a) = p(a , b)
∑ap(a)p(b∣a)=p(a,b)。我们可以将
a
a
a 看成
ϕ
(
a
)
ϕ(a)
ϕ(a) 这是一个和
a
a
a 相关的函数,同理
p
(
b
∣
a
)
p(b|a)
p(b∣a) 看成
ϕ
(
a
,
b
)
ϕ(a, b)
ϕ(a,b) 。所以,我们可以将
∑
a
p
(
a
)
p
(
b
∣
a
)
\sum_a p(a)p(b|a)
∑ap(a)p(b∣a) 看成
ϕ
a
(
b
)
ϕ_a(b)
ϕa(b),这样就相当于一个关于
b
b
b 的函数,并且是从
a
a
a 中导出的。所以,我们做如下替换可得:
∑
b
,
c
p
(
c
∣
b
)
p
(
d
∣
c
)
∑
a
p
(
a
)
p
(
b
∣
a
)
=
∑
b
,
c
p
(
c
∣
b
)
p
(
d
∣
c
)
ϕ
a
b
=
∑
c
p
(
d
∣
c
)
∑
b
p
(
c
∣
b
)
ϕ
a
b
=
∑
c
p
(
d
∣
c
)
ϕ
b
c
=
ϕ
c
d
\begin{aligned} \sum_{b,c}p(c|b)p(d|c)\sum_{a}p(a)p(b|a) &=\sum_{b,c}p(c|b)p(d|c)ϕ_{a}b \\ & =\sum_{c}p(d|c)\sum_{b}p(c|b)ϕ_{a}b \\ & =\sum_{c}p(d|c)ϕ_{b}c \\ & =ϕ_{c}d \end{aligned}
b,c∑p(c∣b)p(d∣c)a∑p(a)p(b∣a)=b,c∑p(c∣b)p(d∣c)ϕab=c∑p(d∣c)b∑p(c∣b)ϕab=c∑p(d∣c)ϕbc=ϕcd
同理,我们将
∑
b
p
(
c
∣
b
)
\sum_{b}p(c|b)
∑bp(c∣b) 看成
ϕ
b
(
c
)
ϕ_b(c)
ϕb(c)。所以,原始将被改写为:
∑
c
p
(
d
∣
c
)
ϕ
b
(
c
)
=
ϕ
b
(
c
)
\sum_{c}p(d|c)ϕ_b(c)=ϕ_b(c)
∑cp(d∣c)ϕb(c)=ϕb(c)
这个算法的核心就是乘法对加法的分配律。那我们怎么类比到乘法的分配律呢?首先先来简单的回顾一下乘法的分配律,也就是 a c + a b = a ( b + c ) ac+ab = a(b+c) ac+ab=a(b+c) 。那么我们仔细的来看看这个计算 p ( d ) p(d) p(d) 的过程。这是不是就是一个不断的提取公因子,进行计算的过程?有没有觉得和分配律很像?先提取 a a a 的部分,计算 a a a 的部分,然后再依次的提取 b b b 的部分, c c c 的部分,最后剩下的就是 d d d 的部分。那么,我们就可以把这么一长串的公式进行逐步化简了,这就是变量消元的思想。同样,在无向图中,我们也可以使用到马尔可夫网络中。
将其推广到无向图:
p
(
a
,
b
,
c
,
d
)
=
1
z
∏
i
=
1
k
ϕ
c
i
(
x
c
i
)
p ( a , b , c , d ) = \frac { 1 } { z } \prod _ { i = 1 } ^ { k } \phi _ { c _ { i } } ( x _ { c _ { i } } )
p(a,b,c,d)=z1i=1∏kϕci(xci)
写成因子分解的形式就是
p
(
x
)
=
∏
x
i
ϕ
i
(
x
i
)
p ( x ) = \prod _ { x _ { i } } \phi _ { i } ( x _ { i } )
p(x)=∏xiϕi(xi) , 使用最大团分解
由于是最大团,不能再添加其他结点,因此团与团的联系较小,同时每一个结点几乎不可能同时存在于所有团,因此同样可以使用Variable Elimination方法进行计算
这实际上就是分配律,一个变量一个变量的提取,然后进行分解计算。同时这种算法的缺点也非常的明显。
首先,就是重复计算的问题,无论计算那个变量的概率都要重复的计算一遍所有的概率。这个原因就会导致算法的计算难度非常的大。第二个就是计算次序的问题,我们举的例子还比较的简单,所以我们可以一眼就看出来,按 a − b − c − d a - b - c - d a−b−c−d 的次序开始算。但是,实际上,并没有这么容易就得到计算的次序,而且计算次序不一样会导致计算的难度有很大的区别。而有数学家已经证明了,确定最优的计算顺序,本身就是一个NP hard 的问题,非常难求解。
3 Belief Propagation:信念传播
在上一小节中,我们已经介绍了变量消除(Variable Elimination),Variable Elimination 的思想是 Probability Graph 中的核心思想之一。上一节中我们就已经介绍了,这实际上就是乘法对加法的分配律。但是,Variable Elimination 中有很多的问题,比如重复计算和最优计算次序不好确定的问题。所以,我们这一节来介绍 Belief Propagation 来解决重复计算的问题。
3.1 Forward and Backward Algorithm
假设,我们现在有一个马氏链模型:
联合概率可以被我们表示为:
p
(
a
,
b
,
c
,
d
,
e
)
=
p
(
a
)
⋅
p
(
b
∣
a
)
⋅
p
(
c
∣
b
)
⋅
p
(
d
∣
c
)
⋅
p
(
e
∣
d
)
p(a, b, c, d, e) = p(a) \cdot p(b|a) \cdot p(c|b) \cdot p(d|c) \cdot p(e|d)
p(a,b,c,d,e)=p(a)⋅p(b∣a)⋅p(c∣b)⋅p(d∣c)⋅p(e∣d)。
如果,我们想要求的是
p
(
e
)
p(e)
p(e),那么:
p
(
e
)
=
∑
a
,
b
,
c
,
d
p
(
a
,
b
,
c
,
d
,
e
)
=
∑
d
p
(
e
∣
d
)
⋅
∑
c
p
(
d
∣
c
)
⋅
∑
b
p
(
c
∣
b
)
⋅
∑
a
p
(
b
∣
a
)
⋅
p
(
a
)
\begin{array}{l}{ p ( e ) = \sum _ { a , b , c , d } p ( a , b , c , d , e ) }\\ \\{ = \sum _ { d } p ( e | d ) \cdot \sum _ { c } p ( d | c ) \cdot \sum _ { b } p ( c | b ) \cdot \sum _ { a } p ( b | a ) \cdot p ( a ) }\end{array}
p(e)=∑a,b,c,dp(a,b,c,d,e)=∑dp(e∣d)⋅∑cp(d∣c)⋅∑bp(c∣b)⋅∑ap(b∣a)⋅p(a)
为了简化表达,这里我们需要定义一个很重要的符号。因为
∑
a
p
(
b
∣
a
)
⋅
p
(
a
)
\sum _ { a } p ( b | a ) \cdot p ( a )
∑ap(b∣a)⋅p(a),是一个关于
b
b
b 的表达式,也就是相当于把
a
a
a 给约掉了。所以我们可以把
∑
a
p
(
b
∣
a
)
⋅
p
(
a
)
\sum _ { a } p ( b | a ) \cdot p ( a )
∑ap(b∣a)⋅p(a)记为
m
a
→
b
(
b
)
m _ { a \rightarrow b } ( b )
ma→b(b)。同理,我们也可以将
∑
c
p
(
d
∣
c
)
⋅
∑
b
p
(
c
∣
b
)
⋅
m
a
→
b
(
b
)
\sum _ { c } p ( d | c ) \cdot \sum _ { b } p ( c | b ) \cdot m _ { a \rightarrow b } ( b )
∑cp(d∣c)⋅∑bp(c∣b)⋅ma→b(b)记为
m
b
→
c
(
c
)
m _ { b \rightarrow c } ( c )
mb→c(c)。那么为了求得
p
(
e
)
p(e)
p(e) ,我们依次的求解顺序为
m
a
→
b
(
b
)
m _ { a \rightarrow b } ( b )
ma→b(b),
m
b
→
c
(
c
)
m _ { b \rightarrow c } ( c )
mb→c(c),
m
c
→
d
(
d
)
m _ { c \rightarrow d } ( d )
mc→d(d)和
m
d
→
e
(
e
)
m _ { d \rightarrow e } ( e )
md→e(e)。也就相当于沿着这个链这个马氏链一直往前走,也就是前向算法(Forward Algorithm)。我们用公式表达即为:
如果是要求
p
(
c
)
p(c)
p(c),那么我们的传递过程为
a
→
b
→
c
←
d
←
e
a \rightarrow b\rightarrow c \leftarrow d\leftarrow e
a→b→c←d←e。这里,我们就不能只用前向算法来解决了,需要用到 Forward-Backward 算法来解决了。也就是同时使用Forward 和Backward的方法,那么我们来看看
p
(
c
)
p(c)
p(c) 怎么求?
p
(
c
)
=
∑
a
,
b
,
d
,
e
p
(
a
,
b
,
c
,
d
,
e
)
=
(
∑
b
p
(
c
∣
b
)
∑
a
p
(
b
∣
a
)
p
(
a
)
)
⋅
(
∑
d
p
(
d
∣
c
)
∑
e
p
(
e
∣
d
)
)
\begin{aligned} p ( c ) &= \sum _ { a , b , d , e } p ( a , b , c , d , e ) \\ \\ &= ( \sum _ { b } p ( c | b ) \sum _ { a } p ( b | a ) p ( a ) ) \cdot ( \sum _ { d } p ( d | c ) \sum _ { e } p ( e | d ) ) \end{aligned}
p(c)=a,b,d,e∑p(a,b,c,d,e)=(b∑p(c∣b)a∑p(b∣a)p(a))⋅(d∑p(d∣c)e∑p(e∣d))
对比上面的计算 p ( e ) p(e) p(e) 的过程,我们就可以发现, ∑ b p ( c ∣ b ) ∑ a p ( b ∣ a ) p ( a ) \sum_{b} p ( c | b ) \sum_{a} p ( b | a ) p ( a ) ∑bp(c∣b)∑ap(b∣a)p(a)部分的计算也就是 m b → c ( c ) m _ { b \rightarrow c } ( c ) mb→c(c)的计算是一模一样的。所以说,Variable Elimination 里面有大量的重复计算。Belief 的想法很简单,也就是将 m i → j ( j ) m _ { i \rightarrow j } ( j ) mi→j(j),全部事先计算好,就像一个个积木一样,然后再用这个积木来搭建运算。那么也就是,我们事先将方向全部定义好,正向和反向的全部都求了再说。为了进一步探究Belief Background,我们需要讨论一些更加Generalize 的情况。也就是从 C h a i n → T r e e Chain \rightarrow Tree Chain→Tree ,有向 → \rightarrow → 无项的情况。
3.2 Belief Propagation 的扩展
我们的Generalize 的后,分析了一个树形的无向图结构。图的网络结构如下所示:
下面第一步,我们把上面那个模型的设置写出来。所以,我们需要进行因式分解,我们用
φ
(
i
)
φ(i)
φ(i) 来表示和
i
i
i 有关的部分。所以,我们可以将联合概率密度写为:
p
(
a
,
b
,
c
,
d
)
=
1
Z
φ
a
(
a
)
φ
b
(
b
)
φ
c
(
c
)
φ
d
(
d
)
⋅
φ
a
,
b
(
a
,
b
)
φ
b
,
c
(
b
,
c
)
φ
b
,
d
(
b
,
d
)
p ( a , b , c , d ) = \frac { 1 } { Z } \varphi _ { a } ( a ) \varphi _ { b } ( b ) \varphi _ { c } ( c ) \varphi _ { d } ( d ) \cdot \varphi _ { a , b } ( a , b ) \varphi _ { b , c } ( b , c ) \varphi _{ b , d } ( b , d )
p(a,b,c,d)=Z1φa(a)φb(b)φc(c)φd(d)⋅φa,b(a,b)φb,c(b,c)φb,d(b,d)
我们要求
p
(
a
)
=
∑
b
,
c
,
d
p
(
a
,
b
,
c
,
d
)
p(a) =\sum_{b,c,d} p(a,b,c,d)
p(a)=∑b,c,dp(a,b,c,d) 和
p
(
b
)
=
∑
a
,
c
,
d
p
(
a
,
b
,
c
,
d
)
p(b) =\sum_{a,c,d} p(a,b,c,d)
p(b)=∑a,c,dp(a,b,c,d),其间一定会出现大量的重复计算。这个模型中有四个点,三条边,每条边都有两个方向,所以我们要求的是6 个“积木”。我们来一步步
的看看,如何可以得到想要的
p
(
a
)
p(a)
p(a) 。
- 首先,我们需要求的是 c → b c \rightarrow b c→b 和 d → b d \rightarrow b d→b两个过程。其中, c → b c \rightarrow b c→b的过程也就是 m c → b ( b ) m _ {c \rightarrow b } ( b) mc→b(b)可以被我们表达为 ∑ c φ c ⋅ φ b , c \sum_{c} \varphi _ { c} \cdot \varphi _ { b,c} ∑cφc⋅φb,c。同理, m d → b ( b ) m _ {d \rightarrow b } ( b) md→b(b)可以被我们表达为 ∑ d φ b ⋅ φ b , d \sum_{d} \varphi _ { b} \cdot \varphi _ { b,d} ∑dφb⋅φb,d
- 第二步,我们需要求 b → a b \rightarrow a b→a的过程,也就是 m b → a ( a ) m _ {b\rightarrow a } ( a) mb→a(a)。它等于 m c → b ( b ) m _ {c \rightarrow b } ( b) mc→b(b), m d → b ( b ) m _ {d \rightarrow b } ( b) md→b(b)乘上 b b b 己的部分求和得到,我们可以写为: m b → a ( a ) = ∑ b m c → b ( b ) ⋅ φ b ⋅ φ a , b ⋅ m d → b ( b ) m _ { b \rightarrow a } ( a ) = \sum _ { b } m _ { c \rightarrow b } ( b ) \cdot \varphi _ { b } \cdot \varphi _ { a , b } \cdot m _ { d \rightarrow b } ( b ) mb→a(a)=b∑mc→b(b)⋅φb⋅φa,b⋅md→b(b)
- 最后,
m
b
→
a
(
a
)
m _ {b\rightarrow a } ( a)
mb→a(a) 乘上 a 自己的部分就得到了
p
(
a
)
p(a)
p(a),也就是:
p
(
a
)
=
φ
a
⋅
m
b
→
a
(
a
)
p(a) = φ_a \cdot m _ {b\rightarrow a } ( a)
p(a)=φa⋅mb→a(a)。
所以,我们总结一下:
m b → a ( x a ) = ∑ x b φ a , b φ b m c → b ( x b ) m d → b ( x b ) m _ { b \rightarrow a } ( x _ { a } ) = \sum _ { x _ { b } } \varphi _ { a , b } \varphi _ { b } m _ { c \rightarrow b } ( x _ { b } ) m _ { d \rightarrow b } ( x _ { b } ) mb→a(xa)=xb∑φa,bφbmc→b(xb)md→b(xb) 而 p ( a ) = φ a ⋅ m b → a ( a ) p(a) = φ_a \cdot m _ {b\rightarrow a } ( a) p(a)=φa⋅mb→a(a)。
我相信到这里,大家应该是可以理解这个意思的,会有点抽象,但并不是很难。下一步我想做个 Generalize 为了便于大家进行理解,我这里尽量不跳步:
m
b
→
a
(
x
a
)
=
∑
x
b
φ
a
,
b
φ
b
∏
{
k
∈
N
B
(
b
)
}
−
a
m
k
→
b
(
x
b
)
m _ { b \rightarrow a } ( x _ { a } ) = \sum _ { x _ { b } } \varphi _ { a , b } \varphi _ { b } \prod _ { \{ k \in N B ( b ) \} - a } m _ { k \rightarrow b } ( x _ { b } )
mb→a(xa)=xb∑φa,bφb{k∈NB(b)}−a∏mk→b(xb)
这里的 NB(b) 代表的是所有节点 b 的邻接节点。我们可以进一步表示为:
m
j
→
i
(
x
i
)
=
∑
x
j
φ
i
,
j
φ
j
∏
k
∈
N
B
(
j
)
−
i
m
k
→
j
(
x
j
)
m _ { j \rightarrow i } ( x _ { i } ) = \sum _ { x _ { j } } \varphi _ { i , j } \varphi _ { j } \prod _ { \\{ k \in N B ( j ) \\} - i } m _ { k \rightarrow j} ( x _ { j } )
mj→i(xi)=xj∑φi,jφjk∈NB(j)−i∏mk→j(xj)而
p
(
x
i
)
=
φ
i
∏
k
∈
N
B
(
i
)
m
k
→
i
(
x
i
)
p(x_i)= \varphi _ { i } \prod _ { k \in N B ( i) } m _ { k \rightarrow i} ( x _ { i } )
p(xi)=φik∈NB(i)∏mk→i(xi)
通过对上面表达式的观察,我们是不是发现了一个很有意思的现象。也就是这些概率都是由
m
i
→
j
m _ { i \rightarrow j}
mi→j 这样的小积木拼接起来的。
所以我们可以get a conclusion:我们不要一上来就直接去求边缘概率密度,比如 p ( a ) , p ( b ) , p ( c ) , p ( d ) p(a), p(b), p(c),p(d) p(a),p(b),p(c),p(d) 这些的。我们可以先建立一个Cache,存储中间结果,即只需求 m i → j m _ { i \rightarrow j} mi→j 。然后,要求什么的话,直接进行搭建和拼接就可以了。
从这里,我们就引出了Belief Propagation。
B
P
=
V
E
+
c
a
c
h
BP=VE+cach
BP=VE+cach
cach是计算所有的
m
j
−
>
i
m_{j->i}
mj−>i,因此 BP 是指直接求所有
m
j
−
>
i
m_{j->i}
mj−>i 并导出边缘概率,这一过程也是图的遍历
以下介绍两种BP算法:
3.2.1 Sequential Implementation
顺序计算的思路,我们需要借助一个队列来实现:
- Get Root: 首先我们需要假设一个节点为根节点。
- Collect Message: 对于每一个在根节点的邻接点中的节点 x i x_i xi,Collect Message ( x i x_i xi)。对应的就是图2 中蓝色的线条。
- Distribute Message: 对于每一个在根节点的邻接点中的节点 x i x_i xi Distribute Message ( x i x_i xi)。对应的就是图2 中红色的线条。
经过这三个步骤以后,我们可以得到所有的 i , j ∈ v i,j \in v i,j∈v,从而计算出 p ( x k ) , k ∈ v p(x_k), k \in v p(xk),k∈v。
3.2.2 Parallel Implementation
这种思想在图结构的网络中经常使用,大致也就是随意选一个节点,然后向四周其他的节点辐射信息。其他节点收到信息之后,更新自己的状态,然后反馈自己的信息给源节点,源节点再更新自己的信息。不断地重复这个工作,直到最后收敛为止。
3.3 小结
实际上,Belief Propagation 就是一种Variable Elimination。但是,我们发现了Variable Elimination中有很多的重复计算。所以,我们想到了提取出来先算好,要用的时候直接放进去就行了。所以,Belief Propagation 中分解了传递的过程,先计算消息传递的机制,再来组装出计算边缘概率。其实本质还是Variable Elimination 算法,不过就是使表达更加的规范了,通过拆解的方法来消除重复计算。
BP算法的优点:
- 缓存 m i → j m _ { i \rightarrow j} mi→j,减少重复计算,时间复杂度低
- 计算 m i → j m _ { i \rightarrow j} mi→j 的过程中不想干的分支可以进行并行计算
4 Max Product Algorithm
我们在这里再总结一下概率图模型有什么用。对于一个图,Graph ={undefined
X
,
E
X,E
X,E},其中
X
X
X 代表的是普通变量,
E
E
E 代表的是
Evidence,也就是观测变量。
- 首先要解决的是边缘变量的问题,也就是已知: E = E= E={ e 1 , e 2 , ⋯ , e k e_1,e_2,\cdots,e_k e1,e2,⋯,ek},如何求 p ( E ) p(E) p(E) 的问题,其中 E E E 为一个变量或者为一个子集。实际上就是一个likelihood 的问题。
- 条件概率,也就是一个求后验概率的问题,目标概率为 X = ( Y ; Z ) X = (Y;Z) X=(Y;Z)。而 p ( Y ∣ E ) = ∑ z p ( X ∣ E ) p(Y |E) =\sum_z p(X|E) p(Y∣E)=∑zp(X∣E)。
- 最大后验估计(MAP),也被我们称为Decoding 的问题。也就是我们希望找到一个隐序列,使得: x ^ = a r g m a x x p ( X ∣ E ) , y ^ = a r g m a x y p ( Y ∣ E ) \hat{x} = argmax_x p(X|E),\hat{y} = argmax_y p(Y|E) x^=argmaxxp(X∣E),y^=argmaxyp(Y∣E)。
这里的Max-Product 算法和隐马尔可夫模型(HMM) 中的Viterbi 算法非常的类似。其实,从算法上讲它就是Belief Propagation 算法的一种改进,从模型上讲是Viterbi 算法的推广。在这里我们求的不是概率值了,而是一个最优的概率序列 ( a ^ , b ^ , c ^ , d ^ ) = a r g m a x a , b , c , d (\hat{a},\hat{b},\hat{c},\hat{d})=\mathop{argmax}_{a,b,c,d} (a^,b^,c^,d^)=argmaxa,b,c,d。
Max-Product 思想与 Vitebi 思想的对比?
https://www.zhihu.com/people/vfrz/posts?page=1
4.1 Max Product Algorithm
下面展示一个树的拓扑结构图。
在这个树中,我们将
m
b
→
a
m _ { b \rightarrow a}
mb→a 看成是能使
p
(
x
a
,
x
b
,
x
c
,
x
d
∣
E
)
p(x_a,x_b,x_c,x_d|E)
p(xa,xb,xc,xd∣E) 联合概率达到最大的值。每一个节点代表的是到这个节点为止的路径联合概率达到最大的值。我们表达为:
m
j
→
i
=
max
x
j
ϕ
j
ϕ
i
j
∏
k
∈
N
e
i
g
h
b
o
u
r
(
j
)
−
i
m
k
→
j
m_{j\to i}=\max\limits_{x_j}\phi_j\phi_{ij}\prod\limits_{k\in Neighbour(j)-i}m_{k\to j}
mj→i=xjmaxϕjϕijk∈Neighbour(j)−i∏mk→j那么,在图一所示的概率图模型中,
m
c
→
b
m_{c\to b}
mc→b 可以表示为:
m
c
→
b
=
max
x
c
φ
c
⋅
φ
b
c
m_{c\to b}=\max\limits_{x_c}\varphi_c \cdot \varphi_{bc}
mc→b=xcmaxφc⋅φbc其中,
φ
c
⋅
φ
b
c
φ_c \cdot φ_{bc}
φc⋅φbc 可以表示为和
c
c
c 相关的函数。
m
d
→
b
=
max
x
d
φ
d
⋅
φ
b
d
m_{d\to b}=\max\limits_{x_d}\varphi_d \cdot \varphi_{bd}
md→b=xdmaxφd⋅φbd其中,
φ
d
⋅
φ
b
d
φ_d \cdot φ_{bd}
φd⋅φbd可以表示为和
d
d
d 相关的函数。
m
b
→
a
=
max
x
b
φ
b
⋅
φ
a
b
⋅
m
c
→
b
⋅
m
d
→
b
m_{b\to a}=\max_{x_b }\varphi_b \cdot \varphi_{ab}\cdot m_{c\to b} \cdot m_{d\to b}
mb→a=xbmaxφb⋅φab⋅mc→b⋅md→b最终,我们将得到的是:
p
(
a
,
b
,
c
,
d
)
=
max
x
a
φ
a
⋅
m
b
→
a
p(a,b,c,d) =\max_{x_a} \varphi_{a}\cdot m_{b\to a}
p(a,b,c,d)=xamaxφa⋅mb→a而
φ
a
⋅
m
b
→
a
\varphi_{a}\cdot m_{b\to a}
φa⋅mb→a 就可以看成是一个关于
a
a
a 的函数。这里我们再提一下Belief Propagation,这里的Max-Product 实际上就是Belief Propagation 的一个变形。
4.2 Belief Propagation
实际上这个算法的提出时因为,多次求边缘概率密度会发现中间有很多的步骤是重复的。我们用
m
i
→
j
m_{i \to j}
mi→j 记录每一个边缘概率,最后进行组合就行。所以,
m
j
→
i
(
x
i
)
=
∑
x
j
φ
i
,
j
(
x
i
,
x
j
)
φ
j
(
x
j
)
∏
{
k
∈
N
B
(
j
)
}
−
i
m
k
→
j
(
x
j
)
\begin{array} { c } { m _ { j \rightarrow i } ( x _ { i } ) = \sum _ { x _ { j } } \varphi _ { i , j } ( x _ { i } , x _ { j } ) \varphi _ { j } ( x _ { j } ) \prod _ { \{ k \in N B ( j ) \} -i } m _ { k \rightarrow j } ( x _ { j } ) } \end{array}
mj→i(xi)=∑xjφi,j(xi,xj)φj(xj)∏{k∈NB(j)}−imk→j(xj)
p
(
x
i
)
=
φ
(
x
i
)
∏
k
∈
N
B
(
x
i
)
m
k
→
i
∣
(
x
i
)
\begin{array} { c } { p ( x _ { i } ) = \varphi ( x _ { i } ) \prod _ { k \in N B ( x _ { i } ) } m _ { k \rightarrow i } | ( x _ { i } ) } \end{array}
p(xi)=φ(xi)∏k∈NB(xi)mk→i∣(xi)
4.3 Compare
其实,我们一比较就可以很简单的看出,Max-product 和 Belief Propagation 只有一个地方不一样。那就是前者是求最大,后者是求和。也就是Max-product 到Sum-product。在求得了 max p ( a , b , c , d ) = max x a φ a m b → a \max p(a, b, c, d) =\max_{x_a} φ_a m_{b\to a} maxp(a,b,c,d)=maxxaφamb→a之后,我们利用回溯法我们比较就可以比较简单的得到 x a ∗ , x b ∗ , x c ∗ , x d ∗ x_a^*,x_b^*,x_c^*,x_d^* xa∗,xb∗,xc∗,xd∗了。在这个算法中,我们就不需要事先计算 m i → j m_{i\to j} mi→j 了,直接在迭代中进行计算就可以了,也不会存在什么重复计算的问题。
============ 道德图============
5 Moral Graph & Factor Graph
在这一小节中,我们将要介绍两种特殊的概率结构,也就是Moral Graph 和Factor Graph
5.1 道德图(Moral Graph)
首先我们需要知道,为什么要有Moral Graph 的存在?Moral Graph 存在的意义就是将有向图转化为无向图来研究。因为无向图比有向图更加的Generalize 一些。在概率图中,我们可以分为贝叶斯网络(有向图) 和马尔可夫网络(无向图)。
无向图可以表示为:
p
(
x
)
=
1
z
∏
i
=
1
k
ϕ
c
i
(
x
c
i
)
\begin{array} { l } { p ( x ) = \frac { 1 } { z } \prod _ { i = 1 } ^ { k } \phi _ { c _ { i } } ( x _ { c _ { i } } ) } \end{array}
p(x)=z1∏i=1kϕci(xci)
有向图可以表示为:
p
(
x
)
=
∏
i
=
1
p
p
(
x
i
∣
x
p
a
(
i
)
)
\begin{array} { l } { p ( x ) = \prod _ { i = 1 } ^ { p } p ( x _ { i } | x _ { p a ( i ) } ) } \end{array}
p(x)=∏i=1pp(xi∣xpa(i))
其中,
ϕ
c
i
ϕ_{c_i}
ϕci 代表的是最大团的意思。通过道德图,我们可以有效的将有向图转换为无向图。
- 链式网络:
其中, p ( a , b , c ) = p ( a ) p ( b ∣ a ) p ( c ∣ b ) p(a,b,c) = p(a)p(b|a)p(c|b) p(a,b,c)=p(a)p(b∣a)p(c∣b)。如果,把有向图转换成无向图是一件非常简单的事情,首先把所有的线条换成直线。由于在无向图中,我们考虑的是最大团,所以 p ( a ) p ( b ∣ a ) = φ ( a , b ) p(a)p(b|a) = φ(a,b) p(a)p(b∣a)=φ(a,b), p ( c ∣ b ) = φ ( b , c ) p(c|b) = φ(b,c) p(c∣b)=φ(b,c)。这个的转换是非常的简单了。 - Tail to Tail 的图
其中, p ( a , b , c ) = p ( a ) p ( b ∣ a ) p ( c ∣ a ) p(a,b,c) = p(a)p(b|a)p(c|a) p(a,b,c)=p(a)p(b∣a)p(c∣a)。还是按照一样的套路,首先把所有的有向箭头改成直线。那么我们就可以得到 p ( a ) p ( b ∣ a ) = ϕ ( a , b ) , p ( c ∣ a ) = ϕ ( a ∣ c ) p(a)p(b|a) = ϕ(a,b),p(c|a) = ϕ(a|c) p(a)p(b∣a)=ϕ(a,b),p(c∣a)=ϕ(a∣c)。其中{ a , c a,c a,c } 和 { b , c b,c b,c } 是分别属于两个团。这个也比较的简单,但是Head to Head 的转换就有点不一样了。 - Head to Head
同样我们使用一样的分析思路来看这个问题, p ( a , b , c ) = p ( a ) p ( b ) p ( c ∣ a , b ) p(a,b,c) = p(a)p(b)p(c|a,b) p(a,b,c)=p(a)p(b)p(c∣a,b)。我们进行拆解的话,只能令 p ( a ) p ( b ) p ( c ∣ a ; b ) = φ ( a , b , c ) p(a)p(b)p(c|a; b) = φ(a,b,c) p(a)p(b)p(c∣a;b)=φ(a,b,c),不然再也找不到其他的拆解方法。但是,如果简单的将模型中所有的有向箭头改成直线得到的并不是一个团。因为“团” 的概念的要求,团里面的元素都要求是两两相互连接的。所以,我们需要进行改进,将Head to Head 的无向图形式改进为:
那么,将Head to Head 的有向图转换为无向图的过程可以被我们描述为:
对于 x i ∈ G x_i \in G xi∈G,将 p a r e n t ( x i ) parent(x_i) parent(xi) 的两个父亲节点连接,然后将G 中所有的有向边替换成无向边。下面我们举一个例子:
而我们将有向图转换成无向图之后,有什么好处吗?也就是在判断条件独立性的时候,有时图形非常复杂的时候。我们在有向图中很难看出来,而在无向图中却可以很简单的得到我们想要的结果。也就是
5.2 因子图(Factor Graph)
在上一小节中,我们介绍了道德图(Moral Graph),它的主要作用是将有向图转换为无向图。我们考虑的都是树结构,但是在Head to Head 结构中,会引入环的结构。但是,在我们的Belief Propagation(BP) 算法中,只能对树进行分解。所以,这里我们就引入了因子图。
因子图主要发挥两个作用:
- 去环,也就是消除无向图中的环结构;
- 使算法变得更加的简洁,简化计算。
如图二表达的那样,他的有向图和无向图的联合概率可以分别表达为:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
a
)
p(a,b, c) = p(a)p(b|a)p(c|a)
p(a,b,c)=p(a)p(b∣a)p(c∣a)
p
(
a
,
b
,
c
)
=
1
Z
ϕ
(
a
,
b
)
ϕ
(
a
,
c
)
p(a, b,c) =\frac 1Z ϕ(a, b)ϕ(a, c)
p(a,b,c)=Z1ϕ(a,b)ϕ(a,c)那什么是因子图分解呢?公式表达可以被我们表示为:
p
(
x
)
=
∏
s
p
(
x
S
)
p(x)=\prod_sp(x_S)
p(x)=s∏p(xS)其中,S 是图的节点子集,
X
S
X_S
XS 为对应的X 的子集,也就是X 的随机变量的子集。那么对于一个如图4 所示的有环无向图,我们怎么进行因子图分解呢?
首先进行第一种分解,如下图所示:
这时可以被我们描述为,
f
=
f
(
a
,
b
,
c
)
f = f(a, b,c)
f=f(a,b,c)。或者我们也可以进行更细的分解。如下图所示:
这个分解的结果可以被我们表示为:
p
(
x
)
=
f
1
(
a
,
b
)
f
2
(
a
,
c
)
f
3
(
b
,
c
)
p(x) = f_1(a, b)f_2(a, c)f_3(b, c)
p(x)=f1(a,b)f2(a,c)f3(b,c)不仅是可以在两个节点之间插入关系,同时也可以对于单个节点引入函数。
那么这个分解结果可以被我们表示为:
p
(
x
)
=
f
1
(
a
,
b
)
f
2
(
a
,
c
)
f
3
(
b
,
c
)
f
a
(
a
)
f
b
(
b
)
p(x) = f_1(a, b)f_2(a, c)f_3(b, c)f_a(a)f_b(b)
p(x)=f1(a,b)f2(a,c)f3(b,c)fa(a)fb(b)实际上,就可以看成是对因式分解的进一步分解。这样我们就可以成功的消除环结构。如下图所示:
所以,大家仔细一想就知道了因子图存在的意义了,它可以有效的消除环结构,通过一个重构的方式,重建出树的结构。这样可以有效的帮助我们使用Belief Propagation 中的变量消除法等方法。从上面可以看出概率图的分解方式不一样,对应的因子图也就不一致。
版权声明:本文为CSDN博主「AI路上的小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cengjing12/article/details/106480582