多任务学习综述

本篇来自论文《An Overview of Multi-Task Learning in Deep Neural Networks》

一、Introduction

机器学习中,我们通常关心针对特定指标的优化,无论这是某个基准的分数还是业务关键绩效指标。为了做到这一点,我们通常训练一个模型或一组模型来执行我们所期望的任务。然后我们对这些模型进行微调,直到它们的性能不再提高。虽然我们通常可以通过这种方式获得可接受的性能,但通过激光专注于我们的单一任务,我们忽略了可能帮助我们在我们关心的指标上做得更好的信息。具体来说,这些信息来自于相关任务的训练信号。通过在相关任务之间共享表示,我们可以使我们的模型能够更好地对原始任务进行泛化。这种方法被称为多任务学习(MTL)。
MTL有很多种形式:联合学习、学习和辅助任务学习只是用来指代它的一些名称。一般来说,一旦你发现自己优化了不止一个损失函数,你就可以有效地进行多任务学习(与单任务学习相比)。在这些场景中,它有助于思考你试图明确地用MTL来做什么,并从中获得见解。
即使你只优化一个损失,这是典型的情况,有可能有一个辅助任务,有助于你改善你的主要任务。MTL的目标:“MTL通过利用相关任务的训练信号中包含的领域特定信息来改进泛化”。
在这篇文章中,是对多任务学习的现状做一个概括性的概述,特别是当涉及到使用深度神经网络的MTL时。在第二节中,将从不同的角度来谈MTL的动机。然后,第3节中介绍两种最常用的MTL深度学习方法。随后,在第4节中,描述共同说明MTL在实践中工作的机制。在研究更先进的基于神经网络的MTL方法之前,在第5节通过讨论MTL中的文献提供一些背景。然后,在第6节中介绍一些更强大的最近提出的方法,用于深度神经网络中的MTL。最后,在第7节中讨论常用的辅助任务类型,并讨论什么样的辅助任务才是好的辅助任务。

二、Motivation

我们可以用不同的方式看到使用多任务学习的动机:从生物学上讲,我们可以看到多任务学习是由人类学习所激发的。为了学习新的任务,我们经常运用我们从学习相关任务中获得的知识。例如,婴儿首先学会识别面部,然后可以应用这些知识来识别其他物体。从教育学的角度来看,我们通常先学习一些任务,这些任务为我们掌握更复杂的技术提供了必要的技能。这对于学习正确的武术摔倒方式是正确的,例如柔道和学习编程。以流行文化为例,我们也可以考虑空手道小子在这部电影中,宫城先生教空手道小子一些看似不相关的任务,比如打磨地板和给汽车上蜡。然而,事后看来,这些技能使他具备了学习空手道的宝贵技能。最后,我们可以从机器学习的角度来激发多任务学习:我们可以将多任务学习视为归纳迁移的一种形式。归纳转移可以通过引入一个归纳偏差来帮助改进模型,这使得模型更喜欢一些假设。例如,归纳偏差的一种常见形式是“正则化”,这会导致对稀疏解的偏好。在MTL的情况下,归纳偏差是由辅助任务提供的,这使得模型更倾向于解释多个任务的假设。正如我们将很快看到的,这通常会导致更好地概括的解决方案

三、Two MTL methods for Deep Learning

到目前为止,我们都集中在MTL的理论动机上。为了使MTL的思想更加具体,我们现在来看两种在深层神经网络中执行多任务学习最常用的方法。在深度学习的背景下,多任务学习通常是通过共享隐藏层的硬参数或软参数来完成的。

3.1 Hard parameter sharing

1.深度神经网络中多任务学习的硬参数共享

硬参数共享是神经网络中最常用的MTL方法。它通常在所有任务之间共享隐藏层来应用,同时保留几个特定于任务的输出层,如图1所示。硬参数共享大大降低了过度拟合的风险。事实上,过度拟合共享参数的风险是一个N阶(其中N是任务数)小于过度拟合特定任务参数(即输出层)的风险。这在直觉上是有道理的:我们同时学习的任务越多,我们的模型就越需要找到一个能够捕获所有任务的表示,而我们在原始任务上过度拟合的机会就越小

3.2 Soft parameter sharing
 

2.深层神经网络多任务学习的软参数共享

另一方面,每个任务都有自己的模型和参数。然后对模型参数之间的距离进行正则化,以鼓励参数相似,如图2所示。有的使用l2距离进行正则化,有的使用 trace norm。深度神经网络中用于软参数共享的约束很大程度上受到了MTL正则化技术的启发,我们将很快讨论这些技术。

四、Why does MTL work?

尽管通过多任务学习获得的归纳偏差在直觉上似乎是合理的,但为了更好地理解MTL,我们需要研究其背后的机制。对于所有的例子,我们假设我们有两个相关的任务A和B,它们依赖于一个公共的隐藏层表示F。

4.1 Implicit data augmentation

MTL有效地增加了我们用来训练模型的样本量。由于所有任务至少都有一定的噪声,因此在训练某个任务a的模型时,我们的目标是学习任务a的一个好的表示,理想情况下,它忽略了数据相关噪声,并具有很好的泛化能力。由于不同任务具有不同的噪声模式,同时学习两个任务的模型能够学习更泛化的表示数据。只学习任务A有过度拟合任务A的风险,而学习A和B共同使模型通过平均噪声模式获得更好的表示F。

4.2 Attention focusing

如果一个任务是非常noisy的,或者数据是有限的和高维的,那么模型很难区分相关和不相关的特征。MTL可以帮助模型将注意力集中在那些实际重要的特性上,因为其他任务将为这些特性的相关性或不相关性提供额外的evidence。

4.3 Eavesdropping

对于某些任务B,容易学到特征G,而对于另一个任务A,则很难学习到。这可能是因为A以更复杂的方式与功能交互,或者是因为其他功能妨碍了模型学习G的能力。通过MTL,我们可以允许模型窃听,例如通过任务B学习G。最简单的方法是通过hints直接训练模型来预测最重要的特征。

4.4 Representation bias

MTL使模型倾向于其他任务也想要的特征表示。这也将有助于该模型推广到未来的新任务,因为假设空间在足够多的训练任务中表现良好,而且只要它们来自相同的环境,那么在学习新任务时也会表现良好。

4.5 Regularization

最后,MTL通过引入一个inductive bias扮演正则化矩阵的作用。因此,它降低了过度拟合的风险以及模型的Rademacher Complexity,即它适应随机噪声的能力。

五、MTL in non-neural models

为了更好地理解深部神经网络中的MTL,我们现在将查阅关于线性模型、核方法和贝叶斯算法的MTL的现有文献。特别是,我们将讨论贯穿多任务学习历史的两个主要观点:通过规范化增强任务之间的稀疏性以及建立任务之间的关系模型。请注意,文献中的许多MTL方法都处理同一设置:它们假设所有任务都与单个输出相关联,例如,多类MNIST数据集通常被转换为10个二进制分类任务。最近的方法处理的是一个更现实的、异构的设置,其中每个任务对应一组唯一的输出。

5.1 Block-sparse regularization块稀疏正则化
假设,我们有T个任务。对于每个任务t,我们有一个参数为d维的模型mt,我们可以将参数写成列向量:

现在把这些列向量a1,一列一列地堆叠起来,形成一个矩阵a∈R^(d×T)。A的第i行包含参数ai,对应于每个任务模型的第i个特征,而a的第j列包含参数 a.j对应于第j个模型。
现有的许多方法都对模型的参数做了一些稀疏假设。有人认为所有的模型都共享一组小的特性。对于我们的任务参数矩阵A,这意味着除了几行以外,所有的行都是0,这只对应于在所有任务中使用的少数特性。为了加强这一点,他们将\iota _{1}范式 推广到MTL设置。回想一下,\iota _{1}范数 是对参数和的一个约束,它强制除少数参数外的所有参数都为0。它也被称为套索(最小绝对收缩和选择操作符)。
而在单任务中,\iota _{1}范数是基于相应任务t的参数向量at计算的,对于MTL,通过我们的任务参数矩阵A计算它。为此,我们首先计算每一行ai上的\iota _{q}范数,其中包含所有任务中与i特征对应的参数,它产生一个向量b=[| | a_{1} | |_{q} ...| | a_{d} | ||_{q} ]∈R ^ d然后我们计算这个向量的\iota _{1}范数,它强迫b的除了少数项外的所有项的元素为0,例如a的行。
可以使用不同的\iota _{q}在每行上放置的约束,一般来说,我们把这些混合范数约束称为\iota _{1} / \iota _{q}范数。它们也被称为块稀疏正则化,因为它们导致将A的整行设置为0。[Zhang,2008]使用\iota _{1} / \iota _{\infty }正则化,而[Argyriou,2007]使用混合的\iota _{1} / \iota _{2}范数。后者也被称为组套索,最初由[yuan,2006]提出。
块稀疏正则化在直觉上是合理的,但它非常依赖于在任务之间共享特征的程度,如果特征没有太多重叠,\iota _{1} / \iota _{q}正则化实际上可能比元素\iota _{1}正则化更糟糕。为此,[Jalali,2010]提出了一种结合块稀疏和元素稀疏正则化的方法,改进了块稀疏模型。他们将任务参数矩阵A分解为两个矩阵B和S,其中A=B+S。然后使用\iota _{1} / \iota _{\infty }正则化将B强制为块稀疏,而使用套索将S强制为元素稀疏。

....

5.2 Learning task relationships

虽然组稀疏性约束迫使我们的模型只考虑少数特征,但这些特征主要用于所有任务。因此,以往的方法都假设多任务学习中使用的任务是密切相关的。但是,每个任务可能与所有可用任务都不密切相关。在这些情况下,与无关任务共享信息实际上可能会损害性能,这种现象称为负迁移。
因此,我们希望利用先前的知识,而不是稀疏性,表明有些任务是相关的,而另一些则不是。在这种情况下,强制任务集群的约束可能更合适。[Evgeniou,2005]建议通过惩罚我们的任务列向量(a.1 ,…, a.t)的规范以及它们与以下约束的方差来施加聚类约束:,其中是平均参数向量,此惩罚强制任务参数向量(a.1 ,…, a.t)的mean由λ控制。它们将这个约束应用于kernel方法,但它同样适用于线性模型。
SVMs也提出了类似的约束[Evgeniou,2004]。他们的约束是受到贝叶斯方法的启发,并试图使所有的模型接近一些mean模型。在支持向量机中,每一个支持向量机的损失都是以接近mean模型为代价的。

由于该约束假设簇是预先已知的,因此它们引入了上述惩罚的凸松弛,从而允许同时学习簇。

....

六、Recent work on MTL for Deep Learning

虽然许多最近的深度学习方法都使用了多任务学习(无论是显式的还是隐式的)作为其模型的一部分(下一节将重点介绍突出的示例),但它们都使用了我们前面介绍的两种方法,硬参数共享和软参数共享。相比之下,只有几篇论文研究了在深层神经网络中开发更好的MTL机制。

6.1 Deep Relationship Networks

在用于计算机视觉的MTL中,方法是通常共享卷积层,同时学习特定于任务的完全连接层。《Learning Multiple Tasks with Deep Rela-tionship Networks.》【Long,2015】通过提出深度关系网络,改进这些模式。除了共享层和任务特定层的结构(如图)之外,它们还将矩阵优先级放在完全连接的层上,这使得模型能够学习任务之间的关系,类似一些贝叶斯模型。然而,这种方法仍然依赖于预先定义的共享结构,这种结构可能适合于研究良好的计算机视觉问题,但对于新任务来说,它很容易出错。

3

6.2 Fully-Adaptive Feature Sharing

从一端开始,<Fully-adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attribute Classifica-
tion.>[Lu,2016]提出了一种自底向上的方法,该方法从一个瘦网络开始,在训练期间使用一个促进相似任务分组的标准动态地扩展它。图4显示了动态创建分支的扩展过程。然而,贪心方法可能无法发现全局最优的模型,而将每个分支分配给一个任务则不允许模型学习任务之间更复杂的交互。

4

6.3 Cross-stitch Networks

<Cross-stitch Networks for Multi-task Learning>[Misra,2016]从两个独立的模型架构开始,就像软参数共享一样。然后,他们使用他们所称的十字绣单元,以允许模型通过学习前一层输出的线性组合,确定特定于任务的网络以何种方式利用其他任务的知识。它们的架构可以在图5中看到,其中它们只在池化和全连接层之后放置十字绣单元。

5

6.4 Low supervision

相反,在自然语言处理(NLP)最近的研究集中在寻找更好的多任务学习任务层次结构:[Søgaard,2016]表明,低级任务,例如NLP任务通常用于预处理,如词性标注和命名实体识别时应监督底层用作辅助任务。

6.5 A Joint Many-Task Model

基于这一发现,[Hashimoto,2016]预先定义了由几个NLP任务组成的层次结构,如图6所示,作为多任务学习的联合模型。

6

6.6 Weighting losses with uncertainty

与学习分享的结构不同,[Kendall,2017]通过考虑每个任务的不确定性,采用正交方法。然后,通过基于任务相关不确定性的高斯似然最大化导出多任务损失函数,调整每个任务在成本函数中的相对权重。它们的每像素深度回归、语义和实例分割架构如图7所示。

7 基于不确定性的多任务学习损失函数加权

6.7 Tensor factorisation for MTL

更近期的工作试图将现有的MTL方法推广到深度学习:[Yang,2017]推广了一些之前讨论过的矩阵分解方法,使用张量分解将模型参数分解为每个层的共享和特定于任务的参数。

6.8 Sluice Networks

水闸网络[Ruder, 2017],该模型概括了基于深度学习的MTL方法,如硬参数共享和十字缝网络、块-稀疏正则化方法,以及最近创建任务层次结构的NLP方法。如图8所示,该模型允许了解应该共享哪些层和子空间,以及网络在哪些层上了解了输入序列的最佳表示形式.

8. 一个用于两个任务的水闸网络

6.9 What should I share in my model?

在调查了这些最近的方法之后,现在让我们简要地总结并得出结论:在我们的深层MTL模型中应该共享什么。MTL历史上的大多数方法都集中在任务来自相同分布的场景中[Baxter, 1997]。虽然这种情况有利于共享,但并不总是适用。为了为MTL开发健壮的模型,我们必须能够处理不相关的或者仅仅是松散相关的任务。
虽然MTL的早期工作已经预先指定了每个任务对共享哪些层,但是这种策略不具有可伸缩性,并且严重影响了MTL体系结构。硬参数共享,一种最初由[Caruana, 1993]提出的技术,在20年后仍然是norm。虽然在许多场景中有用,但是如果任务不是紧密相关的,或者需要在不同的层次上进行推理,那么硬参数共享很快就会失效。因此,最近的方法着眼于了解要共享什么,并且通常优于硬参数共享。此外,赋予我们的模型学习任务层次结构的能力是有帮助的,特别是在需要不同granularities的情况下。
如前所述,只要优化多个损失函数,我们就执行MTL。因此,与其限制我们的模型将所有任务的知识压缩到同一个参数空间中,不如利用我们讨论过的MTL的进展,使我们的模型能够了解任务之间应该如何交互。

七、Auxiliary tasks

当我们对同时获得多个任务的预测感兴趣时,MTL是一种自然的适合。这种情况在金融或经济预测中很常见,我们可能希望预测许多可能相关的指标的价值,或者在生物信息学中我们可能希望同时预测多种疾病的症状。在药物发现等需要预测数十或数百种活性化合物的情况下,MTL的准确性随着任务数量的增加而不断提高。然而,在大多数情况下,我们只关心一个任务的性能。因此,在本节中,我们将着眼于如何找到合适的辅助任务,以便仍然获得多任务学习的好处。

7.1 Related task

使用相关任务作为MTL的辅助任务是经典的选择。为了了解相关的任务是什么,我们将给出一些突出的例子。[Caruana, 1998]使用预测道路不同特征的任务作为辅助任务来预测自动驾驶汽车的转向方向;[Zhang,2014]使用头部姿态估计和面部属性推断作为辅助任务进行面部地标检测;[Liu , 2015]共同学习查询分类和web搜索;[Girshick, 2015]联合预测图像中物体的类别和坐标;最后,(Arık ,2017)共同预测语音音素持续时间和频率配置文件。

7.2 Adversarial

通常,相关任务的标记数据不可用。然而,在某些情况下,我们有机会完成一项与我们希望实现的目标相反的任务。这些数据可以利用对抗性损失,这并不寻求最小化,但最大限度地训练误差使用梯度逆转层。这一设置最近在域适应方面取得了成功[Ganin,2015]。在这种情况下,对抗性任务是预测输入的域;通过逆转对抗性任务的梯度,使对抗性任务损失最大化,这有利于主任务,因为它迫使模型学习无法区分域的表示。

7.3 Hints

如前所述,MTL可用于学习仅使用原始任务可能不容易学习的特性。实现这一点的有效方法是使用提示,即将特征预测作为辅助任务。最近,在自然语言处理的背景下,这种策略的例子有[Yu,2016],他们预测输入句子是否包含积极或消极情绪词作为情绪分析的辅助任务,以及[Cheng,2015年]预测一个名字出现在一个句子是否为辅助任务名称错误检测。

7.4 Focusing attention

类似地,辅助任务可用于将注意力集中在网络通常可能忽略的图像部分。例如,为了学习驾驶[Caruana,1998],单个任务模型通常会忽略车道标记,因为这些标记只占图像的一小部分,并不总是显示出来。然而,预测车道标线作为辅助任务会迫使模型学习表示它们;然后,这些知识也可以用于主要任务。类似地,对于面部识别,人们可以学习作为辅助任务来预测面部标志点的位置,因为这些标志点通常是独特的。

7.5 Quantization smoothing

对于许多任务,训练目标是量化的,也就是说,虽然一个连续的尺度可能更合理,但标签用的是离散集。这是在许多场景中,需要人力评估数据收集、预测等疾病的风险(如低/中/高)或情绪分析(正面/中性/负面)。在这些情况下,使用较少量化的辅助任务可能会有所帮助,因为它们的目标更平滑,因此更容易学习。

7.6 Predicting inputs

在某些情况下,使用某些特性作为输入是不切实际的,因为它们无助于预测所需的目标。然而,他们可能仍然能够指导任务的学习。在这些情况下,这些特性可以用作输出而不是输入。

7.7 Using the future to predict the present

在许多情况下,某些功能只有在进行预测之后才可用。例如,对于自动驾驶汽车,一旦汽车通过障碍物和车道标线,就可以进行更精确的测量。[Caruana,1998]还提供了肺炎预测的例子,之后将提供其他医学试验的结果。对于这些示例,附加数据不能当作features,因为它在运行时不能用作输入。然而,它可以作为一项辅助任务,在训练期间向模型传授额外的知识。

7.8 Representation learning

MTL中辅助任务的目标是使模型能够学习对主任务共享或有帮助的表示。到目前为止讨论的所有辅助任务都是隐式的:它们与主任务密切相关,因此学习它们可能使模型能够学习有益的表示。更明确的建模是可能的,例如通过使用已知的任务,使模型能够学习可转移的表示。[Cheng,2015]和[Rei,2017]采用的语言建模目标实现了这一角色。同样,自动编码器目标也可以用作辅助任务。

7.9 What auxiliary tasks are helpful

在本节中,我们讨论了不同的辅助任务,这些任务可以用来利用MTL,即使我们只关心一个任务。但是,我们还不知道什么样的辅助任务在实践中会有用。找到一个辅助任务很大程度上是基于这样的假设:辅助任务应该以某种方式与主任务相关,并且它应该有助于预测主任务。
然而,我们仍然不清楚什么时候两个任务应该被认为是相似或相关的。[Caruana,1998]定义了两个相似的任务,如果它们使用相同的特性来做决定。[Baxter,2000]仅从理论上论证了相关任务共享一个共同的最优假设类,即具有相同的归纳偏差。[Ben David和Schuller,2003]提出,如果两个任务的数据都可以通过一组变换F从固定概率分布中生成,则两个任务是F相关的。虽然这允许对不同传感器为同一分类问题收集数据的任务进行推理,例如,使用来自不同角度和照明条件下,它不适用于不处理同一问题的任务。[Xue,2007]最后指出,如果两个任务的分类边界(即parameter vectors)接近,则它们是相似的。
尽管在理解任务关联性方面有了这些早期的理论进展,但在实现这一目标方面并没有取得多大进展。任务相似性不是二元的,而是存在于一个谱上。允许我们的模型学习与每个任务共享什么,可能会让我们暂时避免缺乏理论,甚至更好地利用松散相关的任务。然而,我们也需要建立一个更为原则性的任务相似性概念,以了解哪些任务是我们应该选择的。
最近的工作[Alonso,2017]发现,对于NLP中的序列标记问题,具有紧凑和统一标签分布的辅助任务更为可取,我们已经在实验中证实了这一点[Ruder,2017]。此外,研究发现,主要任务在非平稳辅助任务的快速稳定下更有可能获得收益【Bingel,2017年】。然而,这些实验到目前为止的范围还很有限,最近的发现仅仅为深入理解神经网络中的多任务学习提供了第一条线索。

八、结论

在本综述中,回顾了多任务学习的研究历史,以及近年来关于深度学习的MTL研究。虽然MTL的使用越来越频繁,但已有20年历史的硬参数共享模式仍然普遍适用于基于神经网络的MTL。然而,最近在学习分享什么方面取得的进展是有希望的。同时,我们对任务的理解——它们的相似性、关系、层次性以及对MTL的益处——仍然有限,我们需要对它们进行更深入的研究,以便更好地理解MTL对深层神经网络的泛化能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nooobme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值