【文献笔记】Transfer Learning for Bayesian Networks
Roger Vel´asquez, L. Enrique Sucar, and Eduardo F. Morales
National Institute of Astrophysics, Optics and Electronics, Computer Science Department,
Luis Enrique Erro 1, 72840 Tonantzintla, M´exico
Abstract
在一些领域中,通常会有来自不同但密切相关的问题的数据。例如,在制造过程中,许多产品遵循相同的工业流程,但条件不同;或者在工业诊断中,有类似规格的设备。在这些情况下,对于某些场景通常有大量数据,而对于其他场景则很少。为了在罕见的情况下(rare cases)学习准确的模型,需要使用来自类似案例的数据和知识;一种被称为“迁移学习”的技术。本文提出了一种同时考虑结构学习和参数学习的贝叶斯网络迁移学习方法。对于结构学习,我们使用条件独立测试(conditional independence tests),通过将来自目标域的度量与来自一个或多个辅助域的度量结合起来,使用条件独立度量的加权和。对于参数学习,我们比较了两种概率聚合(probability aggregation)技术,将目标域估计的概率与辅助数据获得的概率相结合。为了验证我们的方法,我们使用了三个通常用于评估学习技术的贝叶斯网络模型,并通过改变结构和参数来生成每个模型的变体。然后,我们用一个小数据集学习其中一个变量,并将其与来自其他变量的信息结合起来。实验结果表明,当我们从类似问题中迁移知识时,在结构和参数方面有了显著的改善。
1 Introduction
在许多机器学习应用中,假设有足够大的数据集,可以从中导出可靠的模型。然而,在某些领域,很难收集到足够的数据,例如,在制造业中,一些产品很少生产。专家在遇到新领域的问题时,利用他们在相关领域的经验来解决问题。最近,机器学习社区对使用相关领域的数据越来越感兴趣,特别是在可用数据不足的情况下[2,11,1],这种方法被称为迁移学习。然而,这在学习贝叶斯网络方面还没有被探索过。本文提出了贝叶斯网络的迁移学习。
贝叶斯网络的学习主要包括两个方面:结构学习和参数学习。我们的结构学习算法将从目标域数据中获得的依赖度量与从辅助域数据中获得的依赖度量相结合。基于PC算法的一种变体[9],我们提出了一个考虑到这些度量之间一致性的组合函数。
PC算法(PC Algorithm)是一种用于结构学习的贝叶斯网络算法,由Peter Spirtes和Clark Glymour提出,PC算法的名称即源自他们的名字首字母。该算法的主要目标是从数据中自动学习贝叶斯网络的结构,即确定哪些变量之间存在直接的条件依赖关系。PC算法主要分为两个阶段:邻域发现阶段和定向阶段。
参数学习算法采用聚合过程,将目标域估计的参数与辅助数据估计的参数相结合。基于之前的线性组合技术,我们提出了两种变体:(i)基于距离的线性池(distance - Based linear pool, DBLP),它考虑了辅助参数与目标参数的距离;(ii)局部线性池(Local linear pool, LoLP),它只包括与目标参数接近的辅助参数,由每个辅助域的数据量加权。在实验中,我们比较了两种方法,并将基本线性池作为基线。
在贝叶斯网络迁移学习中,参数学习的聚合过程(Parameter Aggregation Process)指的是从源领域和目标领域的数据中学习并整合贝叶斯网络的参数。这一过程包括将从源领域中学习到的参数与目标领域中的数据结合,以优化和更新目标领域的贝叶斯网络参数,从而提高模型在目标领域的表现。
我们通过实验评估了结构和参数迁移学习技术,并将结果与仅使用目标域的数据进行了比较。为此,我们考虑了3种常用的基准学习算法(Alarm, Boblo和Insurance),并通过改变原始模型的结构和参数来生成辅助模型。我们从原始网络及其变体中生成数据,然后通过组合这些数据集来测试我们的方法。我们评估了结构(根据编辑距离)和参数(根据均方误差),并将获得的模型与原始模型进行了比较。当目标网络的数据量较小时,结构和参数两方面都有明显的改善。此外,随着辅助数据大小的增加,改进的量也会增加。这些结果表明,迁移学习是一种非常有用的学习BN的方法 。
本文的结构如下。第2节概述了贝叶斯网络的学习技术。第三节介绍了相关工作。第4节和第5节分别介绍了结构和参数学习算法。实验结果见第6节。最后,在第7节给出结论和未来的研究方向。
2 Learning BNs
贝叶斯网络(BN)[7]表示一组n个(离散)变量x1, x2,…,xn的联合分布。表示为有向无环图和一组条件概率表(CPT)。每个节点(对应于一个变量)都有一个关联的CPT,该CPT包含给定图中父变量的变量的每种状态的概率。网络的结构暗示了一组条件独立断言,这些断言赋予了这种表示的力量。
网络的学习包括两个方面:结构的学习和参数的学习。当结构已知时,参数学习包括从数据中估计CPT。对于结构学习,主要有两种类型的方法:(i)搜索和评分,(ii)条件独立性测试。第一类方法[3]在网络结构空间上执行启发式搜索,从一些初始结构开始,并在每一步生成结构的变化。最佳结构是根据一个分数来选择的,这个分数衡量了模型对数据的表现程度,常见的分数是BIC[3]和MDL[5]。第二类方法是基于测试变量之间的条件独立性,并以这种方式在图中添加或删除弧。这种类型的一种流行的方法是PC算法[9]。
PC算法从一个完全连通的无向图出发,在给定其他变量的某个子集的情况下,使用条件交叉熵度量来度量每对变量的条件独立性。如果该度量低于根据某个置信水平设定的限制,则消除变量对之间的弧线。这些测试反复进行,直到没有更多的弧线可以消除。剩余弧的方向是根据变量三元组之间的条件独立性测试来设置的。
两种结构学习方法,包括它们的变体,都需要足够的数据来产生准确的结果。例如,PC算法假设有足够的数据进行准确的统计检验;像BIC和MDL这样的分数也需要一个有代表性的数据集来提供良好的估计。
3 Related Approaches
弥补数据不足的另一种方法是纳入专家知识。[8]中提出了这个方向的最新方法,该方法考虑了多个专家的组合。他们开发了一种贝叶斯方法,在这种方法中,几个专家的知识被编码为可能结构的先验分布,数据被用来改进这种结构并学习参数。专家知识被表示为“元”贝叶斯网络,其中专家断言被编码为两个变量之间存在弧(及其方向)的概率。通过这种方式,利用专家的知识来获得结构上的概率分布。采用爬坡搜索法获得最佳结构。然后,根据数据估计该结构的参数。在我们的工作中,我们只使用数据,不包括专家知识。在他们的工作中,他们将几个“弱”专家结合起来,原则上获得一个“强”模型;而我们将知识(基于数据)从一个强模型转移到一个弱模型。
其他工作[6]考虑了为相关任务学习贝叶斯网络结构的问题。他们认为相关问题有k个数据集,并提出了一种评分和搜索方法来同时学习BN结构,每个任务一个。假设不同网络的参数是独立的,它们定义了给定k个数据集的k个结构的联合概率分布。先验是这样定义的,它会惩罚彼此不同的结构。基于这个分数,他们定义了一个贪婪搜索算法来寻找最佳结构,其中通过添加/删除/反转每个结构的链接来获得新的配置。与这种方法相反,我们的建议是基于对每个数据集分别获得的独立性测试,然后将其组合起来,从而产生更简单,更有效的方法。同样,目标是不同的,我们使用来自一个领域的数据来改进其他相关领域的模型;他们同时学习不同问题的模型。我们的方法分为两个阶段,结构学习(第4节)和参数学习(第5节),如下所述。
4 Structure Learning
在本文中,我们提出了一种结合相关领域辅助数据集信息的BN结构学习算法,实现了基于依赖测试的知识转移方法。当我们有一个小的数据集和相关问题的辅助数据时,该方法可以看作是学习BN的PC算法的扩展。让我们假设有一个小数据集D0为兴趣域;n个更大的数据集,D1,…,Dn,来自辅助域。所有定义域的变量集合都是一样的,X1,…,Xm。 对于制造过程,例如钢管生产,这是一个合理的假设,其中每个管遵循相同的制造过程,但具有不同的炉条件或化学成分。 在未来的工作中,我们将探索如何将数据与不同(尽管相似)的变量集结合起来。
兴趣域相关的是BN模型BN0,其结构为G0,参数为P0。那么问题变成从D0,...,D1,…,Dn获取BN0,这样它就近似于我们将得到的模型,如果我们有一个大的数据集D0。我们从学习BN的结构开始。
根据PC算法,我们从一个完全连接的无向图开始,并使用条件交叉熵度量(conditional cross entropy measure)来测量给定其他变量的某些子集的每对变量的条件独立值。我们为目标域I0中的每一对变量获得一组度量,并以类似的方式为每个辅助域I1,…,In获得一组度量。然后,我们结合这些方法构建目标域G0的结构。
在查看如何组合独立性测试的结果之前,我们为这些测试定义一个置信度度量。PC算法中使用的交叉熵度量取决于数据集的大小;可以看出,该检验的误差与logN/N渐近成正比,其中N为数据集的大小[10]。在此基础上,我们定义如下函数来估计给定条件集S下两个变量X和Y之间独立性检验的置信度:

式中T = |X|×|Y|×|S|。如果差变为负数,则设α = 0.005。该函数与测试的置信度成正比(与数据集的大小成反比)。在合并目标数据和辅助数据之前,我们使用这个术语来量化它们的独立性度量。
首先,我们估计每个辅助数据集的独立性测试与目标域的相似度。选择最相似的域,例如Ij。然后将本域与目标域的独立性度量结合使用如下公式:

其中,如果独立性检验为正(变量是独立的),sgn(I)为+1,否则为-1。如果辅助数据和目标数据的测试结果相同,w为1,否则为0.5。最后,我们使用组合独立性测度(Ic)的结果来构建BN的结构。
出于效率的考虑,我们目前将条件集S限制为维度1。即使有这样的限制,我们也得到了实验中所描述的良好结果。一旦我们有了模型的结构,我们也使用辅助域的信息来估计参数。
5 Parameter Learning
给定一个贝叶斯网络结构,我们需要指定所有的条件概率表。本文的思想是利用多个数据源之间的聚合函数(aggregation functions)来填充所有的条件概率表。当我们想要组合来自不同贝叶斯网络的条件概率时,有几种情况需要考虑:
- 组合具有相同变量(即相同子结构)的CPT。这是最简单的情况,我们不需要在CPT中进行任何转换来应用聚合函数。
- 将CPTs与辅助子结构中更多亲本结合。在这种情况下,我们可以对附加变量进行边缘化,以获得目标子结构中所需的条件概率值。例如,如果我们要将目标网络的P(X|Y,Z)与辅助网络的P(X|Y,Z,W)结合起来,我们可以对W进行边际化,从辅助子结构中得到P(X|Y,Z),即P(X|Y,Z) = Σi P(X|Y,Z,Wi)P(Wi)。
- 在辅助子结构中结合较少亲本的CPT。在这种情况下,我们可以对目标网络中附加变量的所有值复制辅助子结构的CPT。
一旦我们根据目标网络的CPT得到了一组CPT,即涉及相同变量的CPT,我们就可以继续将它们组合起来。文献中提出了几种聚合函数。两个常用的函数是:
- 线性聚合(Linear pool):不同条件概率的加权和,表示为:

其中Pi(X)表示包含X个变量的第i个网络的条件概率,wi是与该概率相关的权重,k是一个归一化因子。
- 对数聚合:不同条件概率的加权乘积,表示如下:

在我们的方法中,条件概率的相关权重取决于分配给该概率的置信度。我们提出了两种新的聚合方法:(i)使用加权平均和(ii)仅在相似概率上使用加权平均。
我们的第一个聚合方法称为DBLP,包括以下步骤:
1、得到所有数据集的平均概率:

2、获得目标数据集的概率与上述平均值之间的最小(dmin)和最大(dmax)差值。
3、计算目标网络的新条件概率如下:

其中,聚合系数ci表示需要从其他网络的CPT中考虑多少。系数ci基本表达如下:如果目标网络的CPT与所有CPT的平均值相似,则给予平均值更大的权重,否则给予目标CPT更大的权重。表示如下:

其中cmax和cmin是参数,表示我们希望在多大程度上考虑其他CPT的影响。在我们的例子中,我们使用cmax = 0.75和cmin = 0.25。
我们的另一个聚合函数(称为LoLP)的思想是,只使用最相似或最局部的概率,并根据目标数据集中使用的数据量对它们进行加权。这个策略有以下步骤:
1、获得大数据集概率的平均值,但只能在最相似的概率之间,在我们的例子中,是那些在目标概率和总体平均概率之间的差内的概率:

2、得到目标网络的新条件概率如下:

其中ei表示我们可以期望从CPT得到多少误差。

其中
为我们提供了CPT的置信度值,该置信度值取决于Ti,j、CPT的大小(可能值的数量)和N,情况的数量。
6 Experiments
实验的目的是表明,通过考虑来自相关问题的额外数据集,可以提高用小数据集构建的模型的性能。
我们在实验中考虑了三种常用的评估贝叶斯网络的数据集,即Alarm, Boblo和Insurance。表1提供了它们的简短描述。

我们进行了两种主要类型的实验来展示当考虑到相关问题的信息时结构/参数学习算法的改进。将原始数据集作为我们的目标网络。我们首先使用Elvira[4]中实现的PC算法对所有数据构建贝叶斯网络,显著性值为90%。我们通过改变原始网络并将高斯噪声引入到CPT中,从而产生了新的相关问题。我们从原始网络中删除链路,并通过引入均值=0和不同标准差值的高斯噪声来改变CPT。这些改变的网络被用作我们的辅助网络,试图仅使用原始数据的子集来重现原始网络。我们创建了两个相关的网络: (i)一个相似的网络,随机添加5%的链接,然后随机删除5%的链接,然后通过将它们乘以随机噪声将5%的噪声引入CPT; (ii)一个不太相似的网络,通过添加和删除20%的链接并引入20%的噪声噪声引入CPT。所有的实验都重复了15次,图中显示的只是平均值。
图1左边显示了考虑辅助数据集的结构学习算法(PC- tl)对PC的行为, 从Alarm数据集考虑了更多的情况 。辅助数据集的样本数量固定为10,000。右图显示了考虑辅助数据集的结构学习算法(PC- tl)对PC的行为, 从辅助数据集考虑了更多的情况 。目标数据集中的示例数固定为100。类似地,Bobloo数据集的结果如图2所示。由于篇幅限制,我们没有展示来自所有数据集的所有结果,但它们都显示出相似的行为。


从图中可以看出预期的行为。所提出的方法比PC表现得更好,特别是在小数据集上,并且随着我们增加训练数据集的大小,它们倾向于收敛到相同的结果。需要额外的测试来观察算法在非常不同的数据集上是如何退化的。
同样,我们对参数学习算法进行了实验。图3显示了仅使用目标数据(Base)、线性聚合算法(LP)和两种拟议算法(DBLP和LoLP)构建的条件概率在CPT中的误差比较。左图显示了增加目标网络数据量时算法的行为。右图显示了辅助数据集中数据数量增加时的行为。这里,来自目标数据集的示例数固定为100。

从图中我们可以看到,总的来说,所提出的算法比基本情况表现得更好,因此使用额外的数据集也可以改善贝叶斯网络的参数。然而,与线性聚合方法相比,有一个非常小的改进。在未来的工作中,我们将更仔细地研究所提出的聚合函数,以尝试获得更大的改进。
7 Conclusions and Future Work
本文提出了三种用于贝叶斯网络迁移学习的算法,一种用于结构学习,两种用于参数学习。这项研究背后的想法是使用来自相关数据集的信息,以提高由小数据集构建的网络的性能。这在一些领域是常见的,其中可能有罕见的情况,但与更常见的情况有一些相似之处。实验结果表明,使用附加信息可以提高所构建模型的精度。作为未来的工作,我们计划将这项技术应用于制造问题,这些问题起源于本工作中开发的想法。我们还将研究日益不同的数据库对算法性能的影响。
Acknowledgments
这项工作得到了CONACyT项目47968的部分支持。
References

