文章目录
- 第一部分:贝叶斯网基础
- 第二部分:贝叶斯网推理
- [2.1 概率推理中的变量消元方法](https://blog.csdn.net/deepbodhi/article/details/119823431?spm=1001.2014.3001.5501#21__7)
- [2.1.1 推理问题](https://blog.csdn.net/deepbodhi/article/details/119823431?spm=1001.2014.3001.5501#211__11)
- [2.1.2 变量消元法](https://blog.csdn.net/deepbodhi/article/details/119823431?spm=1001.2014.3001.5501#212__35)
- [2.1.3 复杂度分析](https://blog.csdn.net/deepbodhi/article/details/119823431?spm=1001.2014.3001.5501#213__161)
- [2.1.4 消元顺序](https://blog.csdn.net/deepbodhi/article/details/119823431?spm=1001.2014.3001.5501#214__221)
- 2.1.5 推理问题化简
- 2.1.6 MAP问题化简
第一部分:贝叶斯网基础
1.1 信息论基础
1.2 贝叶斯网基本概念
1.3 变量独立性的图论分析
第二部分:贝叶斯网推理
2.1 概率推理中的变量消元方法
2.1.1 推理问题
2.1.2 变量消元法
2.1.3 复杂度分析
2.1.4 消元顺序
2.1.5 推理问题化简
前面介绍了通过消元方法降低推理复杂度,且通过选择合适的变量消元顺序,可进一步降低推理复杂度。本小节则介绍通过剔除贝叶斯网络中与推理无关的变量,从而进一步简化推理问题。
在本专题第3讲中,在介绍D分隔和U分隔之间关系时,引入了祖先闭集的概念。紧接着,在祖先闭集与贝叶斯子网中又证明了命题1.3.1:『贝叶斯网中的祖先闭集仍为贝叶斯网,且分布函数不变』。基于该命题,我们可以证明如下定理。
定理2.1.1
给定一贝叶斯网N,设P(Q|E=e)是需要计算的后验概率。令N’为从N中除去在 a n ( Q ∪ E ) an(Q\cup E) an(Q∪E)之外的所有节点后所得到的贝叶斯网,则:
P N ( Q ∣ E = e ) = P N ′ ( Q ∣ E = e ) P_N(Q|E=e)=P_{N'}(Q|E=e) PN(Q∣E=e)=PN′(Q∣E=e)
证明:
由命题1.3.1可知:
P
N
(
a
n
(
Q
∪
E
)
)
=
P
N
′
(
a
n
(
Q
∪
E
)
)
P_N(an(Q\cup E))=P_{N'}(an(Q\cup E))
PN(an(Q∪E))=PN′(an(Q∪E))
因此有:
P
N
(
Q
∣
E
=
e
)
=
P
N
′
(
Q
∣
E
=
e
)
P_N(Q|E=e)=P_{N'}(Q|E=e)
PN(Q∣E=e)=PN′(Q∣E=e)
命题得证。
该定理表明,在 a n ( Q ∪ E ) an(Q\cup E) an(Q∪E)之外的所有节点都与P(Q|E=e)无关,因此可在推理前将它们除去,从而降低推理复杂度。
进一步地,在剩余节点
a
n
(
Q
∪
E
)
an(Q\cup E)
an(Q∪E)中,可寻找Q被E D分隔的节点,这些节点与Q相互独立,也可以删去,进而降低推理复杂度。寻找d-分隔的方法可参考本专题第3讲介绍D分隔与U分隔关系部分。
本专题第3讲曾证明过D分隔与条件独立的等价性,证明过程使用了类似如下所示的一张示意图。我们通过在端正图上寻找U分隔,很容易找出Q被E D分隔的节点集Y。E可分为两部分,一部分为存在父节点在X中的节点集
E
1
E_1
E1,剩余的为
E
2
=
E
−
E
1
E_2=E-E1
E2=E−E1。当我们删除与Q独立的所有节点Y后,可能会残留从Y指向
E
2
E_2
E2的边,比如下图中的K节点。这意味着删除Y需要修改节点K的条件概率表,这里只需将K的条件概率表中涉及Y中节点的部分设置为任意分布皆可,因为对于证据变量E,其值确定,概率推理中将不再依赖其条件概率表。
例 在如下图所示的贝叶斯网N中,设证据为{B=0,F=1},考虑计算
P
N
(
I
∣
B
=
0
,
F
=
1
)
P_N(I|B=0,F=1)
PN(I∣B=0,F=1)。
首先,保留贝叶斯网N中{I,B,F}节点的祖先闭集,得到上图(b)中的贝叶斯网N’。将N’端正化为无向图,并寻找节点I被{B,F} U分隔的节点集,为{A,D},从而可知在贝叶斯网N’上,{A,D}与I被{B,F} D分隔,在{B,F}已知的条件下,{A,D}与I独立。因此可进一步删去{A,D},得到贝叶斯网N’’。所求
P
N
(
I
∣
B
=
0
,
F
=
1
)
=
P
N
′
′
(
I
∣
B
=
0
,
F
=
1
)
P_N(I|B=0,F=1)=P_{N''}(I|B=0,F=1)
PN(I∣B=0,F=1)=PN′′(I∣B=0,F=1).
2.1.6 MAP问题化简
在上一讲介绍推理问题时,介绍了MAP问题是推理问题的一种,即计算
h
∗
=
arg max
h
P
(
H
=
h
∣
E
=
e
)
h^*=\argmax_h P(H=h|E=e)
h∗=hargmaxP(H=h∣E=e)的问题。为了解决这个问题,可通过变量消元法,设证据变量为E=e,再逐个消去假设变量H之外的其它变量,获得一个P(H,E=e)的分解,并利用下式计算结果:
arg max
h
P
(
H
∣
E
=
e
)
=
arg max
h
P
(
H
,
E
=
e
)
∑
h
P
(
H
,
E
=
e
)
=
arg max
h
P
(
H
,
E
=
e
)
\begin{aligned} \argmax_h P(H|E=e) &= \argmax_h \frac{P(H,E=e)}{\sum_h P(H,E=e)} \\ &= \argmax_h P(H,E=e) \end{aligned}
hargmaxP(H∣E=e)=hargmax∑hP(H,E=e)P(H,E=e)=hargmaxP(H,E=e)
搜索最优h的复杂度与假设变量的个数|H|指数相关,当假设变量较多时不可行。因此,需要考虑利用P(H,E=e)的分解来降低计算复杂度。
2.1.6.1 max运算的链式法则
首先来考虑两个运算,即取最大值运算max和搜索最大值点的运算argmax。一般地,设X和Y是两个交空的变量集合,g(X,Y)是它们的函数,那么:
(1)
max
X
g
(
X
,
Y
)
\max_X g(X,Y)
maxXg(X,Y)是Y的函数;
(2)
arg max
X
g
(
X
,
Y
)
\argmax_X g(X,Y)
Xargmaxg(X,Y)是从
Ω
Y
\Omega_Y
ΩY到
Ω
X
\Omega_X
ΩX的映射。
有如下定理,对max运算在不相交自变量集的函数上所满足的链式法则进行了证明。
定理2.1.2
设X,Y,Z是3个两两交空的变量集合,g(X,Y)和h(Y,Z)是两个函数,则有
max X , Y , Z g ( X , Y ) h ( Y , Z ) = max X , Y [ g ( X , Y ) max Z h ( Y , Z ) ] (1)) \max_{X,Y,Z} g(X,Y)h(Y,Z)=\max_{X,Y} [g(X,Y)\max_Z h(Y,Z)] \tag{1)} X,Y,Zmaxg(X,Y)h(Y,Z)=X,Ymax[g(X,Y)Zmaxh(Y,Z)](1))
再设 δ ( Y ) = arg max Z h ( Y , Z ) \delta(Y)=\argmax_Z h(Y,Z) δ(Y)=Zargmaxh(Y,Z)
和
( x ∗ , y ∗ ) = arg max X , Y [ g ( X , Y ) max Z h ( Y , Z ) ] (x^*,y^*)=\argmax_{X,Y}[g(X,Y)\max_Z h(Y,Z)] (x∗,y∗)=X,Yargmax[g(X,Y)Zmaxh(Y,Z)]
那么,
arg max X , Y , Z g ( X , Y ) h ( Y , Z ) = ( x ∗ , y ∗ , δ ( y ∗ ) ) (2) \argmax_{X,Y,Z}g(X,Y)h(Y,Z)=(x^*,y^*,\delta(y^*)) \tag{2} X,Y,Zargmaxg(X,Y)h(Y,Z)=(x∗,y∗,δ(y∗))(2)
证明:
设
F
1
(
X
,
Y
,
Z
)
=
g
(
X
,
Y
)
h
(
Y
,
Z
)
F_1(X,Y,Z)=g(X,Y)h(Y,Z)
F1(X,Y,Z)=g(X,Y)h(Y,Z),其最大值点为:
(
x
1
∗
,
y
1
∗
,
z
1
∗
)
=
arg max
X
,
Y
,
Z
F
1
(
X
,
Y
,
Z
)
(x_1^*,y_1^*,z_1^*)=\argmax_{X,Y,Z} F_1(X,Y,Z)
(x1∗,y1∗,z1∗)=X,Y,ZargmaxF1(X,Y,Z)
再设
F
2
(
X
,
Y
)
=
g
(
X
,
Y
)
max
Z
h
(
Y
,
Z
)
F_2(X,Y)=g(X,Y)\max_Z h(Y,Z)
F2(X,Y)=g(X,Y)maxZh(Y,Z),其最大值点为:
(
x
∗
,
y
∗
)
=
arg max
X
,
Y
F
2
(
X
,
Y
)
(x^*,y^*)=\argmax_{X,Y} F_2(X,Y)
(x∗,y∗)=X,YargmaxF2(X,Y)
对于式(1)等号右侧有:
max
X
,
Y
F
2
(
X
,
Y
)
≥
F
2
(
x
1
∗
,
y
1
∗
)
=
g
(
x
1
∗
,
y
1
∗
)
max
Z
h
(
y
1
∗
,
Z
)
≥
g
(
x
1
∗
,
y
1
∗
)
h
(
y
1
∗
,
z
1
∗
)
=
max
X
,
Y
,
Z
F
1
(
X
,
Y
,
Z
)
\begin{aligned} \max_{X,Y}F_2(X,Y)&\ge F_2(x_1^*,y_1^*)\\ &=g(x_1^*,y_1^*)\max_Zh(y_1^*,Z)\\ &\ge g(x_1^*,y_1^*)h(y_1^*,z_1^*)\\ &=\max_{X,Y,Z}F_1(X,Y,Z) \end{aligned}
X,YmaxF2(X,Y)≥F2(x1∗,y1∗)=g(x1∗,y1∗)Zmaxh(y1∗,Z)≥g(x1∗,y1∗)h(y1∗,z1∗)=X,Y,ZmaxF1(X,Y,Z)
反过来,等号左侧有:
max
X
,
Y
,
Z
F
1
(
X
,
Y
,
Z
)
≥
max
Z
F
1
(
x
∗
,
y
∗
,
Z
)
=
max
Z
g
(
x
∗
,
y
∗
)
h
(
y
∗
,
Z
)
=
g
(
x
∗
,
y
∗
)
max
Z
h
(
y
∗
,
Z
)
=
max
X
,
Y
F
2
(
X
,
Y
)
\begin{aligned} \max_{X,Y,Z}F_1(X,Y,Z)&\ge\max_ZF_1(x^*,y^*,Z)\\ &=\max_Zg(x^*,y^*)h(y^*,Z)\\ &=g(x^*,y^*)\max_Zh(y^*,Z)\\ &=\max_{X,Y}F_2(X,Y) \end{aligned}
X,Y,ZmaxF1(X,Y,Z)≥ZmaxF1(x∗,y∗,Z)=Zmaxg(x∗,y∗)h(y∗,Z)=g(x∗,y∗)Zmaxh(y∗,Z)=X,YmaxF2(X,Y)
从而,式(1)成立。
同时,
x
1
∗
=
x
∗
,
y
1
∗
=
y
∗
x_1^*=x^*,y_1^*=y^*
x1∗=x∗,y1∗=y∗,对于
z
1
∗
z_1^*
z1∗,有
z
1
∗
=
arg max
Z
g
(
x
∗
,
y
∗
)
h
(
y
∗
,
Z
)
=
g
(
x
∗
,
y
∗
)
arg max
Z
h
(
y
∗
,
Z
)
=
arg max
Z
h
(
y
∗
,
Z
)
=
δ
(
y
∗
)
\begin{aligned} z_1^*&=\argmax_Zg(x^*,y^*)h(y^*,Z)\\ &=g(x^*,y^*)\argmax_Zh(y^*,Z)\\ &=\argmax_Zh(y^*,Z)\\ &=\delta(y^*) \end{aligned}
z1∗=Zargmaxg(x∗,y∗)h(y∗,Z)=g(x∗,y∗)Zargmaxh(y∗,Z)=Zargmaxh(y∗,Z)=δ(y∗)
从而,定理得证。
2.1.6.2 分解和计算复杂度
定理2.1.2提供了利用max运算的链式法则来进行变量消元,从而化简MAP问题的方法。设f(H)=g(X,Y)h(Y,Z),根据定理2.1.2,函数f(H)的最大值可以通过如下两步获得:
(1)
h
′
(
Y
)
=
max
Z
h
(
Y
,
Z
)
h'(Y)=\max_Zh(Y,Z)
h′(Y)=maxZh(Y,Z);
(2)
max
X
,
Y
g
(
X
,
Y
)
h
′
(
Y
)
\max_{X,Y}g(X,Y)h'(Y)
maxX,Yg(X,Y)h′(Y)
我们来分析一下,通过变量消元是否降低了计算复杂度?
设X,Y,Z都是有3种取值的变量.
直接计算
max
X
,
Y
,
Z
g
(
X
,
Y
)
h
(
Y
,
Z
)
\max_{X,Y,Z} g(X,Y)h(Y,Z)
maxX,Y,Zg(X,Y)h(Y,Z)需要进行
3
3
=
27
3^3=27
33=27次乘法和26次比较。
使用max的链式法则进行计算,第一步对Y的每一个取值需要做2次比较,共6次比较;第二步需要做
3
2
=
9
3^2=9
32=9次乘法和8次比较。两步共需要9次乘法和14次比较。
新方法比直接计算节省了18次乘法和12次比较。
再根据定理2.1.2,函数f(H)的最大值点可通过如下步骤获得:
(1)
δ
(
Y
)
=
arg max
Z
h
(
Y
,
Z
)
\delta(Y)=\argmax_Zh(Y,Z)
δ(Y)=Zargmaxh(Y,Z);
(2)
(
x
∗
,
y
∗
)
=
arg max
X
,
Y
g
(
X
,
Y
)
h
′
(
Y
)
(x^*,y^*)=\argmax_{X,Y}g(X,Y)h'(Y)
(x∗,y∗)=X,Yargmaxg(X,Y)h′(Y);
(3)
z
∗
=
δ
(
y
∗
)
z^*=\delta(y^*)
z∗=δ(y∗)
该过程与计算最大值的过程可同步合并进行,过程中需要对
δ
(
Y
)
\delta(Y)
δ(Y)记录。
由此可见,通过变量消元计算MAP问题是一种用空间换时间来降低算法时间复杂度的方法。
2.1.6.3 MAP变量消元算法
基于以上分析,下面给出MAP变量消元算法的形式化描述。
设
F
=
{
f
1
,
⋯
,
f
m
}
\mathscr F=\{f_1,\cdots,f_m\}
F={f1,⋯,fm}是函数f(H)的一个分解,p是一个消元顺序,以下算法给出了一个利用分解
F
\mathscr F
F计算
(
max
H
,
arg max
H
f
(
H
)
)
(\max_H,\argmax_Hf(H))
(maxH,Hargmaxf(H))的算法,即MAP变量消元法:MAP-VE。
设Z是p中第一个变量。MAP-VE首先从
F
\mathscr F
F中找出所有涉及Z的因子,不失一般性,设为
f
1
,
⋯
,
f
k
f_1,\cdots,f_k
f1,⋯,fk,把它们连乘起来,得到函数
h
(
Y
,
Z
)
=
∏
i
=
1
k
f
i
h(Y,Z)=\prod_{i=1}^kf_i
h(Y,Z)=∏i=1kfi,这里Y是h(Y,Z)所涉及的除Z以外的所有变量。记
F
\mathscr F
F中所有其它因子的乘积为函数g(X,Y),其中X为H中除去Y和Z以外的所有变量,则f(H)=g(X,Y)h(Y,Z)。
例 对如下图所示的贝叶斯网,求
max
A
,
B
,
C
,
D
,
E
P
(
A
,
B
,
C
,
D
,
E
∣
F
=
0
)
\max_{A,B,C,D,E}P(A,B,C,D,E|F=0)
maxA,B,C,D,EP(A,B,C,D,E∣F=0)和
arg max
A
,
B
,
C
,
D
,
E
P
(
A
,
B
,
C
,
D
,
E
∣
F
=
0
)
\argmax_{A,B,C,D,E}P(A,B,C,D,E|F=0)
A,B,C,D,EargmaxP(A,B,C,D,E∣F=0)
函数P(A,B,C,D,E,F=0)的分解为:
F
=
{
P
(
A
)
,
P
(
B
)
,
P
(
C
)
,
P
(
D
∣
A
,
B
)
,
P
(
E
∣
B
,
C
)
,
P
(
F
=
0
∣
D
,
E
)
}
\mathscr F=\{P(A),P(B),P(C),P(D|A,B),P(E|B,C),P(F=0|D,E)\}
F={P(A),P(B),P(C),P(D∣A,B),P(E∣B,C),P(F=0∣D,E)}
设消元顺序为p=<C,E,B,D,A>,MAP-VE算法的运算过程如下:
(1) 首先消去C:
δ
1
(
B
,
E
)
=
arg max
C
P
(
C
)
P
(
E
∣
B
,
C
)
ψ
1
(
B
,
E
)
=
max
C
P
(
C
)
P
(
E
∣
B
,
C
)
F
=
{
P
(
A
)
,
P
(
B
)
,
P
(
D
∣
A
,
B
)
,
P
(
F
=
0
∣
D
,
E
)
,
ψ
1
(
B
,
E
)
}
\delta_1(B,E)=\argmax_CP(C)P(E|B,C)\\ \psi_1(B,E)=\max_CP(C)P(E|B,C)\\ \mathscr F=\{P(A),P(B),P(D|A,B),P(F=0|D,E),\psi_1(B,E)\}
δ1(B,E)=CargmaxP(C)P(E∣B,C)ψ1(B,E)=CmaxP(C)P(E∣B,C)F={P(A),P(B),P(D∣A,B),P(F=0∣D,E),ψ1(B,E)}
(2) 递归调用1,消去变量E:
δ
2
(
B
,
D
,
F
=
0
)
=
arg max
E
P
(
F
=
0
∣
D
,
E
)
ψ
1
(
B
,
E
)
ψ
2
(
B
,
D
,
F
=
0
)
=
max
E
P
(
F
=
0
∣
D
,
E
)
ψ
1
(
B
,
E
)
F
=
{
P
(
A
)
,
P
(
B
)
,
P
(
D
∣
A
,
B
)
,
ψ
2
(
B
,
D
,
F
=
0
)
}
\delta_2(B,D,F=0)=\argmax_EP(F=0|D,E)\psi_1(B,E)\\ \psi_2(B,D,F=0)=\max_EP(F=0|D,E)\psi_1(B,E)\\ \mathscr F=\{P(A),P(B),P(D|A,B),\psi_2(B,D,F=0)\}
δ2(B,D,F=0)=EargmaxP(F=0∣D,E)ψ1(B,E)ψ2(B,D,F=0)=EmaxP(F=0∣D,E)ψ1(B,E)F={P(A),P(B),P(D∣A,B),ψ2(B,D,F=0)}
(3) 递归调用2,消去变量B:
δ
3
(
A
,
D
,
F
=
0
)
=
arg max
E
P
(
B
)
P
(
D
∣
A
,
B
)
ψ
2
(
B
,
D
,
F
=
0
)
ψ
3
(
A
,
D
,
F
=
0
)
=
max
E
P
(
B
)
P
(
D
∣
A
,
B
)
ψ
2
(
B
,
D
,
F
=
0
)
F
=
{
P
(
A
)
,
ψ
3
(
A
,
D
,
F
=
0
)
}
\delta_3(A,D,F=0)=\argmax_EP(B)P(D|A,B)\psi_2(B,D,F=0)\\ \psi_3(A,D,F=0)=\max_EP(B)P(D|A,B)\psi_2(B,D,F=0)\\ \mathscr F=\{P(A),\psi_3(A,D,F=0)\}
δ3(A,D,F=0)=EargmaxP(B)P(D∣A,B)ψ2(B,D,F=0)ψ3(A,D,F=0)=EmaxP(B)P(D∣A,B)ψ2(B,D,F=0)F={P(A),ψ3(A,D,F=0)}
(4) 递归调用3,消去变量D:
δ
4
(
A
,
F
=
0
)
=
arg max
E
ψ
3
(
A
,
D
,
F
=
0
)
ψ
4
(
A
,
F
=
0
)
=
max
E
ψ
3
(
A
,
D
,
F
=
0
)
F
=
{
P
(
A
)
,
ψ
4
(
A
,
F
=
0
)
}
\delta_4(A,F=0)=\argmax_E\psi_3(A,D,F=0)\\ \psi_4(A,F=0)=\max_E\psi_3(A,D,F=0)\\ \mathscr F=\{P(A),\psi_4(A,F=0)\}
δ4(A,F=0)=Eargmaxψ3(A,D,F=0)ψ4(A,F=0)=Emaxψ3(A,D,F=0)F={P(A),ψ4(A,F=0)}
(5) 递归调用4,消去变量A:因只剩A这一个变量,所以直接进入if判断内,并返回
v
=
ψ
5
,
(
a
=
δ
5
)
v=\psi_5,(a=\delta_5)
v=ψ5,(a=δ5):
δ
5
=
arg max
A
P
(
A
)
ψ
4
(
A
,
F
=
0
)
ψ
5
=
max
A
P
(
A
)
ψ
4
(
A
,
F
=
0
)
\delta_5=\argmax_AP(A)\psi_4(A,F=0)\\ \psi_5=\max_AP(A)\psi_4(A,F=0)
δ5=AargmaxP(A)ψ4(A,F=0)ψ5=AmaxP(A)ψ4(A,F=0)
(6) 接着是一连串的递归调用返回:
递归调用3返回
(
v
,
(
a
,
d
=
δ
4
(
a
)
)
)
(v,(a,d=\delta_4(a)))
(v,(a,d=δ4(a)))
递归调用2返回
(
v
,
(
a
,
d
,
b
=
δ
3
(
a
,
d
)
(v,(a,d,b=\delta_3(a,d)
(v,(a,d,b=δ3(a,d)))
递归调用1返回
(
v
,
(
a
,
d
,
b
,
e
=
δ
2
(
b
,
d
)
)
)
(v,(a,d,b,e=\delta_2(b,d)))
(v,(a,d,b,e=δ2(b,d)))
最后返回
(
v
,
(
a
,
d
,
b
,
e
,
c
=
δ
1
(
b
,
e
)
)
)
(v,(a,d,b,e,c=\delta_1(b,e)))
(v,(a,d,b,e,c=δ1(b,e)))
从而可得:
v
=
max
A
,
B
,
C
,
D
,
E
P
(
A
,
B
,
C
,
D
,
E
,
F
=
0
)
(
a
,
b
,
c
,
d
,
e
)
=
arg max
A
,
B
,
C
,
D
,
E
P
(
A
,
B
,
C
,
D
,
E
,
F
=
0
)
v=\max_{A,B,C,D,E}P(A,B,C,D,E,F=0)\\ (a,b,c,d,e)=\argmax_{A,B,C,D,E}P(A,B,C,D,E,F=0)
v=A,B,C,D,EmaxP(A,B,C,D,E,F=0)(a,b,c,d,e)=A,B,C,D,EargmaxP(A,B,C,D,E,F=0)