文章目录
1.概率图前言
概率图模型可以从两个角度思考:
- 概率:
机器学习的任务就是从一堆已有数据中学习,并对新的数据进行预测分析 - 图:
图只是一种工具,用来形象的表达概率模型,就是把数据结构的图赋予概率的模型,把概率的概念嵌入进去;图起到的作用是更加直观的表达相关的模型,并把概率模型的特征用图的形式更加明显的表达出来。以便后面构造更加高级的模型;
2.概率图模型的基本法则
概率图关注的是高维随机变量,所以 我们假设有一组高维随机变量,其概率密度函数为 p ( x 1 , x 2 , . . . , x p ) p(x_1,x_2,...,x_p) p(x1,x2,...,xp),我们可以求其边缘概率 p ( x i ) p(x_i) p(xi)和条件概率 p ( x j ∣ x i ) p(x_j|x_i) p(xj∣xi)
2.1 加法法则(Sum-Rule)
p ( x 1 ) = ∫ p ( x 1 , x 2 ) d x 2 (1) p(x_1)=\int p(x_1,x_2)dx_2\tag{1} p(x1)=∫p(x1,x2)dx2(1)
2.2 乘法法则(Product-Rule)
p ( x 1 , x 2 ) = p ( x 1 ) p ( x 2 ∣ x 1 ) = p ( x 2 ) p ( x 1 ∣ x 2 ) (2) p(x_1,x_2)=p(x_1)p(x_2|x_1)=p(x_2)p(x_1|x_2)\tag{2} p(x1,x2)=p(x1)p(x2∣x1)=p(x2)p(x1∣x2)(2)
2.3 链式法则(Chain-Rule)
p ( x 1 , x 2 , . . . , x p ) = ∏ i = 1 p p ( x i ∣ x 1 , x 2 , . . . , x i − 1 ) (3) p(x_1,x_2,...,x_p)=\prod_{i=1}^pp(x_i|x_1,x_2,...,x_{i-1})\tag{3} p(x1,x2,...,xp)=i=1∏pp(xi∣x1,x2,...,xi−1)(3)
2.4 贝叶斯法则(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 (4) p(x_2|x_1)=\frac{p(x_1,x_2)}{p(x_1)}=\frac{p(x_1,x_2)}{\int p(x_1,x_2)dx_2}=\frac{p(x_2|x_1)p(x_1)}{\int p(x_2|x_1)p(x_1)dx_2}\tag{4} p(x2∣x1)=p(x1)p(x1,x2)=∫p(x1,x2)dx2p(x1,x2)=∫p(x2∣x1)p(x1)dx2p(x2∣x1)p(x1)(4)
3.高维随机变量困境
高维随机变量困境是当我们模型的用的高维度的变量时就存在 p ( x 1 , x 2 , . . . , x p ) p(x_1,x_2,...,x_p) p(x1,x2,...,xp)计算复杂,计算量大的问题。为解决上述问题,需要简化模型;我们措施如下:
-
变量相互独立【缺点:假设太强】(朴素贝叶斯假设)
p ( x 1 , x 2 , . . . , x p ) = ∏ i = 1 p p ( x i ) (5) p(x_1,x_2,...,x_p)=\prod_{i=1}^{p}p(x_i)\tag{5} p(x1,x2,...,xp)=i=1∏pp(xi)(5)
注:朴素贝叶斯: P ( X ∣ Y ) = ∏ i = 1 p p ( x i ∣ y ) P(X|Y)=\prod_{i=1}^{p}p(x_i|y) P(X∣Y)=∏i=1pp(xi∣y) -
马尔科夫性质【优点:弱独立性,还是过强】:
在给定条件 x i x_i xi下,将来 x i + 1 x_{i+1} xi+1和 x j x_j xj过去是相互独立的。
x j ⊥ x i + 1 ∣ x i ; j < i (6) x_j⊥x_{i+1}|x_i;j<i\tag{6} xj⊥xi+1∣xi;j<i(6)
注:
1)HMM(齐次马尔科夫假设)
2) 观测独立性假设 -
条件独立性假设
X A , X B , X C 是 集 合 , 且 不 相 交 ; 在 给 定 集 合 X C 的 情 况 下 , X A 独 立 于 X B X_A,X_B,X_C是集合,且不相交;在给定集合X_C的情况下,X_A独立于X_B XA,XB,XC是集合,且不相交;在给定集合XC的情况下,XA独立于XB
X A ⊥ X B ∣ X C ; (7) X_A⊥X_B|X_C;\tag{7} XA⊥XB∣XC;(7)
4.概率图模型框架
5.贝叶斯网络-图单元结构
概率图就是把原来图赋予概率的意义,并且赋予概率模型的概念。概率模型关心的中心问题是多维的随机变量和联合概率分布:
常见的链式法则如下:
p
(
x
1
,
x
2
,
.
.
.
,
x
p
)
=
p
(
x
i
)
∏
i
=
2
p
p
(
x
i
∣
x
1
:
i
−
1
)
(8)
p(x_1,x_2,...,x_p)=p(x_i)\prod_{i=2}^{p}p(x_i|x_{1:i-1})\tag{8}
p(x1,x2,...,xp)=p(xi)i=2∏pp(xi∣x1:i−1)(8)
上述计算在维度比较高的时候就出现了无法计算的线性,为了解决上述问题我们提出了条件独立性假设:
X
A
⊥
X
C
∣
X
B
;
(9)
X_A⊥X_C|X_B;\tag{9}
XA⊥XC∣XB;(9)
我们将联合概率密度通过因式分解为:
p
(
x
1
,
x
2
,
.
.
.
,
x
p
)
=
∏
i
=
2
p
p
(
x
i
∣
x
p
a
(
i
)
)
(10)
p(x_1,x_2,...,x_p)=\prod_{i=2}^{p}p(x_i|x_{pa(i)})\tag{10}
p(x1,x2,...,xp)=i=2∏pp(xi∣xpa(i))(10)
- 注 : x p a ( i ) 是 x i 的 父 亲 集 合 注:x_{pa(i)}是x_i的父亲集合 注:xpa(i)是xi的父亲集合
5.1有向图的三种结构
对于一个给定的有向图,我们的想法是如何通过图形进行直观地表达概率模型,在实际中,我们用拓扑排序的方式将
p
(
x
1
,
x
2
,
.
.
.
,
x
p
)
p(x_1,x_2,...,x_p)
p(x1,x2,...,xp)转换成概率图;
我们定义有向图的方向如下:
5.2 Tail To Tail 尾对尾结构
由于节点b和节点c在节点a的尾部,所以下图为Tail To Tail 结构;
结论:
c
⊥
b
∣
a
⟺
若
a
被
观
测
,
则
路
径
被
阻
塞
(11)
c⊥b|a \Longleftrightarrow若a被观测,则路径被阻塞 \tag{11}
c⊥b∣a⟺若a被观测,则路径被阻塞(11)
证:
∵ 我 们 得 到 上 述 图 , 可 以 直 接 根 据 图 得 到 如 下 公 式 : \because 我们得到上述图,可以直接根据图得到如下公式: ∵我们得到上述图,可以直接根据图得到如下公式:
∴
由
因
子
分
解
:
联
合
概
率
可
得
:
\therefore由因子分解:联合概率可得:
∴由因子分解:联合概率可得:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
a
)
(12)
p(a,b,c)=p(a)p(b|a)p(c|a)\tag{12}
p(a,b,c)=p(a)p(b∣a)p(c∣a)(12)
∵
我
们
可
以
由
链
式
法
则
可
以
得
到
:
\because 我们可以由链式法则可以得到:
∵我们可以由链式法则可以得到:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
a
,
b
)
(13)
p(a,b,c)=p(a)p(b|a)p(c|a,b)\tag{13}
p(a,b,c)=p(a)p(b∣a)p(c∣a,b)(13)
将式<12>和<13>联合可得:
p
(
c
∣
a
)
=
p
(
c
∣
a
,
b
)
(14)
p(c|a)=p(c|a,b)\tag{14}
p(c∣a)=p(c∣a,b)(14)
等式两边同乘
p
(
b
∣
a
)
,
可
得
:
p(b|a),可得:
p(b∣a),可得:
p
(
c
∣
a
)
p
(
b
∣
a
)
=
p
(
c
∣
a
,
b
)
p
(
b
∣
a
)
(15)
p(c|a)p(b|a)=p(c|a,b)p(b|a)\tag{15}
p(c∣a)p(b∣a)=p(c∣a,b)p(b∣a)(15)
p
(
c
∣
a
,
b
)
p
(
b
∣
a
)
=
p
(
b
,
c
∣
a
)
(16)
p(c|a,b)p(b|a)=p(b,c|a)\tag{16}
p(c∣a,b)p(b∣a)=p(b,c∣a)(16)
∴
p
(
c
∣
a
)
p
(
b
∣
a
)
=
p
(
b
,
c
∣
a
)
(17)
\therefore p(c|a)p(b|a)=p(b,c|a)\tag{17}
∴p(c∣a)p(b∣a)=p(b,c∣a)(17)
∴
c
⊥
b
∣
a
\therefore c⊥b|a
∴c⊥b∣a
注:图的表达更直观,更方便表达条件独立性;在a的条件下,b和c是独立的;
5.3 Tail To Tail 头对尾结构
相对于b来说,这个结构是head to tail 结构;
a
⊥
c
∣
b
a⊥c|b
a⊥c∣b;若b被观测,则路径被阻塞(独立)。
5.4 Head To Head 头对头结构[特殊]
默认情况下,a独立于b,即路径是阻塞的;若c被观测,则路径是相通的;若d被观测,则路径是相通的;
详证:
由
上
图
可
得
因
子
分
解
:
由上图可得因子分解:
由上图可得因子分解:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
)
p
(
c
∣
a
,
b
)
(18)
p(a,b,c)=p(a)p(b)p(c|a,b)\tag{18}
p(a,b,c)=p(a)p(b)p(c∣a,b)(18)
由
链
式
法
则
可
得
:
由链式法则可得:
由链式法则可得:
p
(
a
,
b
,
c
)
=
p
(
a
)
p
(
b
∣
a
)
p
(
c
∣
a
,
b
)
(19)
p(a,b,c)=p(a)p(b|a)p(c|a,b)\tag{19}
p(a,b,c)=p(a)p(b∣a)p(c∣a,b)(19)
结合<18>和<19>可得如下:
p
(
b
)
=
p
(
b
∣
a
)
(20)
p(b)=p(b|a)\tag{20}
p(b)=p(b∣a)(20)
即:在默认的情况下,a⊥b,即a独立于b
记忆技巧:可以把上述三个结构想象成亲戚关系:只是为了方便记忆,无逻辑;
1)如果父亲a还在,那么两个儿子b,c关系还在;如果父亲a出事,那么两个b,c儿子就相互独立;
2)如果父亲b还在,那么爷爷a和孙子c关系还在;如果父亲b出事,那么爷爷a和孙子c就相互独立;
3)本来爸爸a和妈妈b在没有小孩c或孙子d的时候是相互独立了;当存在小孩c或孙子d时,爸爸a和妈妈b就是夫妻关系;
6. 贝叶斯网络-D-Separation(D划分)
判断集合 X A , X B , X C X_A,X_B,X_C XA,XB,XC是否满足条件独立性假设的方法就叫做D-Separation;我们定义集合 X A , X B , X C X_A,X_B,X_C XA,XB,XC是相互独立的,且 a ∈ X A ; b ∈ X B ; c ∈ X C ; a\in X_A;b\in X_B;c\in X_C; a∈XA;b∈XB;c∈XC;,那么我们就要判断节点a和节点c是否满足条件性假设?
6.1 head to tail 结构
如果结构满足head to tail 结构,那么中间节点b必须要在可观测集合
X
B
X_B
XB内,那么a和c才相互独立。
6.2 tail to tail 结构
如果结构满足tail to tail 结构,那么中间节点b必须要在可观测集合
X
B
X_B
XB内,那么a和c才相互独立。
6.3 head to head 结构[特殊]
在一般情况下a独立于c,当节点b和节点d不在集合 X B X_B XB时,那么a和c就独立了(阻塞);当节点b和节点d在集合 X B X_B XB时,那么a和c就连通了,a和c没有独立性了。
综上所述:
只有满足下面的D-Seperation形式才能满足条件独立性假设,
X
A
⊥
X
C
∣
X
B
X_A⊥X_C|X_B
XA⊥XC∣XB;这个规则也叫全局马尔科夫性质((Global Markov Property)
6.4 马尔科夫毯(Markov Blanket)
我们定义
x
−
i
x_{-i}
x−i为除了
x
i
x_i
xi以外的集合:
x
−
i
=
{
x
1
,
x
2
,
.
.
.
,
x
i
−
1
,
x
i
+
1
,
.
.
,
x
N
}
(21)
x_{-i}=\{x_1,x_2,...,x_{i-1},x_{i+1},..,x_N\}\tag{21}
x−i={x1,x2,...,xi−1,xi+1,..,xN}(21)
我们假设除了
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
(
x
−
i
)
=
p
(
x
)
∫
x
i
p
(
x
)
d
x
i
=
∏
j
=
1
p
p
(
x
j
∣
x
p
a
(
j
)
)
∫
x
j
∏
j
=
1
p
p
(
x
j
∣
x
p
a
(
j
)
)
d
x
i
p(x_i|x_{-i})=\frac{p(x_i,x_{-i})}{p(x_{-i})}=\frac{p(x)}{\int_{x_i}p(x)dx_i}=\frac{\prod_{j=1}^{p}p(x_j|x_{pa(j)})}{\int_{x_j}\prod_{j=1}^{p}p(x_j|x_{pa(j)})dx_i}
p(xi∣x−i)=p(x−i)p(xi,x−i)=∫xip(x)dxip(x)=∫xj∏j=1pp(xj∣xpa(j))dxi∏j=1pp(xj∣xpa(j))
为了简化上述等式,我们可以将
∏
j
=
1
p
p
(
x
j
∣
x
p
a
(
j
)
)
\prod_{j=1}^{p}p(x_j|x_{pa(j)})
∏j=1pp(xj∣xpa(j))分成两个部分,将和xi 相关的部分记为
Δ
‾
\overline{Δ}
Δ,和xi 不相关的部分
记为Δ。那
p
(
x
i
∣
x
−
i
)
p(x_i|x_{-i})
p(xi∣x−i)可改写成如下:
p
(
x
i
∣
x
−
i
)
=
△
⋅
Δ
‾
∫
x
i
△
⋅
Δ
‾
d
x
i
=
△
⋅
Δ
‾
△
⋅
∫
x
i
Δ
‾
d
x
i
=
Δ
‾
∫
x
i
Δ
‾
d
x
i
(22)
p(x_i|x_{-i})=\frac{\triangle ·\overline{Δ}}{\int_{x_i}\triangle ·\overline{Δ}dx_i}=\frac{\triangle ·\overline{Δ}}{\triangle ·\int_{x_i}\overline{Δ}dx_i}=\frac{\overline{Δ}}{\int_{x_i}\overline{Δ}dx_i}\tag{22}
p(xi∣x−i)=∫xi△⋅Δdxi△⋅Δ=△⋅∫xiΔdxi△⋅Δ=∫xiΔdxiΔ(22)
结
论
:
点
x
i
与
其
他
节
点
x
−
i
的
关
系
最
终
可
以
化
为
只
和
x
i
相
关
的
关
系
。
结论:点x_i与其他节点x_{-i}的关系最终可以化为只和x_i相关的关系。
结论:点xi与其他节点x−i的关系最终可以化为只和xi相关的关系。
马
尔
科
夫
毯
:
即
:
一
个
人
与
全
世
界
的
关
系
等
于
他
和
他
家
庭
成
员
的
关
系
,
与
其
他
人
无
关
。
马尔科夫毯:即:一个人与全世界的关系等于他和他家庭成员的关系,与其他人无关。
马尔科夫毯:即:一个人与全世界的关系等于他和他家庭成员的关系,与其他人无关。
7.贝叶斯网络-整体框架
贝叶斯网络结构图:
- 从单一到混合:空间/时间-离散->连续
- 从有限到无限:空间/时间-离散->连续
8. 马尔科夫网络(Markov Network)
我们在介绍有向图贝叶斯网络过程中,介绍了贝叶斯网络的条件独立性。又学到了D划分,通过D划分我们可以很直观的判断集合 X A , X B , X C 之 间 的 条 件 独 立 性 性 质 ( X A ⊥ X B ∣ X C ) , X_A,X_B,X_C之间的条件独立性性质(X_A⊥X_B|XC), XA,XB,XC之间的条件独立性性质(XA⊥XB∣XC),知道了因子分解和条件独立性是等价的。
p
(
x
)
=
∏
i
=
1
N
p
(
x
i
∣
x
p
a
(
i
)
)
(23)
p(x)=\prod_{i=1}^{N}p(x_i|x_{pa(i)})\tag{23}
p(x)=i=1∏Np(xi∣xpa(i))(23)
马尔科夫网络是一个无向图模型,它比有向图简单,因为有向图在结构head to head 中默认情况下,两个节点是相互独立的,但在中间节点被观察后,两个节点又相互连通了。但是无向图中是不存在上述问题的。马尔科夫网络根据条件独立性大致可分为三类:
- 全局马尔科夫网络(Global-Markov)
- 局部马尔科夫网络(Local-Markov)
- 成对马尔科夫网络(Pair-Markov)
8.1 全局马尔科夫网络(Global-Markov)
假设我们由三个集合
X
A
,
X
B
,
X
C
,
那
么
如
何
表
达
这
三
个
集
合
的
条
件
独
立
性
呢
X
A
⊥
X
C
∣
X
B
?
X_A,X_B,X_C,那么如何表达这三个集合的条件独立性呢X_A⊥X_C|X_B?
XA,XB,XC,那么如何表达这三个集合的条件独立性呢XA⊥XC∣XB?
a
⊥
c
∣
b
;
a
∈
X
A
,
b
∈
X
B
,
c
∈
X
C
(24)
a⊥c|b;a\in X_A,b\in X_B,c\in X_C\tag{24}
a⊥c∣b;a∈XA,b∈XB,c∈XC(24)
结
论
:
a
到
c
的
路
径
中
至
少
有
一
个
节
点
c
在
X
C
中
,
a
⊥
c
∣
b
结论:a到c的路径中至少有一个节点c在X_C中,a⊥c | b
结论:a到c的路径中至少有一个节点c在XC中,a⊥c∣b
图一(正确):
图二(错误):
8.2 局部马尔科夫网络(Local-Markov)
定义:节点a在给定它邻居(节点b,节点c,节点d)的条件下,节点a独立于除邻居点以外的所有点。
a
⊥
{
全
集
−
a
−
a
的
邻
居
}
∣
邻
居
(25)
a⊥\{全集-a-a的邻居\}|邻居\tag{25}
a⊥{全集−a−a的邻居}∣邻居(25)
a
⊥
{
e
,
f
}
∣
{
b
,
c
,
d
}
(26)
a⊥\{e,f\}|\{b,c,d\}\tag{26}
a⊥{e,f}∣{b,c,d}(26)
8.3 成对马尔科夫网络(Pair-Markov)
在
给
定
条
件
集
合
{
X
−
x
i
−
x
j
}
的
情
况
下
,
x
i
独
立
于
x
j
在给定条件集合\{X-x_i-x_j\}的情况下,x_i独立于x_j
在给定条件集合{X−xi−xj}的情况下,xi独立于xj
x
i
⊥
x
j
∣
{
全
集
x
−
x
i
−
x
j
}
x_i⊥x_j|\{全集x-x_i-x_j\}
xi⊥xj∣{全集x−xi−xj}
x
i
⊥
x
j
∣
x
−
i
−
j
;
x
i
≠
x
j
(27)
x_i⊥x_j|x_{-i-j};x_i≠x_j\tag{27}
xi⊥xj∣x−i−j;xi=xj(27)
结论:
条件独立性体现在三个方面:
- ① 全局马尔科夫网络(Global-Markov)
- ② 局部马尔科夫网络(Local-Markov)
- ③ 成对马尔科夫网络(Pair-Markov)
且上述三个方面是相互等价: ① ⟺ ② ⟺ ③ ①\Longleftrightarrow②\Longleftrightarrow③ ①⟺②⟺③
9.马尔科夫网络的因子分解
9.1 团的定义
我们知道因子分解一定要体现条件独立性的含义,条件独立性和因子分解原则上应该等价。对于一个普通的图时
- 团
团是一个关于节点的集合,集合中的节点是相互连通的 - 最大团
最大团是在一个团里面没办法添加任何节点,如果添加,那么久不满足最大连通集合。
所以我们把无向图的因子分解是定义在团的结构上的,假设我们有如下团:
c
1
,
c
2
,
.
.
,
c
k
c_1,c_2,..,c_k
c1,c2,..,ck,所以联合概率密度可表示为:
p
(
x
)
=
1
Z
∏
i
=
1
k
ϕ
(
X
c
i
)
(28)
p(x)=\frac{1}{Z}\prod_{i=1}^{k}\phi(X_{ci})\tag{28}
p(x)=Z1i=1∏kϕ(Xci)(28)
-
Z:归一化因子
Z = ∑ x 1 ⋯ ∑ x p ∏ i = 1 k ϕ ( X c i ) Z=\sum_{x_1}\dots\sum_{x_p}\prod_{i=1}^{k}\phi(X_{ci}) Z=∑x1⋯∑xp∏i=1kϕ(Xci)
-
ϕ ( X c i ) \phi(X_{ci}) ϕ(Xci):定义在团上的函数
我们现在要证明的是在基于团定义的式子(28),如何求证三个条件独立性假设(全局,局部马尔科夫, 成对)等价;即:如何通过团的因子分解来推导条件独立性假设。
hammesley-clifford定理:
团 因 子 分 解 ⟺ { 全 局 , 局 部 , 成 对 马 尔 科 夫 网 络 } 团因子分解\Longleftrightarrow\{全局,局部, 成对马尔科夫网络\} 团因子分解⟺{全局,局部,成对马尔科夫网络}
9.2 Hammesley-clifford定理
联合概率密度p(x)定义详解:
p
(
x
)
=
1
Z
∏
i
=
1
k
ϕ
(
X
c
i
)
(29)
p(x)=\frac{1}{Z}\prod_{i=1}^{k}\phi(X_{ci})\tag{29}
p(x)=Z1i=1∏kϕ(Xci)(29)
- C i : C_i: Ci:最大团
- X c i : X_{ci}: Xci:最大团随机变量集合
- ϕ ( x c i ) : \phi(x_{ci}): ϕ(xci):势函数,必须为正
- Z : 归一化因子
Z = ∑ x ∏ i = 1 k ϕ ( X c i ) = ∑ x 1 ⋯ ∑ x p ∏ i = 1 k ϕ ( X c i ) Z=\sum_{x}\prod_{i=1}^{k}\phi(X_{ci})=\sum_{x_1}\dots\sum_{x_p}\prod_{i=1}^{k}\phi(X_{ci}) Z=∑x∏i=1kϕ(Xci)=∑x1⋯∑xp∏i=1kϕ(Xci)
注:
ϕ
(
x
c
i
)
的
\phi(x_{ci})的
ϕ(xci)的 概念都是来自于统计物理学和热力学的过程中的定义,为保证其为正数,可以定义其为指数函数。
ϕ ( x c i ) = e x p { − E ( X c i ) } (30) \phi(x_{ci})=exp\{-E(X_{ci})\}\tag{30} ϕ(xci)=exp{−E(Xci)}(30)
- E ( X c i ) : E(X_{ci}): E(Xci):能量函数[Energy-Function]
如果用上述等式<29>表示概率密度p(x),则概率分布p称为吉布斯分布(Gibbs Distribution)或玻尔兹曼分布(Boltzman
Distribution)
结合公式<29>和<30>可得如下:
p ( x ) = 1 Z ∏ i = 1 k ϕ ( X c i ) p(x)=\frac{1}{Z}\prod_{i=1}^{k}\phi(X_{ci}) p(x)=Z1∏i=1kϕ(Xci)
p ( x ) = 1 Z ∏ i = 1 k e x p { − E ( X c i ) } p(x)=\frac{1}{Z}\prod_{i=1}^{k}exp\{-E(X_{ci})\} p(x)=Z1∏i=1kexp{−E(Xci)}
p ( x ) = 1 Z e x p { − ∑ i = 1 k E ( X c i ) } (31) p(x)=\frac{1}{Z}exp\{-\sum_{i=1}^{k}E(X_{ci})\}\tag{31} p(x)=Z1exp{−i=1∑kE(Xci)}(31)
指数族分布概率密度函数q(x):
q
(
x
)
=
h
(
x
)
e
x
p
{
η
T
ϕ
(
x
)
−
A
(
η
)
}
=
1
Z
(
η
)
h
(
x
)
e
x
p
{
η
T
ϕ
(
x
)
}
(32)
q(x)=h(x)exp\{\eta^T\phi(x)-A(\eta)\}=\frac{1}{Z(\eta)}h(x)exp\{\eta^T\phi(x)\}\tag{32}
q(x)=h(x)exp{ηTϕ(x)−A(η)}=Z(η)1h(x)exp{ηTϕ(x)}(32)
上述p(x)简直跟我们之前的指数族分布q(x)一模一样!所以我们看出所谓的吉布斯分布(Gibbs Distribution)其实就是一个指数族分布,吉布斯分布其实也可以看作是从在满足已知事实情况下的最大熵原理来的,没啥吓人的。
结论:
马
尔
科
夫
随
机
场
(
M
a
r
k
o
v
−
R
a
n
d
o
m
−
F
i
l
e
d
)
⟺
吉
布
斯
分
布
(
G
i
b
b
s
−
D
i
s
t
r
i
b
u
t
i
o
n
)
马尔科夫随机场(Markov-Random-Filed)\Longleftrightarrow吉布斯分布(Gibbs-Distribution)
马尔科夫随机场(Markov−Random−Filed)⟺吉布斯分布(Gibbs−Distribution)
10.概率图-推断(Inference)
10.1 推断(Inference)-框架
对于机器学习中,重要的是推断,即求事件发生的概率。已知联合概率 p ( x ) = p ( x 1 , x 2 , . . . , x p ) p(x)=p(x_1,x_2,...,x_p) p(x)=p(x1,x2,...,xp),主要包括边缘概率,条件概率.
- 边缘概率:: p ( x i ) = ∑ x 1 . . . ∑ x i − 1 ∑ x i + 1 . . . ∑ x p p ( x ) p(x_i)=\sum_{x_1}...\sum_{x_{i-1}}\sum_{x_{i+1}}...\sum_{x_p}p(x) p(xi)=∑x1...∑xi−1∑xi+1...∑xpp(x)
- 条件概率: p ( X A ∣ X B ) , X = X A ∪ X B p(X_A|X_B),X=X_A \cup X_B p(XA∣XB),X=XA∪XB
- MAP Inference:
Z
^
=
a
r
g
m
a
x
z
p
(
z
∣
x
)
∝
a
r
g
m
a
x
p
(
z
,
x
)
\hat{Z}=argmax_{z}p(z|x)\propto argmax p(z,x)
Z^=argmaxzp(z∣x)∝argmaxp(z,x),来自于贝叶斯公式:
p
(
z
∣
x
)
=
p
(
z
,
x
)
p
(
x
)
p(z|x)=\frac{p(z,x)}{p(x)}
p(z∣x)=p(x)p(z,x)
注解:
- 变量消除法(variable_elimanation):
是一种精确推断的思想,基于VE算法的缺点,衍生出信念传播(BP:Belief_Propagation)算法,BP算法也有另外一个名字叫加和乘积算法(Sum_Product_algorithm),它是来自于VE算法,是对VE算法的一种改写,Sum_Product_algorithm是精确推断的核心算法。BP算法是针对数结构算法 - 算法联系:
联合树算法(junction tree algorithm) 和环置信度传播算法(Loop_Belief_Propagation)均采用信念传播的思想(Belief_Propagation)
10.2 隐马尔可夫模型(HMM-Hidden_Markov_Model)
10.2.1 模型结构:
- I:表示隐状态
- O:表示观测变量
10.2.2 HMM的三个问题:
- 估计问题(Evaluation)-推断算法:为了求P(O)概率问题,相当于求边缘概率
P
(
O
)
=
∑
I
P
(
I
∣
O
)
P(O)=\sum_{I}P(I|O)
P(O)=∑IP(I∣O)
由于边缘概率求法是 p ( x i ) = ∑ x 1 . . . ∑ x i − 1 ∑ x i + 1 . . . ∑ x p p ( x ) p(x_i)=\sum_{x_1}...\sum_{x_{i-1}}\sum_{x_{i+1}}...\sum_{x_p}p(x) p(xi)=∑x1...∑xi−1∑xi+1...∑xpp(x),计算量成指数集增长,所以我们采用变量消除的思想(VE算法)来衍生出前向算法和后向算法 - 学习问题(Learning):为了学习参数 λ ^ \hat{\lambda} λ^怎么求
- 解码问题(Decoding)-推断算法:要求一个隐状态序列
I
^
=
a
r
g
m
a
x
I
P
(
I
∣
O
)
\hat{I}=argmax_{I}P(I|O)
I^=argmaxIP(I∣O)
例:Vitebi_Algorithm算法,其实就是一个动态规划问题,HMM也是一种动态贝叶斯网络,也是动态规划问题。
11.变量消除(VE-Variable_Elimination)
对于推断问题,在给定联合概率 p ( x ) = p ( x 1 , x 2 , . . . , x p ) p(x)=p(x_1,x_2,...,x_p) p(x)=p(x1,x2,...,xp)情况下,大体可以分为三种目的:
- 边缘概率:: p ( x i ) = ∑ x 1 . . . ∑ x i − 1 ∑ x i + 1 . . . ∑ x p p ( x ) p(x_i)=\sum_{x_1}...\sum_{x_{i-1}}\sum_{x_{i+1}}...\sum_{x_p}p(x) p(xi)=∑x1...∑xi−1∑xi+1...∑xpp(x)
- 条件概率: p ( X A ∣ X B ) , X = X A ∪ X B p(X_A|X_B),X=X_A \cup X_B p(XA∣XB),X=XA∪XB
- MAP Inference: X A ^ = a r g m a x X A p ( X A ∣ X B ) = a r g m a x p ( X A , X B ) \hat{X_A}=argmax_{X_A}p(X_A|X_B)= argmax p(X_A,X_B) XA^=argmaxXAp(XA∣XB)=argmaxp(XA,XB)
11.1变量消除-马氏链
假设我们有一条简单的马氏链,如下所示:
由因子分解可求p(d):
p
(
d
)
=
a
,
b
,
c
∑
P
(
a
,
b
.
c
,
d
)
(33)
p(d)={}_{a,b,c}^{\sum}P(a,b.c,d)\tag{33}
p(d)=a,b,c∑P(a,b.c,d)(33)
注 : 假 设 a , b , c , d 均 为 均 匀 离 散 的 二 值 随 机 变 量 , 即 : a , b , c , d ∈ { 0 , 1 } 注:假设a,b,c,d均为均匀离散的二值随机变量,即:a,b,c,d \in\{0,1\} 注:假设a,b,c,d均为均匀离散的二值随机变量,即:a,b,c,d∈{0,1}
p(d)边缘概率,可以求p(d=0),p(d=1)
p ( d ) = a , b , c ∑ P ( a , b . c , d ) p(d)={}_{a,b,c}^{\sum}P(a,b.c,d) p(d)=a,b,c∑P(a,b.c,d)
= a , b , c ∑ P ( a ) P ( b ∣ a ) P ( c ∣ b ) P ( d ∣ c ) ={}_{a,b,c}^{\sum}P(a)P(b|a)P(c|b)P(d|c) =a,b,c∑P(a)P(b∣a)P(c∣b)P(d∣c)
= P ( a = 0 ) P ( b = 0 ∣ a = 0 ) P ( c = 0 ∣ b = 0 ) P ( d ∣ c = 0 ) =P(a=0)P(b=0|a=0)P(c=0|b=0)P(d|c=0) =P(a=0)P(b=0∣a=0)P(c=0∣b=0)P(d∣c=0)
+ P ( a = 0 ) P ( b = 1 ∣ a = 0 ) P ( c = 0 ∣ b = 1 ) P ( d ∣ c = 0 ) +P(a=0)P(b=1|a=0)P(c=0|b=1)P(d|c=0) +P(a=0)P(b=1∣a=0)P(c=0∣b=1)P(d∣c=0)
+ P ( a = 0 ) P ( b = 1 ∣ a = 0 ) P ( c = 1 ∣ b = 1 ) P ( d ∣ c = 1 ) +P(a=0)P(b=1|a=0)P(c=1|b=1)P(d|c=1) +P(a=0)P(b=1∣a=0)P(c=1∣b=1)P(d∣c=1)
+ P ( a = 0 ) P ( b = 0 ∣ a = 0 ) P ( c = 0 ∣ b = 0 ) P ( d ∣ c = 1 ) +P(a=0)P(b=0|a=0)P(c=0|b=0)P(d|c=1) +P(a=0)P(b=0∣a=0)P(c=0∣b=0)P(d∣c=1)
+ P ( a = 1 ) P ( b = 0 ∣ a = 1 ) 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=0∣a=1)P(c=0∣b=0)P(d∣c=0)
+ P ( a = 1 ) P ( b = 1 ∣ a = 1 ) P ( c = 0 ∣ b = 1 ) P ( d ∣ c = 0 ) +P(a=1)P(b=1|a=1)P(c=0|b=1)P(d|c=0) +P(a=1)P(b=1∣a=1)P(c=0∣b=1)P(d∣c=0)
+ P ( a = 1 ) P ( b = 1 ∣ a = 1 ) P ( c = 1 ∣ b = 1 ) P ( d ∣ c = 1 ) +P(a=1)P(b=1|a=1)P(c=1|b=1)P(d|c=1) +P(a=1)P(b=1∣a=1)P(c=1∣b=1)P(d∣c=1)
+ P ( a = 1 ) P ( b = 0 ∣ a = 1 ) P ( c = 0 ∣ b = 0 ) P ( d ∣ c = 1 ) +P(a=1)P(b=0|a=1)P(c=0|b=0)P(d|c=1) +P(a=1)P(b=0∣a=1)P(c=0∣b=0)P(d∣c=1)
所以上式由8个因子项的积,我们可以通过分配率将上述8个因子积进行分类处理:
p ( d ) = a , b , c ∑ P ( a ) P ( b ∣ a ) P ( c ∣ b ) P ( d ∣ c ) p(d)={}_{a,b,c}^{\sum}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)
= b , c ∑ P ( c ∣ b ) P ( d ∣ c ) ⋅ a ∑ P ( a ) P ( b ∣ a ) ={}_{b,c}^{\sum}P(c|b)P(d|c)·{}_{a}^{\sum}P(a)P(b|a) =b,c∑P(c∣b)P(d∣c)⋅a∑P(a)P(b∣a)
= c ∑ P ( d ∣ c ) P ( c ∣ b ) ⋅ ϕ a ( b ) ={}_{c}^{\sum}P(d|c)P(c|b)·\phi_{a}(b) =c∑P(d∣c)P(c∣b)⋅ϕa(b)
= c ∑ P ( d ∣ c ) b ∑ P ( c ∣ b ) ⋅ ϕ a ( b ) ={}_{c}^{\sum}P(d|c) {}_{b}^{\sum} P(c|b)·\phi_{a}(b) =c∑P(d∣c)b∑P(c∣b)⋅ϕa(b)
= c ∑ P ( d ∣ c ) ⋅ ϕ b ( c ) ={}_{c}^{\sum}P(d|c) ·\phi_{b}(c) =c∑P(d∣c)⋅ϕb(c)
= ϕ c ( d ) =\phi_{c}(d) =ϕc(d)
-
a ∑ P ( a ) P ( b ∣ a ) : 记 作 关 于 b 的 函 数 ϕ a ( b ) {}_{a}^{\sum}P(a)P(b|a):记作关于b的函数\phi_{a}(b) a∑P(a)P(b∣a):记作关于b的函数ϕa(b)
-
b ∑ P ( c ∣ b ) ⋅ ϕ a ( b ) : 记 作 关 于 c 的 函 数 ϕ b ( c ) {}_{b}^{\sum} P(c|b)·\phi_{a}(b):记作关于c的函数\phi_{b}(c) b∑P(c∣b)⋅ϕa(b):记作关于c的函数ϕb(c)
-
c ∑ P ( d ∣ c ) ⋅ ϕ b ( c ) : 记 作 关 于 d 的 函 数 ϕ c ( d ) {}_{c}^{\sum}P(d|c) ·\phi_{b}(c):记作关于d的函数\phi_{c}(d) c∑P(d∣c)⋅ϕb(c):记作关于d的函数ϕc(d)
我 们 可 以 将 a ∑ P ( a ) 看 作 是 关 于 a 的 函 数 ϕ ( a ) 我们可以将{}_{a}^{\sum}P(a)看作是关于a的函数 \phi(a) 我们可以将a∑P(a)看作是关于a的函数ϕ(a)
我 们 可 以 将 P ( a ) P ( b ∣ a ) 看 作 是 关 于 a , b 的 函 数 ϕ ( a , b ) 我们可以将P(a)P(b|a)看作是关于a,b的函数 \phi(a,b) 我们可以将P(a)P(b∣a)看作是关于a,b的函数ϕ(a,b)
注:该算法的核心思想是乘法对加法的分配律,我们初中学习过ac + ab = a(b + c),其实类比分配律,我们先通过提取a相关的项后,再提取b相关的项,再提取c相关的项,最后就只剩下关于d的项了,最后达到消元化简的目的。以上公式同样适用于无向图。
11.2无向图的因子分解
对于无向图来说,举例一个简单模型如下:
由因子分解可得:
P
(
a
,
b
,
c
,
d
)
=
1
Z
∏
i
=
1
k
ϕ
c
i
(
X
c
i
)
(34)
P(a,b,c,d)=\frac{1}{Z}\prod_{i=1}^{k}\phi_{ci}(X_{ci})\tag{34}
P(a,b,c,d)=Z1i=1∏kϕci(Xci)(34)
- K:无向图中的最大团的个数
我们可以把p(x)通过因子分解写成如下形式:
p
(
x
)
=
∏
x
c
ϕ
c
(
X
c
)
(35)
p(x)=\prod_{x_c}\phi_{c}(X_c)\tag{35}
p(x)=xc∏ϕc(Xc)(35)
- 可以把有向图中的每一项当做 ϕ c ( X c ) \phi_{c}(X_c) ϕc(Xc)来看待
11.3 变量消除-缺点
变量消除算法(VE-Variable_Elimination)由三个缺点:
- 重复计算问题
我们在求p(d)的时候就一步一步提取求出来,但是当我们再求p©时,又得按照上述步骤重复计算一遍,它没有把上述步骤存储下来,导致重复计算的问题 - 变量消去次序问题Ordering
对于上述的简单有向图结构a->b->c->d我们可以一眼看出消去次序a-b-c-d,但是对于链比较复杂的时候,这个消除的次序是跟计算复杂度相关的,科学家发现这个问题就是一个NP-hard问题,非常的难。
总结:对于图结构简单,我们可以使用变量消除(VE)的方法进行精确推断;当复杂的时候,我们会在VE算法的基础上衍生出置信度传播和联合树算法来解决。
12. 置信度传播算法(Belief-Propagation)
Belief-Propagation是为了解决重复计算问题的,通过缓存记录下每个节点间的边的值,最后通过组合边的值来求得点的边缘概率。
12.1 马氏链举例:
假设我们有一条简单的马氏链,如图所示:
通过因子分解可得P(e)概率如下所示:
P
(
a
,
b
,
c
,
d
,
e
)
=
P
(
a
)
P
(
b
∣
a
)
P
(
c
∣
b
)
P
(
d
∣
c
)
P
(
e
∣
d
)
(36)
P(a,b,c,d,e)=P(a)P(b|a)P(c|b)P(d|c)P(e|d)\tag{36}
P(a,b,c,d,e)=P(a)P(b∣a)P(c∣b)P(d∣c)P(e∣d)(36)
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
)
(37)
P(e)=\sum_{a,b,c,d}P(a,b,c,d,e)=\sum_d P(e|d)\sum_cP(d|c)\sum_{b}P(c|b)\sum_aP(b|a)P(a)\tag{37}
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)(37)
为方便描述,我们引入下面符号:
- m a → b ( b ) = ∑ a P ( b ∣ a ) P ( a ) m_{a\rightarrow b}(b)=\sum_aP(b|a)P(a) ma→b(b)=∑aP(b∣a)P(a)
- m b → c ( c ) = ∑ b P ( c ∣ b ) ∑ a P ( b ∣ a ) P ( a ) m_{b\rightarrow c}(c)=\sum_{b}P(c|b)\sum_aP(b|a)P(a) mb→c(c)=∑bP(c∣b)∑aP(b∣a)P(a)
- m c → d ( d ) = ∑ c P ( d ∣ c ) ∑ b P ( c ∣ b ) ∑ a P ( b ∣ a ) P ( a ) m_{c\rightarrow d}(d)=\sum_cP(d|c)\sum_{b}P(c|b)\sum_aP(b|a)P(a) mc→d(d)=∑cP(d∣c)∑bP(c∣b)∑aP(b∣a)P(a)
- m d → e ( e ) = ∑ d P ( e ∣ d ) ∑ c P ( d ∣ c ) ∑ b P ( c ∣ b ) ∑ a P ( b ∣ a ) P ( a ) m_{d\rightarrow e}(e)=\sum_d P(e|d)\sum_cP(d|c)\sum_{b}P(c|b)\sum_aP(b|a)P(a) md→e(e)=∑dP(e∣d)∑cP(d∣c)∑bP(c∣b)∑aP(b∣a)P(a)
所以我们消去的方向如下:相当于沿着马氏链一直往前走,就是所谓的向前算法((Forward Algorithm)。
当我们要求
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
)
]
(38)
P(c)=\sum_{a,b,d,e}P(a,b,c,d,e)=[\sum_{b}P(c|b)\sum_aP(b|a)P(a)]·[\sum_d P(d|c)\sum_eP(e|d)]\tag{38}
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)](38)
所以,当我们提了需求算
P
(
b
)
,
P
(
c
)
,
P
(
d
)
P(b),P(c),P(d)
P(b),P(c),P(d)时,都会出现重复计算的问题。为了解决上述问题,我们可以通过存储如下8个变量即可,当要求P(b)时,只需要简单的组合下上述8个变量(正向和反向都求出来)即可。从而避免了重复计算的问题。
12.2 树形无向图举例:
假设我们有如下树形无向图结构:
由因子分解可得联合概率密度
P
(
a
,
b
,
c
,
d
)
P(a,b,c,d)
P(a,b,c,d):
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
)
(39)
P(a,b,c,d)=\frac{1}{Z}\phi_a(a)\phi_b(b)\phi_c(c)\phi_d(d)·\phi_{ab}(a,b)·\phi_{bc}(b,c)·\phi_{bd}(b,d)\tag{39}
P(a,b,c,d)=Z1ϕa(a)ϕb(b)ϕc(c)ϕd(d)⋅ϕab(a,b)⋅ϕbc(b,c)⋅ϕbd(b,d)(39)
- ϕ i ( i ) : 表 示 与 i 相 关 的 函 数 集 合 \phi_i(i):表示与i相关的函数集合 ϕi(i):表示与i相关的函数集合
- 如果要求
P
(
a
)
P(a)
P(a)时,我们需要求:
P ( a ) = ∑ b , c , d P ( a , b , c , d ) (40) P(a)=\sum_{b,c,d}P(a,b,c,d)\tag{40} P(a)=b,c,d∑P(a,b,c,d)(40)
P ( b ) = ∑ a , c , d P ( a , b , c , d ) (41) P(b)=\sum_{a,c,d}P(a,b,c,d)\tag{41} P(b)=a,c,d∑P(a,b,c,d)(41)
P(a),P(b)变量消除方向如图所示:
此时我们在计算P(a)和P(b)过程中会重复计算,为了解决上述无向图(4个点,3个边)重复计算问题,我们引入如下变量:
m
i
→
j
(
X
j
)
:
关
于
X
j
的
函
数
,
在
运
算
过
程
中
消
除
掉
X
i
(42)
m_{i\rightarrow j}(X_j):关于X_j的函数,在运算过程中消除掉X_i\tag{42}
mi→j(Xj):关于Xj的函数,在运算过程中消除掉Xi(42)
故无向图可以用转换成如下形式:
我们可以将P(a)的思路分解如下:
综上所述:
m
b
→
a
(
X
a
)
=
∑
X
b
ϕ
(
a
b
)
⋅
ϕ
b
(
b
)
⋅
m
c
→
b
(
X
b
)
⋅
m
d
→
b
(
X
b
)
(43)
m_{b\rightarrow a}(X_a)=\sum_{X_b}\phi(ab)·\phi_b(b)·m_{c\rightarrow b}(X_b)·m_{d\rightarrow b}(X_b)\tag{43}
mb→a(Xa)=Xb∑ϕ(ab)⋅ϕb(b)⋅mc→b(Xb)⋅md→b(Xb)(43)
P
(
a
)
=
ϕ
a
(
a
)
⋅
m
b
→
a
(
X
a
)
(44)
P(a)=\phi_a(a)·m_{b\rightarrow a}(X_a)\tag{44}
P(a)=ϕa(a)⋅mb→a(Xa)(44)
将上述公式<43>和<44>转换成更加通用形式:
- 公式<43>通用性表达:
第一步:把
m
c
→
b
(
X
b
)
⋅
m
d
→
b
(
X
b
)
m_{c\rightarrow b}(X_b)·m_{d\rightarrow b}(X_b)
mc→b(Xb)⋅md→b(Xb)化成通用形式:
m
b
→
a
(
X
a
)
=
∑
X
b
ϕ
(
a
b
)
⋅
ϕ
b
(
b
)
⋅
∏
k
∈
{
N
B
(
b
)
−
a
}
m
k
→
b
(
x
b
)
(45)
m_{b\rightarrow a}(X_a)=\sum_{X_b}\phi(ab)·\phi_b(b)·\prod_{k\in\{NB(b)-a\}}{m_{k\rightarrow b}(x_b)}\tag{45}
mb→a(Xa)=Xb∑ϕ(ab)⋅ϕb(b)⋅k∈{NB(b)−a}∏mk→b(xb)(45)
- k ∈ { N B ( j ) − a } : 表 示 k 属 于 节 点 b 的 所 有 邻 居 节 点 ( 除 节 点 a 之 外 ) k\in\{NB(j)-a\}:表示k属于节点b的所有邻居节点(除节点a之外) k∈{NB(j)−a}:表示k属于节点b的所有邻居节点(除节点a之外)
第一步:把
b
=
j
,
a
=
i
b=j,a=i
b=j,a=i进一步化成通用形式:
m
j
→
i
(
X
i
)
=
∑
X
j
ϕ
(
i
j
)
⋅
ϕ
j
(
j
)
⋅
∏
k
∈
{
N
B
(
j
)
−
i
}
m
k
→
j
(
x
j
)
(46)
m_{j\rightarrow i}(X_i)=\sum_{X_j}\phi(ij)·\phi_j(j)·\prod_{k\in\{NB(j)-i\}}{m_{k\rightarrow j}(x_j)}\tag{46}
mj→i(Xi)=Xj∑ϕ(ij)⋅ϕj(j)⋅k∈{NB(j)−i}∏mk→j(xj)(46)
- 公式<44>通用性表达:
P ( X i ) = ϕ i ( X i ) ⋅ ∏ k ∈ { N B ( i ) } m k → i ( X i ) (47) P(X_i)=\phi_i(X_i)·\prod_{k\in\{NB(i)\}}m_{k\rightarrow i}(X_i)\tag{47} P(Xi)=ϕi(Xi)⋅k∈{NB(i)}∏mk→i(Xi)(47)
结论:
不要直接求边缘概率 P ( a ) , P ( b ) , P ( c ) P(a),P(b),P(c) P(a),P(b),P(c)!只需先求出 m i → j m_{i\rightarrow j} mi→j即可,将它保存在缓存中,后面通过组合 m i → j m_{i\rightarrow j} mi→j求边缘概率!
12.3 Belief-Propagation 消息传递机制
m b → a ( X a ) = ∑ X b ϕ ( a b ) ⋅ ϕ b ( b ) ⋅ ∏ k ∈ { N B ( b ) − a } m k → b ( x b ) (48) m_{b\rightarrow a}(X_a)=\sum_{X_b}\phi(ab)·\phi_b(b)·\prod_{k\in\{NB(b)-a\}}{m_{k\rightarrow b}(x_b)}\tag{48} mb→a(Xa)=Xb∑ϕ(ab)⋅ϕb(b)⋅k∈{NB(b)−a}∏mk→b(xb)(48)
BP算法的本质就是VE+Caching.简单来说就是直接先求 m i j m_{ij} mij,在求边缘概率 P ( X i ) P(X_i) P(Xi),通过图的遍历来求 m i j m_{ij} mij
对于无向图来说我们知道了它的拓扑结构和它的信息传递的方式,如图所示:
- ϕ b ( b ) \phi_b(b) ϕb(b):节点b自身的函数(self)
- ∏ k ∈ { N B ( b ) − a } m k → b ( x b ) \prod_{k\in\{NB(b)-a\}}{m_{k\rightarrow b}(x_b)} ∏k∈{NB(b)−a}mk→b(xb):节点b的子节点数集合(children)
- ϕ b ( b ) ⋅ ∏ k ∈ { N B ( b ) − a } m k → b ( x b ) \phi_b(b)·\prod_{k\in\{NB(b)-a\}}{m_{k\rightarrow b}(x_b)} ϕb(b)⋅∏k∈{NB(b)−a}mk→b(xb):包括节点自己本身的信息和其他节点传播来的信息,记作:belief(b)
所以上述式子可以转换成:
b
e
l
i
e
f
(
b
)
=
ϕ
(
b
)
⋅
c
h
i
l
d
r
e
n
(49)
belief(b)=\phi (b)·children\tag{49}
belief(b)=ϕ(b)⋅children(49)
m
b
→
a
(
X
a
)
=
∑
X
b
ϕ
(
a
b
)
⋅
b
e
l
i
e
f
(
b
)
(49)
m_{b\rightarrow a}(X_a)=\sum_{X_b}\phi(ab)·belief(b)\tag{49}
mb→a(Xa)=Xb∑ϕ(ab)⋅belief(b)(49)
- 注:从收集消息机制来说,如果要求a的概率,就是要把所有的信息量以消息的形式发送给a,我们首先是通过节点b来收集关于b的所有的信息,生成信息积belief(b),再通过b和其自身相关的信息量传递给a,这样就生成了概率P(a)。
12.4 Belief-Propagation算法描述
BP算法本质就是VE算法加上Caching(存储 m i j m_{ij} mij),即先通过图的遍历来求 m i j m_{ij} mij,并存储 m i j m_{ij} mij,最后通过组合 m i j m_{ij} mij来求得边缘概率 P ( X i ) P(X_i) P(Xi)
12.4.1Belief-Propagation-(Sequential Implementation)
队列实现方式如下:
- Get Root:可以指定或随机指定一个节点为根节点
- Collect Message:对于每一个在根节点的邻接点中的节点 xi,Collect Message (xi)对应于下图的蓝色箭头信息;
for X i X_i Xi in NB(Root) -> CollectMsg ( X i ) (X_i) (Xi) - Distribute Message:分发信息,对于每一个在根节点的邻接点中的节点 xi,Distribute Message (xi),对应于下图的绿色箭头信息
for X j X_j Xj in NB(Root) -> CollectMsg ( X j ) (X_j) (Xj)
经过上述三个步骤可得,
对
于
所
有
i
,
j
∈
V
的
m
i
j
,
从
而
计
算
出
P
(
X
k
)
,
k
∈
V
对于所有i,j\in V的m_{ij},从而计算出P(X_k),k\in V
对于所有i,j∈V的mij,从而计算出P(Xk),k∈V
12.4.2 Belief-Propagation-(Parellel Implementation)
这种思想就跟路由器算法思想一样,就是首先随机找一个节点点a,其他每个节点others在接受到节点a的信号后就开始收集自己的消息,others节点只是简单的收集来自于关于自己的消息后,就发送消息给所有的邻居节点,最后邻居节点也重复收集信息和发送信息的操作,其他节点收到信息之后,更新自己的状态,然后反馈自己的信息给源节点,源节点再更新自己
的信息。不断地重复这个工作,直到最后收敛为止
13. Max Product Algorithm
13.1 概述
我们知道概率图模型的推断包含如下三个方面,首先我们把图模型变量分成两个集合
G
r
a
p
h
i
=
{
X
,
E
}
(50)
Graphi=\{X,E\}\tag{50}
Graphi={X,E}(50)
- X : 表 示 普 通 的 节 点 X:表示普通的节点 X:表示普通的节点
- E : = { e 1 , e 2 , . . . , e k } E:=\{e_1,e_2,...,e_k\} E:={e1,e2,...,ek},E是已知的观测变量;
- 边缘概率:模型中通常用P(E)表示,我们称作求它的似然(likelihood)
- 条件概率:模型中通常用 P(X|E)表示,我们称作求它的后验(posterior);
通常X可以分成两个部分Y和Z,有的时候不是求X这个整体,大多数时候是为了求部分后验P(Y|E)
假 设 X = ( Y , Z ) ; 求 部 分 后 验 P ( Y ∣ Z ) = ∑ Z P ( X ∣ E ) (51) 假设X=(Y,Z);求部分后验P(Y|Z)=\sum_{Z}P(X|E)\tag{51} 假设X=(Y,Z);求部分后验P(Y∣Z)=Z∑P(X∣E)(51) - MAP(Decoding)
X ^ = a r g m a x x P ( X ∣ E ) (52) \hat{X}=argmax_xP(X|E)\tag{52} X^=argmaxxP(X∣E)(52) - 注:找到一个隐状态序列,令后验达到最大;
13.2 (隐形马尔科夫链)HMM中的Viterbi
常见HMM模型如下:
- Y t Y_t Yt:表示隐状态
- X t X_t Xt:表示观测变量
-
D
e
c
o
d
i
n
g
Decoding
Decoding:就是求关于Y的隐状态序列,使得P(Y|X)取得最大;
Y ^ = Y a r g m a x P ( Y ∣ X ) (53) \hat{Y}={}_{Y}^{argmax}P(Y|X)\tag{53} Y^=YargmaxP(Y∣X)(53) - 注:求最大值用的Viterbi算法,它实际上是一个动态规划问题。
我们当时是定义变量 δ t , δ t + 1 , 其 中 δ t 表 示 从 t = 1 时 刻 到 t = t 时 刻 它 的 最 大 概 率 值 , 通 过 这 种 方 法 找 到 δ t , δ t + 1 之 间 的 关 系 \delta_t,\delta_{t+1},其中\delta_t表示从t=1时刻到t=t时刻它的最大概率值,通过这种方法找到\delta_t,\delta_{t+1}之间的关系 δt,δt+1,其中δt表示从t=1时刻到t=t时刻它的最大概率值,通过这种方法找到δt,δt+1之间的关系,这样就能求出 y 1 ^ , . . . , y t ^ \hat{y_1},...,\hat{y_t} y1^,...,yt^这个序列,从而可以令 δ t \delta_t δt最大。我们通过反向定了另外参数来记录每次取得最大值得状态是哪个,最后连接起来称为一个序列,这样就求出来啦。
13.2.1 sum-product algorithm一般表达式
由公式<46><47>可得BP算法的一般表达式为:
m
j
→
i
(
X
i
)
=
∑
X
j
ϕ
(
i
j
)
⋅
ϕ
j
(
j
)
⋅
∏
k
∈
{
N
B
(
j
)
−
i
}
m
k
→
j
(
x
j
)
(54)
m_{j\rightarrow i}(X_i)=\sum_{X_j}\phi(ij)·\phi_j(j)·\prod_{k\in\{NB(j)-i\}}{m_{k\rightarrow j}(x_j)}\tag{54}
mj→i(Xi)=Xj∑ϕ(ij)⋅ϕj(j)⋅k∈{NB(j)−i}∏mk→j(xj)(54)
P ( X i ) = ϕ i ( X i ) ⋅ ∏ k ∈ { N B ( i ) } m k → i ( X i ) (55) P(X_i)=\phi_i(X_i)·\prod_{k\in\{NB(i)\}}m_{k\rightarrow i}(X_i)\tag{55} P(Xi)=ϕi(Xi)⋅k∈{NB(i)}∏mk→i(Xi)(55)
13.2.2 max-product algorithm一般表达式
max-product algorithm从算法上来讲是对BP(sum-product algorithm)算法的改进,从模型上来讲是viterbi算法的泛化推广。是为了解决decoding问题的。
m
j
→
i
(
X
i
)
=
X
j
M
A
X
ϕ
(
i
j
)
⋅
ϕ
j
(
j
)
⋅
∏
k
∈
{
N
B
(
j
)
−
i
}
m
k
→
j
(
x
j
)
(56)
m_{j\rightarrow i}(X_i)={}^{MAX}_{X_j}\phi(ij)·\phi_j(j)·\prod_{k\in\{NB(j)-i\}}{m_{k\rightarrow j}(x_j)}\tag{56}
mj→i(Xi)=XjMAXϕ(ij)⋅ϕj(j)⋅k∈{NB(j)−i}∏mk→j(xj)(56)
- 注:sum-product algorithm是关于 X j X_j Xj求和,但max-product algorithm是直接选出关于 X j X_j Xj最大值。
P
(
X
i
)
=
ϕ
i
(
X
i
)
⋅
∏
k
∈
{
N
B
(
i
)
}
m
k
→
i
(
X
i
)
(57)
P(X_i)=\phi_i(X_i)·\prod_{k\in\{NB(i)\}}m_{k\rightarrow i}(X_i)\tag{57}
P(Xi)=ϕi(Xi)⋅k∈{NB(i)}∏mk→i(Xi)(57)
举例:假设我们有如下无向图结构:
- 注:在max-product algorithm算法中, m j → i ( X i ) m_{j\rightarrow i}(X_i) mj→i(Xi)表示最大值,这是两种算法的根本区别。
- m c → b ( X b ) m_{c\rightarrow b}(X_b) mc→b(Xb):表示经过节点c所形成的能让概率达到最大的值。
根据上图的无向图(蓝色箭头)来具体分析此算法含义:
边 c − > b : m c → b ( X b ) = M A X X c ϕ c ⋅ ϕ b c ⏟ 关 于 c 的 函 数 (58) 边c->b:m_{c\rightarrow b}(X_b)={MAX}_{X_c}\underbrace{\phi_c ·\phi_{bc}}_{关于c的函数}\tag{58} 边c−>b:mc→b(Xb)=MAXXc关于c的函数 ϕc⋅ϕbc(58)
- 注: 从 K 1 个 状 态 的 X c 中 找 到 一 个 状 态 使 得 ϕ c ⋅ ϕ b c 最 大 从K_1个状态的X_c中找到一个状态使得\phi_c ·\phi_{bc}最大 从K1个状态的Xc中找到一个状态使得ϕc⋅ϕbc最大
边 d − > b : m d → b ( X b ) = M A X X d ϕ d ⋅ ϕ b d ⏟ 关 于 d 的 函 数 (59) 边d->b:m_{d\rightarrow b}(X_b)={MAX}_{X_d}\underbrace{\phi_d ·\phi_{bd}}_{关于d的函数}\tag{59} 边d−>b:md→b(Xb)=MAXXd关于d的函数 ϕd⋅ϕbd(59)
- 注:
从
K
2
个
状
态
的
X
d
中
找
到
一
个
状
态
使
得
ϕ
d
⋅
ϕ
b
d
最
大
从K_2个状态的X_d中找到一个状态使得\phi_d ·\phi_{bd}最大
从K2个状态的Xd中找到一个状态使得ϕd⋅ϕbd最大
边 b − > a : m b → a ( X a ) = M A X X b ϕ b ⋅ ϕ a b ⋅ m c → b ( X b ) ⋅ m d → b ( X b ) ⏟ 关 于 b 的 函 数 (60) 边b->a:m_{b\rightarrow a}(X_a)={MAX}_{X_b}\underbrace{\phi_b ·\phi_{ab}·m_{c\rightarrow b}(X_b)·m_{d\rightarrow b}(X_b)}_{关于b的函数}\tag{60} 边b−>a:mb→a(Xa)=MAXXb关于b的函数 ϕb⋅ϕab⋅mc→b(Xb)⋅md→b(Xb)(60) - 注:
从
K
3
个
状
态
的
X
b
中
找
到
一
个
状
态
使
得
ϕ
b
⋅
ϕ
a
b
⋅
m
c
→
b
(
X
b
)
⋅
m
d
→
b
(
X
b
)
最
大
从K_3个状态的X_b中找到一个状态使得\phi_b ·\phi_{ab}·m_{c\rightarrow b}(X_b)·m_{d\rightarrow b}(X_b)最大
从K3个状态的Xb中找到一个状态使得ϕb⋅ϕab⋅mc→b(Xb)⋅md→b(Xb)最大
目 标 : P ( X a , X b , X c , X d ) m a x = M A X X a ϕ a ⋅ m b → a ( X a ) ⏟ 关 于 a 的 函 数 (61) 目标:P(X_a,X_b,X_c,X_d)_{max}=MAX_{Xa}\underbrace{\phi a ·m_{b\rightarrow a}(X_a)}_{关于a的函数}\tag{61} 目标:P(Xa,Xb,Xc,Xd)max=MAXXa关于a的函数 ϕa⋅mb→a(Xa)(61) - 注: 从 K 4 个 状 态 的 X a 中 找 到 一 个 状 态 使 得 ϕ a ⋅ m b → a ( X a ) 最 大 从K_4个状态的X_a中找到一个状态使得\phi a ·m_{b\rightarrow a}(X_a)最大 从K4个状态的Xa中找到一个状态使得ϕa⋅mb→a(Xa)最大
如果回溯上述过程,无向图按照(绿色箭头)就能得到一组数列 < X a ∗ , X b ∗ , X c ∗ , X d ∗ > <X_{a}^*,X_{b}^*,X_{c}^*,X_{d}^*> <Xa∗,Xb∗,Xc∗,Xd∗>
max-product algorithm就是找到一组
<
X
a
∗
,
X
b
∗
,
X
c
∗
,
X
d
∗
>
<X_{a}^*,X_{b}^*,X_{c}^*,X_{d}^*>
<Xa∗,Xb∗,Xc∗,Xd∗>,使得联合概率
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
c
→
b
(
X
b
)
,
m
d
→
b
(
X
b
)
,
m
b
→
a
(
X
a
)
的
值
。
只
需
要
迭
代
求
出
数
列
即
可
m_{c\rightarrow b}(X_b),m_{d\rightarrow b}(X_b),m_{b\rightarrow a}(X_a)的值。只需要迭代求出数列即可
mc→b(Xb),md→b(Xb),mb→a(Xa)的值。只需要迭代求出数列即可
F
o
u
n
d
<
X
a
∗
,
X
b
∗
,
X
c
∗
,
X
d
∗
>
=
a
r
g
m
a
x
{
X
a
,
X
b
,
X
c
,
X
d
}
P
(
X
a
,
X
b
,
X
c
,
X
d
∣
E
)
(62)
Found<X_{a}^*,X_{b}^*,X_{c}^*,X_{d}^*>=argmax_{\{X_a,X_b,X_c,X_d\}}P(X_a,X_b,X_c,X_d|E)\tag{62}
Found<Xa∗,Xb∗,Xc∗,Xd∗>=argmax{Xa,Xb,Xc,Xd}P(Xa,Xb,Xc,Xd∣E)(62)
14. 道德图 (Moral Graph)
14.1 道德图的背景
道德图的产生的原因就是想把有向图转换成无向图。因为有向图相对于无向图来说,无向图更加一般化些,通过概率函数可比较得:
无
向
图
:
P
(
X
)
=
1
Z
∏
i
=
1
K
ϕ
c
i
(
X
c
i
)
(63)
无向图:P(X)=\frac{1}{Z}\prod_{i=1}^{K}\phi_{ci}(X_{ci})\tag{63}
无向图:P(X)=Z1i=1∏Kϕci(Xci)(63)
- K:表示最大团的个数
- ci:表示最大团的集合
- Z:归一化因子
有 向 图 : P ( X ) = ∏ i = 1 p P ( X i ∣ X p a ( i ) ) (64) 有向图:P(X)=\prod_{i=1}^{p}P(X_i|X_{pa(i)})\tag{64} 有向图:P(X)=i=1∏pP(Xi∣Xpa(i))(64) -
X
p
a
(
i
)
:
X_{pa(i)}:
Xpa(i):表示其父节点的集合
由上述公式可得,我们只要将归一化因子Z看成1就很自然的将有向图转换成无向图,所以我们就引入道德图去分析,将有向图转换成方便推断的无向图了。
14.2 有向图转换成无向图举例
14.2.1 head to tail 结构转换
对于链式结构来说,我们只需要将箭头转换成直线即可
P
(
a
,
b
,
c
)
=
P
(
a
)
⋅
P
(
b
∣
a
)
⏟
ϕ
(
a
,
b
)
⋅
P
(
c
∣
b
)
⏟
ϕ
(
b
,
c
)
(65)
P(a,b,c)=\underbrace{P(a)·P(b|a)}_{\phi (a,b)}·\underbrace{P(c|b)}_{\phi(b,c)}\tag{65}
P(a,b,c)=ϕ(a,b)
P(a)⋅P(b∣a)⋅ϕ(b,c)
P(c∣b)(65)
由于在无向图中,我们考虑的是最大团,所以
p
(
a
)
p
(
b
∣
a
)
=
φ
(
a
,
b
)
,
p
(
c
∣
b
)
=
φ
(
b
,
c
)
p(a)p(b|a) = φ(a, b),p(c|b) =φ(b, c)
p(a)p(b∣a)=φ(a,b),p(c∣b)=φ(b,c)这个的转换是非常的简单了。
14.2.2 tail to tail 结构转换
P
(
a
,
b
,
c
)
=
P
(
a
)
⋅
P
(
b
∣
a
)
⏟
ϕ
(
a
,
b
)
⋅
P
(
c
∣
a
)
⏟
ϕ
(
a
,
c
)
(66)
P(a,b,c)=\underbrace{P(a)·P(b|a)}_{\phi (a,b)}·\underbrace{P(c|a)}_{\phi(a,c)}\tag{66}
P(a,b,c)=ϕ(a,b)
P(a)⋅P(b∣a)⋅ϕ(a,c)
P(c∣a)(66)
将所有的箭头变成直线,分别变成两个团{a,b},{a,c}
14.2.3 head to head 结构转换
P
(
a
,
b
,
c
)
=
P
(
a
)
⋅
P
(
b
)
⋅
P
(
c
∣
a
,
b
)
⏟
ϕ
(
a
,
b
,
c
)
(67)
P(a,b,c)=\underbrace{P(a)·P(b)·P(c|a,b)}_{\phi (a,b,c)}\tag{67}
P(a,b,c)=ϕ(a,b,c)
P(a)⋅P(b)⋅P(c∣a,b)(67)
- 注:a,b,c显然不是一个团,团的定义是里面的所有节点是两两相同的。所以上述无向图(左边)为错误的。
14.3 有向图转换成无向图[道德图方法总结]
- 对于任意 ∀ X i ∈ G , 将 p a r e n t ( X i ) 父 亲 节 点 两 两 连 接 起 来 \forall X_i \in G,将parent(X_i)父亲节点两两连接起来 ∀Xi∈G,将parent(Xi)父亲节点两两连接起来
- 将G中所有的有向边替换成无向边
- 注:如果我们的有向图非常复杂,用D-Separation判断条件独立性会十分复杂,我们可以先将其转换成无向图(道德图),再用道德图去判断条件独立性,这样就非常的简单了。
S e p { M ( G ) } ( A , B ∣ C ) ⟺ D − S e p { G } ( A , B ∣ C ) (68) Sep_{\{M(G)\}}(A,B|C)\Longleftrightarrow D-Sep_{\{G\}}(A,B|C)\tag{68} Sep{M(G)}(A,B∣C)⟺D−Sep{G}(A,B∣C)(68)
15.因子图(Factor Graph)
15.1 因子图的背景
我们知道在图模型中,我们常常通过道德图将有向图转换成无向图进行处理,但在使用有向图的head to head 模型中就出现环结构,而在Belief Propagation(BP) 算法中,只能对树进行分解。所以,在通常的树结构图模型中,我们就引入因子图来将环结构无向图转换成同等的树结构无向图。
因子图有如下作用:
- 通过引入变量因子把同等效果的树结构代替无向图中的环结构,以此消除无向图中环结构
- 无向图在无环结构的情况下,算法模型变得更加简洁,大大简化计算。
- 变量节点与变量节点是不直接相关联,每个变量节点与因子节点相关联,可以分两层处理。
对于tail to tail 结构来说:
有
向
图
:
P
(
a
,
b
,
c
)
=
P
(
a
)
⋅
P
(
b
∣
a
)
⋅
P
(
c
∣
a
)
(65)
有向图:P(a,b,c)=P(a)·P(b|a)·P(c|a)\tag{65}
有向图:P(a,b,c)=P(a)⋅P(b∣a)⋅P(c∣a)(65)
无
向
图
:
P
(
a
,
b
,
c
)
=
1
Z
ϕ
1
(
a
,
b
)
ϕ
2
(
a
,
c
)
(66)
无向图:P(a,b,c)=\frac{1}{Z}\phi_1(a,b)\phi_2(a,c)\tag{66}
无向图:P(a,b,c)=Z1ϕ1(a,b)ϕ2(a,c)(66)
我们通过不同的图结构,把它与之对应的因子分解求出来,那么如何将上述的因子分解统一起来呢?为解决上述问题,那么我们就把因子直接引入到图里面就行了。
15.2 因子图的举例
我们定义
X
=
{
x
1
,
x
2
,
.
.
.
,
x
p
}
X=\{x_1,x_2,...,x_p\}
X={x1,x2,...,xp},我们定义P(x)为如下:
P
(
x
)
=
∏
S
f
s
(
X
s
)
(67)
P(x)=\prod_{S}f_s(X_s)\tag{67}
P(x)=S∏fs(Xs)(67)
- S:表示图的节点子集
-
X
s
X_s
Xs:表示对应的X的随机变量子集
为说明上式,我们举个例子吧。一般在转换因子图的过程中,因子图的方式多种多样,不是唯一的。
因式分解本身对应一个特殊的因子图
结
论
:
因
子
图
看
作
是
对
因
式
分
解
的
进
一
步
分
解
结论:因子图看作是对因式分解的进一步分解
结论:因子图看作是对因式分解的进一步分解
15.2.1 环结构第一种分解:
- f = f ( a , b , c ) f=f(a,b,c) f=f(a,b,c)
15.2.2 环结构第二种分解:
P ( x ) = f 1 ( a , b ) ⋅ f 2 ( a , c ) f 3 ( b , c ) (68) P(x)=f_1(a,b)·f_2(a,c)f_3(b,c)\tag{68} P(x)=f1(a,b)⋅f2(a,c)f3(b,c)(68)
15.2.3 环结构第三种分解:
因子图存在的意义是可以有效的消除环结构,通过一个重构的方式,重建出树的结构。这样可以有效的帮助我们使用 Belief Propagation 中的变量消除法等方法。