【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

原题:An Overview of Multi-Task Learning in Deep Neural Networks
原文:HTMLPDF
年份:2017
被引:894(2020/10/26)
作者:Sebastian Ruder



Abstract

多任务学习(MTL)已经在机器学习的许多应用中取得了成功,从自然语言处理和语音识别到计算机视觉和药物发现。本文旨在给出MTL的一般概述,特别是在深度神经网络方面。它介绍了MTL在深度学习中最常用的两种方法,给出了文献综述,并讨论了最近的进展。特别是,它试图通过阐明MTL是如何工作的,并为选择适当的辅助任务提供指导方针,帮助语言学习者应用MTL。


Introduction

在机器学习(ML)中,我们通常关心优化特定指标(particular metric),无论这是某个基准的(benchmark)分数还是业务关键绩效指标(business KPI)。为了做到这一点,我们通常训练单个模型或一组模型来执行我们想要的任务。然后微调和调整这些模型,直到它们的性能不再增加。虽然通过这种方式实现可接受的性能,但专注于单一任务,忽略了可能有助于在关心的指标上做得更好的信息。具体来说,这些信息来自相关任务的训练信号。通过在相关任务之间共享表示,可以使模型更好地概括原始任务。这种方法被称为 多 任 务 学 习 ( M u l t i − T a s k   L e a r n i n g , M T L ) 多任务学习(Multi-Task\ Learning,MTL) (MultiTask LearningMTL)

从自然语言处理[1]和语音识别[2]到计算机视觉[3]和药物发现[4],多任务学习已经成功地应用于机器学习的所有应用中。MTL以多种形式出现:联合学习( joint learning)、学会学习(learning to learn)和带辅助任务的学习(learning with auxiliary tasks)只是用来指代它的一些名称。一般来说,优化不止一个损失函数,就是在有效地进行多任务学习(与单任务学习相反)。

即使只是像一般情况那样优化一个损失,也有可能有一个辅助任务帮助改进主要任务。Rich Caruana [5]简洁地总结了MTL的目标:MTL通过利用包含在相关任务的训练信号中的领域特定信息来提高泛化能力

在这篇博文中,我将对多任务学习做一个概述,特别是当它涉及到具有深层神经网络的MTL时。我将首先从不同的角度解释MTL。然后介绍MTL在深度学习中最常用的两种方法。随后,我将描述一些机制,这些机制共同说明了为什么MTL在实践中发挥作用。在看更先进的基于神经网络的MTL方法之前,我将通过讨论MTL的文献提供一些背景。然后我将介绍一些最近为MTL提出的更强大的深层神经网络方法。最后,我将谈谈常用的辅助任务类型,并讨论什么是适合MTL的辅助任务。


Motivation

我们可以用不同的方式理解多任务学习:从生物学上来说,可以将多任务学习视为受到人类学习的启发。对于学习新的任务,我们经常会把通过学习相关任务所获得的知识应用到学习中。例如,婴儿首先学会识别人脸,然后可以应用这些知识来识别其他物体。

从教育学的角度来看,我们通常首先学习为我们提供掌握更复杂技术所需技能的任务。例如电影《空手道小子》,宫城老师教空手道小子看似无关的任务,如打磨地板和给汽车打蜡。事后看来,这些正是学习空手道相关的无价技能。

从机器学习的角度来看,可以将多任务学习视为一种归纳迁移(inductive transfer)的形式。归纳转移可以通过引入归纳偏置(inductive bias)来帮助改进模型,这使得模型偏好一些假设。例如,归纳偏置的一种常见形式是ℓ1正则化,这导致偏好稀疏解(sparse solutions)。在MTL的例子中,归纳偏置是由辅助任务提供的,这使得模型更喜欢解释以上任务的假设,这通常会导致更好的解决方案


Two MTL methods for Deep Learning

迄今为止,我们一直关注MTL的理论动机。为了使MTL的想法更加具体,现在来看看在深层神经网络中执行多任务学习的两种最常用的方法。在深度学习的环境中,多任务学习通常通过隐藏层的硬或软参数共享(hard or soft parameter sharing)来完成

Hard parameter sharing

硬参数共享(Hard parameter sharing)是神经网络中最常用的MTL方法,可以追溯到[6]。它通常通过在所有任务之间共享隐藏层来应用,同时保留几个特定于任务的输出层

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 1: Hard parameter sharing for multi-task learning in deep neural networks

硬参数共享大大降低了过拟合的风险。事实上,[7]表明,共享参数过拟合的风险是N阶的,其中N是任务的数量,小于过拟合任务特定的参数,即输出层。这在直觉上是有意义的:同时学习的任务越多,模型就越需要找到一个能够捕捉所有任务的表示,过度适应原始任务的机会就越小

Soft parameter sharing

在软参数共享(soft parameter sharing)中,每个任务都有自己的模型和参数。然后调整模型参数之间的距离,以促使参数相似[8]。例如,使用ℓ2范数进行正则化,而[9]使用迹范数(trace norm)。

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks
深度神经网络中用于软参数共享的约束受MTL正则化技术的启发,这些正则化技术已被开发用于其他模型,我们将很快讨论这些模型。


Why does MTL work?

尽管通过多任务学习获得的归纳偏置( inductive bias)在直觉上似乎是合理的,但为了更好地理解MTL,我们需要看看其背后的机制。其中大部分是 Caruana (1998) 首先提出的。对于所有的例子,假设有两个相关的任务 A A A B B B,它们依赖于一个公共的隐藏层表示 f f f

Implicit data augmentation

MTL有效地增加了用来训练模型的样本量。由于所有任务至少都有些噪声,当在任务 A A A 上训练模型时,目标是为任务 A A A 学习一个良好的表示,理想地忽略数据相关的噪声并很好地推广。由于不同的任务具有不同的噪声模式,同时学习两个任务的模型能够学习更一般的表示。只学习任务 A A A 有过度适应任务 A A A 的风险,而共同学习 A A A B B B 使模型通过平均噪声模式获得更好的表示 F F F

Attention focusing

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

Eavesdropping

有些特征 G G G 对于某些任务 B B B 来说很容易学习,而对于另一个任务 A A A 来说很难学习。这可能是因为 A A A 以更复杂的方式与特征交互,或者是因为其他特征阻碍了模型学习 G G G 的能力。通过MTL,可以允许模型偷听(Eavesdropping),即通过任务 B B B 学习 G G G。最简单的方法是通过提示( hints)[10],即直接训练模型来预测最重要的特征。

Representation bias

MTL将模型偏向于其他任务也偏好的表征。这也将有助于模型在未来推广到新任务,因为假设空间对于足够多的训练任务表现良好,对于学习新任务也表现良好,只要它们来自相同的环境[11]

Regularization

最后,MTL通过引入归纳偏置(inductive bias)来充当正则化算子。因此,它降低了过拟合的风险以及模型的 Rademacher 复杂性,即其适应随机噪声的能力。


MTL in non-neural models

为了更好地理解深层神经网络中的MTL,我们现在将查阅MTL的现有文献,了解线性模型、核方法和贝叶斯算法。特别是,我们将讨论贯穿多任务学习历史的两个主要思想:通过范数正则化加强任务间的稀疏性;以及模拟任务之间的关系

请注意,文献中的许多MTL方法都处理同质设置(homogenous setting):它们假设所有任务都与单个输出相关联,例如,多类MNIST数据集通常被转换为10个二进制分类任务。最近的方法处理更现实的(realistic)、异构的(heterogeneous)环境,其中每个任务对应于一组唯一的输出。

Block-sparse regularization

为了更好地介绍以下方法,让我们首先明确一些符号。我们有 T T T 任务。对于每个任务 t t t,都有一个模型 m t m_t mt,其参数为 d d d 维。我们可以将这些参数写成列向量 a t = [ a 1 , t … a d , t ] T a_t = [a_{1, t…}a_{d,t}]^T at=[a1,tad,t]T。现在堆叠这些列向量 a 1 , . . . , a T a_1,...,a_T a1,...,aT 以形成矩阵 A ∈ R d × T A∈R^{d×T} ARd×T。然后, A A A 的第 i i i 行包含对应于每个任务的模型的第 i i i 个特征相对应的参数 a i , ⋅ a_{i,·} ai, ,而 A A A 的第 j j j 列包含与第 j j j 个模型相对应的参数 a ⋅ , j a_{⋅,j} a,j

现有的许多方法对模型的参数做了一些稀疏假设[12]。假设所有模型共享一组小的特征。例如,对于任务参数矩阵A,除了几行之外,所有行都是0,这对应于所有任务中仅使用了几个特征。为了加强这一点,他们将 ℓ 1 ℓ_1 1 范数推广到MTL设置。回想一下, ℓ 1 ℓ_1 1 范数是对参数和的一个约束,它迫使除了少数几个参数之外的所有参数都恰好为0。也叫 lasso(least absolute shrinkage and selection operator)。

而在单任务设置中, ℓ 1 ℓ_1 1 范数是基于相应任务 t t t 的参数向量 a t a_t at 来计算的,对于MTL,通过任务参数矩阵 A A A 来计算它。为了做到这一点,首先计算每行 a i a_i ai 上的 ℓ q ℓq q 范数,该范数包含对应于所有任务的第 i i i 个特征的参数,这产生向量 b = [ ∣ a 1 ∣ q … ∣ a d ∣ q ] ∈ R d b=[ |a_1|_q…|a_d|_q ]∈R^d b=[a1qadq]Rd。然后我们计算这个向量的 ℓ 1 ℓ_1 1 范数,这迫使除了 b b b 的几个条目之外的 A A A 中的行都为0。

根据我们希望在每行上放置的约束,可以使用不同的 ℓ q . ℓ_{q.} q.,通常将这些混合范数约束称为 ℓ 1 / ℓ q ℓ_1/ℓ_q 1/q 范数。它们也被称为 块稀疏正则化(block-sparse regularization),因为它们导致 A A A 中整行的被设置为0。[13]使用 ℓ 1 / ℓ ∞ ℓ_1/ℓ_∞ 1/ 正则化,而Argyriou等人(2007年)使用混合 ℓ 1 / ℓ 2 ℓ_1/ℓ_2 1/2 范数。后者也被称为 group lasso,由[14]首次提出。

Argyriou等人(2007)还表明,优化非凸group lasso(non-convex group lasso)的问题可以通过惩罚 A A A 的迹范数而变凸,这迫使 A A A 是低秩的(low-rank),从而约束列参数向量 a ⋅ , 1 , … , a ⋅ , t a_{⋅,1},…,a_{⋅,t} a,1,,a,t 在低维子空间中。[15]此外,建立了在多任务学习中使用 group lasso 的上限。

虽然这种块稀疏正则化在直觉上是合理的,但它非常依赖于任务之间共享特征的程度。[16]表明,如果特征没有重叠太多, ℓ 1 / ℓ q ℓ_1/ℓ_q 1/q 正则化实际上可能比元素方式的(element-wise)ℓ1正则化效果更差

因此,[17]通过提出一种结合块稀疏和元素稀疏正则化的方法,改进了块稀疏模型。他们将任务参数矩阵 A A A 分解为两个矩阵 B B B S S S,其中 A = B + S A=B+S A=B+S,然后使用 ℓ 1 / ℓ ∞ ℓ_1/ℓ_∞ 1/ 正则化将 B B B 强制为块稀疏,而使用 lasso 将 S S S 元素稀疏化。最近,[18]提出了组稀疏正则化(group-sparse regularization)的分布式版本。

Learning task relationships

虽然组稀疏性约束迫使我们的模型只考虑少数特征,但这些特征在所有任务中都被广泛使用。因此,所有先前的方法都假设多任务学习中使用的任务是密切相关的。然而,每个任务可能并不与所有可用的任务密切相关。在这种情况下,与不相关的任务分享信息实际上可能会损害性能,这种现象被称为负迁移(negative transfer)。

与其说是稀疏性,不如说更愿意利用先前的知识来表明一些任务是相关的。在这种情况下,强制执行任务集群的约束可能更合适。[19]建议通过惩罚任务列向量 a ⋅ , 1 , … , a ⋅ , t a_{⋅,1},…,a_{⋅,t} a,1,,a,t 的规范以及它们与以下约束的差异来施加聚类约束:

Ω = ∣ a ˉ ∣ 2 + λ T ∑ t = 1 T ∣ a ⋅ , t − a ˉ ∣ 2 \Omega = |\bar{a}|^2 + \frac{\lambda}{T} \sum^T_{t=1}|a_{·,t} - \bar{a}|^2 Ω=aˉ2+Tλt=1Ta,taˉ2

其中, a ˉ = ( ∑ t = 1 T ) a ⋅ , t ) / T \bar{a} =(\sum^T_{t=1})a_{⋅,t})/T aˉ=(t=1T)a,t)/T 是平均参数向量(mean parameter vector)。这种惩罚强制任务参数向量 a ⋅ , 1 , … , a ⋅ , t a_{⋅,1},…,a_{⋅,t} a,1,,a,t 向其由 λ λ λ 控制的均值聚类。他们将这种约束应用于核方法,但它同样适用于线性模型。

文献[20]也对支持向量机提出了类似的约束。他们的约束受到贝叶斯方法的启发,并试图使所有模型接近某个平均模型。因此,在SVM中,每个SVM的损失都接近于均值模型,因此损失较大。

[21]通过在预先知道簇数C的假设下,对A进行形式化约束,使基于簇正则化的假设更加明确。然后,将惩罚项分解为三个独立的范数:

  • 全局罚分(global penalty),用于衡量列参数矢量的平均大小: Ω m e a n ( A ) = ∣ a ˉ ∣ 2 Ω_{mean}(A)= |\bar{a}|^2 Ωmean(A)=aˉ2
  • 聚类之间方差的量度,用于衡量聚类彼此之间的接近程度: Ω b e t w e e n ( A ) = ∑ c = 1 C T c ∣ a ˉ c − a ˉ ∣ 2 Ω_{between}(A) = \sum^C_{c = 1} T_c |\bar{a}_c − \bar{a}|^2 Ωbetween(A)=c=1CTcaˉcaˉ2 其中 T c T_c Tc 是第 c c c 个簇中的任务数量,而 a ˉ c \bar{a}_c aˉc 是第 c c c 个簇中任务参数矢量的均值矢量。
  • 聚类内方差的度量,用于衡量每个群集的紧凑程度: Ω w i t h i n = ∑ c = 1 C ∑ t ∈ J ( c ) ∣ a ⋅ , t − a ˉ c ∣ 2 Ω_{within} = \sum^C_{c = 1} \sum_{t∈J(c)} |a_{⋅,t} − \bar{a}_c|^2 Ωwithin=c=1CtJ(c)a,taˉc2,其中 J ( c ) J(c) J(c) 是任务集第 c c c 个簇。

然后,最后的约束是三个范数的加权和:
Ω ( A ) = λ 1 Ω m e a n ( A ) + λ 2 Ω b e t w e e n ( A ) + λ 3 Ω w i t h i n ( A ) Ω(A)=λ_1Ω_{mean}(A)+λ_2Ω_{between}(A)+λ_3Ω_{within}(A) Ω(A)=λ1Ωmean(A)+λ2Ωbetween(A)+λ3Ωwithin(A)
由于此约束假设簇是事先已知的,因此它们引入了上述惩罚的凸松弛,从而可以同时学习簇。

在另一种情况下,任务可能不会在簇中发生,但具有固有的结构。[22]扩展了 group lasso,以处理在树结构中发生的任务,而[23]将其应用于具有图结构(graph structures)的任务。

虽然以前的用于建模任务之间关系的方法采用规范化正则化,但其他方法却没有采用正则化:[24]是最早提出使用k近邻算法的任务聚类算法的,而[25]则从多个学习了一个通用结构相关任务,并应用于半监督学习。

用于多任务学习的学习任务关系的许多其他工作都使用贝叶斯方法:

[26]提出了一种用于多任务学习的贝叶斯神经网络,方法是在模型参数上放置先验值,以鼓励跨任务使用相似的参数。 [27]通过推断共享协方差矩阵(shared covariance matrix)的参数,将高斯过程(Gaussian processes,GP)扩展到MTL。由于这在计算上非常昂贵,因此他们采用了一种稀疏的近似方案,该方案会贪婪地选择信息量最大的示例。 [28]通过假设所有模型都来自一个共同的先验,也将GP用于MTL。

[29]将高斯分布作为每个任务特定层的先验分布。为了鼓励不同任务之间的相似性,他们建议使平均任务依赖于工作,并使用混合分布引入任务的聚类。重要的是,它们需要任务特征,这些特征定义了簇和要预先指定的混合数量。

在此基础上,[30]从Dirichlet过程中得出分布,并使模型能够学习任务之间的相似性以及聚类的数量。然后,它们在同一集群中的所有任务之间共享同一模型。 [31]提出了一个层次贝叶斯模型,该模型学习了一个潜在的任务层次结构,而[32]则将基于GP的正则化用于MTL并扩展了以前基于GP的方法,使其在较大的设置中在计算上更加可行。

其他方法侧重于在线多任务学习(online multi-task learning)设置:[33]改编一些现有方法进入在线设置,例如Evgeniou等人的方法(2005)。他们还提出了正则化感知器的MTL扩展,该扩展在矩阵中编码任务相关性。他们使用不同形式的正则化来偏向此任务相关性矩阵,例如任务特征向量的接近度或跨度子空间的维数。重要的是,类似于某些早期方法,它们要求预先提供组成此矩阵的任务特征。 [34]然后通过学习任务关系矩阵扩展了先前的方法。

[35]假设任务形成不相交的组,并且每个组内的任务都位于一个低维子空间中。在每个组中,任务共享相同的特征表示,使用交替的最小化方案与组分配矩阵一起共同学习其参数。但是,组之间的完全脱离可能不是理想的方法,因为任务可能仍具有一些有助于预测的功能。

[36]通过假设存在少量潜在基础任务(latent basis tasks),从而允许来自不同组的两个任务重叠。然后,他们将每个实际任务 t t t 的参数向量 a t a_t at 建模为以下各项的线性组合: a t = L s t a_t = Ls_t at=Lst 其中 L ∈ R k × d L∈R^{k×d} LRk×d 是包含 k k k 个潜在任务的参数向量的矩阵,而 s t ∈ R k s_t∈R^k stRk 是包含系数的向量的线性组合。另外,它们限制了线性组合在潜在任务中的稀疏性。然后,两个任务之间的稀疏模式重叠会控制这两个任务之间的共享量。最后,[37]学习一小部分共享假设,然后将每个任务映射到一个假设。


Recent work on MTL for Deep Learning

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

Deep Relationship Networks

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 3: A Deep Relationship Network with shared convolutional and task-specific fully connected layers with matrix priors (Long and Wang, 2015).

Fully-Adaptive Feature Sharing

从另一个极端开始,[39]提出了一种自下而上的方法,该方法从瘦网络(thin network)开始,并使用促进相似任务分组的准则在训练过程中贪婪地动态扩展它。可以动态创建分支的扩展过程如图4所示。但是,贪婪方法可能无法发现全局最优的模型,而将每个分支分配给一个任务就无法使模型学习更复杂任务之间的交互。

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 4: The widening procedure for fully-adaptive feature sharing (Lu et al., 2016).

Cross-stitch Networks

[40]从两个独立的模型架构开始,就像在软参数共享中一样。然后,他们使用所谓的十字绣单元来允许模型通过学习先前各层输出的线性组合来确定特定任务的网络以何种方式利用其他任务的知识。从图5中可以看到它们的体系结构,其中它们仅在池化和完全连接的层之后放置十字绣单元。
【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 5: Cross-stitch networks for two tasks (Misra et al., 2016).

Low supervision

相比之下,在自然语言处理(NLP)中,最近的工作集中在为多任务学习找到更好的任务层次结构:[41]显示低级任务,即通常用于预处理(例如词性标记)的NLP任务和命名实体识别(named entity recognition),当用作辅助任务时应在较低层进行监督。

A Joint Many-Task Model

基于这一发现,[42]预定义了由几个NLP任务组成的分层架构,这是多任务学习的联合模型,如图6所示。

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 6: A Joint Many-Task Model (Hashimoto et al., 2016).

Weighting losses with uncertainty

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

【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 7: Uncertainty-based loss function weighting for multi-task learning (Kendall et al., 2017).

Tensor factorisation for MTL

最近的工作试图推广用于深度学习的MTL的现有方法:[44]使用张量因数分解将模型参数分成每一层的共享参数和特定于任务的参数,从而概括一些先前讨论的矩阵因式分解方法。

Sluice Networks

最后,我们提出了Sluice Networks [45],该模型将基于深度学习的MTL方法(例如硬参数共享和十字绣网络,块稀疏正则化方法以及最近创建任务层次结构的NLP方法)进行了推广。可以在图8中看到的模型允许了解应该共享哪些层和子空间,以及网络已在哪些层学习了输入序列的最佳表示。
【多任务学习】An Overview of Multi-Task Learning in Deep Neural Networks

Figure 8: A sluice network for two tasks (Ruder et al., 2017).

What should I share in my model?

在研究了这些最近的方法之后,现在让我们简要地总结一下并得出关于在深层MTL模型*享哪些内容的结论。 MTL历史上的大多数方法都集中在从相同的分布中提取任务的场景中(Baxter,1997)。尽管此方案对于共享很有用,但并非总是如此。为了开发健壮的MTL模型,我们必须能够处理不相关的任务或仅涉及松散相关的任务(loosely related tasks)。

虽然用于深度学习的MTL的早期工作已经预先指定了每个任务配对要共享的层,但是此策略无法扩展,并且会严重影响MTL架构。硬参数共享(一种最初由Caruana(1996)提出的技术)在20年后仍然很普遍。虽然在许多情况下很有用,但是如果任务不紧密相关或需要在不同级别进行推理,则硬参数共享会迅速崩溃。因此,最近的方法已经着眼于学习共享什么,并且总体上胜过硬参数共享。另外,赋予我们的模型学习任务层次的能力是有帮助的,尤其是在需要不同粒度的情况下。

正如最初提到的,一旦我们优化了多个损失函数,则就是在进行MTL。因此,与其约束模型以将所有任务的知识压缩到相同的参数空间中,不如借鉴已经讨论过的MTL的进步,使模型能够学习任务之间的交互方式,这是有帮助的。


Auxiliary tasks

当我们有兴趣一次获得多个任务的预测时,MTL很自然。这种情况很常见,例如在金融或经济学预测中,我们可能希望预测许多可能相关指标的价值,在生物信息学中,我们可能希望同时预测多种疾病的症状。在药物发现等场景中,应预测数十或数百种活性化合物,MTL的准确度会随着任务的数量的增长而不断增加(Ramsundar等人,2015)

但是,在大多数情况下,我们只关心一项任务的性能。因此,在本节中,我们将研究如何找到合适的辅助任务,以便仍能从多任务学习中受益

Related task

将相关任务用作MTL的辅助任务是经典选择。为了弄清楚相关任务是什么,我们将提供一些突出的示例。 Caruana(1998)使用预测道路特性的任务作为辅助任务来预测自动驾驶汽车的转向。 [46]使用头部姿势估计和面部属性推断作为面部标志检测的辅助任务; [47]共同学习查询分类和网络搜索; Girshick(2015)共同预测图像中对象的类别和坐标;最后,[48]共同预测了语音到语音的持续时间和频率分布。

Adversarial

通常,相关任务的标记数据不可用。但是,在某些情况下,可以访问与我们要实现的任务相反的任务。可以使用对抗性损失(adversarial loss)来利用此数据,对抗性损失不是试图使用梯度逆转层(gradient reversal layer)来最小化而是最大化训练误差。这种设置最近在域自适应中获得了成功[49]。在这种情况下,对抗性任务是预测输入的范围。通过逆转对抗任务的梯度,对抗任务的损失会最大化,这对主要任务是有利的,因为它迫使模型学习无法区分域的表示(representations)。

Hints

如前所述,MTL可用于学习仅使用原始任务可能不容易学习的功能。实现此目的的一种有效方法是使用提示,即将功能预测为辅助任务。在自然语言处理的背景下,这种策略的最新示例是[50]预测输入句子包含正或负情感词作为情感分析的辅助任务,[51]预测句子中是否存在名称,例如:名称错误检测的辅助任务。

Focusing attention

同样,辅助任务可用于将注意力集中在网络通常可能会忽略的图像部分上。例如,为了学习转向(Caruana,1998),单任务模型通常会忽略车道标记,因为这些仅占图像的一小部分,并不总是存在。然而,将车道标记预测为辅助任务会迫使模型学习表示它们。然后,这些知识也可以用于主要任务。类似地,对于面部识别,人们可能会学会预测面部标志的位置作为辅助任务,因为这些通常很独特。

Quantization smoothing

对于许多任务,训练目标是量化的,即,虽然连续的量表可能更合理,但标签可以作为离散集使用。在许多需要人工评估以收集数据的情况下,例如预测疾病风险(例如,低/中/高)或情绪分析(阳性/中性/阴性)时就是这种情况。在这些情况下,使用量化程度较低的辅助任务可能会有所帮助,因为它们的目标更平滑,因此更容易学习。

Predicting inputs

在某些情况下,使用某些功能作为输入是不切实际的,因为它们对预测所需目标没有帮助。但是,他们仍然可以指导任务的学习。在这些情况下,这些功能可用作输出而不是输入。 [52]提出了一些适用的问题。

Using the future to predict the present

在许多情况下,某些功能只有在应该进行预测之后才可用。例如,对于自动驾驶汽车,一旦汽车经过障碍物和车道标记,就可以进行更准确的测量。 Caruana(1998)也给出了肺炎预测的例子,此后可以得到其他医学试验的结果。对于这些示例,附加数据不能用作功能,因为在运行时将无法用作输入。但是,它可以用作辅助任务,以在训练过程中向模型传递其他知识。

Representation learning

MTL中辅助任务的目标是使模型能够学习与主要任务共享或有帮助的表示形式。到目前为止,所有讨论的辅助任务都是隐式执行的:它们与主要任务密切相关,因此学习它们可能使模型学习有益的表示形式。更明确的建模是可能的,例如,通过采用已知的使模型能够学习可传递表示的任务。Cheng等人采用的语言建模目标(2015年)和[53]发挥了这一作用。同样,自动编码器目标也可以用作辅助任务。

What auxiliary tasks are helpful?

在本节中,我们讨论了可用于利用MTL的不同辅助任务,即使我们只关心一项任务也是如此。但是,我们仍然不知道什么辅助任务在实践中会有用。查找辅助任务主要是基于以下假设:辅助任务应以某种方式与主要任务相关,并且应有助于预测主要任务

然而,我们仍然不知道什么时候两个任务应该被认为是相似或相关的。Caruana (1998) 给出了两个相似任务的定义,如果他们使用相同的特征来做决定,则他们是相似的。Baxter (2000) 仅从理论上论证了相关任务共享一个共同的最优假设类,即具有相同的归纳偏差。[54]提出,如果两个任务的数据都可以使用一组变换 F F F 从固定的概率分布中生成,则提出两个任务与 F F F 是相关的。虽然这允许对不同传感器为同一分类问题收集数据的任务进行推理,例如,使用来自具有不同角度和照明条件的摄像机的数据进行对象识别,但它不适用于不处理同一问题的任务。Xue 等人(2007)认为,如果两个任务的分类边界(即参数向量)很近,则两个任务是相似的。

尽管在理解任务关联性方面取得了这些早期的理论进展,但我们最近在实现这一目标方面没有取得太大进展。任务相似性不是二元的,而是存在于一个谱上。在MTL,相似的任务越多帮助越大,相似的任务越少帮助越小。允许我们的模型学习与每个任务共享什么,可能会让我们暂时避开理论的缺乏,甚至更好地利用松散相关的任务。然而,我们还需要在多任务学习中发展一种更有原则的任务相似性概念,以便知道我们应该更喜欢哪些任务。

最近的工作[55]已经发现,对于自然语言处理中的序列标签问题,具有紧凑和均匀标签分布的辅助任务是更可取的,这一点我们已经在实验中得到证实(Ruder等人,2017)。此外,已经发现,对于主要任务来说,增益更有可能很快与非平稳辅助任务(non-plateauing auxiliary tasks)持平[56]。

然而,到目前为止,这些实验的范围有限,最近的发现只是为更深入地理解神经网络中的多任务学习提供了第一手线索。


Conclusion

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