第3章
终身监督学习
本章介绍终身监督学习(Lifelong Supervised Learning,LSL)的现有技术。首先,我们使用一个例子说明为什么跨任务信息共享是有用的,以及这种信息共享如何用于LSL。这个例子涉及产品评论情感分类,其任务是构建一个分类器,以便对评论表达的是正面或负面意见进行分类。在传统的设置中,我们首先标记大量的正面意见评论和负面意见评论,然后使用分类算法(例如SVM)构建分类器。在LSL设置中,我们假设已经从许多以前的任务中进行过学习(这些任务可能来自不同的领域)。现在有一个任务,它有一个特定产品(即领域,如相机、手机或汽车)的评论集。我们可以使用朴素贝叶斯(Naive Bayesian,NB)分类技术构建分类器。在朴素贝叶斯分类中,我们主要需要在给定每个类y(正面或负面)时每个词w出现的条件概率P(wy)。当有一个来自新领域D的任务时,我们的问题是究竟是否需要领域D的训练数据。众所周知,在一个领域构建的分类器在另一个领域的分类效果并不好,因为不同领域使用的表达意见的词和语言结构可能是非常不同的[Liu,2012]。更糟的情况是,同一个词在一个领域表达或暗示的可能是正面意见,而在另一个领域表达或暗示的可能是负面意见。因此在一些情况下该问题的答案为否,但在另一些情况下为是。
答案为否的原因是我们可以简单地添加所有以前领域的训练数据,然后构建一个分类器(可能这是最简单的LL方法),这个分类器可能在一些新领域的分类任务中表现得很好。与只用适量的新领域D的训练样本训练出来的分类器相比,它可以更好地分类,因为情感分类效果主要取决于表达正面或负面意见的词,称之为情感词。例如,好、极好和漂亮是正面情感词,坏、不好和糟糕是负面情感词。这些词是跨领域和跨任务共享的,但是在一个特定的领域只有少部分词会被用到。在见过大量领域的训练数据后,系统可以非常清晰地知道哪些词更倾向于表达正面或负面意见。这说明系统已经认识那些正面和负面情感词,即使不使用领域D的训练评论数据,也可以很好地进行分类。在某种程度上,这和人类的情况是相似的。我们不需要一个单独的正面或负面训练评论,就能够把评论分类为正面或负面,因为我们过去已经积累了许多人们用来赞美或者批评事物的语言表达知识。显然,对于LL,使用一两个过去的领域是不够的,因为在这些领域中使用的情感词可能是有限的,甚至可能对于新领域是无用的。许多非情感词可能会被错误地视为情感词。因此,数据的大规模和多样性是LL的关键。
当然,这种简单的方法不总是有效。这就是上述问题答案为是的原因(即需要一些领域内的训练数据)。原因是从过去的领域识别的情感词在一些领域中表达的情感可能是错的。例如,词“玩具”在评论中通常暗含负面意见,因为人们常常说“这个相机是个玩具”和“这个笔记本是个玩具”。但是,当我们对儿童玩具的评论进行分类时,词“玩具”不表示任何情感。因此我们需要使用一些领域D内的训练数据来检测这样的词,以重写关于这些词的过去认知。事实上,这是为了解决1.4节中的知识适用性问题。经过纠正后,终身学习器可以做得更好。我们在3.5节会讨论具体的技术细节。在这种情况下,LSL的知识库(Knowledge Base,KB)在每个以前的任务中都会存储计算条件概率P(wy)所需的经验计数。
本章回顾LSL的代表性技术。大部分技术只需使用少量的训练样本就可以表现得很好。
3.1 定义和概述
我们首先根据第1章中终身学习(Lifelong Learning,LL)的一般定义给出终身监督学习(Lifelong Supervised Learning,LSL)的定义。然后简要概述现有的工作。
定义 3.1 终身监督学习是一个连续的学习过程,其中学习器已经完成了一系列N个监督学习任务T1,T2,…,TN,并将学习的知识存储在知识库中。当新任务TN+1到达时,学习器使用知识库中过去的知识帮助从TN+1的训练数据DN+1中学习一个新的模型fN+1。在学习TN+1后,KB会使用从TN+1中学习的知识进行更新。
LSL最初来自Thrun的论文[1996b],在基于记忆的学习和神经网络的背景下,他提出了几个早期的终身学习方法,我们将在3.2节和3.3节对它们进行回顾。Silver和Mercer[1996,2002]以及Silver等人[2015]改进了神经网络方法。在这些论文中,每个新任务都聚焦于学习一个新概念或新类。LL的目标是借助过去的数据构建一个二元分类器来识别新类中的实例。Ruvolo和Eaton[2013b]提出了ELLA算法,它改进了多任务学习(MTL)方法GO-MTL[Kumar et al.,2012],并使之成为一个LL方法。Chen等人[2015]进一步提出一个在朴素贝叶斯分类背景下的技术。Clingerman和Eaton[2017]提出GP-ELLA来支持ELLA中的高斯过程。Xu等人[2018]根据元学习为词嵌入提出了一个LL方法。Pentina和Lampert[2014]在PAC学习框架下进行了理论研究。它为LL提供了一个PAC贝叶斯泛化边界,这个边界可以量化新任务的期望损失和现有任务的平均损失之间的关系。具体方法是把先验知识建模成一个随机变量,通过最小化新任务的期望损失获得其最优值。这种损失可以通过边界从现有任务的平均损失中进行转移。他们分别展示了在参数转移[Evgeniou and Pontil,2004]和低维度表示转移[Ruvolo and Eaton,2013b]上的两种边界的实现。在接下来的章节中,我们会介绍现有的主要LSL技术。
3.2 基于记忆的终身学习
Thrun[1996b]为两个基于记忆的学习方法(K近邻法和Shepard方法)提出了LSL技术,下面我们讨论这两个方法。
3.2.1 两个基于记忆的学习方法
K近邻法(K-Nearest Neighbor,KNN)[Altman,1992]是一个广泛使用的机器学习算法。给定一个测试实例x,算法在训练数据〈xi,yi〉∈D中找到K个样本,这些样本的特征向量xi距离x最近,这里的距离是根据一些距离度量(例如欧几里得距离等)计算得到的。预测的输出是这些最近邻的平均值1/K∑yi。
Shepard方法[Shepard,1968]是另一个常用的基于记忆的学习方法。与KNN中只使用K个样本不同,这个方法使用领域D中的所有训练样本,并根据每个样本到测试实例x的反距离为其赋予权重,公式如下:
其中,ε>0是一个较小的常数,用以避免分母为零。KNN和Shepard方法都不能利用具有不同分布和不同类标的先前任务的数据来帮助分类。
3.2.2 终身学习的新表达
Thrun[1996b]提出为上述两种基于记忆的方法学习一个新的表达来缩小任务之间的差距,从而实现终身学习,结果表明这种方法可以提高预测性能,尤其是在有标记的数据较少时。
这篇论文关注的是概念学习。它的目标是学习一个函数f:I→{0,1},其中f(x)=1表示x∈I属于一个目标概念(例如,猫或狗);否则,x不属于这个概念。例如,fdog(x)=1表示x是概念狗的一个实例。先将以前N个任务的数据定义为Dp={D1,D2,…,DN}。每个过去任务的数据Di∈Dp与一个未知的分类函数fi相关。Dp在Thrun[1996b]中被称为支持集。目标是在支持集的帮助下为当前新任务数据DN+1学习函数fN+1。
为了缩小不同任务之间的差距并能够使用过去数据(支持集)的共享信息,这篇论文提出学习一个新的数据表达方式,即学习一个空间转换函数g:I→I′,将I中原始的输入特征向量映射到一个新空间I′。然后,将新空间I′作为KNN或Shepard方法的输入空间。直觉上,同一个概念的正样本(y=1)应该有相似的新表达,而同一个概念的正样本和负样本(y=1和y=0)应该有非常不同的表达。这个思想可以被公式化地表示为一个关于g的能量函数E:
通过最小化能量函数E获得最优函数g*,这要求同一个概念的每对正样本(〈x,y=1〉和〈x′,y′=1〉)之间的距离要小,同一个概念的一个正样本(〈x,y=1〉)和一个负样本(〈x′,y′=0〉)之间的距离要大。在Thrun[1996b]的实现中,g由一个神经网络实现,并使用支持集和反向传播方法进行训练。
给定映射函数g*,与其在原始空间〈xi,yi〉∈DN+1完成基于记忆的学习,不如在使用KNN和Shepard方法之前,首先使用g*将xi转化到新空间〈g*(xi),yi〉。
由于这个方法不保存任何过去学习的知识,而只是积累过去的数据,因此,如果过去的任务很多,它是非常低效的,因为每当新任务到来时,它需要使用所有过去的数据(支持集)重新完成整个优化。Thrun[1996b]还为上述基于能量函数的方法提出了一种替代方法,它可以根据支持集学习一个距离函数,这个距离函数会在接下来的基于记忆的终身学习中被用到。这个方法有相似的缺点,即没有解决共享知识g*的正确性和适用性问题(1.4节)。
3.3 终身神经网络
这里我们介绍LSL的两个早期的神经网络方法。
3.3.1 MTL网络
尽管 MTL网络[Caruana,1997]在Thrun[1996b]中被描述成一个LL方法,但它实际上是一个批量MTL方法。根据我们对LL的定义,它们是不同的学习范式。然而,由于历史原因,我们仍然在这里对它进行简单的讨论。
MTL网络不是为每个单独的任务建立一个神经网络,而是为所有任务构建一个通用神经网络(见图3.1)。在这个通用神经网络中,所有任务的输入都使用同一输入层,每个任务(即在当前情况下的类)使用一个输出单元。MTL也有一个共享的隐藏层,它使用反向传播[Rumelhart et al.,1985]在所有任务上并行训练,以最小化所有任务的误差。这个共享层允许为一个任务开发的特征被其他任务使用。所以一些开发的特征可以表示这些任务的共同特性。针对一个具体的任务,它会激活一些与它有关的隐藏单元,同时使得与它无关的隐藏单元的权重变小。本质上,与标准的批量MTL方法一样,这个系统会联合优化所有过去/以前和现在/新任务的分类。因此,根据本书的定义(见2.2.4节)它不被视为一种LL方法。Silver和Mercer[2002]以及Silver和Poirier[2004,2007]对MTL网络进行了扩展,他们通过生成和使用虚拟的训练样本来解决所有以前任务对训练数据的需求,并以此增加上下文信息。
3.3.2 终身EBNN
这种LL方法是在EBNN(Explanation-Based Neural Network,基于解释的神经网络)[Thrun,1996a]背景下同样使用以前任务的数据(或支持集)来改进学习。正如3.2.2节所述,概念学习是这个工作的目标,即通过学习一个函数f:I→{0,1}来预测一个由特征向量x∈I表示的对象是(y=1)否(y=0)属于一个概念。
在这个方法中,系统首先学习一个一般距离函数d:I×I→[0,1],在此过程中考虑所有过去的数据(或支持集),并使用这个距离函数将从过去任务学习到的知识共享或迁移到新任务TN+1中。给定两个输入向量(如x和x′),无论是什么概念,函数d都可以计算x和x′属于同一概念(或类)的概率。Thrun[1996b]使用神经网络来学习d,并使用反向传播训练神经网络。用于学习距离函数的训练数据按如下方式生成:对于每个过去任务的数据Di∈Dp,概念的每对样本生成一个训练样本。一对样本〈x,y=1〉∈Di和〈x′,y′=1〉∈Di可以生成一个正训练样本〈(x,x′),1〉。一对样本〈x,y=1〉∈Di和〈x′,y′=0〉∈Di,或者〈x,y=0〉∈Di和〈x′,y′=1〉∈Di,可以生成一个负训练样本〈(x,x′),0〉。
利用学习到的距离函数,EBNN按如下方式工作:不像传统的神经网络,EBNN在每个数据点x估算目标函数的斜率(正切),并将它加入数据点的向量表达中。在新任务TN+1中,一个训练样本的表示形式是〈x,fN+1(x),▽xfN+1(x)〉,其中,fN+1(x)是x∈DN+1(新任务的数据)的原始类标。这个系统使用正切传播(Tangent-Prop)算法[Simard et al.,1992]进行训练。▽xfN+1(x)是使用从神经网络获得的距离d的梯度估算的,即,其中,〈x′,y′=1〉∈DN+1,dx′(x)=d(x,x′)。这里的基本原理是,x与一个正训练样本x′之间的距离是x为正样本的概率估算,近似于fN+1(x)。因此,通过▽xfN+1(x)和d,所构建的EBNN既适用于当前的任务数据DN+1,也适用于支持集。
与3.2节的终身KNN相似,在这种情况下,这个系统中学习距离函数(共享知识)和完成EBNN的部分是1.4节提到的基于知识的学习器。再次,知识库只存储过去的数据。同样,这种技术也没有解决共享知识d的正确性和适用性问题(参见1.4节)。
与终身KNN一样,由于终身EBNN也不存储在过去学习的任何知识,而只是积累过去的数据,所以当以前的任务很多时,它是非常低效的。因为每当一个新任务到达时,它都需要使用所有过去的数据(支持集)来重新训练距离函数d。另外,由于学习距离函数d所用的一个训练样本由每个过去任务数据集的每对数据点组成,因此,用于学习d的训练数据可以非常多。
3.4 ELLA:高效终身学习算法
本节讨论由Ruvolo和Eaton[2013a,b]提出的 终身监督学习(Lifelong Supervised Learning,LSL)系统 ELLA(Efficient Lifelong Learning Algorithm,高效终身学习算法)。它为所有任务模型维持着一个稀疏共享基础(过去的知识),然后将知识从基础迁移到新任务,并不断改善基础以最大化所有任务的性能。不像累积学习,ELLA中的每个任务都独立于其他任务。ELLA也遵循MTL的传统,目标是优化所有任务的性能。LL的许多其他方法主要优化新任务的性能,尽管在有需要时,它们可以帮助优化任何以前的任务。为了方便参考,在下面的介绍中我们尽可能使用与原论文相同的符号。
3.4.1 问题设定
与在一般的LL问题中一样,ELLA以终身方式接收一系列的监督学习任务1,2,…,N。每个任务t有它的训练数据Dt={(xti,yti):i=1,…,nt},其中nt是Dt中训练实例的数量,Dt由一个从实例空间到标签集Yt(或对于回归问题来说yt=R)的隐藏的(或潜在的)真实映射ft(x)定义。d表示特征维度。
ELLA扩展批量MTL模型GO-MTL[Kumar et al.,2012](也在2.2.2节)以使其更加高效并成为一种增量或在线MTL系统,它被看作是一种LL系统。与Go-MTL类似,ELLA使用一种参数化方法建立模型,其中每个任务t的模型或预测函数ft(x)=ft(x;θt)被一个特定任务的参数向量θt∈Rd控制。ELLA的目标是建立任务模型f1,…,fN,使得
1.对每个任务,都有ft≈ft;
2.当新任务t的训练数据到达时,可以很快增加一个新模型ft;
3.在增加新任务后,可以高效地更新每个过去的模型ft。
ELLA假设任务的总数量、分布和顺序都是未知的[Ruvolo and Eaton,2013b]。它也假设任务的数量可能很多,而且每个任务可能有大量的数据点。因此,我们需要一种有效且高效的LL算法。
3.4.2 目标函数
ELLA使用与GO-MTL模型[Kumar et al.,2012](见2.2.2节)同样的方式,对所有的任务模型保持k个稀疏共享的基础模型组件。表示k个基础模型组件。假定每个任务模型的参数向量θt是权重向量st∈Rk和基础模型组件L的一个线性组合,我们可以得出下面的公式(与公式(2.7)相同):
其中,。对每个任务t,θt=Lst。ELLA的初始目标函数与GO-MTL中的公式(2.8)一样,只不过它优化的是所有任务训练数据的平均(而不是总和)损失,这对保证收敛性很重要:
其中,。因为目标函数在L和st上不是共凸的,为了优化它,我们可以使用一种常见的方法计算局部最优值,即交替地进行固定L优化st和固定st优化L。但是,正如Ruvolo和Eaton[2013b]指出的,上面的目标函数存在两个主要的低效问题(GO-MTL中也存在)。
1.对所有以前的训练数据的显式依赖(通过内在总和)。就是说,为了计算目标函数,我们需要迭代所有任务的所有训练实例来计算损失函数值。如果任务的数量很大,或者每个任务的训练实例的数量很大,迭代的效率会很低。
2.当在公式(3.4)中评估一个单一候选L时,为了重新计算每个st的值,必须解决优化问题。这意味着当L更新时,每个st都要更新。当任务越来越多时,代价会越来越高。
Ruvolo和Eaton[2013b]提出了一些近似技术来解决上面两个低效问题,我们会在下面进行详述。其基本思想是,以从过去任务中学到的模型组件为基础,使用单个任务的解作为一个估算点来近似地拟合新任务模型,然后更新该基础以吸收来自新任务中的新知识。
3.4.3 解决第一个低效问题
为了解决第一个问题,Ruvolo和Eaton[2013b]使用二阶泰勒展开式进行近似。在给出技术细节之前,我们先简单地回顾一些数学基础。
泰勒展开式
在单变量情况下,即当g(x)是个一元函数时,在一个常数a附近的二阶泰勒展开式是:
其中g′()和g″()是函数g的一阶和二阶导数。
在多变量情况下,即当g(x)是个多元函数时(假定x有n个值),在一个n(n为常数)维向量a附近的二阶泰勒展开式是:
其中‖v‖2A=vTAv,H(a)称为函数g的海森矩阵。
无约束优化的优化条件
考虑最小化函数f∶Rn→R问题,其中f在Rn上二次连续可微:
定理3.2 求最优的一阶必要条件。使函数f∶Rn→R在点x∈Rn处可微。如果x是局部最小点,那么。
证明 根据一阶泰勒展开式的定义,有:
也就是,
其中使,其中α是一个正常数。把它插入到公式(3.9),那么:
取极限时,得到:
因此,。
移除依赖
我们回到ELLA算法。为了移除对所有任务训练数据的显式依赖,它使用二阶泰勒展开式近似公式(3.4)中的目标函数。首先定义函数g(θt)如下:
其中θt=Lst。那么公式(3.4)中的目标函数变为:
假设函数g的最小解是,即
(它是一个仅在任务t的训练数据上学习得到的最优预测器)。那么,附近的二阶泰勒展开式如下:
其中是函数g的海森矩阵。
鉴于公式(3.13)的外部最小化使用到了函数g,那么公式(3.14)的第一个常数项可以被移除。根据一阶必要条件(定理3.2),由于是函数g的局部最小解,所以▽g()=0,从而公式(3.14)的第二项也可以移除。因此,将函数g插入公式(3.13)后得到的新目标函数为:
由于,公式(3.15)可以重写为:
注意,如果任务t的训练数据不改变,会保持不变。因此,公式(3.16)中的新目标函数移除了要对所有以前任务的训练数据进行优化的依赖。
3.4.4 解决第二个低效问题
第二个低效问题是当计算单一候选L时,为了重新计算每个st的值,必须要解决一个优化问题。为了解决这个问题,Ruvolo和Eaton[2013b]采取了以下策略:当最近一次遇到任务t的训练数据时,只更新st,其他任务t′的st′保持不变。也就是,当最近一次遇到任务t的训练数据时计算st,之后在其他任务上训练时不再更新st。尽管这看起来阻止了以前的任务对后面的任务产生影响,但它们会从基础潜在模型组件L的后续调整中获益。使用之前计算的st的值,执行下面的优化过程:
其中符号Lm指的是在第m次迭代时潜在组件的值,假定t是刚到达的训练数据所对应的任务。注意,若t是已有的任务,新训练数据会被合并到t的已有的训练数据。
有关先前公式中更新执行的具体步骤,请参考原论文。它们取决于使用的模型和损失函数的类型。论文介绍了两种情况:线性回归和逻辑回归。
3.4.5 主动的任务选择
在上面的问题设定(3.4.1节)中,LL是一个被动的过程,即系统无法控制学习任务出现的顺序。Ruvolo和Eaton[2013a]考虑在主动任务选择的设定中使用ELLA。假设有一个候选任务池,Ruvolo和Eaton[2013a]不像ELLA中随机选择一个任务,他们以一定的顺序选择任务,其目的是使用尽可能少的任务来最大化未来的学习性能。这是个实际的问题,因为每个学习任务可能需要大量的时间进行手工标记或者每个学习任务可能需要系统运行很长时间。在这种情况下,按照一定顺序选择一些任务的高效学习方式在实际的LL问题上更具有扩展性。
主动任务选择设置
LL中的主动任务选择设置定义如下:与在常规的LL中对任务t的训练数据建模不同,这个系统可以从一个候选池Tpool中选择任务,候选池由未学习的候选任务组成。对每个候选任务t∈Tpool,仅训练实例中的一个子集是有标记的,它被表示为Dtc=(Xtc,Ytc)。基于这些小子集,选择要学习的下一个任务tnext∈Tpool。之后,tnext的所有训练数据会显示出来,被表示为Dtnext=(X(tnext),Y(tnext))。注意,对每个任务t,。候选池的规模可以是固定的,也可以在学习中动态地增加/减少。
多样化方法
这里我们介绍Ruvolo和Eaton[2013a]为主动任务选择提出的多样化方法,他们表明,与论文中使用的其他方法相比,该方法的性能是最好的。在ELLA的背景下,为了最大化在未来任务中的性能,模型应该有一组灵活且鲁棒的潜在组件,即L。换句话说,L应该适用于各种各样的任务。如果L不能很好地适用于新任务t,这表示t中的信息在当前的L中没有被很好地表示。因此,为了使能解决的任务范围最广,下一个任务应该是当前基础L执行得最差的一个,即在标记数据子集上的损失是最大的。这种启发式方法的描述如下:
其中,是从有标记的数据Dtc的子集中得到的。由于公式(3.17)倾向于选择对当前基础L编码较差的任务,因此被选择的任务可能与现有的任务非常不同,由此该方法可以促使任务多样化。
另一种方法(称为Diversity++)不简单地选择有最大损失值的任务,而是先用任务t的最小损失值的平方来估算选择任务t的概率,如下所示:
然后每次根据概率p(tnext)采样一个任务,因此,这是上述差异化方法的一个随机变体。
3.5 终身朴素贝叶斯分类
本节介绍Chen等人[2015]提出的终身NB分类(lifelong NB classification)技术。它被应用于情感分析任务,可以对一个产品评论表达的内容是正面或负面意见进行分类。这个系统称为LSC(lifelong sentiment classification,终身情感分类)。下面我们首先简单介绍NB分类公式,然后介绍它在情感分类中的终身扩展形式。为方便参考,我们遵循原论文中使用的符号。
3.5.1 朴素贝叶斯文本分类
用于文本分类的NB是一个生成模型,它由混合多项分布构成。每个多项分布(称为一个混合组件)是单类文档的生成器。训练一个NB模型就是寻找每个多项分布的参数和混合权重。对于文本分类来说,上面的思想可以解释为:给定训练文档集D={d1,d2,…,dD}、词汇集V(D中不同单词或词语的集合)和与D相关的类集C={c1,c2,…,cC},NB通过计算给定每个类cj时每个单词w∈V出现的条件概率,即P(w|cj)(类cj的模型参数),和每个类的先验概率,即P(cj)(混合权重),来训练分类器[McCallum and Nigam,1998]。
根据经验词计数,按如下方式估算P(w|cj):
其中,Ncj是单词w在cj类文档中出现的次数。λ(0≤λ≤1)用于平滑处理,当λ=1时,是众所周知的拉普拉斯平滑。每个类的先验概率P(cj)按如下方式估算:
其中,如果cj是训练文档di的标签,则P(cj|di)=1,否则为0。
在测试时,给定一个测试文档d,NB对每个类cj计算后验概率P(cj|d),然后选择概率P(cj|d)最大的类作为分类结果:
其中,nw,d是单词w在d中出现的次数。
NB是对LL自然的契合,因为过去的知识可以很容易地充当新任务概率的先验。LSC利用了这个思想。我们首先回答情感分类背景下两个具体的问题。第一个问题是既然当前任务已经有已标记的训练数据,为什么过去的学习依然能为新/当前任务的分类做出贡献。回答是,由于存在样本选择偏差[Heckman,1979;Shimodaira,2000;Zadrozny,2004]和/或训练数据规模较小,训练数据可能不能完全代表测试数据,正如Chen等人[2015]论文中的情况。例如,在情感分类应用中,测试数据可能包含一些在当前训练数据中没有,但是在一些以前任务的评论数据中出现过的情感词。因此,过去的知识可以为当前的新任务提供先验的情感极性信息。注意,对于情感分类,情感词比如好、非常好、糟糕和不好是有用的。同时应注意Chen等人[2015]论文中的每个任务实际上来自不同的领域(或产品)。因此,从现在开始我们交替地使用任务和领域这两个词。
第二个问题是为什么即使过去的领域非常不相同,并且与当前的领域也非常不相似,但过去的知识依然有用。主要原因是在情感分类中,情感词和表达在很大程度上是独立于领域的。也就是说,它们的极性(正面或负面)通常是跨领域共享的。因此,系统在学习了大量以前/过去的领域后,已经学到了很多正面和负面的情感词。同时值得重点关注的一点是,只有一个或两个过去的领域是不够的,因为在有限的领域中情感词的覆盖率较低。
3.5.2 LSC的基本思想
本小节介绍LSC技术的基本思想。我们首先讨论LSC知识库中存储的内容。
知识库
对于每个单词w∈Vp (其中Vp是所有以前任务的词汇),知识库KB存储两种类型的信息:文档级知识和领域级知识。
- 文档级知识:在之前任务的正(和负)类文档中w出现的次数。
- 领域级知识:满足P(w|+)>P(w|-)(和P(w|+)
领域级知识和文档级知识是互补的,因为w可能极端频繁地出现在某一领域,而很少出现在其他领域,这会导致该领域在文档级别对w产生多余的影响。
使用知识的一种朴素方法
我们从3.5.1节可以看出影响NB分类结果的关键参数是,它是用经验计数和该类文档中词汇总数计算的。在二元分类中,P(w|cj)是用计算的。这表示我们可以适当地修改这些计数以提升分类效果。给定新任务数据,我们用词w在的正(和负)类文档中的出现次数表示经验词计数。这里,我们显式地使用上标t来区分它与以前的任务,这样,任务就变成如何有效地使用KB中的知识来更新词计数,从而构建一个更好的NB分类器。
给定过去学习任务的知识库KB,构建分类器的一个简单的方法是将KB中的计数(作为先验)和Dt中的经验计数相加,即和。这里称为虚拟计数,我们将使用下一小节讨论的优化方法更新它们。在构建分类器时,分别用替换公式(3.19)中的(即)。这种简单方法在许多情况下都表现得非常好,但是它有两个缺点:
1.过去领域包含的数据通常远多于当前的领域,这表示可能远大于。因此,过去领域的KB中的计数可能会主导合并后的结果。
2.它不考虑依赖领域的词极性。一个词在当前的领域可能是正面的,但是在过去的领域可能是负面的。例如,由于过去有很多像“这个产品是个玩具” 的语句,词“玩具”在过去的领域中可能是负面的。但是,在玩具领域,这个词并不表示情感。
LSC系统使用优化方法解决这两个问题。
3.5.3 LSC技术
LSC使用随机梯度下降(Stochastic Gradient Descent,SGD)通过调整X+,w和X-,w(虚拟计数)来最小化训练误差,X+,w和X-,w分别表示词w出现在正类和负类中的次数。
为了正确地分类,理想情况下,每个正类(+)文档di应该有后验概率P(+|di)=1,每个负类(-)文档di应该有P(-|di)=1。在随机梯度下降中,我们优化每个di∈Dt的分类。Chen等人[2015]对每个正类文档di使用如下的目标函数(也可以为每个负类文档构造出类似的目标函数):
我们省略推导步骤,只在下面给出最后的公式。为了简化公式,我们定义一个与X有关的函数g(X),其中X是由每个词w的X+,w和X-,w组成的向量:
在随机梯度下降中,我们使用如下公式为正类文档di迭代地更新变量X+,u和X-,u:
其中,u表示di中的每个词。γ是学习速率,l表示每次迭代。针对每个负类文档di,也可推导出相似的更新规则。
和作为初始点。当计数收敛时迭代更新过程停止。
通过惩罚项利用知识
上面的优化方法可以更新虚拟计数来实现在当前领域更好的分类。但是,它没有解决领域依赖的情感词问题,即一些词可能在不同的领域中改变它们的极性。并且它也没有使用知识库KB中的领域级知识(3.5.2节)。因此,我们提出在优化中加入惩罚项来实现这些内容。
这个思想是,如果在当前领域的训练数据中一个词w可以很好地区分类,那么我们应该更依赖当前领域的训练数据。因此,我们定义一个当前领域中的区分词的集合VT。如果在当前的领域中P(w|+)远大于或远小于P(w|-),即或,其中σ是一个参数,那么词w属于VT。这些词在当前领域的分类中已经很有效了,所以优化中的虚拟计数应该遵循当前的任务/领域的经验计数(Nt+,w和Nt-,w),这些内容反应在如下的L2正则化惩罚项(α是正则化系数)中:
为了使用领域级知识(3.5.2小节中KB存储的第二种知识类型),我们只想使用知识中那些可靠的部分。这里的基本原理是,如果一个词只出现在一个或两个过去的领域,那么与它相关的知识可能是不可靠的,或者它是那些领域特有的。根据这个思想,我们用域频次来定义领域级知识的可靠性。对于w,如果MKB+,w≥τ或MKB-,w≥τ(τ是一个参数),那么认为它出现在合理数量的领域内,它的知识是可靠的。我们用VS表示这样的词的集合,那么,第二个惩罚项是:
其中,比率Rw被定义为,和是SGD的初始点。最后,通过加入公式(3.27)和(3.28)中对应的偏导数,对公式(3.24)、(3.25)和(3.26)中的偏导数进行修正。
3.5.4 讨论
这里我们要讨论对LSC的可能的改进和一个与之相关的基于投票的终身情感分类的工作。
LSC的可能改进
目前为止,我们已经讨论了如何使用从过去任务学习的先验概率知识来改进未来任务的学习。这里有一个问题是,我们是否也可以使用未来学习的结果反过来帮助过去的学习。这是有可能的,因为通过把有待改进的过去的任务看作未来任务,并把所有其余的任务看作过去的任务,我们可以应用同样的LSC技术。这个方法的缺点是我们需要过去任务的训练数据。但是,如果过去任务的训练数据被遗忘(像在人类学习中),会发生什么?这是一个有趣的研究问题,我相信这是可能的。
基于投票的终身情感分类
Xia等人[2017]通过对各个任务分类器投票为情感分类提出了两个LL方法。第一个方法为每个任务分类器分配同等的权重并进行投票,使用这个方法可以帮助过去的任务。第二个方法使用权重投票,但是,与LSC一样,它需要过去任务的训练数据来改进它的模型。此外,它们的任务实际上来自相同的领域,因为它们把同一个数据集划分为多个子集,并把每个子集看作一个任务。而LSC中的任务来自于不同的领域(不同类型的产品)。
3.6 基于元学习的领域词嵌入
LL也可以通过元学习实现。本节描述这样一个方法,它的目标是在没有大型语料库的情况下改进领域的词嵌入。近年来,词嵌入学习[Mikolov et al.,2013a,b;Mnih and Hinton,2007;Pennington et al.,2014;Turian et al.,2010]获得了极大的关注,因为它成功地应用在很多自然语言处理(Natural Language Processing,NLP)问题中。词嵌入成功的“秘方”是使用由大规模的语料库转变而成的数量巨大(例如,百万级别)的训练样本来学习词的“语义含义”,它可以用于执行许多下游的NLP任务。词嵌入在下游任务中的有效性通常基于两个隐式假设:(1)词嵌入的训练语料库是可用的,而且规模远大于下游任务的训练数据,(2)词嵌入语料库的主题(领域)和下游NLP任务的主题是紧密联系的。但是,许多实际应用不同时满足这两个假设。
在很多情况下,领域内语料库的规模有限,不足以训练出好的词嵌入。在这样的应用中,研究者和实践者通常只使用一些通用的词嵌入,这些词嵌入是用几乎覆盖了所有可能主题的非常大量的通用语料库(这满足第一个假设)训练得到的,例如,使用覆盖了互联网上几乎所有主题或领域的8400亿符号训练得到的著名的GloVe嵌入[Pennington et al.,2014]。在许多特定领域的任务中,这样的词嵌入被证明可以工作得很好。这并不令人意外,因为一个词的含义在很大程度上是跨领域和任务共享的。但是,这种解决方案违反了第二个假设,这通常会导致在特定领域的任务[Xu et al.,2018]中得到次优结果。一种显而易见的解释是,通用的词嵌入确实为该领域任务的许多词提供了一些有用的信息,但是在该领域中词嵌入的表达并不理想,而且在一些情况下它们甚至可能和该任务领域的一些词的含义存在冲突,因为词通常有多种意义和含义。例如,有一个编程领域的任务,它有一个词“Java”。一个大规模的通用语料库更可能包含的是关于咖啡商店、超市、印度尼西亚的爪哇岛等的文本,很容易挤压表达“Java”上下文的词的空间,比如,编程领域的“函数”“变量”和“Python”。这会导致词“Java”在编程领域任务中有一个较差的表达。
为了解决这个问题以及领域内语料库规模有限的问题,[Bollegala et al.,2015,2017;Yang et al.,2017]研究了基于迁移学习的跨领域嵌入。这些方法允许一些域内词使用通用的嵌入,希望在通用嵌入中这些词的含义和这些词在域内的含义不会相差太多。因此这些词的嵌入可以得到改进。但是,这些方法不能改进许多其他具有特定领域含义的词(例如,“Java”)的嵌入。此外,一些通用嵌入中的词可能具有与任务领域中的词不同的含义。
Xu等人[2018]提出通过扩展领域内语料库改进基于LL的领域嵌入。问题陈述如下:假设学习系统在过去已经看过N个领域的语料库:D1∶N={D1,…,DN},当带有领域语料库DN+1的新任务到达时,系统通过使用过去N个领域中的一些有用的信息或知识,自动地为第(N+1)个领域生成词嵌入。
这个问题的主要挑战有两个:(1)不依赖人工的帮助,如何自动地从过去的N个领域识别相关的信息/知识,(2)如何把相关的信息整合到第(N+1)个新领域的语料库中。Xu等人[2018]提出基于元学习的算法L-DEM(Lifelong Domain Embedding via Meta-learning,L-DEM)来解决这些挑战。
为了解决第一个挑战,对新领域的一个词,L-DEM会在过去的领域中学习识别这个词的相似上下文。这里,领域中一个词的上下文指的是在这个领域语料库中该词周围的词,称为这个词的领域上下文。为此,他们介绍了一个多领域元学习器,该元学习器使用多个领域的数据(语料库)学习一个元预测器,这个元预测器被称为基础预测器。当一个新领域和它的语料库到达时,系统首先调整基础预测器使它适合新领域。得到的特定领域的元预测器用于为新领域的每个词在每个过去的领域中识别相似的(或相关的)领域上下文。用于元学习和领域适应的训练数据是自动生成的。为解决第二个挑战,L-DEM利用元预测器从过去的领域语料库中生成的相关领域上下文(知识)来扩充新领域的语料库,并使用合并的数据为新领域训练词嵌入。例如,对于编程领域(新领域)的词“Java”,元预测器可能从一些以前的领域(例如,编程语言、软件工程、操作系统等)产生相似的领域上下文。这些领域上下文会和新领域的语料库合并在一起,为“Java”训练新的域嵌入。详细的技术很复杂,有兴趣的读者请参考Xu等人[2018]。
3.7 小结和评估数据集
终身学习尽管始于20多年前的监督学习,但现有的工作在多样性和深度上仍然具有一定的局限性。目前仍然没有通用的机制或算法可以像诸如SVM、朴素贝叶斯或深度学习等现有的机器学习算法一样应用于任意的任务序列,而这些机器学习算法可以应用在几乎任何监督学习任务中。造成这种情况的原因有很多。最重要的原因可能是研究社群对于知识的一般含义、如何表达知识和如何在学习中有效地利用知识还没有很好的认识。因此,我们迫切需要一套统一的关于知识及其相关问题的理论。另一个原因是监督学习的知识很难跨领域地使用,因为针对特定的任务进行了高度优化的模型在某种程度上使得优化成为重用或迁移的障碍。我们很难选择一些从以前任务或领域学习到的知识碎片并将其应用到新的任务中,因为模型通常是不可分解的。例如,我们很难重用SVM模型中的任何知识或将其应用在不同但相似的任务中。更简单的模型通常更容易重用。例如,我们不难从基于规则的分类器中选择一些规则去帮助学习一个新任务。这可能是人类学习不被优化的原因,因为人类大脑不善于优化,而且人类的智慧需要灵活性。
评估数据集:为了帮助该领域的研究人员,我们总结了本章涉及的论文中所使用到的评估数据集。对那些公开可用的数据集,我们将提供它们的链接。
Thrun[1996b]在评估中使用了一个包含不同物体(例如瓶子、锤子和书)的彩色图片的数据集。Caruana[1997]使用了道路跟踪领域的数据集1D-ALVINN[Pomerleau,2012]。他们也创建了目标识别领域的数据集1D-DOORS[Caruana,1997]。另外,一个医学决策应用也在Caruana[1997]中被测试。Ruvolo和Eaton[2013b]在它们的评估中使用了三个数据集。第一个是来自Xue等人[2007]的地雷数据集,它根据雷达图片探测一片区域是否存在地雷。第二个是Valstar等人[2011]中的面部表情识别挑战数据集。第三个是伦敦学校数据集。Chen等人[2015]使用来自20个不同产品领域的亚马逊评论进行评估,它是Chen和Liu[2014b]中的数据集的子集。Xu等人[2018]使用来自He和McAuley[2016]的亚马逊评论数据集,它是一个组织在多个层次上的多领域语料库的集合。这篇论文把每个第二层的类属(第一层是部门)看作一个领域,将每个类下面的所有评论合并为一个领域语料库,最终得到一个领域非常多样化的集合。