【学习笔记】迁移学习综述

2,484 阅读14分钟

A Survey on Transfer Learning

原文链接

迁移学习简介

传统的数据挖掘和机器学习算法通过统计模型预测未来的数据,而统计模型是通过以前收集的有标记或无标记的数据上训练出来的。半监督分类利用大量的未标记数据和少量的标记数据,解决了标记数据太少而无法构建高性能分类器的问题。然而,他们中的大多数都假定已标记数据和未标记数据的分布是相同的,这导致了分类器使用范围的局限性。相比之下,迁移学习允许数据集在训练和测试中的领域、任务和分布是不同的。下图展示了传统机器学习方法和迁移学习的不同:

image.png

可以看到,传统的机器学习技术试图从头开始学习每一个任务,而迁移学习中,由于目标任务的高质量训练数据较少,它试图将之前的一些任务中的知识转移到目标任务中。

符号介绍

介绍一些接下来会使用到的符号,首先给出领域(domain)和任务(task)的概念。

一个领域D\mathcal{D}包含两个组件:一个特征空间X\mathcal{X}和一个边缘概率分布P(X)P(X),且X={x1,x2,...,xn}XX=\{x_1,x_2,...,x_n\} \in \mathcal{X}

对于一个给定的领域D={X,P(X)}D=\{\mathcal{X},P(X)\},一个任务包含两个组件:一个标记空间Y\mathcal{Y}和一个目标预测函数f()f(\cdot),任务即表示为T={Y,f()}\mathcal{T}=\{\mathcal{Y},f(\cdot)\}f()f(\cdot)用于预测对应的标签,如f(xi)f(x_i)预测得到yiy_i,用概率可表示为P(yixi)P(y_i|x_i)

为简化问题,这篇文章中仅考虑一个源领域DS\mathcal{D}_S和一个目标领域DT\mathcal{D}_T。下面给出迁移学习的定义:

迁移学习 给定一个源领域DS\mathcal{D}_S、源领域对应的学习任务TS\mathcal{T}_S、一个目标领域DT\mathcal{D}_T和目标领域对应的学习任务TT\mathcal{T}_T,迁移学习目标在于通过DS\mathcal{D}_STS\mathcal{T}_S中的知识来提升DT\mathcal{D}_T内的目标预测函数fT()f_T(\cdot)的知识,且此处的DSDT\mathcal{D}_S \ne \mathcal{D}_TTSTT\mathcal{T}_S \ne \mathcal{T}_T

DSDT\mathcal{D}_S \ne \mathcal{D}_T意味着XSXT\mathcal{X}_S \ne \mathcal{X}_TPS(X)PT(X)P_S(X) \ne P_T(X)。类似的,TSTT\mathcal{T}_S \ne \mathcal{T}_T意味着YSYT\mathcal{Y}_S \ne \mathcal{Y}_TP(YSXS)P(YTXT)P(Y_S|X_S) \ne P(Y_T|X_T)。若DS=DT\mathcal{D}_S = \mathcal{D}_T,证明他们的学习任务是一样的。若TS=TT\mathcal{T}_S = \mathcal{T}_T,则问题就转化成了传统的机器学习问题。

迁移学习的主要问题

对于迁移学习,有三个主要问题:迁移什么、怎么迁移以及什么时候迁移。

迁移什么 这个问题关注的是知识的那一部分可以被跨域或跨任务迁移。有些知识是特定于某个领域或任务的,而有些知识是不同领域或任务的共性知识,因此如何探索共性知识是一个问题。

怎么迁移 在发现共性知识后,即需要关注怎么将知识迁移到另一个领域或任务中去。

什么时候迁移 这个问题关注点在于在什么情况下应该执行转移,什么情况下知识不应该被转移。例如,当源领域和目标领域彼此并没有关联时,强行转移知识可能会导致性能下降,这称为“负迁移”,如何避免负迁移也是近来备受关注的问题。

表1总结了传统机器学习和各类迁移学习间的关系。

image.png

表中基于源和目标领域和任务的不同情况,将迁移学习分成了三类:归纳迁移学习(inductive transfer learning)、直推式迁移学习(transductive transfer learning)和无监督迁移学习(unsupervised transfer learning)。

  • 归纳学习(inductive learning)从训练集中训练模型再运用到测试集中,最常用的监督学习就是归纳学习。在归纳迁移学习中,无论源\目标领域是否相同,目标任务和源任务都是不同的。可以分为两种情况:
  1. 源领域中有大量的标记数据可用时,归纳迁移学习的设置会近似于多任务学习,其区别在于归纳迁移学习仅试图从源任务中转移知识来提升目标任务的性能,而多任务学习则致力于同时学习目标和源任务。
  2. 源领域中没有标记数据时,归纳迁移学习的设置会近似于自主学习(self-taught learning),在自主学习中,源领域和目标领域的标签空间可能不一致,这意味着源领域中的辅助信息不能直接使用,这和归纳迁移学习中的设置相似。
  • 直推式学习(transductive learning)同时使用训练集和测试集来训练模型,再使用测试集来测试。在直推式迁移学习中,源任务和目标任务是相同的,而源领域和目标领域不同。同样可以分为两种情况:
  1. 源领域和目标领域的特征空间不同,即XSXT\mathcal{X}_S \ne \mathcal{X}_T
  2. 源领域和目标领域的特征空间相同,但输入数据的边际概率分布不同,即P=(XS)P(XT)P=(X_S) \ne P(X_T)
  • 无监督迁移学习的设置类似于归纳迁移学习,目标任务和源任务不同但有关联。而无监督迁移学习的关注度在于目标领域的无监督学习任务,如聚类、降维和密度估计等。显然,这种情况下无论是源领域还是目标领域中都是没有可用的标签数据的。

表2总结了不同迁移学习设置及其相关领域的关系。

image.png

在上述三类迁移学习方法中,根据不同的设置,“迁移什么”可以被归纳为表3中的四种类型。

image.png

基于实例的迁移学习(instance-based transfer learning) 它假设源领域数据中的某些部分通过重加权(reweighting)在目标领域学习中重用。实例重加权和重要性抽样是这类方法的两个重要技术。

特征表示迁移(feature-representation-transfer) 这个方法的思想在于为目标领域学习一个“好”的特征表示,用于跨领域转移的知识会被编码到学习特征表示中,期望通过新的特征表示能让目标任务的性能显著提升。

参数迁移(parameter-transfer) 它假设源任务和目标任务的模型共享一些参数或其超参数的先验分布。转移的知识被编码到共享的参数或先验中。

相关知识转移(relational-knowledge-transfer) 它用于关系领域的迁移学习,一个基本假设是源领域和目标领域间一些数据的关系是相似的,因此被转移的知识的数据间的关系。

表4展示了三类迁移学习方法及其适用的迁移知识类型。

image.png

归纳迁移学习

定义 给定一个源领域DS\mathcal{D}_S及其学习任务TS\mathcal{T}_S,和一个目标领域DT\mathcal{D}_T及其学习任务TT\mathcal{T}_T,归纳迁移学习通过DS\mathcal{D}_STS\mathcal{T}_S中的知识来提升DT\mathcal{D}_T中目标预测函数fT()f_T(\cdot)的学习性能,其中TSTT\mathcal{T}_S \ne \mathcal{T}_T

基于归纳迁移学习的定义,可知该方法需要目标域内的少量标注数据作为训练数据来归纳目标预测函数。

迁移实例中的知识

对于归纳迁移学习,实例迁移的方法是非常直观的:尽管源领域的数据不能全部直接重用,但这些数据的某些部分仍然可以与目标领域中的一些标记数据一起重用。

例如,TrAdaBoost 算法(为AdaBoost算法的一种扩展),它假设源领域和目标领域正好用相同的特征和标签,但是两个领域的数据分布不同。基于这个假设可知由于数据分布的不同,仅有一些数据可以在目标领域中重用而另一些不行,甚至可能出现负迁移。TrAdaBoost 算法试图对源领域的数据使用迭代重赋权来降低“不良”源数据的影响,同时鼓励“好”源数据对目标领域做更多的贡献。具体方法为:对每次迭代,根据加权源数据和目标数据训练基础分类器,仅计算目标数据的误差,然后使用和AdaBoost算法相同的策略来更新目标领域内错误分类的样本,不同的是,它还更新源领域内被错误分类的样本。

迁移特征表示中的知识

对于归纳迁移学习,特征表示迁移方法通过探索“好”的特征表示来最小化领域差异和分类\回归模型误差。如果源领域内存在大量的标记数据则可以使用监督学习方法来构造特征表示,这类似于普通多任务学习中的特征学习。若源领域内没有可用的标记数据,则需要使用无监督学习的方法。

监督特征构建 在归纳迁移学习中,这个方法和多任务学习类似,基础思想为学习一个跨关系任务间的低维表示,而这个新的表示可以降低分类或回归模型的误差。在归纳迁移学习中,一般特征可以通过解决一个优化问题来学习,如下所示:

image.png

此处的SSTT表示源领域和目标领域的任务。A=[aS,aTRd×2]A=[a_S,a_T \in R^{d\times 2}] 为一个参数矩阵。UU为一个d×dd \times d 正交矩阵用于将原始高维数据映射到低维表示中。AA(r,p)(r,p)范数定义为Ar,p:=(i=1dairp)1p||A||_{r,p}:=(\sum^d_{i=1}||a^i||^p_r)^{\frac{1}{p}}。通过优化问题估计得到低维表示UTXT,UTXSU^TX_T, U^TX_S和参数集AA

无监督特征构建 Raina等人提出过使用稀疏编码的无监督特征构建方法,其基本思想是通过两个步骤:

  1. 通过源领域数据和解决一个优化问题来学习高层级基向量b={b1,b2,...,bs}b=\{b_1,b_2,...,b_s\}。优化问题如下所示:

image.png

公式中,aSija^j_{S_i}bjb_j对于输入xSix_{S_i}的新表示,β\beta为一个平衡特征构造项和正则化项的系数。

  1. 在学习到向量bb后,第二步是使用一个优化算法,通过目标领域数据来学习基于基向量bb的高级特征。优化算法如下所示:

image.png

最终,算法可以被用于{aTi}s\{a^*_{T_i}\}'s用相应的标签来训练在目标领域中使用的分类或回归模型。

迁移参数中的知识

在归纳迁移学习中,大多数参数迁移方法假设相关任务的独立模型应该共享一些参数或超参数的先验分布。一些多任务学习方法如正则化框架和分层贝叶斯框架可以很容易得使用到迁移学习中,区别在于多任务学习方法同时学习源和目标任务,在多任务学习中源和目标数据的损失函数权重相同。而迁移学习不一样,不同领域的损失函数权重可以是不同的。

迁移关系知识

和其他三类不同,关系知识迁移针对的是在关系领域中的迁移学习问题,它们的数据是独立同分布的(i.i.d),并且可以用多种关系来表示,比如网络数据和社交网络数据。通常使用统计关系学习技术来解决这个方面的问题。

直推式迁移学习

定义 给定一个源领域DS\mathcal{D}_S及其学习任务TS\mathcal{T}_S,和一个目标领域DT\mathcal{D}_T及其学习任务TT\mathcal{T}_T。直推式迁移学习目标在于使用DS\mathcal{D}_STS\mathcal{T}_S中的知识来提升DT\mathcal{D}_T中的目标预测函数fT()f_T(\cdot),且DSDT,TS=TT\mathcal{D}_S \ne \mathcal{D}_T, \mathcal{T}_S = \mathcal{T}_T。换句话说,就是一些未标记的目标域数据必须在训练时可用。

迁移实例中的知识

在直推式迁移学习中,大多数实例迁移方法均是受到了重要性抽样的启发。为了介绍基于重要性抽样的方法,首先回顾经验风险最小化(ERM)问题。在这个问题中,需要通过最小化经验风险来学习模型的最优参数θ\theta^*,如下所示:

image.png

此处,l(x,y,θ)l(x,y,\theta) 为依赖于参数θ\theta的一个损失函数,由于估计概率分布PP比较困难,因此选择最小化ERM:

image.png

此处的nn为训练数据的规模。在直推式迁移学习设置中,通过最小化经验风险来学习目标领域的最优模型:

image.png

由于目标领域内在训练数据中观察到的标记数据,不得不从源领域数据中学习一个模型,若P(DS)=P(DT)P(D_S)=P(D_T),可以简单地通过解决以下优化问题来学习模型,以便在目标域中使用:

image.png

P(DS)P(DT)P(D_S) \ne P(D_T),则需要需要修改上述优化问题,学习一个对目标域泛化能力高的模型,如下所示:

image.png

通过对每个实例(xSi,ySi)(x_{S_i},y_{S_i})添加不同的惩罚值,加上对应的权重PT(xTi,yTi)PS(xSi,ySi)\frac{P_T(x_{T_i},y_{T_i})}{P_S(x_{S_i},y_{S_i})},可以从目标领域中学到一个精确的模型。更进一步,由于P(YTXT)=P(YSXS)P(Y_T|X_T)=P(Y_S|X_S)P(DS)P(D_S)P(DT)P(D_T)间的差异是由P(XS)P(X_S)和P(X_T)引起的,且:

image.png

若能对每个实例都估计出P(xSi)P(xTi)\frac{P(x_{S_i})}{P(x_{T_i})},则可以解决直推式迁移学习问题。

迁移特征表示中的知识

在直推式迁移学习中,大多数特征表示迁移方法都是在无监督学习框架下进行的。例如结构对应学习(SCL)算法,利用目标领域的未标记数据来提取一些可以减小域间差异的相关特征,在自然语言处理领域有时被称为领域适应。

无监督迁移学习

定义 给定一个源领域DS\mathcal{D}_S及其学习任务TS\mathcal{T}_S,和一个目标领域DT\mathcal{D}_T及其学习任务TT\mathcal{T}_T。无监督迁移学习通过DS\mathcal{D}_STS\mathcal{T}_S中的知识来提升DT\mathcal{D}_T中目标预测函数fT()f_T(\cdot)的性能,且TSTT\mathcal{T}_S \ne \mathcal{T}_TYS,YT\mathcal{Y}_S,\mathcal{Y}_T不可见。

基于无监督迁移学习的定义,可知训练中源领域和目标领域的数据都是无标签数据。相关工作较少,最近提出过自学习聚类(Self-taught clustering, STC)和迁移区别分析(transferred discriminative analysis, TDA)来解决迁移聚类和迁移降维问题。

从特征表示中迁移知识

自学习聚类(STC)是无监督迁移学习中的一个例子,它通过源领域内大量的无标记数据,对目标域内的少量无标记数据进行聚类。STC通过学习跨领域的共同特征空间来在目标领域内聚类数据。它的目标函数如下所示:

image.png

其中,XT,XTX_T, X_T为源/目标领域数据。ZZXT,XTX_T, X_T的共享特征空间,I(,)I(\cdot,\cdot)为两个随机变量之间的交互信息。X~T\tilde{X}_TXTX_T对应的聚类,同理其他两个变量。通过上面的优化问题,STC可以学习到X~T\tilde{X}_T

迁移界限和负迁移

这节讨论的一个重要的问题是认识到迁移学习的能力是有限的。Mahmud和Ray使用柯尔莫哥洛夫复杂性(Kolmogorov complexity)分析迁移学习案例,并证明其存在一些理论边界。在贝叶斯框架下,他们使用条件柯尔莫哥洛夫复杂性来衡量任务之间的相关性,并在序列迁移学习任务中迁移“适当”的信息量。

负迁移表示,在源领域数据和任务训练的模型不仅不能使目标域的模型学习性能提升,反而有可能下降。尽管如何避免负迁移是一个非常重要的问题,但在这方面的研究还很少。

迁移学习有关数据集

主要包括文本挖掘数据集,电子邮件垃圾邮件过滤数据集,WIFI随时间定位数据集,以及情感分类数据集的文本。

  1. 文本挖掘数据集,已经被一些研究者预处理为迁移学习设置。
  2. E-MAIL数据集,由 2006 ECML/PKDD discovery challenge提供。
  3. WIFI数据集,由ICDM-2007 Contest提供,
  4. 情感分类数据集,来自论文:J. Blitzer, M. Dredze, and F. Pereira, “Biographies, Bollywood,Boom-Boxes and Blenders: Domain Adaptation for Sentiment Classification,” Proc. 45th Ann. Meeting of the Assoc. Computational Linguistics, pp. 432-439, 2007.