赞
踩
本节首先分析直接用联合概率分布进行概率推理的困难,然后讨论利用变量间的条件独立关系将联合概率分布加以分解,降低模型复杂度,并引出贝叶斯网的定义。最后介绍如何手工构造贝叶斯网。
不确定性推理是人工智能研究的重要课题之一,该领域有很多方法,其中概率方法时最自然也是最早被尝试的方法之一,因为概率论本身就是关于随机现象和不确定性的数学理论。
使用概率方法进行不确定性推理就是:
下面引入一个案例,由于物联网时代的到来,下面这个案例已经过时了,传感器的精度足以消除不确定性,笔者一时还没有想出更好的案例,暂且仍使用这个经典案例,请读者代入当年的情景进行理解:
例1.2.1 (报警问题) Pearl教授住在洛杉矶,那里地震和盗窃时有发生,教授家里装有警铃,听到警铃后,两个邻居Mary和John可能会打电话给他。 某天,Pearl教授接到Mary的电话,说听到他家的警报,请问Pearl教授家遭盗窃的概率是多大?
该问题包含5个随机变量:盗窃(Burglary,B)、地震(Earthquake,E)、警铃响(Alarm,A)、接到John电话(J)、接到Mary电话(M);所有变量的取值均为『Y』或『N』。
变量之间的关系存在不确定性:
假设Pearl教授对这5个变量的联合概率分布
P
(
B
,
E
,
A
,
J
,
M
)
P(B,E,A,J,M)
P(B,E,A,J,M)的评估如下表所示,要计算接到Mary的电话(M=Y)后,Pearl教授对家里遭盗(B=Y)的信度,即
P
(
B
=
Y
∣
M
=
Y
)
P(B=Y|M=Y)
P(B=Y∣M=Y)。
从联合概率分布
P
(
B
,
E
,
A
,
J
,
M
)
P(B,E,A,J,M)
P(B,E,A,J,M)出发,先计算边缘分布:
P
(
B
,
M
)
=
∑
E
,
A
,
J
P
(
B
,
E
,
A
,
J
,
M
)
P(B,M)=\sum_{E,A,J}P(B,E,A,J,M)
P(B,M)=E,A,J∑P(B,E,A,J,M)
得到下表:
再按照条件概率定义,得:
P
(
B
=
Y
∣
M
=
Y
)
=
P
(
B
=
Y
,
M
=
Y
)
P
(
M
=
Y
)
=
P
(
B
=
Y
,
M
=
Y
)
P
(
B
=
Y
,
M
=
Y
)
+
P
(
B
=
N
,
M
=
Y
)
≈
0.61
从以上过程可知,直接使用联合分布进行不确定性推理的复杂度很高,上例中有5个二值随机变量,联合分布包含 2 5 − 1 = 31 2^5-1=31 25−1=31个独立参数。一般地,n个二值变量的联合概率分布包含 2 n − 1 2^n-1 2n−1个独立参数(-1是因为存在概率归一化条件)。因此,联合分布的复杂度与变量个数呈指数增长。当变量很多时,联合概率的获取、存储和运算都变得十分困难。
联合概率分布可以通过链规则分解为条件概率乘积的形式,如上例中的联合概率分布可分解为:
P
(
B
,
E
,
A
,
J
,
M
)
=
P
(
B
)
P
(
E
∣
B
)
P
(
A
∣
B
,
E
)
P
(
J
∣
B
,
E
,
A
)
P
(
M
∣
B
,
E
,
A
,
J
)
当然,这并没有降低模型的复杂度。我们来分析一下等式右侧的复杂度。
P
(
B
)
P(B)
P(B)的复杂度为1(概率归一性),
P
(
E
∣
B
)
P(E|B)
P(E∣B)的复杂度为2,注意这和
P
(
E
,
B
)
P(E,B)
P(E,B)的复杂度不同,后者的复杂度是
2
2
−
1
=
3
2^2-1=3
22−1=3,而条件概率的复杂度,针对每一种条件组合都可以运用一次概率归一性,因此
P
(
E
∣
B
)
P(E|B)
P(E∣B)的复杂度为
2
1
×
(
2
1
−
1
)
=
2
2^1\times(2^1-1)=2
21×(21−1)=2,同样,
P
(
A
∣
B
,
E
)
P(A|B,E)
P(A∣B,E)复杂度为
2
2
×
(
2
1
−
1
)
=
4
2^2\times(2^1-1)=4
22×(21−1)=4,以此类推,等式右侧的复杂度为1+2+4+8+16=31,与等式左侧的联合概率分布复杂度相同。
但是,根据背景知识我们可以做一些合理的假设,从而降低模型复杂度。例如:
将这些假设都放到一起,可得:
P
(
B
,
E
,
A
,
J
,
M
)
=
P
(
B
)
P
(
E
)
P
(
A
∣
B
,
E
)
P
(
J
∣
A
)
P
(
M
∣
A
)
P(B,E,A,J,M)=P(B)P(E)P(A|B,E)P(J|A)P(M|A)
P(B,E,A,J,M)=P(B)P(E)P(A∣B,E)P(J∣A)P(M∣A)
等式右侧的复杂度降低为1+1+4+2+2=10,相对于左侧联合概率分布的31个参数,模型复杂度大大降低。
更一般地,考虑一个包含n个变量的联合分布
P
(
X
1
,
X
2
,
⋯
,
X
n
)
P(X_1,X_2,\cdots,X_n)
P(X1,X2,⋯,Xn),利用链规则,可分解为:
P
(
X
1
,
X
2
,
⋯
,
X
n
)
=
P
(
X
1
)
P
(
X
2
∣
X
1
)
⋯
P
(
X
n
∣
X
1
,
X
2
,
⋯
,
X
n
−
1
)
=
∏
i
=
1
n
P
(
X
i
∣
X
1
,
X
2
,
⋯
,
X
i
−
1
)
对任意
X
i
X_i
Xi,如果存在
π
(
X
i
)
⊆
{
X
1
,
⋯
,
X
i
−
1
}
\pi(X_i)\subseteq\{X_1,\cdots,X_{i-1}\}
π(Xi)⊆{X1,⋯,Xi−1},使得给定
π
(
X
i
)
\pi(X_i)
π(Xi),
X
i
X_i
Xi与
{
X
1
,
⋯
,
X
i
−
1
}
\{X_1,\cdots,X_{i-1}\}
{X1,⋯,Xi−1}中的其它变量条件独立,即:
P
(
X
i
∣
X
1
,
⋯
,
X
i
−
1
)
=
P
(
X
i
∣
π
(
X
i
)
)
P(X_i|X_1,\cdots,X_{i-1})=P(X_i|\pi(X_i))
P(Xi∣X1,⋯,Xi−1)=P(Xi∣π(Xi))
则有:
P
(
X
1
,
⋯
,
X
n
)
=
∏
i
=
1
n
P
(
X
i
∣
π
(
X
i
)
)
(1.2.1)
P(X_1,\cdots,X_n)=\prod_{i=1}^{n}P(X_i|\pi(X_i)) \tag{1.2.1}
P(X1,⋯,Xn)=i=1∏nP(Xi∣π(Xi))(1.2.1)
这样,就得到了联合分布的一个分解,其中当
π
X
i
=
∅
\pi{X_i}=\emptyset
πXi=∅时,
P
(
X
i
∣
π
(
X
i
)
)
P(X_i|\pi(X_i))
P(Xi∣π(Xi))为边缘分布
P
(
X
i
)
P(X_i)
P(Xi)。
假设对任意
X
i
X_i
Xi,
π
(
X
i
)
\pi(X_i)
π(Xi)最多包含m个变量,当所有变量均取二值时,对联合概率分布进行条件独立分解,参数个数将由
2
n
−
1
2^n-1
2n−1降低为
n
2
m
n2^m
n2m个,当变量数目n很大,且
m
≪
n
m\ll n
m≪n时,效果更显著。
上式(1.2.1)所示的分解中,给定 π ( X i ) \pi(X_i) π(Xi),则 X i X_i Xi与 { X 1 , ⋯ , X i − 1 } \{X_1,\cdots,X_{i-1}\} {X1,⋯,Xi−1}中的其它变量条件独立。我们可以用如下方法构造一个有向图来表示这些依赖和独立关系:
在Alarm问题中,
π
(
B
)
=
π
(
E
)
=
∅
\pi(B)=\pi(E)=\emptyset
π(B)=π(E)=∅,
π
(
A
)
=
{
B
,
E
}
\pi(A)=\{B,E\}
π(A)={B,E},
π
(
J
)
=
{
A
}
\pi(J)=\{A\}
π(J)={A},
π
(
M
)
=
{
A
}
\pi(M)=\{A\}
π(M)={A},按照上述方法,可得到如下所示的有向图。
从图中可以看到,变量A依赖于B和E,且通过条件概率分布P(A|B,E)定量描述了依赖关系:在盗窃和地震都发生时,警铃响的概率P(A=Y|B=Y,E=Y)=0.95;当只有盗窃但没有地震时,警铃响的概率P(A=Y|B=Y,E=N)=0.29;当直发生地震没有盗窃时,警铃响的概率P(A=Y|B=N,E=Y)=0.94;而当盗窃和地震都未发生时,警铃响的概率P(A=Y|B=N,E=N)=0.001.
类似地,P(M|A)和P(J|A)分别定量刻画了M和J如何依赖于A。变量B和E不依赖于其它变量,P(B)和P(E)给出它们的边缘分布。
上图中,有向图与这5个概率分布合在一起,就构成一个贝叶斯网,它是对联合概率分布的分解的直观表示。
贝叶斯网是一个有向无圈图,其中节点代表随机变量,节点间的边代表变量间的直接依赖关系。每个节点都附有一个概率分布,根节点X所附的是它的边缘分布P(X),非根节点X所附的是条件概率分布
P
(
X
∣
π
(
X
)
)
P(X|\pi(X))
P(X∣π(X))。
这里,我们用 π ( X ) \pi(X) π(X)表示节点X的父节点集合,用 a n ( X ) an(X) an(X)表示X的祖先节点集合,用 n b ( X ) nb(X) nb(X)表示X的邻居节点集合,用 c h ( X ) ch(X) ch(X)表示X的子节点集合,用 d e ( X ) de(X) de(X)表示X的后代节点集合,用 n d ( X ) nd(X) nd(X)表示X的非后代节点集合。
贝叶斯网可以从定性和定量两方面来理解。在定性层面,它用一个有向无圈图描述变量之间的依赖和独立关系。在定量层面,它则用条件概率分布刻画变量对其父节点的依赖程度。更具体地,假设贝叶斯网中的变量为
X
1
,
⋯
,
X
n
X_1,\cdots,X_n
X1,⋯,Xn,那么把各变量所的概率分布相乘即得到联合分布,即贝叶斯网的链式规则:
P
(
X
1
,
⋯
,
X
n
)
=
∏
i
=
1
n
P
(
X
i
∣
π
(
X
i
)
)
P(X_1,\cdots,X_n)=\prod_{i=1}^{n}P(X_i|\pi(X_i))
P(X1,⋯,Xn)=i=1∏nP(Xi∣π(Xi))
其中,当
π
(
X
i
)
=
∅
\pi(X_i)=\emptyset
π(Xi)=∅时,
P
(
X
i
∣
π
(
X
i
)
)
P(X_i|\pi(X_i))
P(Xi∣π(Xi))即为边缘分布
P
(
X
i
)
P(X_i)
P(Xi)。
贝叶斯网一方面是严格的数学语言,适合计算机处理;另一方面,它直观易懂,提供人脑推理过程的模型。因此贝叶斯网在不确定性推理和人工智能领域具有极其重要的基础性地位。
贝叶斯网有两种方法构造,一种是由具有领域知识的专家根据经验手工构造,一种是直接通过数据分析获得。在本专题的第三部分,将专门介绍如何通过机器学习的方法从数据中获得贝叶斯网。本节先介绍如何手工构造贝叶斯网,这包括确定网络结构和评估条件概率两个子任务。
从上文所介绍的贝叶斯网概念,我们知道要确定贝叶斯网络结构,就是要确定如下内容:
下面仍以Alarm问题为例,选择三种变量顺序按照上述步骤来构造贝叶斯网。
顺序1:
a
1
=
{
B
,
E
,
A
,
M
,
J
}
a_1=\{B,E,A,M,J\}
a1={B,E,A,M,J}
构造过程如下图所示:
顺序2:
a
2
=
{
M
,
J
,
A
,
B
,
E
}
a_2=\{M,J,A,B,E\}
a2={M,J,A,B,E}
构造过程如下图所示:
顺序3:
a
3
=
{
M
,
J
,
E
,
B
,
A
}
a_3=\{M,J,E,B,A\}
a3={M,J,E,B,A}
构造过程如下图所示:
以上三种不同的变量顺序导致了不同的网络结构,不同的网络结构表示联合分布不同的分解方式,也意味着不同的复杂度。那应该按照什么原则来选择变量顺序呢?对该问题目前有三种看法:
在实际应用中,往往利用因果关系来确定贝叶斯网结构。在Alarm例子中,地震(E)和盗窃(B)是警铃响(A)的直接原因,警铃响(A)是Mary和John打电话的直接原因。这样,利用因果关系,很容易获得了按B、E、A、M、J顺序构造贝叶斯网结构。
利用因果关系建立的贝叶斯网中,变量间的边表示因果关系,而不仅是简单的概率依赖关系,这样的贝叶斯网称为贝氏因果网,简称因果网。构建因果网时,有两点需要注意:
在实际应用中,往往采用如下方式来判断因果关系:对变量X和Y,如果你去改变X的状态,会影响你对Y的信度,而反过来你去改变Y的状态,却不影响你对X的信度,则认为X是Y的原因。比如地震和警铃响之间的因果关系:你如果制造一次地震,你对警铃响的信度会加大,反过来,你拨弄响了警铃,你对地震是否发生的信度并不会改变,因此可认为地震时警铃响的原因。再比如抽烟和牙黄的因果关系:如果你强迫一个人抽一段时间的烟,则你对他牙黄的信度会加大,反过来,你将他的牙染为黄色,你对他是否吸烟的信度并不会因此而改变,因此可认为抽烟是牙黄的原因。
贝叶斯网参数即各变量的概率分布,一般通过数据分析获得,也可以从问题的特性直接得到。
通过数据分析确定参数的案例
考虑某种基因遗传关系。假设基因a是隐性致病基因,对应的显性基因是A。当没有任何信息时,关于该疾病的基因型可能是以下三者之一:aa(患病)、Aa(携带者)、AA(正常)。根据基因遗传学,可以直接确定任意个体的基因型
G
S
G_S
GS与它父母的基因型
G
F
,
G
M
G_F,G_M
GF,GM之间的概率关系
P
(
G
S
∣
G
F
,
G
M
)
P(G_S|G_F,G_M)
P(GS∣GF,GM),如下图所示:
根据问题的特性确定参数的案例
假设一个噪音信道传递信息位U,信道的出错概率为0.1,为提高传输准确度,重复传输3次,接受方根据结构进行解码,并推测正确的取值。该过程可用如下图所示的贝叶斯网来表示。
图中所有变量均取二值,根据问题特性可确定网络参数。
对于信息位U,有:
P
(
U
)
=
{
0.5
,
U
=
1
0.5
,
U
=
0
P(U)= \left\{
对于接受位
Y
i
Y_i
Yi,其条件概率分布由噪音信道的特性决定:
P
(
Y
i
∣
U
)
=
{
0.9
,
Y
i
=
U
0.1
,
Y
i
≠
U
P(Y_i|U)= \left\{
手工建立贝叶斯网时,需要耗费大量人力和时间来确定网络参数,因此有必要尽量减少参数个数,通常精简参数个数也有利于提高概率推理的质量。下面介绍两个方法来减少参数。
设变量Y有m个父节点
X
1
,
⋯
,
X
m
X_1,\cdots,X_m
X1,⋯,Xm,条件分布
P
(
Y
∣
X
1
,
⋯
,
X
m
)
P(Y|X_1,\cdots,X_m)
P(Y∣X1,⋯,Xm)刻画Y对其父节点的依赖关系,当所有变量均取二值时,它包含
2
m
2^m
2m个独立参数。为了减少参数个数,可假设条件分布具有某种规律,称为局部结构。常见的局部结构有因果机制独立和环境独立两种。
因果机制独立
因果机制独立指多个原因独立地影响同一个结果。在Alarm例子中,地震(E)和盗窃(B)都可以触发警铃(A),但这两者的机制不同,因此可假设地震和盗窃独立地影响警铃响。
通过因果机制独立,可以将参数个数从
2
m
2^m
2m降低为
2
m
2m
2m个。
环境独立
环境独立是指在特定环境下才成立的条件独立关系。一个环境(contex,上下文)是一组变量及其取值的组合。下图给出两个环境独立的例子。
左图中,母牛的产犊数量依赖于年龄,但无论公牛年龄多大,产犊数都是0。所以在『G=公牛』这个环境中,变量N与变量A总是独立的。由于这个环境独立关系,P(N|A,G)所包含的参数个数从
2
∣
A
∣
(
∣
N
∣
−
1
)
2|A|(|N|-1)
2∣A∣(∣N∣−1)降低为
(
∣
A
∣
+
1
)
(
∣
N
∣
−
1
)
(|A|+1)(|N|-1)
(∣A∣+1)(∣N∣−1)。
右图中,一个人的收入一般来讲依赖于职业(J)、受教育程度(Q)和气候(W)。
假设对一个程序员,他的收入不依赖于气候,即在『J=程序员』这个环境找那个,I与W是独立的,有:
P
(
I
∣
J
=
程
序
员
,
Q
,
W
)
=
P
(
I
∣
J
=
程
序
员
,
Q
)
P(I|J=程序员,Q,W)=P(I|J=程序员,Q)
P(I∣J=程序员,Q,W)=P(I∣J=程序员,Q)
假设对一个农民,他的收入不依赖于受教育程度,即在『J=农民』这个环境中,I与Q时独立的,有:
P
(
I
∣
J
=
农
民
,
Q
,
W
)
=
P
(
I
∣
J
=
农
民
,
W
)
P(I|J=农民,Q,W)=P(I|J=农民,W)
P(I∣J=农民,Q,W)=P(I∣J=农民,W)
上述环境独立关系使得参数减少了
(
∣
W
∣
−
1
)
∣
Q
∣
(
∣
I
∣
−
1
)
+
(
∣
Q
∣
−
1
)
∣
W
∣
(
∣
I
∣
−
1
)
(|W|-1)|Q|(|I|-1)+(|Q|-1)|W|(|I|-1)
(∣W∣−1)∣Q∣(∣I∣−1)+(∣Q∣−1)∣W∣(∣I∣−1)个。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。