贝叶斯网络中求值,从特殊到一般:分类、查询、推断
吉布斯采样算法既可以采样一个样本(用于预测),又可以采样一组样本(用于查询)——“根据今天的天气状况,你觉得明天是晴还是雨?
贝叶斯网络分类器
在贝叶斯网络 B B B中,若其余所有结点都有值,仅有一个结点无值,会出现什么情况?
设待定值结点为
i
i
i,待定值为
x
i
x_i
xi,设
x
‾
−
i
=
(
x
‾
1
,
x
‾
2
,
⋯
,
x
‾
i
−
1
,
x
‾
i
+
1
,
⋯
,
x
‾
d
)
\overline{\boldsymbol{x}}_{-i}=(\overline{x}_1, \overline{x}_2,\cdots,\overline{x}_{i-1},\overline{x}_{i+1},\cdots,\overline{x}_d)
x−i=(x1,x2,⋯,xi−1,xi+1,⋯,xd),则
P
(
x
i
∣
x
‾
−
i
)
=
P
(
x
‾
−
i
,
x
i
)
P
(
x
‾
−
i
)
\begin{align} P(x_i\,|\,\overline{\boldsymbol{x}}_{-i}) =\frac{P(\overline{\boldsymbol{x}}_{-i},x_i)}{P(\overline{\boldsymbol{x}}_{-i})} \tag{7.47} \end{align}
P(xi∣x−i)=P(x−i)P(x−i,xi)(7.47)
其中,
x
‾
j
\overline{x}_j
xj表示结点变量
x
j
x_j
xj的具体值。 对式(7.47)先由
B
B
B的结构关系,转化为条件概率,然后,查
B
B
B的条件概率表即可计算出
x
i
x_i
xi每一个指定值的
P
(
x
i
∣
x
‾
−
i
)
P(x_i\,|\,\overline{\boldsymbol{x}}_{-i})
P(xi∣x−i)。 这就实现了对待定结点的“查询”,即得到它取各种可能值的概率。
将样本标记
y
y
y也视为一个结点(地位等同于属性),则依前述方法训练出一个最优贝叶斯网络
B
∗
B^*
B∗,对
y
y
y进行查询,则可得到
P
(
c
k
∣
x
)
\begin{align} P(c_k\,|\,\boldsymbol{x}) \tag{7.48} \end{align}
P(ck∣x)(7.48)
其中,
c
k
c_k
ck为第
k
k
k类标记符号,
k
=
1
,
2
,
⋯
,
K
k=1,2,\cdots,K
k=1,2,⋯,K,则取使式(7.48)最大的
c
k
c_k
ck作为
x
\boldsymbol{x}
x分类,即实现了贝叶斯最优分类器(7.1 贝叶斯决策论中式(7.13)),分类可视为一种特殊的查询。
贝叶斯网络推断
确定了贝叶斯网络 B B B后,就可用于上述“查询”,现在进一步扩展“查询”,查询一组结点而不只是一个结点,称为“推断”,
在有限的时间内,通常使用“近似推断”,常用吉布斯采样进行“近似推断”,【西瓜书图7.5】描述了吉布斯采样算法,这里再对它的重点、难点加以说明。
(1)以前待预测样本表示为
(
x
,
y
)
(\boldsymbol{x},y)
(x,y)即
(
x
1
,
x
2
,
⋯
,
x
d
,
y
)
(x_1,x_2,\cdots,x_d,y)
(x1,x2,⋯,xd,y),其中,属性
x
i
,
(
i
=
1
,
2
,
⋯
,
d
)
x_i,(i=1,2,\cdots,d)
xi,(i=1,2,⋯,d)已知,求标记
y
=
y=
y=?现在将
(
x
1
,
x
2
,
⋯
,
x
d
,
y
)
(x_1,x_2,\cdots,x_d,y)
(x1,x2,⋯,xd,y)中全视为变量,有的变量已知(证据),有的变量未知(待查询),将证据变量和待查询变量分开,各自排列,即样本为
(
E
1
,
E
2
,
⋯
,
E
k
,
Q
1
,
Q
2
,
⋯
,
Q
n
)
(E_1,E_2,\cdots,E_k,Q_1,Q_2,\cdots,Q_n)
(E1,E2,⋯,Ek,Q1,Q2,⋯,Qn)
其中,
E
i
E_i
Ei为证据变量,
Q
j
Q_j
Qj为待查询变量,写成集合形式则为
(
E
,
Q
)
(\boldsymbol{E},\boldsymbol{Q})
(E,Q)
(2)以大写字母表示变量,小写字母表示变量的值,粗体表示对应的向量。 则查询问题可以表述为: 证据为 x \boldsymbol{x} x,查询出现 q \boldsymbol{q} q的概率为多少(如,阴天(证据)下雨(查询)的概率多大)?即求 P ( Q = q ∣ E = x ) P(\boldsymbol{Q}=\boldsymbol{q}\,|\,\boldsymbol{E}=\boldsymbol{x}) P(Q=q∣E=x)。
(3)通过频率估计上述概率,而频率又是通过采样后计数来获得,求
P
(
Q
=
q
∣
E
=
x
)
P(\boldsymbol{Q}=\boldsymbol{q}\,|\,\boldsymbol{E}=\boldsymbol{x})
P(Q=q∣E=x)只需要在条件
(
E
=
x
)
(\boldsymbol{E}=\boldsymbol{x})
(E=x)下采样,设采样总数为
T
T
T,其中
Q
=
q
\boldsymbol{Q}=\boldsymbol{q}
Q=q的样本数为
n
Q
=
q
n_{\boldsymbol{Q}=\boldsymbol{q}}
nQ=q个,则
P
^
(
Q
=
q
∣
E
=
x
)
=
n
Q
=
q
T
\begin{align} \hat{P}(\boldsymbol{Q}=\boldsymbol{q}\,|\,\boldsymbol{E}=\boldsymbol{x})=\frac{n_{\boldsymbol{Q}=\boldsymbol{q}}}{T} \tag{7.49} \end{align}
P^(Q=q∣E=x)=TnQ=q(7.49)
(4)在哪儿去采样?容易想到在数据集 D D D中去采样,或者直接将数据集 D D D视为采样集,统计其中满足条件 ( E = x ) (\boldsymbol{E}=\boldsymbol{x}) (E=x)的 T T T和 n Q = q n_{\boldsymbol{Q}=\boldsymbol{q}} nQ=q,如果数据集 D D D超大,你当然可以这样做。 现在,我们换个思路来考虑,通过数据集 D D D已训练出一个贝叶斯网 B = ⟨ G , Θ ⟩ B=\langle G,\Theta \rangle B=⟨G,Θ⟩,转化到在贝叶斯网 B B B上采样,然而,贝叶斯网 B B B并不是样本空间(或样本集)如何在其上采样?贝叶斯网 B B B有个神奇的功能:指定结点 x i x_i xi,在固定其他所有结点值的情况下,可以求出指定结点的条件概率分布 P ( x i ∣ x ‾ 1 , x ‾ 2 , ⋯ , x ‾ i − 1 , x ‾ i + 1 , ⋯ , x ‾ d ) P(x_i\,|\,\overline{x}_1, \overline{x}_2,\cdots,\overline{x}_{i-1},\overline{x}_{i+1},\cdots,\overline{x}_d) P(xi∣x1,x2,⋯,xi−1,xi+1,⋯,xd),即式(7.47)的“查询”功能,由该概率即可“采样”出该结点的值,该值与其他所有结点的值共同组成一个样本,将其视为采样得到的样本,它实际上,是借助贝叶斯网 B B B通过局部 x i x_i xi采样而“生成”一个样本 x \boldsymbol{x} x。 这就是吉布斯采样算法【西瓜书图7.5】中的第7、第8句。
(5)【西瓜书图7.5】吉布斯采样算法由两层循环来 描述:外层for循环(第3句)产生“一组样本”,内层for循环(第4至第10句)产生样本(产生“一组属性”),即对 Q i , ( i = 1 , 2 , ⋯ , n ) Q_i,(i=1,2,\cdots,n) Qi,(i=1,2,⋯,n)循环。
(6)【西瓜书图7.5】算法中第8句涉及到已知概率分布,如何进行采样的问题。 这里以离散随机变量进行说明:例如,随机变量 A A A可取值为 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3,已知 P ( A ) P(A) P(A)是指 A A A取每个值的概率已知,如, P ( A = a 1 ) = 1 10 , P ( A = a 2 ) = 2 5 , P ( A = a 3 ) = 1 2 P(A=a_1)=\frac{1}{10},P(A=a_2)=\frac{2}{5},P(A=a_3)=\frac{1}{2} P(A=a1)=101,P(A=a2)=52,P(A=a3)=21,
现在以 P ( A ) P(A) P(A)为已知的概率分布,要求采样1000个样本,先解决一个样本的采样问题,再用for循环可以得到任意多个样本。
采一个样本方法:
-
将区间 [ 0 , 1 ] [0,1] [0,1]分为三段: T 1 = [ 0 , 1 10 ) , T 2 = [ 1 10 , 5 10 ) , T 1 = [ 5 10 , 10 10 ] T_1=[0,\frac{1}{10}),T_2=[\frac{1}{10},\frac{5}{10}),T_1=[\frac{5}{10},\frac{10}{10}] T1=[0,101),T2=[101,105),T1=[105,1010];
-
计算机中随机数发生器产生的随机数是均匀分布的,即可用程序产生区间 [ 0 , 1 ] [0,1] [0,1]中均匀分布的随机数 r r r,如: r = r a n d o m ( s e e d ) r=\mathrm{random}(seed) r=random(seed);
-
判断随机数 r r r所在的区间段:若落入 T 1 T_1 T1,则取样本 A = a 1 A=a_1 A=a1;若落入 T 2 T_2 T2,则取样本 A = a 2 A=a_2 A=a2;若落入 T 3 T_3 T3,则取样本 A = a 3 A=a_3 A=a3。
(7)吉布斯采样算法是从已有的 q t − 1 \boldsymbol{q}^{t-1} qt−1出发采出 q t \boldsymbol{q}^{\,t} qt,然而开始时没有这个“已有”,而是胡乱地初始化一个 q 0 \boldsymbol{q}^0 q0作为“已有”,即【西瓜书图7.5】算法中第2句,那么,问题来了:这个 q 0 \boldsymbol{q}^0 q0是否合适?首先,这个 q 0 \boldsymbol{q}^0 q0应该是在 Q \boldsymbol{Q} Q的取值范围内的,其次是要能“取到”该值,这个不能保证,因为该值有可能是“小概率事件”。 好在数学上证明了不需要保证这一点,这就是【西瓜书p.161】所说的采样形成的“马尔可夫链”收敛于平稳分布。 因此,【西瓜书图7.5】算法中对采样计数(第3句)应该改造一下:斩掉一段不太平稳的“链”头再开始计数。
(8)吉布斯采样算法既可以采样一个样本(用于预测),又可以采样一组样本(用于查询),我们通过一段对话来理解:
Q:“根据今天的天气状况,你觉得明天是晴还是雨?”——今天的天气状况【证据】,明天是晴还是雨【预测】。
J:“我觉得明天是晴天. ”——J用吉布斯采样算法采了一个样本,发现该样本是晴【预测结果】。
Q:“你预报的准确性如何?”
J:“让我再想想. ”——J用吉布斯采样算法采出一组样本,计算明天是晴还是雨各自的频率【近似估算后验概率】。
Q:“其实,我想知道明天是雨天的可能性有多大,因为我明天要举办露天婚礼。 ”——明天是雨天的可能性【查询】。
J:“明天是雨天的概率是60%. ”——根据刚计算出的频率作出近似推断【查询结果】。
综上,近似推断有如下步骤:
(1)从现实物理世界中采样得到训练集 D D D;
(2)以评价函数最小化为目标即 min s ( B ∣ D ) \min s(B\,|\,D) mins(B∣D),搜索得到一个贝叶斯网络 B = ⟨ G , Θ ⟩ B=\langle G,\Theta \rangle B=⟨G,Θ⟩;
(3)从 B B B及证据出发,使用吉布斯算法采样,得到一个样本集。注:这里与其说是“采样”,不如说是用“样本制造机”来“制造”样本,“样本制造机”有多种多样,但它应保证“制造”出的“样本集”是反映样本空间的特性(即统计频率能反映样本空间中的概率),这里的“样本制造机”为训练好的贝叶斯网及吉布斯算法。
(4)对产生(采样)得到的样本集进行分门别类“计数”,得到待查询值的概率(近似值),即式(7.49)。
其中,(1)与(2)可以视为生产一个产品 B B B,(3)与(4)视为使用产品 B B B,显然,产品可以发布给许多用户使用。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权
上一篇:7.6 贝叶斯网(也称信念网)结构(网络结构也是“超参数”)、贝叶斯图络学习(两级搜索法)
下一篇:7.8 再谈极大似然(对数边际似然)