An Overview of Multi-Task Learning in Deep Neural Networks

文章目录

  • An Overview of Multi-Task Learning in Deep Neural Networks
    • 摘要
    • 1. 引言
    • 2. 动机
    • 3. 两种深度学习多任务学习方法
      • 3.1. 硬参数共享
      • 3.2. 软参数共享
    • 4. 为什么多任务学习有效?
      • 4.1. 隐含的数据增强
      • 4.2. 注意力聚焦
      • 4.3. 窃听
      • 4.4. 表示偏见
      • 4.5. 正则化
    • 5. 非神经网络模型中的多任务学习
      • 5.1. 块稀疏正则化
      • 5.2. 学习任务关系
    • 6. 深度学习多任务学习的最近工作
      • 6.1. 深度关系网络
      • 6.2. 完全自适应特征共享
      • 6.3. 十字绣网络
      • 6.4. 低层监督
      • 6.5. 联合的多任务模型
      • 6.6. 利用不确定性加权损失
      • 6.7. 张量因式分解多任务学习
      • 6.8. 水闸网络
      • 6.9. 应该在模型中共享什么?
    • 7. 辅助任务
      • 7.1. 相关的任务
      • 7.2. 对抗
      • 7.3. 提示
      • 7.4. 聚焦注意力
      • 7.5. 量化平滑
      • 7.6. 预测输入
      • 7.7. 利用未来预测当前
      • 7.8. 表示学习
      • 7.9. 什么辅助任务是有帮助的?
    • 8. 结论

摘要

多任务学习已经在机器学习的很多领域取得成功,包括自然语言处理、语音识别、计算机视觉和药物发现。本文旨在给出多任务学习的概述,尤其是在深度神经网络方面的多任务学习。本文介绍了深度学习中两种最常用的多任务学习方法,给出了这方面的概述,并讨论了最新进展。特别是,它通过阐明多任务学习的工作原理并提供选择适当辅助任务的指南来帮助机器学习从业者应用多任务学习。

1. 引言

在机器学习中,我们通常关注优化一个特定的度量。为了做到这点,我们通常训练一个模型或者集成一些模型来实现我们想要的任务。然后我们微调这些模型直到性能不再提升。尽管通过这种方法我们通常也能取得可以接受的性能,但由于我们专注于单个任务,我们忽视了一些能帮助我们做得更好的信息。具体来说,这些信息来自相关任务的训练信号。通过共享相关任务的表示,我们能使得模型的泛化能力更好。这种方式称为多任务学习。

多任务学习已经在机器学习的很多领域取得成功,包括自然语言处理、语音识别、计算机视觉和药物发现。多任务学习有很多形式:联合学习、学会学习、利用辅助任务学习这些名字已经被用来指代多任务学习。通常,只要发现优化的损失函数超过一个,就是在做多任务学习。在这些情况下,这有助于明确地思考正在根据多任务学习做什么,并更好地理解它。

即使在某些典型场合只需要优化一个损失,一个辅助任务也有机会能提高主任务的性能。Caruana在1998年简洁地总结了多任务学习的目的:多任务学习通过利用相关任务的训练信号中包含的特定领域信息来提高泛化能力

在本文中,我们将给出现阶段多任务学习的概述,尤其是利用深度神经网络的多任务学习。第二节从不同角度给出多任务学习的动机。第三节介绍两种深度学习中最常用的多任务学习方法。第四节描述了一些机理,这些机理共同解释了为什么多任务学习在实践中有效。在关注先进的基于神经网络的多任务学习方法之前,在第五节给出了一些多任务学习相关的内容。第六节介绍了深度神经网络中最近提出的多任务学习方法。最后,在第七节讨论了一些广泛使用的辅助任务,并讨论了什么是多任务学习中好的辅助任务。

2. 动机

可以从不同的角度看多任务学习的动机:

  1. 从生物角度看,多任务学习可以看作是受人类学习的启发。在学习新的任务时,我们经常利用从相关任务中已经学习到的知识。
  2. 从教学角度看,我们经常首先学习一些提供必要技能的任务,这些技能可以被用于掌握更复杂的技术。举个例子,空手道老师先教小孩一些看上去无关的任务,比如打磨地板和给车上蜡。但后来,这些被证明是和学习空手道相关的无价技能。
  3. 从机器学习的角度看,多任务学习可以看成是一种归纳迁移。归纳迁移通过引进一个归纳偏差提升模型能力,而归纳偏差使得模型更偏爱一些假设。例如,一种归纳偏差的常见形式是L1正则化,这使得模型更偏爱稀疏解。在多任务学习中,归纳偏差通过辅助任务提供,而辅助任务使得模型更偏爱那些能解释多个任务的假设。我们很快就能看到,这通常导致更好的泛化性能。

3. 两种深度学习多任务学习方法

到目前为止,我们已经聚焦了多任务学习的理论动机。为了使多任务学习的观点更具体,我们现在将看到在深度神经网络中实现多任务学习的两种最常用的方法。在深度学习背景下,多任务学习通常通过隐藏层的硬参数共享或软参数共享实现。

3.1. 硬参数共享

硬参数共享是神经网络中实现多任务学习最常用的方法,最早可以追溯到1993年。如图1所示,硬参数共享通常通过共享所有任务的隐藏层实现,但会保持一些针对具体任务的输出层

硬参数共享极大地缓解了过拟合的风险。事实上,在1997年就有研究表明过拟合共享参数的风险要比过拟合特定于任务的参数(即输出层)的数量级小N。直观地看这很有意义:同时学习的任务越多,模型越不得不发现一种能涵盖所有任务的表达,并且在原始任务上越不容易过拟合

3.2. 软参数共享

在软参数共享中,每个任务有自己的模型和参数。然后通过正则化模型参数的距离来鼓励参数变得相似,如图2所示。Duong在2015年使用L2范数进行正则化,而Yang和Hospedales在2017年使用的是trace norm。

深层神经网络中用于软参数共享的约束受到了多任务学习的正则化技术的极大启发,该技术已应用在其他的模型中。

4. 为什么多任务学习有效?

尽管从多任务学习中获得的归纳偏见看上去是合理的,为了更好地理解多任务学习,我们需要看一下它背后的机理。下面这些的大多数最早由Caruana在1998年提出。在所有例子中,我们假设两个相关的任务A和B,它们依赖于一个公共的隐藏层表示F。

4.1. 隐含的数据增强

多任务学习有效地提升了训练数据的样本数量。由于所有任务至少有一定程度的噪声,当对某个任务A进行训练时,我们的目的是学习一个对A来说优秀的表示,该表示能无视数据依赖的噪声且有较好的泛化能力**。不同的任务有不同的噪声模式,一个同时学习两个任务的模型能学到更通用的表示**。只学习任务A会有对A过拟合的风险,但联合学习A和B使得模型能够通过不同噪声模式的平均获得一个更好的表示F。

4.2. 注意力聚焦

如果一个任务十分嘈杂或者数据是有限且高维的,模型很难区分出相关和无关的特征。多任务学习能帮助模型把注意力聚焦在真正重要的特征上,因为另外的任务提供了特征相关性和无关性的额外证据。

4.3. 窃听

有些特征G在任务B中很容易学习到,但在任务A中很难学习到。这可能是因为A以一种更复杂的方式和G交互,或者是因为另一些特征阻碍了模型学习G的能力。处理该问题最简单的方法是通过提示,如Abu-Mostafa在1990年的研究中所述,即直接训练模型来预测最重要的特征。

4.4. 表示偏见

多任务学习偏爱模型学习那些其他任务也偏爱的表示。Baxter在2000年的研究表明,这也将有助于模型将来泛化到新任务,因为对于足够多的训练任务都表现良好的假设空间,对于学习全新任务也将表现良好,只要它们来自同一环境。

4.5. 正则化

最后,多任务学习通过引入归纳偏见实现正则化。这样,它降低了过拟合的风险以及模型的Rademacher复杂度,即其拟合随机噪声的能力。

5. 非神经网络模型中的多任务学习

为了更好地理解深度学习中的多任务学习,现在我们将研究有关线性模型、核方法以及贝叶斯算法中现有的多任务学习相关文献。具体地,我们将讨论两种在多任务学习历史中始终存在的思路:1. 通过范数正则化强制不同任务之间的稀疏性2. 对任务关系进行建模

注意很多文献中的多任务学习方法都是处理同质设定的,他们假设所有任务都和单个输出关联,例如,通常将多分类的mnist数据集转化为10个二分类任务。更近的研究处理的是更现实的、异质的设定,每个任务和独一无二的输出相关。

5.1. 块稀疏正则化

5.2. 学习任务关系

6. 深度学习多任务学习的最近工作

尽管很多最近的深度学习方法都使用了多任务学习——无论显式地还是隐式地——作为模型的一部分,他们仍然使用的是前面提到的两种方法,硬参数共享和软参数共享。只有一些论文关注于发展深度学习中更好的多任务学习机制。

6.1. 深度关系网络

在计算机视觉中使用多任务学习时,通常共享卷积层,将全连接层作为任务具体的层进行学习。Long和Wang在2015年通过提出深度关系网络改进了这些模型。除了共享层和任务具体层的结构,他们在全连接层上使用了先验矩阵,使得模型能学到不同任务之间的关系,如图3所示,和前文所述的贝叶斯模型相似。但是这种方法仍依赖于提前定义共享的结构,这可能对于充分研究的计算机视觉问题时足够的,但在新任务中很容易出错。

6.2. 完全自适应特征共享

从另一个极端出发,Lu在2016年提出一种自下而上的模型,该模型从瘦小的网络出发,在训练过程中使用一种促进相似任务分组的标准贪婪地动态加宽网络结构。这种加宽过程,动态地创造了分支,如图4所示。但是这种贪婪策略可能不能发现全局最优解,同时给每个分支分配一个确切的任务也不能使得模型学习到任务之间复杂的相互关系。

6.3. 十字绣网络

正如软参数共享那样,Misra等人在2016年从两个分开的模型结构出发,然后他们使用一种十字绣单元来允许模型通过学习前一层输出的线性组合,来确定具体任务的网络以何种方式利用其他任务的知识。他们提出的结构如图5所示,只在池化和全连接层后使用十字绣单元。

6.4. 低层监督

相反,在自然语言处理(NLP)中,最近的工作重点是为多任务学习找到更好的任务层次结构。SΦgaard和Goldberg在2016年表明低级的任务,即NLP中通常作为预处理的任务如词性标记和命名实体识别,应该被在低层作为辅助任务被监督

6.5. 联合的多任务模型

基于这一发现,Hashimoto等人在2016预定义了由多个NLP任务组成的分层体系结构,可以将其作为多任务学习的联合模型,如图6所示。

6.6. 利用不确定性加权损失

正交意味着可以和模型类的方法结合。

认知不确定性;偶然不确定性;偶然不确定性分为数据依赖和任务依赖两部分。

代替学习共享结构,Kendall等人在2017年提出了一种正交的方法,通过考虑每个任务的不确定性。然后调整代价函数中每个任务的相对权重。相对权重通过推导一种利用任务依赖不确定性最大化高斯似然的多任务代价函数得到。他们在每个像素深度回归、语义和实例分割中提出的模型如图7所示。

6.7. 张量因式分解多任务学习

最近的工作试图归纳深度学习MTL的现有方法:Yang和Hospedales在2017年使用张量因式分解将模型参数分解为每一层的共享参数和特定于任务的参数,从而归纳了一些先前讨论的矩阵因式分解方法。

6.8. 水闸网络

最后,Ruder等人在2017年提出一种水闸网络,该网络涵盖了一些基于深度学习的多任务学习方法,例如硬参数共享、十字绣网络、块稀疏正则化方法以及最近在NLP中使用的任务层级方法。模型结构如图8所示。该模型能够学习到哪些层和子空间应该被共享,以及在哪些层网络已经学到了输入序列的最优表示。

6.9. 应该在模型中共享什么?

上文总结了最近的一些工作,下面简单地总结一下在深度多任务学习模型中应该共享些什么。历史上很多的多任务学习方法聚焦在了不同任务服从相同分布的场景。虽然这种情况是有益于共享的,但并非总是如此。为了发展更稳健的多任务学习模型,我们必须能处理哪些无关或者弱相关的任务。

虽然深度学习多任务学习的早期工作已经预先指定了每个任务要共享的层,但是这种策略无法扩展,并且会严重影响多任务学习的结构。硬参数共享,最早在1993年提出的方法,在20年后仍然是一种范式。尽管在很多场合都是有效的,但如果任务不是密切相关的或者需要在不同层级上进行推理,硬参数共享就会很快的失效。因此最近的方法转向学习需要共享的内容,性能通常优于硬参数共享。另外,给予模型学习任务层级的能力是有帮助的,尤其在需要不同粒度的场合。

如最初提到的那样,只要我们优化超过一个损失函数,我们就在进行多任务学习。与其通过约束模型参数将所有任务的知识压缩到相同的参数空间,不如借鉴我们已经讨论过的多任务学习的相关进展,使我们的模型学习任务之间的交互方式,这将是有帮助的。

7. 辅助任务

当我们的目标是一次获得多个任务的预测值时,多任务学习十分自然。这种情况很常见,例如在金融或经济学预测中,我们可能希望预测许多可能相关指标的价值,在生物信息学中,我们可能希望同时预测多种疾病的症状。在药物发现等场景中,应预测数十或数百种活性化合物,随着任务数量的增加,多任务学习的准确性将不断提高。

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

7.1. 相关的任务

经典的选择是使用相关任务作为多任务学习的辅助任务。 为了弄清楚相关任务是什么,我们将提供一些突出的示例。 Caruana使用预测道路特性的任务作为辅助任务来预测自动驾驶汽车的转向方向; Zhang等人将头部姿势估计和面部属性推断用作面部界标检测的辅助任务; Liu等人联合学习查询分类和网页搜索; Girshick联合预测图像中对象的类别和坐标;Arık联合预测了语音合成的音素持续时间和频率分布。

7.2. 对抗

通常,相关任务的标签数据是不可用的。 但是,在某些情况下,我们可以获得与我们要实现的任务相反的任务。 这样的数据可以通过对抗损失进行利用,对抗性损失使用梯度逆转层来最大化训练误差。 该设置最近发现在领域自适应方面很成功。在这种情况下,对抗性任务是预测输入的领域。 通过逆转对抗任务的梯度,对抗任务的损失会最大化,这对主要任务是有利的,因为它迫使模型学习不能区分领域的表示形式。

7.3. 提示

如前所述,可以使用多任务学习来学习仅使用原始任务可能不容易学习的特征。实现此目的的有效方法是使用提示,即将特征预测为辅助任务。在自然语言处理中这种策略的最新例子是Yu和Jiang的成果,他们将预测输入句子包含正或负的情感词作为情感分析的辅助任务;Cheng等人利用预测句子中是否存在名称作为名称错误检测的辅助任务。

7.4. 聚焦注意力

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

7.5. 量化平滑

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

7.6. 预测输入

在某些情况下,将某些特征作为输入是不切实际的,因为它们对预测所需要的目标没有帮助。但是,这些特征可能仍然可以指导任务的学习。在这些情况下,这些特征可用作输出而不是输入。Caruana和de Sa给出了几个可以使用这种方法的问题。

7.7. 利用未来预测当前

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

7.8. 表示学习

多任务学习中,辅助任务的目标是使模型能够学习对主要任务共享或有用的表示形式。到目前为止,所有讨论的辅助任务都是隐式执行的:它们与主要任务密切相关,因此学习它们可能使模型学习有用的表示形式。更明确的建模是可能的,例如利用一个已知能使模型学习到可迁移表示形式的任务。Cheng等人和Rei所采用的语言建模对象就可以起到这一作用。 同样,自动编码器对象也可以用作辅助任务。

7.9. 什么辅助任务是有帮助的?

本节中我们讨论了不同的辅助任务,这些辅助任务可以在我们只关注一个任务的情况下仍能使用多任务学习。我们仍然不知道在实践中什么辅助任务是有效的。选择辅助任务极大地基于这样的假设:辅助任务应该和主任务在某些方面相关。这样的辅助任务对预测主任务是有帮助的。

但是,我们还是不清楚何时应将两个任务视为相似或相关。Caruana认为,如果两个任务使用相同的功能进行决策,那么它们是相似的。Baxter在理论上认为,相关的任务共享一个共同的最佳假设类,即具有相同的归纳偏差。Ban和Schuller提出,如果两个任务的数据都可以使用一组变换F从固定的概率分布中生成,则这两个任务都与F相关。尽管这解释了可以使用不同的传感器对同一个分类任务收集数据,如使用不同角度和光照条件的摄像机位目标识别收集数据,但不能解释不同任务处理不同问题的情况。Xue认为,如果两个任务的分类边界很近,即参数向量很接近,则它们是相似的。

尽管在理解任务相关性方面有这些早期理论进展,但在这方面没有太多最新的进展。任务相似性不是二进制的,而是分布在谱上。让我们的模型直接学习每个任务共享的内容可能使得我们暂时避免了理论上的缺乏,甚至在任务弱相关时也能很好地利用,但我们还是需要针对多任务学习定义一个更原则性的任务相似性的概念,这样我们才知道应该选择哪些任务。

最近Alonso和Plank的工作发现具有紧凑且均匀标签分布的辅助任务对于解决NLP中的序列标记问题是有帮助的,我们在实验中已经证实了这一点。此外已经发现,对于主要任务而言,在非平稳辅助任务下迅速平稳的主要任务更有可能获得收益。但到目前为止,这些实验的范围都是有限的,最近的发现仅提供了更深入了解神经网络中多任务学习的初步线索。

8. 结论

这篇综述回顾了多任务学习的历史以及最近在深度学习中多任务学习的发展。尽管多任务学习正在被更高频地使用,已有20年历史的硬参数共享范例仍然在基于神经网络的多任务学习中无处不在。但最近关于学习什么该共享的研究是可行的。同时,我们关于任务的理解——包括相似性、关系、层级、和对多任务学习的好处——仍然很有限,我们需要这方面更多地研究,以便更好地理解多任务学习在深度神经网络方面的泛化能力。

综述翻译:多任务学习-An Overview of Multi-Task Learning in Deep Neural Networks相关推荐

  1. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  2. 【深度学习】多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)

    1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务.然后,我们通过精细调参,来改进模型直 ...

  3. Multi task learning多任务学习背景简介

    2020-06-16 23:22:33 本篇文章将介绍在机器学习中效果比较好的一种模式,多任务学习(Multi task Learning,MTL).已经有一篇机器之心翻译的很好的博文介绍多任务学习了 ...

  4. 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks)—— 0.学习目标...

    Understand the key computations underlying deep learning, use them to build and train deep neural ne ...

  5. 剪枝综述论文阅读:Methods for Pruning Deep Neural Networks

    文章目录 一.概述 1.分类 2.评估 二.Magnitude based pruning 1.权重剪枝 2.彩票定理 3.特征图和过滤器剪枝 (1)基于通道方差的剪枝 Inbound pruning ...

  6. 对抗样本论文学习:Deep Neural Networks are Easily Fooled

    近日看了一些对抗样本(adversarial examples)方面的论文,在这里对这些论文进行一下整理和总结. 以下仅代表个人理解,本人能力有限难免有错,还请大家给予纠正,不胜感激.欢迎一起讨论进步 ...

  7. 【机器学习网络】神经网络与深度学习-6 深度神经网络(deep neural Networks DNN)

    目录 深度神经网络(deep neural Networks DNN) DNN的底层原理 深度学习网络的问题: 案例1:书写数字识别(梯度下降法详解) 男女头发长短区分案例(为什么隐藏层追求深度): ...

  8. 【翻译】Aggregated Residual Transformations for Deep Neural Networks

    Aggregated Residual Transformations for Deep Neural Networks 作者:Saining Xie1 Ross Girshick2 Piotr Do ...

  9. 深度学习【6】二值网络(Binarized Neural Networks)学习与理解

    http://blog.csdn.net/linmingan/article/details/51008830 Binarized Neural Networks: Training Neural N ...

最新文章

  1. SpringBoot 1024行代码 - 系统监控工具 Actuator简介
  2. 论文笔记:Triplet Network
  3. javascript对象和json字符串之间转换的问题
  4. Intellij IDEA——创建MyBatis的Mapper.xml模板
  5. __str__是什么函数_PHP str_shuffle()函数与示例
  6. python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?
  7. 云图说|图解DGC:基于华为智能数据湖解决方案的一体化数据治理平台
  8. Missing required icon file.Thebundle does not con
  9. linux安装pdo mysql扩展_linux下php安装pdo_mysql扩展
  10. 幻想三国android官方版,幻想三国ol官方版下载
  11. ocx注册方法,vs安装包自动安装ocx,以及ocx注册失败的解决方法
  12. STM32标准库驱动蜂鸣器
  13. 网络共享中心的计算机名,电脑提示“请启用网络和共享中心中的网络发现”解决方法...
  14. 怎么设置计算机用户账户和密码,电脑上怎么设置wifi用户名和密码
  15. 图像尺寸与图像像素、分辨率的关系
  16. MySQL中的any_value()函数
  17. python中re.compile_什么是pythonre.compile函数?
  18. 车载SOA测试利器——Parasoft SOA自动化测试方案
  19. tomcat显示启动成功,访问不了
  20. 损失函数理解汇总,结合PyTorch和TensorFlow2

热门文章

  1. Java8 API 文档(中英文)CHM网盘下载链接
  2. JavaScript--BOM
  3. 题目详情 - 7-13 最短工期 (pintia.cn)(拓扑序bfs)
  4. 股票自动交易接口API的全称是什么?
  5. 深入理解Linux内核之内核线程(上)
  6. 本地计算机无法启动theme服务,无法启动themes服务_Themes开机自动启动
  7. .Net中的frame框架
  8. Windows Server 2008 Standard Enterprise Datacenter各个版本区别
  9. opensuse的一些软件使用
  10. socket网络编程(2):socket操作相关函数