可解释人工智能导论
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 贝叶斯网络

贝叶斯网络[53,54]是一类重要的概率图模型(Probabilistic Graphical Model)。[1]顾名思义,概率图模型是一类将概率论与图论有机融合的机器学习方法。在本章后面会提到,在多个随机变量的联合分布建模中,如果不考虑变量之间的结构关系,直接对它们进行概率建模和计算,则往往有非常高的时间复杂度和空间复杂度。相应地,概率图模型提供了一种直观、有效的建模语言,简洁地描述了多变量的联合分布中的条件独立性,并提供了一套通用的计算框架。从原理上看,以贝叶斯网络为代表的概率图模型要解决以下三个基本问题。

表示(representation):如何用一个模型有效地表示问题的不确定性,同时充分考虑领域知识(如变量之间的直接依赖关系)等?

推断(inference):假设已经有一个合适的模型,如何依据该模型回答一些和概率分布有关的问题?

学习(learning):如何从给定的训练数据中估计一个合适的模型?

假设有d个随机变量X=(X 1,···,X d),一个贝叶斯网络的表示有两个关键要素,即一个有向无环图G和一个联合概率分布p。两个要素的具体描述如下。

有向无环图(Directed Acyclic Graph)G=(VE):一个由点的集合V和有向边的集合E组成的图,任意iV对应一个随机变量X i,|V|=d,任意一条有向边eE表示两个随机变量之间具有直接的依赖关系,并且G中不存在环[2]

•概率分布pX):一个包含所有随机变量的联合概率分布pX 1,···,X d)。首先通过一个简单的例子来直观地介绍贝叶斯网络的原理及其在可解释性方面的优势。

实例2.1食物网).给定一个由鹰、狐、蛇、鼠、兔和草等物种组成的系统,用机器学习模型来描述这个系统的情况。首先,注意到每个物种的发展情况存在多种可能(例如草可能繁茂也可能稀疏),这种不确定性可以用随机变量来刻画。如图2-2(a)所示,依次将各物种对应的随机变量记为AF。为了简单,考虑取值为0或1伯努利随机变量,1表示族群发展好,0表示族群发展不好。整个系统的情况可以由6个伯努利随机变量构成的联合分布pABCDEF)来描述。从生物学知识出发,进一步考虑这些变量之间的直接依赖关系:摄食关系。这种有规律的依赖关系可以用一个有向无环图清晰地、可解释地描述,如图2-2(b)所示。例如,A指向C的边就描述了鹰吃蛇这一摄食关系。这种通过有向边来描述概率分布中变量之间直接依赖关系的图就是贝叶斯网络。在本节的后续内容中会看到,基于图的拓扑结构,联合概率分布可以分解为若干个局部的条件概率的乘积形式,方便表示与计算。

结合实例2.1,贝叶斯网络通过图G的拓扑结构用一种直观、可解释性强的方式表达了随机变量之间的直接依赖(或条件独立性)关系,通过概率分布pX)对所有随机变量的联合概率分布进行精准的刻画。因此,在原理上,对于同一个贝叶斯网络,这两个要素之间必须满足某种等价关系来避免“自相矛盾”的情况,详细情况将在2.1.1节具体介绍。

图2-2 贝叶斯网络示意图

贝叶斯网络的表示,既考虑了变量的不确定性,又可以灵活地引入问题的领域知识。在实例2.1中,不同物种之间的连接是稀疏的,每条边对应的变量之间的直接作用关系是根据生物知识得到的,从机理上就具备可解释性,并且在表示和推断上具有高效性(分别见2.1.1节和2.1.2节)。

假设已经找到了一个合适的联合概率分布,推断的任务涉及一些和概率相关的问题。一个经典的推断任务是在给定分布中一些变量的观察值时,计算未观察变量的条件概率分布。在实例2.1中,如果观察到鼠群发展良好,可以推断鹰的生存情况,即计算条件概率分布pA|D=1)。在2.1.2节中会介绍其他的推断任务和经典的推断算法。

学习的任务是从给定数据中估计概率分布pX)。一般地,考虑在给定图结构的情况下,估计pX)中的未知参数,称为参数学习;如果希望同时学习图G的结构,则称为结构学习。2.1.3节将介绍贝叶斯网络参数学习的主要方法。

2.1.4节将结合贝叶斯规划学习方法展示贝叶斯方法在可解释性方面的独特优势。通过恰当地表示人类手写字符过程,使用合适的推断和学习算法,该方法可以用完全可解释的方式,从少数几个手写字符图像中快速学习到与符号相关的概念,从而精确地分类图像和合成逼真的新图像。

2.1.1 贝叶斯网络的表示

本节介绍贝叶斯网络的表示的两个关键要素,即有向无环图G和联合概率分布p,以及二者之间的等价性。此外,本节会进一步地展示这种表示机理在可解释性和节省参数方面的优势。

一个贝叶斯网络是一个有向无环图,每个节点对应一个随机变量。在贝叶斯网络中,边代表变量之间的直接作用关系。沿用本章之前的符号,记所有的随机变量为X=(X 1,···,X d),πk为节点X k所对应的父节点集合,Xπk为对应的随机变量的集合,贝叶斯网络定义的联合概率分布可以写为因子连乘形式:

依照式(2-1),图2-2(b)中的贝叶斯网络定义的联合概率分布可以表示为局部因子的乘积:

式(2-1)和式(2-2)中,每个因子表示对应种族和其在食物网中的被摄食关系。式(2-2)中的因子化形式是简洁的、易于理解的。对比而言,如果没有任何领域知识,也不对变量间直接依赖关系做任何假设,那么,基于链式法则,图2-2(a)中6个变量的联合概率分布只能写成如下的复杂的、不直观的形式:

除可解释性以外,式(2-2)中因子化的形式也会节省参数的数量。表示一个伯努利变量只需要1个均值参数,表示一个形如pE|AB)的条件概率需要考虑AB的所有取值情况,也就是需要22个参数,那么表示式(2-2)中的联合概率分布一共需要1+1+21+22+22+22=16个参数。而在一般情况下,表示式(2-3)中的联合概率分布需要1+2+22+···+25=63个参数。不严格地说,贝叶斯网络的边越稀疏,单个变量依赖关系总数的上界越小,需要的参数量就越少。

一个自然的问题是,式(2-1)中这种简洁的因子乘积形式和贝叶斯网络中的图结构表达的依赖关系是否具有等价性。为了严格说明这个问题,需要引入条件独立性(Conditional Independence)的概念。考虑三个随机变量ABC,如果三者满足

则称变量AB在给定C的情况下条件独立,记为

可以把上述条件独立性的定义中的随机变量替换为随机变量的集合。在这种定义下,可以讨论在给定一组变量的情况下,其他两组变量之间的条件独立性。此外,令变量C为空集,可以得到AB两个随机变量之间独立性是条件独立性的特例。

贝叶斯网络中有三种条件独立的基本结构,如图2-3所示,分别介绍如下。

图2-3 贝叶斯网络中表达条件独立性的三种基本结构。第一行的三个结构并未观测到任何变量,第二行的三个结构中C变量均被观测到(用阴影表示)

(1)“共同父亲”结构。第一种结构如图2-3(a)所示,变量AB有共同的父亲,比如“下雨”(C)大概率会导致“地面湿”(A)和“行人打伞”(B),如果观察到今天的天气情况(例如没有下雨),那么地面是否是湿的与行人是否打伞就没有直接关系;反之,如果没有观察到天气情况,那么地面湿就有可能与行人打伞有关系。因此,这种结构对应的条件独立性关系为AB|C。在实例2.1中,兔、鼠和狐之间也具有这种结构,具体如图2-2(b)所示的EDB变量与它们之间的连接。

(2)“级联”结构。第二种结构如图2-3(b)所示,变量按照级联结构相互作用,比如“吸烟”(A)的人一般有更高的概率患上“肺病”(C),然后有更大的可能性“去医院做肺部检查”(B),在没有观察到C的情况下,AB之间有很强的依赖性。但是,如果已知一个人是否患有肺病,那么他“吸烟”与“去医院做肺部检查”一般没有很强的直接关系。例如,一个人有肺病,无论他是否吸烟,都有可能去医院做检查。因此,这种结构对应的条件独立性为AB|C。在实例2.1中,鹰、兔和草之间也具有这种结构,具体如图2-2(b)所示的AEF变量与它们之间的连接。

(3)“V-形”结构。第三种关系如图2-3(c)所示,一个变量有两个父节点。比如“草地是否是湿的”(C)会受到“下雨”(A)和“灌溉作业”(B)的共同影响,在没有观察到草地的湿润情况下,“下雨”与“灌溉作业”没有直接的作用关系;但如果已知草地是湿的,那么这个时候“下雨”和“灌溉作业”就变得相关了,因为如果没有“下雨”,那么最近没有进行“灌溉作业”的可能性就很小;反过来,如果最近没有进行“灌溉作业”,那么最近没下过雨的可能性会很小。这种关系被称为“通过解释消除”(explain away)——当观察到变量C时,AB之间变得相互依赖,已知其中一个变量(如A),会“通过解释消除”另外一个变量(如B)。因此,这种V-形结构对应的条件独立性为AB。在实例2.1中,兔、鼠和草之间也具有这种结构,具体如图2-2(b)所示的EDF变量与它们之间的连接。

基于上述三种基本结构,可以判定一个有向无环图G上的所有的条件独立性。可以证明,满足一个贝叶斯网络对应的所有的条件独立性的概率分布的集合与满足式(2-1)中因子化形式的概率分布的集合是相等的。对于上述三种结构满足式(2-4)的推导及上述等价性的证明,感兴趣的读者可以参考本章最后的拓展阅读,此处不再赘述。

2.1.2 贝叶斯网络的推断

给定一个参数已经学习好的贝叶斯网络,可以通过推断来回答关于概率的问题。推断任务主要有以下几类。

(1)似然(Likelihood)。观察到一些变量EX(例如E=(X k+1,···,X d))的取值e,计算其概率(即似然)pe)= px1,···,x ke),其中e又称为证据(Evidence)。结合实例2.1,给定如图2-2(b)所示的贝叶斯网络,一个似然推断任务是计算“鼠”和“鹰”种群发展良好的概率,即计算pA=1,D=1)。

(2)条件概率(ConditionalDistribution)。给定一些变量EX的观察值(即证据)e,计算未观察变量YX\E的条件概率pY|e)==。这种在观察到数据之后的条件概率一般也称为Y后验分布(PosteriorDistribution);对应的pY)是未观察到数据之前的先验分布(Prior Distribution)。结合实例2.1,给定如图2-2(b)所示的贝叶斯网络,一个后验推断问题是假设“鼠”的种群发展良好,那么“鹰”的种群发展如何?即计算pA|D=1)。

(3)最大后验概率取值(M axim um Posterior)。给定一些变量EX的观察值(即证据)e,计算未观察变量YX\E的最大概率取值ˆy=argmax y pY=y|e)。结合实例2.1,给定如图2-2(b)所示的贝叶斯网络,一个最大后验概率取值推断问题是假设“鼠”的种群发展良好,那么“鹰”最有可能的发展情况如何?即计算argm ax a∈{0,1}pA=a|D=1)。

上述三种推断任务在机器学习中经常出现:似然推断任务出现在各类模型的参数学习中;如果模型中有未在数据中观测到的变量,那么往往需要推断对应变量的后验概率;分类模型的预测过程可以理解为推断最大后验概率的过程。下面就从最基本的变量消减(Variable Elim ination)开始介绍精确推断(Exact Inference)方法。顾名思义,精确推断方法严格地计算所有的概率分布,在过程中不存在近似。

以图2-4为例,目标是推断似然pD=d)。首先,根据式(2-1)中贝叶斯网络的因子化形式,模型定义的联合分布可以写作pabcd)=papb|apc|bpd|c)。然后,为了计算似然pd)=

pabcd),基于贝叶斯网络中乘积因子的局部特性,在计算中可以利用“加法”和“乘法”的交换律,对运算过程按一定顺序进行重组,达到加速计算的效果。例如,可以选择依次“消减”变量ABC,该似然的计算过程如下:

图2-4 变量消减示例:一个链式贝叶斯网络

从这个计算过程能够看到,通过交换计算顺序,逐次消减了变量,且每次消减时都是对局部的乘积因子进行计算的,例如计算pb)时只需考虑pa)和pb|a)。这种局部计算的复杂度一般是比较小的,因此,整个算法的复杂度就可以显著降低。假设有n个伯努利变量,则每个局部计算的复杂度为O(1)(即不随n变化),整个算法的复杂度为On)。作为对比,如果不考虑网络的结构,暴力地对联合分布计算边缘概率,那么其复杂度为O(2n)。

上述计算过程的一般性描述被称为加-乘算法(Sum-productA lgorithm),其扩展版本可以应用到一般的贝叶斯网络中。需要注意的是,并非在所有的贝叶斯网络中该算法都是多项式时间复杂度的。和2.1.1节中对参数量的讨论类似,不严格地说,贝叶斯网络的边越稀疏,单个变量依赖关系总数的上界越小,计算复杂度越低。

变量消减的过程也可以看成一种消息传递(Message Passing)的过程。如在式(2-6)的计算中,消息(这里也就是对应的边缘概率分布)就从A依次传递到D。在这种视角下,如果同时有多个推断任务,那么彼此之间的消息可以重复使用,不必重复计算多次。基于这种思路,消息传递方法利用每个节点向邻居传递消息,只需正反两次传递就可以同时处理多个推断问题。上述计算过程也可以理解为动态规划算法的特例,因此可以被适配到其他的推断任务,如最大后验概率推断。消息传播方法在某些简单的贝叶斯网络上可以做精确推断,但是在一般的贝叶斯网络上需要一些额外的操作来保证其精确性,并且在最坏的情况下时间复杂度也是呈指数级别的。

和精确推断方法相比,近似推断(Approximate Inference)方法可以在一般的贝叶斯网络上快速地给出一个近似结果。近似推断方法主要有两类,第一类是基于采样的方法,特别是马尔可夫链蒙特卡洛(Markov chain Monte Carlo)方法[55],它构建一个采样的链,如果采样无穷次,就可以获得目标后验分布中的采样,但是在实际中一般用有限步的采样作为近似。第二类是变分推断(Variational Inference)方法[56],其主要思想在于在一个比较易于计算的分布族中找到离真正的后验分布最近的一个来作为近似后验分布,把推断问题转化为优化问题。这两类方法各有所长,被广泛应用在各种机器学习问题中。

限于篇幅,这里不能展开叙述消息传递方法、其他精确推断方法和近似推断方法,感兴趣的读者可以参考本章最后的拓展阅读。

2.1.3 贝叶斯网络的学习

贝叶斯网络的学习任务分为参数学习和结构学习。参数学习即假设贝叶斯网络结构已经给定,估计最优的参数或者参数空间上的一个概率分布;结构学习则估计最优的结构。

在参数学习中,最常用的思路是寻找一个点估计(PointEstimate),就是在参数空间Θ中找到拟合训练数据“最好”的点θ*。这里的“最好”是用概率分布之间的某种统计散度(StatisticalDivergence)衡量的。任何一个统计散度都是非负的,且仅当两个分布相等时,两者间的散度等于零。假设所有的变量都是可观测变量,贝叶斯网络的学习就是一个在参数空间中,优化数据分布和模型分布的某种统计散度的优化问题。由于模型分布未知,所以,往往需要对统计散度加减一些常数以消掉未知量,同时用有限的数据样本估计数据分布的期望。最常用的一种学习准则称为最大似然估计(Maximum Likelihood Estimate),它等价于最小化Kullback-Leibler(简写为KL)散度。给定N个独立同分布的样本组成的数据集D=,令θi表示条件概率分布pX i|Xπi)的参数,可以得到如下最大似然估计:

可以利用贝叶斯网络的结构,对每个θi分别计算,其优化目标为

贝叶斯网络中可能存在隐变量(LatentVariables),即数据中不存在的变量。在学习中需要对隐变量进行求和或者积分,得到模型分布在可观测维度上的边缘分布,然后做最大似然估计。这可以归结为2.1.2节中提到的似然推断任务。结合实例2.1,如果训练数据中仅有对于“鼠”的观察,希望学习图2-2(b)中的贝叶斯网络的参数,则需要先计算或者估计pE),再进行学习。

数据中的噪声或者恶意扰动对于单一模型的影响是比较大的,这给点估计的实际应用带来了很大的安全隐患,如图1-3所示。完全贝叶斯方法(full Bayesian Approach)进一步地刻画模型的不确定性,通过拟合参数空间上的概率分布对无穷个模型的预测求平均来提高算法的鲁棒性,给出预测的不确定性估计,提醒使用者相关算法的适用边界。

完全贝叶斯方法的思路是把模型参数看作一个全局的随机变量,事先给定一个简单的概率分布pθ)(如果参数是连续变量,则往往取标准高斯分布),称为先验分布(PriorDistribution),然后应用贝叶斯定理(Bayes'Theorem)计算后验分布pθ|D):

沿用2.1.2节中的术语,pD|θ)是似然,pD)是证据的概率,往往是一个积分(即pD)=∫pθpD|θ)dθ)或者求和的形式,是完全贝叶斯方法在高维模型空间中的主要计算挑战。

可以看到,完全贝叶斯方法不是寻找单一的最优模型,而是估计一个参数上的后验概率分布,这就把学习问题转化成了推断问题(learningasinference)。因此,也可以在图模型中把完全贝叶斯方法体现出来。从图结构来看,就是加入了一个对应参数的隐变量,它指向所有的可观测数据。图2-5展示了一个单变量模型上的完全贝叶斯方法对应的贝叶斯网络。

图2-5 一个单变量模型上的完全贝叶斯方法对应的贝叶斯网络

点估计给出了一个(近似)最优的模型,该模型可以直接用来预测等任务。而在使用完全贝叶斯方法做预测时,应该依照后验概率分布综合地考虑所有模型,求出一个平均预测。在实际应用中,往往通过对后验概率分布采样若干个模型来估计平均预测。在一般情况下,这种平均预测的估计比单一模型的预测要更鲁棒。此外,多个模型的采样还能给出预测不确定性(如不同模型的预测方差)的估计。模型在方差过大时可以拒绝做出预测,也可以反馈使用者,从而有效地避免一些隐患。

贝叶斯网络的结构体现了使用者对相关变量的领域知识,往往蕴含了因果关系等。如果使用者对于相关的变量之间的关系并没有明确的认知,而只有数据,那么结构学习方法[57]可以自动地从数据中学习到(近似)最优的结构。需要注意的是,结构学习和贝叶斯网络的参数学习是一样的,通常只是拟合数据,并不能学到真正的因果关系。此外,一般而言,结构学习的时间复杂度是非常高的。对结构学习感兴趣的读者可以参考本章最后的拓展阅读,此处不再赘述。

2.1.4 贝叶斯规划学习

本节关心小样本学习(Few-shot Learning)[58]问题,即在仅给定几个数据的情况下,如何学习一个合适的模型来完成预测等任务。小样本学习的主要动机是,人类可以在给定一个新事物的几个样本的情况下迅速理解其构成要件,并很快地记住这种事物。举例而言,人只需要看几遍就可以学会一个新字。这种快速学习能力源于人在识字过程中的拆分和再重组。很多字共用同样的基本单元,学习一个新字只是学习如何组合这些基本单元。但是,大部分机器学习方法,特别是深度学习,需要大量的数据才能够学习到新的类别,和人相比无疑是不“智能”的。

贝叶斯规划学习(Bayesian Program Learning,BPL)[59]可以在一定程度上解决上述问题。BPL是一个充分可解释的层次化贝叶斯模型,可以在仅给定几个样本的情况下完成手写体字符(图2-6)的识别与生成,发表在《科学》杂志的封面上。下面围绕着表示、推断和学习这几个部分来具体介绍BPL。

图2-6 手写体符号数据[59]

1.表示

如图2-7所示,BPL通过一个层次化贝叶斯模型,用完全可解释的方式建模人类写字的过程。这个过程分为符号/概念层次(type level)和实体层次(token level)。在概念/符号层次中,BPL可以随机采样不同的基本单元(如横、竖等)来组成逐层次地构建子部分(基本单元进行扭曲和旋转)、部分(子部分的组合,从落笔到起笔形成),然后采样部分和部分之间的关系,最终组成一个字的概念。举例而言,汉字“十”的概念就是由一横、一竖和二者中间交叉的关系定义的。在实体层次中,给定一个已经确定的概念,BPL描述逐步书写一个具体实体的过程。从一个概念到实体中也有很多随机性,这体现在每个人的书写风格和其他的环境因素上,也可以用概率分布来表示。例如,可以用一个高斯分布来描述第一笔的落笔位置等。总之,BPL用一种完全可解释的方式刻画了人类从思考写什么字到具体怎么写这个字的过程。

图2-7 BPL用完全可解释的方式建模人类写字的过程[59]

2.推断

给定一张实体的图片,BPL需要推断它对应的部分、子部分和关系的后验概率分布。首先,BPL基于一些已有的字体分析程序,从图片中提取实体的骨架(只保留了笔画的方向而去掉了笔画的粗细)和关键节点(起止点和交叉点)。然后,BPL从骨架的左上角出发沿着骨架进行随机游走,在交叉点选择后续路线时会考虑笔画的先验知识,如尽量沿着角度改变较小的方向走等。通过随机游走,BPL可以抽取一些可能的笔画组合来解释当前的实体,最终考虑所有可能的笔画组合,结合它们和实体的匹配程度,得到一个离散的近似后验分布。

3.学习

和一般的方法不同,BPL的学习相对复杂,考虑的是学习如何学习(Learning to Learn)问题[60]。简单地说,BPL的学习分为两个层次:第一个层次是同种字符之间的,类似于传统的学习;第二个层次是跨越字符的,也就是“学习如何学习”。具体而言,BPL首先在很多不同符号的训练数据和测试数据上进行训练,每种符号的数据是少量的。这个训练过程会推断BPL模型参数的后验分布。在最终的测试中,会给出一个或者几个新的训练数据,这些数据是一个没有见过的符号的实体,BPL要把在其他符号上的训练经验迁移到新的符号上,快速地进行学习。

BPL在若干个Learning to Learn的问题上进行了测试。第一个任务是给定一个新的训练数据的分类任务(One-shotClassif ication),在这个任务上,BPL的错误率是3.3%,而经过训练的人的错误率是4.5%,一个基准的卷积神经网络的错误率是13.5%。第二个任务是给定一个新的训练数据的生成任务,在这个任务上,BPL合成的数据和人写的新实体在另一个人看来是难以区分的,通过了视觉图灵测试(Visual Turing Test)。最后,在给定了一个符号(如一个藏文)之后,不需要知道其他相关的符号(如其他藏文),BPL可以通过采样的方式生成类似于这个符号风格的新符号,在一定意义上生成了新的概念。从BPL的结果中可以看到,基于丰富的领域知识,贝叶斯方法有很强的可解释性,并且极大地减少了对训练数据的需求,在某些方面体现了与人类智能媲美、相通的能力。