zoukankan      html  css  js  c++  java
  • 概率图模型4:贝叶斯网络

    作者:孙相国

    转载请注明出处

    概率图模型主要研究四方面问题:

    1. 表示
    2. 推理
    3. 学习

    在本系列博文中,我们将按照下面的路线进行陈述:

    1. 首先我们研究贝叶斯网络和无向图网络的最基本的概念。

    2. 在此基础上,我们分出两个分支,一个是以贝叶斯网络为基础,一个是以无向图为基础,讨论学习问题:

    3. 最后我们将会研究一些关于推理方面的知识.

    0. 参考文献

    [1] 概率图模型原理与技术(中文版)

    [2] probabilistic graphical models(概率图模型原理与技术 英文版)

    [3] 机器学习 周志华

    [4] 统计学习方法 李航

    [5] csdn博客:http://blog.csdn.net/github_36326955

    [6] 模式识别

    1.1 为什么要研究贝叶斯网络?

    对于一个联合概率分布,我们需要跟多个独立变量来表示,甚至独立变量的个数会呈现指数级的增长。例如,考虑(Pleft(X_1,X_2,X_3,cdots,X_n ight)),假如,每一个(X_i)都是二项分布的话。这样联合概率里面就有至少(2^n-1)个参数(对应的是(X_1,cdots,Xn)的全排列数目减一,减掉1是因为最后一种情况可以用1减掉之前的所有概率)。因此我们希望通过建立联合概率与图的关联,从图中找到条件独立性论断(并且我们可以证明,图中的条件独立性论断在联合概率中都是成立的。),这样就可以将原始的联合概率写成多个独立因子的乘积,从而减少独立变量的个数,使得模型更加“紧凑”。例如,如果我们可以建立一个概率图,并且从中发现了如下的独立性论断:

    [left(X_i perp X_{-i}|C ight) ]

    其中(X_{-i})表示({X_1,cdots,X_n}-{X_i}),那么(Pleft(C,X_1,X_2,X_3,cdots,X_n ight))可以写成:

    [Pleft(C ight)Pi_{i=1}^nPleft(X_i|C ight) ]

    注意到每一个(Pleft(X_i|C_j ight))都有两种情况(对应1个参数),因此公式((2))的参数个数只有(2n+1)个。

    事实上,这种假设太强,但是仍然在很多应用的价值。接下来您将会看到,基于这种独立性假设建立的概率图表示模型,就是朴素贝叶斯模型。

    "紧凑",在这里的具体含义是:经过独立性约间的式子(2),其独立参数个数小于原始的联合概率分布形势下独立参数个数。

    1.2 朴素贝叶斯模型

    单纯的介绍朴素贝叶斯模型和对应的概率图,并没有什么价值。事实上,关于朴素贝叶斯的定义,1.1节几乎已经介绍得很充分了。具体来说,在公式((1))中,我们把(C={c_1,cdots,c_k})看做样本的类别。把(X_i)看做样本的第(i)个维度的特征。那么,朴素贝叶斯假设的实际意义就很明显了:朴素贝叶斯模型假设在给定样本实例的类别的条件下,不同的性质可以独立的确定。

    这里写图片描述

    在本节,我们将要介绍的,是与朴素贝叶斯模型相关的一个机器学习算法:朴素贝叶斯法。它在文本分类中经常被使用(参见作者博文《python 中文文本分类》)。

    1.2.1 基本方法

    正如你在1.1节看到的公式((2))所表达的一样,公式((2))是对联合概率的一个计算。运用贝叶斯定理,我们可以很轻易的求得:

    [Pleft( C=c_k|X_{1:n} ight)=frac{Pleft(C=c_k ight)Pi_{i=1}^nPleft(X_i|C=c_k ight)}{sum_CPleft(C=c_j ight)Pi_{i=1}^nPleft(X_i|C=c_j ight)} ]

    公式((3))表达了对于给定观测样本,其属于类别(c_k)的概率。因此朴素贝叶斯分类器可以表示为:

    [y=fleft(X_{1:n} ight)=arg max_{c_k}frac{Pleft(C=c_k ight)Pi_{i=1}^nPleft(X_i|C=c_k ight)}{sum_CPleft(C=c_j ight)Pi_{i=1}^nPleft(X_i|C=c_j ight)} ]

    考虑到分母对所有样本是相同的,因此,可以进一步规约为:

    [y=fleft(X_{1:n} ight)=arg max_{c_k}Pleft(C=c_k ight)Pi_{i=1}^nPleft(X_i|C=c_k ight) ]

    从常理上看,朴素贝叶斯分类器把样本实例分到后验概率最大的类别,是很自然的,也是符合我们的认知的(你可以在作者这篇博文中找到更详细的解释《深入浅出EM算法与实践(持续更新)》)。那么,除了从感性的角度认为这种分类策略有道理外,我们能不能从更严谨的角度去考察这种分类策略的合理性呢?答案是可以的,事实上,朴素贝叶斯的分类策略,等价于期望风险最小化(更多的论述,读者可以参考其他文献,例如李航博士的《统计学习方法》4.1.2,这里不再赘述)。

    1.2.2 参数估计

    从公式((5))可以看到,我们需要估计的参数有(Pleft(C=c_k ight))(Pleft(X_i=x_i|C=c_k ight))

    由于这些概率事实上都是可以从样本集合中估计出来的,所以整个估计策略并不复杂。只是对样本做了一些基本的统计(极大似然估计)。例如:

    [Pleft(C=c_k ight)=frac{sum_{i=1}^nIleft(y_i = c_k ight)}{n},k=1,2,cdots,K ]

    [Pleft(X_i=x_i|C=c_k ight)=frac{sum_{i=1}^nIleft(X_i=x_i|C=c_k ight)}{sum_{i=1}^nIleft(C=c_k ight)} ]

    其中(Ileft(. ight))为指示函数。

    需要注意的是:公式((6,7))都是基于现有的样本做统计的。那么,如果碰巧某类情况在样本中没有出现(事实上这种情况是很常见的,因为机器学习处理的数据是小规模的),那么就有可能遭遇某类概率为0的情况。因此,我们需要对公式做一个平滑处理:

    [Pleft(C=c_k ight)=frac{sum_{i=1}^nIleft(y_i = c_k ight)+lambda}{n+Klambda},k=1,2,cdots,K;lambda geqslant 0 ]

    特别的,当(lambda = 1)时,成为拉普拉斯平滑。

    通过对分子分母加一个系数,我们实现了概率的平滑处理。事实上,在很多其他研究中,我们还有其他的办法让我们的概率“平滑”,一个最经典的例子就是将特征加权后,送入到logistic函数中。我们就可以很自然地得到一个人工构造的概率。更详细的内容,请参阅作者的博客《logistic回归

    1.2.3 python实现

    从前几个小节的介绍来看,朴素贝叶斯分类器的实现,并不复杂。在scikit-learn库中,有直接的函数可以调用。只是这个库中的函数,为我们指定了公式((5))中的类条件概率分布的形式(比如可能是高斯分布,或者伯努利分布等)。关于scikit-learn库中相应函数的使用,你可以参考作者的博文《python 中文文本分类》。这里给出的代码,是没有指定任何分布,仅仅根据公式((7,8))得到的。

    实例代码托管在GitHub上:

    实例代码

    1.3 图与分布

    1.3.1基本任务

    贝叶斯网图的形式化语义是一系列的独立性断言((mathcal{I}left(mathcal{G} ight)),见定义1)。另一方面它又是由条件概率分布做注释的图,并通过链式法则为贝叶斯网定义了一个联合分布((P))。本小节接下来的工作就是证明这两者的等价,即如下命题成立:(ALeftrightarrow B),其中:

    A: 分布(P)满足与图(G)相关的局部独立性。

    B: (P)可以由与图(G)相关的一系列条件概率分布表示。

    换言之,若(P)可以由图(mathcal{G})蕴含的的一系列条件概率表示时,那么(mathcal{G})中的所有条件独立性都在(P)的所有条件独立性集合中,反之亦然。在接下来的内容里,你将会看到,A所表达的意涵就是I-Map,B所表达的意涵叫做因子分解。我们接下来首先给出几个基本概念。然后在此基础上进行命题的证明。

    1.3.2基本定义

    定义 1(贝叶斯网的语义)

    贝叶斯网结构(mathcal{G})是其节点代表随机变量(X_1,cdots,X_n)的一个有向无圈图(DAG)。令(Pa_{X_i}^mathcal{G})表示(X_i)(mathcal{G})中的父节点,(NonDescendants_{X_i})在图中的非后代节点变量。

    因此(mathcal{G})表示了如下称为局部独立性的条件独立性假设,并且记为(mathcal{I}_mathcal{l}left(mathcal{G} ight)):

    对每一个变量(X_i):(left(X_i perp NonDescendants_{X_i}|Pa_{X_i}^mathcal{G} ight))

    话句话是说,局部独立性表明,在给定父节点的条件下,每个节点(X_i)与其非后代节点条件独立。

    定义 2(I-Map)

    (mathcal{G})为一个网络图,记(mathcal{I}left(mathcal{G} ight))为这个网络图(mathcal{G})中蕴含的所有形如(left(Xperp Y|Z ight))的独立性断言集合。

    (P)为一个分布,记(mathcal{I}left(P ight))为在(P)中成立的所有形如(left(Xperp Y|Z ight))的独立性断言集合。

    若$mathcal{I}left(mathcal{G} ight)subseteq mathcal{I}left(P ight) (,则称)mathcal{G}$是一个I-Map(独立图)。

    定义2 事实上描述了我们证明任务的前半部分,即:分布(P)满足与图(mathcal{G})相关的局部独立性。正如我们从包含关系中所看到的:任何由(mathcal{G})断言的独立性,在(P)中必然成立;(P)中成立的独立性,未必能够体现在图(mathcal{G})中。接下来,我们需要对证明任务的后半部分形式化定义:(P)可以由与图(mathcal{G})相关的一系列条件概率分布表示。

    定义3 (因子分解)

    (mathcal{G})为定义在变量(X_1,cdots,X_n)上的一个贝叶斯网络。假如(P)可以表示为如下乘积:

    [Pleft(X_1,cdots,X_n ight)=Pi_{i=1}^nPleft(X_i|Pa_{X_i}^mathcal{G} ight) ]

    则称分布(P)是关于图(mathcal{G})的在同一空间上的因子分解。这个式子叫做贝叶斯网的链式法则,单个因子(Pleft(X_i|Pa_{X_i}^mathcal{G} ight))称为条件概率分布(CPD)或局部概率模型

    定义3 事实上描述了我们证明任务的后半部分,即:(P)可以由与图(mathcal{G})相关的一系列条件概率分布表示。正如我们从定义1中所看到的,(mathcal{G})中蕴含了如下的独立性论断:(mathcal{I}_mathcal{l}left(mathcal{G} ight)={ left(X_i perp NonDescendants_{X_i}|Pa_{X_i}^mathcal{G} ight):X_i in X_{1:n} })。我们假定(X_1,X_2,cdots,X_n)的顺序就是图(mathcal{G})的一个拓扑序。那么:

    [Pleft(X_1,cdots,X_n ight)=Pleft(X_1 ight)Pleft(X_2|X_1 ight)Pleft(X_3|X_1,X_2 ight)cdots Pleft(X_n|X_1,cdots,X_{n-1} ight) ]

    其中公式((10))对任何联合分布都是适用的。由于(X_1,X_2,cdots,X_n)是图(mathcal{G})的一个拓扑序,因此对于式子((10))中的任意一项(Pleft(X_i|X_1,cdots,X_{i-1} ight)),有${X_1,cdots,X_{i-1}}= Pa_{X_i}^mathcal{G} cup Z, Z subseteq NonDescendants_{X_i} (,根据独立性论断)mathcal{I}mathcal{l}left(mathcal{G} ight)(,有)Pleft(X_i|X_1,cdots,X{i-1} ight)=Pleft(X_i|Pa_{X_i}^mathcal{G} ight)(,进而有公式)(9)$.

    由定义3,我们可以给出贝叶斯网络的定义:

    定义4(贝叶斯网)

    一个贝叶斯网是一个偶对(mathcal{B} =left(mathcal{G},P ight)),其中(P)(mathcal{G})上的因子分解,并且(P)指定为关联在(mathcal{G})上节点的一系列条件概率分布,通常记为(P_mathcal{B})

    接下来,本文将对1.3.1节中的两个命题做等价性证明,这两个命题是:

    A: 分布(P)满足与图(mathcal{G})相关的局部独立性。

    B: (P)可以由与图(mathcal{G})相关的一系列条件概率分布表示。

    我们首先证明(ARightarrow B),再证明(ALeftarrow B).

    1.3.3 A=>B

    (ARightarrow B)的语义表述为:

    (mathcal{G})是定义在变量集(mathcal{X})上的一个贝叶斯网络,并且(P)是同一个空间上的联合分布。如果(mathcal{G})(P)的一个I-map,那么(P)根据(mathcal{G})因子分解。

    证明:

    假定(X_1,X_2,cdots,X_n)的顺序就是图(mathcal{G})的一个拓扑序。

    由概率的链式法则有:

    [Pleft(X_1,cdots,X_n ight)=Pleft(X_1 ight)Pleft(X_2|X_1 ight)Pleft(X_3|X_1,X_2 ight)cdots Pleft(X_n|X_1,cdots,X_{n-1} ight) ]

    由于(mathcal{G})为I-map,因此(mathcal{G})中蕴含了如下的独立性论断:(mathcal{I}_mathcal{l}left(mathcal{G} ight)={ left(X_i perp NonDescendants_{X_i}|Pa_{X_i}^mathcal{G} ight):X_i in X_{1:n} }).且(mathcal{I}_mathcal{l}left(mathcal{G} ight)subseteq mathcal{I}left(P ight))

    由于(X_1,X_2,cdots,X_n)是图(mathcal{G})的一个拓扑序,因此对于式子((11))中的任意一项(Pleft(X_i|X_1,cdots,X_{i-1} ight))(X_i)的所有父节点都在集合({X_1,cdots,X_{i-1}})中,并且这个集合不存在任何(X_i)的后代节点,即:${X_1,cdots,X_{i-1}}= Pa_{X_i}^mathcal{G} cup Z, Z subseteq NonDescendants_{X_i} (,根据独立性论断)mathcal{I}mathcal{l}left(mathcal{G} ight)(和条件独立性分解性质,有:)Pleft(X_i|X_1,cdots,X{i-1} ight)=Pleft(X_i|Pa_{X_i}^mathcal{G} ight)(,进而有公式)(9)$.

    得证

    1.3.4 B=>A

    (BRightarrow A)的语义表述为:

    (mathcal{G})是定义在变量集(mathcal{X})上的一个贝叶斯网络,并且(P)是同一个空间上的联合分布。如果(P)根据(mathcal{G})因子分解,那么(mathcal{G})(P)的一个I-map。

    证明:

    为了证明命题成立,只需证明:

    (Pleft(X_i | NonDescendants_{X_i},Pa_{X_i}^mathcal{G} ight)=Pleft(X_i |Pa_{X_i}^mathcal{G} ight))

    同样假定(X_1,X_2,cdots,X_n)是图(mathcal{G})的一个拓扑序.令(NonDescendants_{X_i}={X_{n_1},X_{n_2},cdots,X_{n_k}})其中,({X_{n_1},X_{n_2},cdots,X_{n_k}})({X_1,X_2,cdots,X_{i-1}})中的子集.令(Pa_{X_i}^mathcal{G}={N_1,cdots,N_m},N_i in {X_1,X_2,cdots,X_n})

    则:

    [Pleft(X_i | NonDescendants_{X_i},Pa_{X_i}^mathcal{G} ight)=frac{Pleft(X_i, X_{n_1},X_{n_2},cdots,X_{n_k},N_1,cdots,N_m ight )}{Pleft( X_{n_1},X_{n_2},cdots,X_{n_k},N_1,cdots,N_m ight )} ]

    上式的分子可以由因子分解的定义写成:

    [Pleft(X_i|Pa_{X_i} ight)Pleft(X_{n_1}|Pa_{X_{n_1}} ight )cdots Pleft(X_{n_k}|Pa_{X_{n_k}} ight )Pleft(N_1|Pa_{N_1} ight )Pleft(N_2|Pa_{N_2} ight )cdots Pleft(N_m|Pa_{N_m} ight ) ]

    其中,上式所有的(Pa_M)都不含(X_i)

    式子((12))分母可以写成:

    [sum_{x_i}Pleft(X_i, X_{n_1},X_{n_2},cdots,X_{n_k},N_1,cdots,N_m ight ) ]

    进一步地,对式子((14))写成式子((13))的形式则为:

    [Pleft(X_{n_1}|Pa_{X_{n_1}} ight )cdots Pleft(X_{n_k}|Pa_{X_{n_k}} ight )Pleft(N_1|Pa_{N_1} ight )Pleft(N_2|Pa_{N_2} ight )cdots Pleft(N_m|Pa_{N_m} ight )sum_{x_i}Pleft(X_i|Pa_{X_i} ight) ]

    其中(sum_{x_i}Pleft(X_i|Pa_{X_i} ight)=1),因此式子((15))变为:

    [Pleft(X_{n_1}|Pa_{X_{n_1}} ight )cdots Pleft(X_{n_k}|Pa_{X_{n_k}} ight )Pleft(N_1|Pa_{N_1} ight )Pleft(N_2|Pa_{N_2} ight )cdots Pleft(N_m|Pa_{N_m} ight ) ]

    公式((16))是公式((12))中的分母,公式((13))是公式((12))中的分子。故有:

    [(12)=frac{Pleft(X_i|Pa_{X_i} ight)Pleft(X_{n_1}|Pa_{X_{n_1}} ight )cdots Pleft(X_{n_k}|Pa_{X_{n_k}} ight )Pleft(N_1|Pa_{N_1} ight )Pleft(N_2|Pa_{N_2} ight )cdots Pleft(N_m|Pa_{N_m} ight )}{Pleft(X_{n_1}|Pa_{X_{n_1}} ight )cdots Pleft(X_{n_k}|Pa_{X_{n_k}} ight )Pleft(N_1|Pa_{N_1} ight )Pleft(N_2|Pa_{N_2} ight )cdots Pleft(N_m|Pa_{N_m} ight )}\=Pleft(X_i|Pa_{X_i} ight) ]

    得证。

    1.4 图中的独立性

    在1.3节中,我们解决了命题(A)与命题(B)的等价,但是前提是在贝叶斯网络这个大框架中。换言之,由贝叶斯网的语义定义,我们讨论的独立性假设集合是:(mathcal{I_mathcal{l}}left(mathcal{G} ight)),即对每一个变量(X_i):(left(X_i perp NonDescendants_{X_i}|Pa_{X_i}^mathcal{G} ight))。也就是说,1.3节为我们解决了这样的一个问题:虽然只是知道分布(P)根据(G)因子分解,但是仍然可以得出(P)满足(mathcal{I_mathcal{l}}left(mathcal{G} ight))的结论。

    接下来的问题是:在(mathcal{G}​)中是否存在其他形式的独立性,使得这些独立性对于根据(mathcal{G}​)分子因解的分布(P​)仍然成立?

    这就是本节要解决的问题。

    1.4.1 d-分离

    本节要讨论的是在什么情况下,(X)在给定(Z)时可能影响(Y).如果我们能够穷举所有情况,那么我们就可以进一步得出什么时候可以保证独立性条件(left(X perp Y|Z ight))在于贝叶斯网络(mathcal{G})相关的分布中成立。

    当影响经过(Z)可以从(X)流向(Y)时,迹(X ightleftharpoons Z ightleftharpoons Y)成为有效的。对有效迹分析结果总结:

    因果迹$X ightarrow Z ightarrow Y (:有效当且仅当没有观测到)Z$。

    证据迹(Xleftarrow Z leftarrow Y):有效当且仅当没有观测到(Z)

    共同的原因(Xleftarrow Z ightarrow Y):有效当且仅当没有观测到(Z)

    共同的作用(V-结构)(X ightarrow Z leftarrow Y):有效当且仅当观测到(Z)(Z)的后代。

    定义5(有效迹)

    (mathcal{G})是一个贝叶斯网络,且(X_1 ightleftharpoons cdots ightleftharpoons X_n)(mathcal{G})中的一条迹。令(Z)是观测变量的一个子集。在给定(Z)的情况下,加入:

    若有一个V结构(X_{i-1} ightarrow X_ileftarrow X_{i+1}),则(X_i)或其一个后代在(Z)

    迹上的其他节点都不在(Z)

    那么迹(X_1 ightleftharpoons cdots ightleftharpoons X_n)有效迹

    定义6(d-分离)

    (X,Y,Z)是图(mathcal{G})的三个节点集。在给定(Z)的情况下,假如任意节点(X_i in X)(Y_I in Y)之间不存在有效迹,那么(X)(Y)在给定(Z)时是d-分离的,记作(d-sep_mathcal{G}left(X;Y|Z ight))

    与d-分离相对应的独立性集合用(mathcal{I}left(mathcal{G} ight))表示:(mathcal{I}left(mathcal{G} ight)={ left(X perp Y|Z ight):d-sep_mathcal{G}left(X;Y|Z ight)})

    接下来我们直接给出一些有用的结论,对这些结论的直观理解,可以参考后面的示意图:

    在示意图中,矩形代表图(mathcal{G})的独立性集合。椭圆代表的是根据(mathcal{G})因子分解的分布。黑色圆形代表蕴含在各个组份中的独立性。

    结论1(可靠性)

    如果分布(P)根据(mathcal{G})因子分解,那么(mathcal{I}left(mathcal{G} ight) subseteq mathcal{I}left(P ight)).

    从图上来理解,可以看到(P^1,P^2,P^3)都是图(mathcal{G})的因子分解,它们都包含了图(mathcal{G})的d分离独立性集合。

    注意到(mathcal{I}left(mathcal{G} ight)={ left(X perp Y|Z ight):d-sep_mathcal{G}left(X;Y|Z ight)}),而(mathcal{I}left(P ight)={ left(X perp Y|Z ight)})

    因此,结论1表明:如果给定某个(Z)时,找到的两个节点(X)(Y)是d-分离的,那么可以保证,在给定(Z)时,它们实际上是条件独立的。(如示意图中所表达的含义:)

    结论2(完备性)

    (mathcal{G})是一个贝叶斯网络。如果给定(Z)时,(X)(Y)(mathcal{G})中不是d-分离的(例如示意图中的“其他独立性1”),那么给定(Z)时,(X)(Y)在某些可以在(mathcal{G})上因子分解的分布中(例如示意图中“其他独立性1”相对于(P^2))相互依赖。

    这个命题的逆否命题为:在所有可以在(mathcal{G})上因子分解的分布(P)中,如果((Xperp Y |Z)),那么有(d-sep_mathcal{G}(X;Y|Z)).对应于示意图上的解释为:对(P^1,P^2,P^3)均成立的独立性(事实上就是三个椭圆相交的黑色圆),必然是图(mathcal{G})中的d分离的子集。

    事实上,结论1描述的是可靠性,结论2描述的是完备性。综合结论1和结论2,我们可以得到结论3:

    结论3(弱等价)

    对于几乎所有在(mathcal{G})上因子分解的分布(P),我们有(mathcal{I}(P)=mathcal{I}(mathcal{G})).

    结论3在示意图上的解释为:忽略掉了其他独立性1,2,3,4.

    这里写图片描述
    (在示意图中,矩形代表图的独立性集合。椭圆代表的是根据因子分解的分布。黑色圆形代表蕴含在各个组份中的独立性。)

  • 相关阅读:
    JAVA-JSP内置对象之response对象
    JAVA-JSP内置对象之request对象的其他方法
    JAVA-JSP内置对象之request获得封装所有参数值的Map
    JAVA-JSP内置对象之request获得参数的所有参数值(多个值)
    JAVA-JSP内置对象之request获得参数的参数值(一个值)
    Animator根骨骼运动原始实现代码
    Unity胶囊体的碰撞检测实现
    Animation Play/Stop测试
    texconv下载以及使用命令
    unity替换mesh测试
  • 原文地址:https://www.cnblogs.com/xiangguosun/p/6785386.html
Copyright © 2011-2022 走看看