多任务学习 订阅
多任务学习(MTL)是一个很有前景的机器学习领域,通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能。 展开全文
多任务学习(MTL)是一个很有前景的机器学习领域,通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能。
信息
领    域
人工智能
简    称
MTL
归属学科
机器学习
中文名
多任务学习
外文名
Multi-task learning
相关学科
迁移学习,领域自适应
多任务学习引言
利用历史数据中的有用信息来帮助分析未来数据的机器学习,通常需要大量有标签数据才能训练出一个优良的学习器。深度学习模型是一种典型的机器学习模型,因为这类模型是带有很多隐藏层和很多参数的神经网络,所以通常需要数以百万计的数据样本才能学习得到准确的参数。但是,包括医学图像分析在内的一些应用无法满足这种数据要求,因为标注数据需要很多人力劳动。在这些情况下,多任务学习(MTL)可以通过使用来自其它相关学习任务的有用信息来帮助缓解这种数据稀疏问题。MTL 是机器学习中一个很有前景的领域,其目标是利用多个学习任务中所包含的有用信息来帮助为每个任务学习得到更为准确的学习器。我们假设所有任务(至少其中一部分任务)是相关的,在此基础上,我们在实验和理论上都发现,联合学习多个任务能比单独学习它们得到更好的性能。根据任务的性质,MTL 可以被分类成多种设置,主要包括多任务监督学习、多任务无监督学习、多任务半监督学习、多任务主动学习、多任务强化学习、多任务在线学习和多任务多视角学习。多任务监督学习任务(可能是分类或回归问题)是根据训练数据集(包含训练数据实例和它们的标签)预测未曾见过的数据的标签。多任务无监督学习任务(可能是聚类问题)是识别仅由数据构成的训练数据集中的有用模式。多任务半监督学习任务与多任务监督学习类似,只是其训练集中不仅包含有标签数据,也包含无标签数据。多任务主动学习任务是利用无标签数据来帮助学习有标签数据,这类似于多任务半监督学习,其差异在于主动学习会选择无标签数据来主动查询它们的标签从而降低标注开销。多任务强化学习任务是选择动作以最大化累积奖励。多任务在线学习任务是处理序列数据。多任务多视角学习任务是处理多视角数据——其中每个数据实例都有多组特征。MTL 可以看作是让机器模仿人类学习行为的一种方法,因为人类常常将一个任务的知识迁移到另一个相关的任务上。例如,根据作者自身经验,打壁球和打网球的技能可以互相帮助提升。与人类学习类似,(机器)同时学习多个学习任务是很有用的,因为一个任务可以利用另一个相关任务的知识。MTL 也与机器学习的某些其它领域有关,包括迁移学习、多标签学习和多输出回归,但 MTL 也有自己不同的特点。比如说,类似于 MTL,迁移学习的目标也是将知识从一个任务迁移到另一个任务,但不同之处在于迁移学习希望使用一个或多个任务来帮助另一个目标任务,而 MTL 则是希望多个任务彼此助益。当多任务监督学习的不同任务使用了同样的训练数据时,这就变成了多标签学习或多输出回归。从这个意义上看,MTL 可以被看作是多标签学习和多输出回归的一种泛化。 [1]  与传统迁移学习、领域自适应等方法不同,多任务学习是一种并行迁移模式。传统迁移学习强调学习的先后顺序,即将在一个领域学到的知识迁移到另一个领域,知识迁移的过程是串行进行。而在多任务学习中,任务之间的信息相互共享,知识在不同的任务中互相迁移,因此多任务学习也被叫做并行迁移学习。多任务学习方法通过多任务信息共享提升整体的学习效果,这对于小样本上的学习尤其有效。假设有大量的小样本学习任务,多任务学习方法可以充分利用多个小样本的信息,提升多任务整体的学习效果。
收起全文
精华内容
参与话题
问答
  • 多任务学习 Multi-task learning

    千次阅读 2018-11-16 16:48:12
    利用历史数据中的有用信息来帮助分析未来数据的机器学习,通常需要大量有标签数据才能训练出一个优良的学习器。深度学习模型是一种典型的机器学习...在这些情况下,多任务学习(MTL)可以通过使用来自其它相关学习任...

    利用历史数据中的有用信息来帮助分析未来数据的机器学习,通常需要大量有标签数据才能训练出一个优良的学习器。深度学习模型是一种典型的机器学习模型,因为这类模型是带有很多隐藏层和很多参数的神经网络,所以通常需要数以百万计的数据样本才能学习得到准确的参数。但是,包括医学图像分析在内的一些应用无法满足这种数据要求,因为标注数据需要很多人力劳动。在这些情况下,多任务学习(MTL)可以通过使用来自其它相关学习任务的有用信息来帮助缓解这种数据稀疏问题。

    MTL 是机器学习中一个很有前景的领域,其目标是利用多个学习任务中所包含的有用信息来帮助为每个任务学习得到更为准确的学习器。我们假设所有任务(至少其中一部分任务)是相关的,在此基础上,我们在实验和理论上都发现,联合学习多个任务能比单独学习它们得到更好的性能。根据任务的性质,MTL 可以被分类成多种设置,主要包括多任务监督学习、多任务无监督学习、多任务半监督学习、多任务主动学习、多任务强化学习、多任务在线学习和多任务多视角学习。

    多任务监督学习任务(可能是分类或回归问题)是根据训练数据集(包含训练数据实例和它们的标签)预测未曾见过的数据的标签。多任务无监督学习任务(可能是聚类问题)是识别仅由数据构成的训练数据集中的有用模式。多任务半监督学习任务与多任务监督学习类似,只是其训练集中不仅包含有标签数据,也包含无标签数据。多任务主动学习任务是利用无标签数据来帮助学习有标签数据,这类似于多任务半监督学习,其差异在于主动学习会选择无标签数据来主动查询它们的标签从而降低标注开销。多任务强化学习任务是选择动作以最大化累积奖励。多任务在线学习任务是处理序列数据。多任务多视角学习任务是处理多视角数据——其中每个数据实例都有多组特征。

    MTL 可以看作是让机器模仿人类学习行为的一种方法,因为人类常常将一个任务的知识迁移到另一个相关的任务上。例如,根据作者自身经验,打壁球和打网球的技能可以互相帮助提升。与人类学习类似,(机器)同时学习多个学习任务是很有用的,因为一个任务可以利用另一个相关任务的知识。

    MTL 也与机器学习的某些其它领域有关,包括迁移学习、多标签学习和多输出回归,但 MTL 也有自己不同的特点。比如说,类似于 MTL,迁移学习的目标也是将知识从一个任务迁移到另一个任务,但不同之处在于迁移学习希望使用一个或多个任务来帮助另一个目标任务,而 MTL 则是希望多个任务彼此助益。当多任务监督学习的不同任务使用了同样的训练数据时,这就变成了多标签学习或多输出回归。从这个意义上看,MTL 可以被看作是多标签学习和多输出回归的一种泛化。

    在此,我们给出 MTL 的正式定义。

    定义 1(多任务学习):给定 m 个学习任务,其中所有或一部分任务是相关但并不完全一样的,多任务学习的目标是通过使用这 m 个任务中包含的知识来帮助提升各个任务的性能。

    基于这一定义,我们可以看到 MTL 有两个基本因素。

    第一个因素是任务的相关性。任务的相关性是基于对不同任务关联方式的理解,这种相关性会被编码进 MTL 模型的设计中。

    第二个因素是任务的定义。在机器学习中,学习任务主要包含分类和回归等监督学习任务、聚类等无监督学习任务、半监督学习任务、主动学习任务、强化学习任务、在线学习任务和多视角学习任务。因此不同的学习任务对应于不同的 MTL 设置。包括计算机视觉、生物信息学、健康信息学、语音、自然语言处理、网络应用和普适计算在内的很多领域都在使用 MTL 来提升各自的应用的性能。

    最近,深度学习在诸多应用领域中广为流行,并且深度学习十分适用于 MTL。几乎所有的深层模型都会为不同的任务共享隐藏层;当各种任务非常相似时,这种在任务之间共享知识的方式非常有用,但是一旦这种假设被违背,模型性能则显著恶化。我们认为,多任务深度模型的未来发展方向是设计更加灵活的架构,可以容纳不相关的任务甚至异常的任务。此外,深度学习,任务聚类和多层次方法缺乏理论基础,需要更多的分析来指导这些方面的研究。

    [描述来源:多任务学习概述论文:从定义和方法到应用和原理分析|机器之心]

    发展历史

    在深度学习中,多任务学习通常通过隐藏层的 Hard 或 Soft 参数共享来完成。

    共享 Hard 参数是神经网络 MTL 最常用的方法,可以追溯1993年Caruana所发表的论文。在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。共享 Hard 参数大大降低了过拟合的风险。1997年Jonathan Baxter在他的论文中证明过拟合共享参数的风险为 O(N)——其中 N 是任务数——小于过拟合特定任务参数,即输出层。这很直观:我们同时学习的工作越多,我们的模型找到一个含有所有任务的表征就越困难,而过拟合我们原始任务的可能性就越小。

    另一方面,在共享 Soft 参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化。1998年Caruana对早期的MTL的研究进行了总结,并演示了三个领域中的多任务学习。他们解释了多任务学习的工作原理,提出了一个基于案例的方法(如k-最近邻和核回归)的多任务学习算法和结果,并为决策树中的多任务学习绘制了一个算法。目前大部分MTL学习所基于的机制仍然来源于此篇文章。

    2000年,针对机器学习中的表征偏置——如何选择学习者的假设空间,以便它足够大以包含所学问题的解决方案,但又足够小以确保从合理大小的训练集中可靠地泛化的问题,通常情况下,Jonathan Baxter提出了一种自动学习偏置的模型。该模型的中心假设是学习者被嵌入在相关学习任务的环境中,在这样的环境中,学习者可以从多个任务中抽样,因此可以搜索假设空间,并且该假设空间包含环境中许多问题的良好解决方案。这将有助于模型在将来泛化到新任务,因为在足够数量的训练任务上表现很好的假设空间也将很好地用于学习具有相同环境的新任务。

    在用于计算机视觉的 MTL 中,通常的方法是共享卷积层,同时学习特定任务的全连接层。2015年,Mingsheng Long等学者提出通过深度关系网络(Deep Relationship Network)来改进这些模型。除了共享卷积和特定任务层的结构之外,他们在全连接层上使用矩阵先验(matrix priors),这样可以让模型学习任务之间的关系。然而,这种方法仍然依赖于预定义的共享结构,这可能对于已经充分研究的计算机视觉问题是可行的,但是对于新任务来说容易出错。

    2016年Yongxi Lu等学者从另一个极端提出了一个从窄网络(thin network)开始的自下而上的方法,并在训练过程中使用一个促进类似任务分组的标准,贪婪地动态拓宽网络。但是,贪婪方法可能无法发现全局最优的模型,而将每个分支正好分配给一个任务不允许模型学习更复杂的任务交互。

    Ishan Misra等学者则从两个独立的模型架构开始,如共享 Soft 参数一样。然后,他们使用称为十字绣(cross stitch)的单位,以允许模型通过学习前面层的输出的线性组合来确定如何使特定任务的网络利用其它任务的知识。即通过端对端的学习来自动决定共享层。

    在自然语言处理(NLP)方面,最著名的论文应属Ronan Collobert和Jason Weston在2008年发表的A unified architecture for natural language processing: deep neural networks with multitask learning,他们使用了一个单一的卷积神经网络架构来完成命名实体识别、输出语义上相似的单词等任务。Ruder等学者则于2017年提出了水闸网络(Sluice Network),一种泛化基于深度学习的 MTL 方法(比如 Hard 参数共享和十字绣网络、块稀疏正则化方法以及最近的任务层次结构的 NLP 方法)的模型。该模型可以学习哪些层和子空间应该共享,以及网络在哪层学到了输入序列的最佳表征。

    主要事件

    年份 事件 相关论文/Reference
    1993 Caruana提出共享 Hard 参数 Caruana, R. (1993). Multitask learning: A knowledge-based source of inductive bias. Proceedings of the Tenth International Conference on Machine Learning.
    1997 Jonathan Baxter在他的论文中证明过拟合共享参数的风险为 O(N)——其中 N 是任务数——小于过拟合特定任务参数,即输出层 Baxter, J. (1997). A Bayesian/information theoretic model of learning to learn via multiple task sampling. Machine Learning, 28, 7–39.
    1998 Caruana对早期的MTL的研究进行了总结,并演示了三个领域中的多任务学习 Caruana R. (1998) Multitask Learning. Learning to Learn.pp 95-133.
    2000 Jonathan Baxter提出了一种自动学习偏置的模型 Baxter, J. (2000). A Model of Inductive Bias Learning. Journal of Artificial Intelligence Research, 12, 149–198.
    2008 Ronan Collobert和Jason Weston使用了一个单一的卷积神经网络架构来完成命名实体识别、输出语义上相似的单词等任务。 Collobert, R.; Weston, J. (2008). A unified architecture for natural language processing: deep neural networks with multitask learning. roceedings of the 25th international conference on Machine learning. pp 160-167.
    2015 Mingsheng Long等学者提出通过深度关系网络(Deep Relationship Network)来改进用于计算机视觉的神经网络模型 Long, M., & Wang, J. (2015). Learning Multiple Tasks with Deep Relationship Networks. arXiv Preprint arXiv:1506.02117.
    2016 Yongxi Lu等学者从另一个极端提出了一个从窄网络(thin network)开始的自下而上的方法 Lu, Y., Kumar, A., Zhai, S., Cheng, Y., Javidi, T., & Feris, R. (2016). Fully-adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attribute Classification. Retrieved from http://arxiv.org/abs/1611.05377
    2016 Ishan Misra等学者提出十字绣网络 Misra, I., Shrivastava, A., Gupta, A., & Hebert, M. (2016). Cross-stitch Networks for Multi-task Learning. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition
    2017 Ruder等学者提出了水闸网络(Sluice Network) Ruder, S., Bingel, J., Augenstein, I., & Søgaard, A. (2017). Sluice networks: Learning what to share between loosely related tasks. Retrieved from http://arxiv.org/abs/1705.08142

    发展分析

    瓶颈

    目前我们对多任务学习中的任务的理解仍然有限(如,它们的相似性、关系、层次结构和 MTL 的用处),因而对 MTL 泛化能力的理解也有限。另外,使用神经网络进行多任务学习时,如何确定网络的共享部分是一个难点,即使我们使用十字绣网络去自动决定共享层,又会带来如何进行初始化,如何设置学习速率等问题。

    未来发展方向

    虽然十字绣网络的表现有限,但自动学习共享层仍然是一个研究方向,传统的参数共享方法仍然是目前的主流。由于NLP和机器视觉目前的研究都涉及到很多相似/相关的任务,多任务学习必然是一个重点。

    展开全文
  • 多任务学习-multi-learning总结

    万次阅读 多人点赞 2018-11-17 10:08:08
    在机器学习(ML)中,通常的关注点是对特定度量进行优化,度量有很种,例如特定基准或商业 KPI 的分数。为了做到这一点,我们通常训练一个模型或模型组合来执行目标任务。然后,我们微调这些模型,直到模型的结果...

    介绍

     

    在机器学习(ML)中,通常的关注点是对特定度量进行优化,度量有很多种,例如特定基准或商业 KPI 的分数。为了做到这一点,我们通常训练一个模型或模型组合来执行目标任务。然后,我们微调这些模型,直到模型的结果不能继续优化。虽然通常可以通过这种方式使模型达到可接受的性能,但是由于我们的关注点集中在单个任务上,我们忽略了可能帮助优化度量指标的其它信息。具体来说,这些信息来自相关任务的训练信号。通过共享相关任务之间的表征,可以使我们的模型更好地概括原始任务。这种方法被称为多任务学习(MTL),这正是本文的主题。

    MTL 有很多形式:联合学习(joint learning)、自主学习(learning to learn)和带有辅助任务的学习(learning with auxiliary task)等都可以指 MTL。一般来说,优化多个损失函数就等同于进行多任务学习(与单任务学习相反)。这些情况有助于你明确地思考如何在 MTL 方面做尝试并从中获得启发。

    即使只优化一个损失函数(如在典型情况下),也有可能借助辅助任务来改善原任务模型。Rich Caruana [1] 简要总结了 MTL 的目标:「MTL 通过利用包含在相关任务训练信号中的特定领域的信息来改进泛化能力」。

    在本文中,我将尝试概括一下多任务学习的现状,特别是当涉及到具有深度神经网络的 MTL 时。我将首先从不同的角度阐述 MTL 的动机。然后,我将介绍 MTL 在深度学习中最常用的两种方法。随后,我将描述 MTL 的机制,并阐述为什么 MTL 在实践中效果良好。在研究更先进的基于神经网络的 MTL 方法之前,我将通过讨论 MTL 的文献来提供一些背景。然后,我将介绍一些最近提出的更强大的深度神经网络 MTL 方法。最后,我将讨论常用的辅助任务类型,并讨论什么是一个好的 MTL 辅助任务。

    动机

    多任务学习的动机有不同的方式:从生物学的角度,多任务学习可以看作是受到人类学习的启发。对于学习新任务,我们经常应用通过学习相关任务获得的知识。例如,宝宝首先学会识别面部,然后可以应用这些知识来识别其它对象。

    从教学的角度,我们经常通过学习任务来获得必要的技能,以便掌握更复杂的技术。学习武术(比如柔道)的恰当方式也适用于学习编程。

    以流行文化为例,一个例子是《空手道少年(1984)》(感谢 Margaret Mitchell 与 Adrian Benton 提供灵感)。在电影中,老师宫城先生教导了空手道孩子看起来是无关紧要的任务,如打地板和给车打蜡。事后看来,这些可以让他掌握与学习空手道相关的宝贵技巧。

    最后,从机器学习的角度:我们可以将多任务学习看作归纳转移的一种形式。归纳传递可以通过引入归纳偏置(inductive bias)来帮助改进模型,这导致模型比其它模型更喜欢某些假设。例如,一种常见形式的归纳偏置是 L1 正则化,这导致偏好稀疏解。在 MTL 模型下,归纳偏置由辅助任务提供,这导致模型更喜欢假设而不是解释多个任务。正如我们将在下面看到的,这通常会导致更好的一般化解决方案。

    两种深度学习 MTL 方法

    到目前为止,我们只研究了 MTL 的理论动机。为了使 MTL 的思想更具体化,现在我们来看一下在深度神经网络中执行多任务学习的两种最常用的方法。在深度学习中,多任务学习通常通过隐藏层的 Hard 或 Soft 参数共享来完成。

    Hard 参数共享

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

    图 1:深度神经网络多任务学习的 Hard 参数共享

    共享 Hard 参数大大降低了过拟合的风险。实际上,[3] 表明过拟合共享参数的风险为 O(N)——其中 N 是任务数——小于过拟合特定任务参数,即输出层。这很直观:我们同时学习的工作越多,我们的模型找到一个含有所有任务的表征就越困难,而过拟合我们原始任务的可能性就越小。

    Soft 参数共享

    另一方面,在共享 Soft 参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化。例如使用 L2 距离进行正则化 [4],而 [5] 使用迹范数(trace norm)。

    图 2:深度神经网络多任务学习的 Soft 参数共享

    约束深度神经网络 Soft 参数共享的思想受到了 MTL 正则化技术的极大启发,这种思想已经用于其它模型开发,我们将在下面讨论。

    为什么 MTL 有效?

    即使多任务学习获得的归纳偏置看起来是可信的,为了更好地了解 MTL,我们仍需要阐述它所基于的机制。其中大部分最初都是由 Caruana(1998)提出的。对于所有例子,假设我们有两个相关的任务 A 和 B,它们依赖于一个共同的隐藏层表征 F。

    隐式数据增加

    MTL 有效地增加了我们用于训练模型的样本大小。由于所有任务不同程度地存在噪声,当在某些任务 A 上训练模型时,我们的目标是为任务 A 学习一个很好的表征,理想情况下,这个表征能忽略与数据相关的噪声并具有良好的泛化性。由于不同的任务具有不同的噪声模式,所以同时学习两个任务的模型能够学习更一般的表征。只学习任务 A 有可能过拟合任务 A,而联合地学习 A 和 B 使模型能够通过平均噪声模式获得更好的表征。

    注意力机制

    如果一个任务非常嘈杂或数据量有限并且高维,模型可能难以区分相关与不相关的特征。MTL 可以帮助模型将注意力集中在重要的特征上,因为其它任务将为这些特征的相关性或不相关性提供额外的证据。

    窃听(eavesdroping)

    某特征 G 很容易被任务 B 学习,但是难以被另一个任务 A 学习。这可能是因为 A 以更复杂的方式与特征进行交互,或者因为其它特征阻碍了模型学习 G 的能力。通过 MTL,我们可以允许模型「窃听」,即通过任务 B 学习 G。最简单的方法是通过提示(hint)[6],即直接训练模型来预测最重要的特征。

    表征偏置

    MTL 任务偏好其它任务也偏好的表征,这造成模型偏差。这将有助于模型在将来泛化到新任务,因为在足够数量的训练任务上表现很好的假设空间也将很好地用于学习具有相同环境的新任务 [7]。

    正则化

    最后,MTL 通过引入归纳偏置作为正则化项。因此,它降低了过拟合的风险以及模型的 Rademacher 复杂度(即适合随机噪声的能力)。

    非神经模型中的 MTL

    为了更好地了解深度神经网络中的 MTL,我们将研究关于 MTL 在线性模型、核函数方法和贝叶斯算法方面的论文。特别地,我们将讨论一直以来在多任务学习的历史中普遍存在的两个主要思想:通过范数正则化制造各任务间的稀疏性;对任务间的关系进行建模。

    请注意,许多 MTL 的论文具有同构性假设:它们假设所有任务与单个输出相关,例如,多类 MNIST 数据集通常被转换为 10 个二进制分类任务。最近的方法更加接近实际,对问题进行异构性假设,即每个任务对应于一组唯一的输出。

    块稀疏(block-sparse)正则化

    为了更好地与下面的方法衔接,我们首先介绍一些符号。我们有 T 个任务。对于每个任务 t,我们有一个模型 m_t,其参数 a_t 的维度是 d。我们可以将参数作为列向量写出 a_t=[a_{1,t} ... a_{d,t}]^⊤。我们现在逐列地将这些列向量 a_1, ... ,a_T 进行堆叠,形成矩阵 A∈ℝ^{d×T}。A 的第 i 行包含与每个任务的模型的第 i 个特征对应的参数 a_{i,.},而 A 的第 j 列包含对应于第 j 个模型的参数 a_{.,j}。

    许多现有的方法对模型的参数做了稀疏性假设。例如,假设所有模型共享一小组特征 [8]。对我们任务的参数矩阵 A 来说,这意味着除了几行之外,所有数据都是 0,对应于所有任务只共同使用几个特性。为了实现这一点,他们将 L1 范数推广到 MTL。回想一下,L1 范数是对参数之和的约束,这迫使除几个参数之外的所有参数都为 0。这也被称为 lasso(最小绝对收缩与选择算子)。

    在单任务中,L1 范数根据相应任务 t 的参数向量 a_t 被计算,在 MTL 中,我们在任务参数矩阵 A 中计算它。为了做到这一点,我们首先对每行 a_i 计算出包含与第 i 个特征相对应的参数的 Lq 范数,其产生向量 b=[‖a_1‖_q ...‖a_d‖_q]∈ℝ^d。然后,我们计算该向量的 L1 范数,这迫使 b(即 A 矩阵的行)中除少数元素(entry)外,所有元素都为 0。

    可以看到,根据我们希望对每一行的约束,我们可以使用不同的 Lq。一般来说,我们将这些混合范数约束称为 L1/Lq 范数,也被称为块稀疏正则化,因为它们导致 A 的整行被设置为 0。[9] 使用 L1/L∞ 正则化,而 Argyriou 等人(2007)使用混合的 L1/L2 范数。后者也被称为组合 lasso(group lasso),最早由 [10] 提出。

    Argyriou 等人(2007)也表明,优化非凸组合 lasso 的问题可以通过惩罚 A 的迹范数(trace norm)来转化成凸问题,这迫使 A 变成低秩(low-rank),从而约束列参数向量 a_{.,1},...,a_{.,t} 在低维子空间中。[11] 进一步使用组合 lasso 在多任务学习中建立上限。

    尽管这种块稀疏正则化直观上似乎是可信的,但它非常依赖于任务间共享特征的程度。[12] 显示,如果特征不重叠太多,则 Ll/Lq 正则化可能实际上会比元素一般(element-wise)的 L1 正则化更差。

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

    学习任务的关系

    尽管组合稀疏约束迫使我们的模型仅考虑几个特征,但这些特征大部分用于所有任务。所有之前的方法都基于假设:多任务学习的任务是紧密相关的。但是,不可能每个任务都与所有任务紧密相关。在这些情况下,与无关任务共享信息可能会伤害模型的性能,这种现象称为负迁移(negative transfer)。

    与稀疏性不同,我们希望利用先验信息,指出相关任务和不相关任务。在这种情况下,一个能迫使任务聚类的约束可能更适合。[15] 建议通过惩罚任务列向量 a_{.,1},...,a_{.,t} 的范数与它们具有以下约束形式的方差来强加聚类约束:

    其中

    为参数向量的均值。这个惩罚项强制将任务参数向量 a_{.,1},...,a_{.,t} 向由 λ 控制的均值聚类。他们将此约束应用于核函数方法,但这同样适用于线性模型。

    [16] 也提出了对于 SVM 的类似约束。这个约束受到贝叶斯方法的启发,并试图使所有模型接近平均模型。由于损失函数的平衡制约,使每个 SVM 模型的间隔(margin)扩大并产生类似于平均模型的结果。

    [17] 在聚类的数量 C 已知的假设下,通过形式化对 A 的约束,使聚类正则化更加明确。然后他们将惩罚项分解为 3 个独立的范数:

    • 衡量列参数向量平均大小的全局惩罚项:

    • 衡量类间距离的类间方差(between-cluster variance):

    其中 T_c 是第 c 个类中任务的数量,是第 c 个类中任务参数向量的均值向量。

    • 衡量类内数据紧密度的类内方差(within-cluster variance):

    其中 J(c) 是第 c 个类中任务的集合。

    最终的约束形式是这 3 个范数的加权和:

    由于此约束假设聚类是已知的,所以它们引入了上述惩罚项的凸松弛(convex relaxation),这使算法允许同时学习聚类。

    在另一种情况下,任务可能不在类结构中,但具有其它的结构。[18] 使用扩展组合 lasso 来处理树型结构(tree structure)中的任务,而 [19] 将其应用于具有图结构(graph structure)的任务。

    虽然之前对任务之间关系建模的方法使用了范数正则化,但也存在没有用到正则化的方法:[20] 第一个提出了使用 k-nn 的任务聚类算法,而 [21] 通过半监督学习从多个相关任务中学习通用结构。

    其它 MTL 任务之间关系的建模使用了贝叶斯方法:

    • [22] 提出了使用模型参数先验的贝叶斯神经网络方法,来鼓励任务间使用相似的参数。[23] 将高斯过程(Gaussian process/GP)应用于 MTL,该方法利用 GP 推断共享协方差矩阵的参数。由于这在计算上非常昂贵,它们采用稀疏近似方案用来贪心地选择信息量最大的样本。[24] 同样将 GP 应用于 MTL,该方法利用 GP 假设所有模型抽样于同一个普通先验分布。

    • [25] 在每个任务特定的层上使用高斯分布作为先验分布。为了鼓励不同任务之间的相似性,他们建议使用任务依赖的平均值,并引入使用混合分布的任务聚类。重要的是,它们首先需要确定聚类和混合分布数量的任务特征。

    基于此,[26] 使用 Dirichlet process 提取分布,并使模型能够学习任务之间的相似性以及聚类的数量。然后,算法在同一个类中的所有任务间共享相同的模型。[27] 提出了一个分层贝叶斯模型,它学习一个潜在的任务层次结构,而 [28] 对于 MTL 使用基于 GP 的正则化,并扩展以前的基于 GP 的方法,以便在更复杂的设置中增加计算的可行性。

    其它方法侧重于 on-line 多任务学习设置:[29] 将一些现有的方法,如 Evgeniou 等人的方法(2005)应用到 on-line 算法。他们还提出了一种使用正则化感知机(perceptron)的 MTL 扩展方法,该算法计算任务相关性矩阵。他们使用不同形式的正则化来偏置该任务相关性矩阵,例如,任务特征向量(characteristic vector)的接近程度或跨度子空间(spanned subspace)的维数。重要的是,与之前的方法类似,它们需要首先确定构成该矩阵的任务特征。[30] 通过学习任务关系矩阵来扩展之前的方法。

    [31] 假设任务形成相互分隔的组,并且每个组中的任务位于低维子空间中。在每个组内,任务共享相同的特征表征,其参数与组分配矩阵(assignment matrix)一起使用代替的最小化方案学习。然而,组之间的完全分隔可能不是理想的方式,因为任务可能分享一些有助于预测的特征。

    [32] 通过假设存在少量潜在的基础任务,反过来允许来自不同组的两个任务重叠。然后,他们将每个实际任务 t 的参数向量 a_t 建模为下面的线性组合:a_t=Ls_t,其中 L∈ℝ^{k×d} 是包含 k 个潜在任务的参数向量的矩阵,而 s_t∈ℝ^k 是包含线性组合系数的向量。此外,它们约束潜在任务中的线性组合为稀疏;约束在稀疏模式下两个任务之间的重叠然后控制它们之间的共享数量。最后,[33] 学习一个小的共享假设池,然后将每个任务映射到一个假设。

    最近 MTL 的深度学习研究

    虽然许多最近的深度学习方法已经将多任务学习(无论是显式使用或隐式使用)作为其模型的一部分(例子将在下一节中介绍),但是它们都采用了我们之前介绍的两种方法,Hard 和 Soft 参数共享。相比之下,只有少数论文研究了如何在深度神经网络中开发更优的 MTL 算法。

    深度关系网络

    在用于计算机视觉的 MTL 中,通常的方法是共享卷积层,同时学习特定任务的全连接层。[34] 通过提出深度关系网络(Deep Relationship Network)来改进这些模型。除了图 3 中可以看到的共享和特定任务层的结构之外,他们在全连接层上使用矩阵先验(matrix priors),这样可以让模型学习任务之间的关系,类似于一些之前看过的贝叶斯模型。然而,这种方法仍然依赖于预定义的共享结构,这可能对于已经充分研究的计算机视觉问题是可行的,但是其证明对于新任务来说容易出错。

    图 3:具有共享卷积和特定任务的全连接层与矩阵先验的深度关系网络(Long 和 Wang,2015)。

    全自适应特征共享

    从另一个极端,[35] 提出了一个从窄网络(thin network)开始的自下而上的方法,并在训练过程中使用一个促进类似任务分组的标准,贪婪地动态拓宽网络。动态创建分支的拓宽过程可以在图 4 中看到。但是,贪婪方法可能无法发现全局最优的模型,而将每个分支正好分配给一个任务不允许模型学习更复杂任务交互。

    图 4:完全自适应特征共享的拓宽过程(Lu 等人,2016)。

    十字绣网络

    [36] 从两个独立的模型架构开始,如共享 Soft 参数一样。然后,他们使用称为十字绣(cross stitch)的单位,以允许模型通过学习前面层的输出的线性组合来确定如何使特定任务的网络利用其它任务的知识。图 5 为模型架构,其中它们仅在池化(pooling)和全连接层之后使用十字绣单位。

    图 5:两个任务的十字绣网络(Misra 等人,2016)。

    低监督

    相比之下,在自然语言处理(NLP)中,最近的工作侧重于为多任务学习找到更好的任务层次:[37] 显示当低级任务用作辅助任务时应该在低层(lower layer)监督,如通常用于预处理的 NLP 任务(如词性标注/part-of-speech tagging 和命名实体识别/named entity recognition)。

    联合多任务模型

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

    图 6:联合多任务模型(Hashimoto 等人,2016)。

    加权损失与不确定性

    与学习共享的结构不同,[39] 通过考虑每个任务的不确定性应用正交方法(orthogonal approach)。然后,他们通过基于最大化任务决定的不确定性的高斯似然估计,求导多任务损失函数,并以此来调整成本函数中的每个任务的相对权重。每一像素的深度回归(per-pixel depth regression)、语义和实例分割的架构可以在图 7 中看到。

    图 7:用于多任务学习的基于不确定性的损失函数加权(Kendall 等人,2017)。

    MTL 的张量因子分解

    最近的研究旨在将现有方法泛化到深度学习的 MTL:[40] 概括了一些之前讨论的矩阵因子分解的方法,通过使用张量因子分解将每层的模型参数分为共享和特定任务参数。

    水闸网络

    最后,我们提出了水闸网络(Sluice Network)[41],一种泛化基于深度学习的 MTL 方法(比如 Hard 参数共享和十字绣网络、块稀疏正则化方法以及最近的任务层次结构的 NLP 方法)的模型,。图 8 为该模型,该模型可以学习哪些层和子空间应该共享,以及网络在哪层学到了输入序列的最佳表征。

    图 8:两个任务的水闸网络(Ruder 等人,2017)。

    模型应该共享什么?

    在对这些最近的方法进行研究之后,我们现在对深度 MTL 模型中怎样共享进行简要总结并得出结论。传统的大多数 MTL 方法都侧重于从相同分布中抽样任务(Baxter,1997)。虽然这种情况有利于共享,但并不总是如此。为了开发强大的 MTL 模型,我们必须能够处理无关或只松散相关的任务。

    虽然 MTL 早期的深度学习研究已预先指定了为每个任务分配哪些层,但是这一策略并没有衡量反而严重偏差了 MTL 结构。在技术发明 20 年之后,Hard 参数共享(由 Caruana(1997)最初提出)仍然是标准。虽然在许多情况下很有用,但如果任务不紧密相关或需要不同层次的推理,Hard 参数共享就会快速失效。因此,最近的方法正在考虑「学习」分享什么,并且这个方法通常优于 Hard 参数共享。此外,赋予我们的模型学习任务层次结构的能力是有帮助的,特别是在需要不同粒度的情况下。

    正如最初提到的,一旦我们优化了多个损失函数,我们就会做 MTL。与限制模型将所有任务的信息压缩到相同的参数空间中不同,基于 MTL 的优势,我们上面讨论的 MTL 的先进算法是有用的,并使模型能够了解任务之间是如何交互的。

    辅助任务

    当我们希望一次获得多个任务的预测时,MTL 是非常适合的。这种情况在金融或经济预测中较为常见,我们可能希望预测多种相关指标的值;或者在生物信息学中同时预测多种疾病的症状。

    然而在大多数情况下,我们只关心一项任务的效果。在本节中,我们将介绍在利用多任务学习时如何找到合适的辅助任务。

    相关任务

    经典的方法是使用相关任务作为 MTL 的辅助任务。为了了解相关任务是什么,我们将介绍一些典型的例子。Caruana(1997)使用多任务学习预测自动驾汽车的转向方向,并将预测道路的不同特征作为辅助任务;[42] 使用多任务学习进行面部特征点检测,并将头姿势估计和面部属性推断作为辅助任务;[43] 共同学习查询分类和网页搜索;[44] 共同预测图像中对象的类和坐标;最后,[45] 共同预测文本到语音的音素持续时间和频率分布(frequency profile)。

    对抗性

    通常,相关任务的标签数据不可用。然而,在某些情况下,我们想要实现的任务与可用的任务结果相反。可以使用对抗损失函数来利用这些数据,该损失函数不会使用梯度反转层(gradient reversal layer)来最小化训练误差,相反会最大化训练误差。这个设置发现最近在域适应方面取得了成功 [46]。在这种情况下的对抗任务是预测输入的域;通过反转对抗任务的梯度,使对抗任务的损失函数得到最大化,由于它迫使模型学习不能区分域的表征,这将有利于主任务。

    提示

    如前所述,MTL 可用于学习使用原任务不容易学习的特征。实现这一点的有效方法是使用提示(hint),即将特征预测为辅助任务。在自然语言处理方面,最近的应用这个方法的例子是 [47],他们将预测一个输入句是否包含一个正或负的情感词作为情感分析(sentiment analysis)的辅助任务,同时,[48] 预测语句中是否存在名字作为名字错误检测的辅助任务。

    注意力机制

    类似地,辅助任务可用于将注意力集中在网络可能通常忽略的部分图像上。例如,对于学习驾驶(Caruana,1997),单任务模型通常可能忽略车道标记,因为它们仅构成图像的一小部分,而且并不总在图中出现。然后,将车道标记预测作为辅助任务,强制模型学习它们的表征;这个信息也可以用于主任务。类似地,对于面部识别,人们可能会学习将预测面部特征点的位置作为辅助任务,因为它们通常是独特的。

    量化平滑

    对于许多任务,训练目标是量化的,即可用的标签是离散的,但是连续数值可能更合理。在许多情况下,需要人为评估收集的数据,例如预测疾病(低/中/高)或情感分析(积极/中性/消极)的风险。使用降低量化的辅助任务可能有助于这些情况,由于目标更平滑,它们可能更容易学习。

    预测输入

    在某些情况下,使用某些特征作为输入是不切实际的,因为它们对预测所需的目标无益。但是,它们仍然可以指导学习任务。在这些情况下,这些特征可以用作输出而不是输入。[49] 提出了这种方法适用的几种情况。

    用未来预测现在

    在许多情况下,某些特征只能在预测之后才能使用。例如,对于自动驾驶汽车,车辆通过后可以进行更准确的障碍物测量和车道标记。Caruana(1997)也给出了肺炎预测的例子,预测后的结果能够提供额外的医学试验结果。对于这些例子,附加数据不能用作特征,因为它不会在建模时作为输入使用。然而,它可以用作辅助任务,以便在训练期间向模型传入额外的信息。

    表征学习

    MTL 中辅助任务的目标是使模型能够学习对主任务有共享或有帮助的表征。迄今为止所讨论的所有辅助任务都是隐式的:它们与主任务密切相关,以便帮助模型学习有用的表征。更显式的建模是可能的,例如通过采用已知的任务使模型能够学习可迁移的表征。Cheng 等人(2015)和 [50] 采用语言模型的目标作为辅助任务。类似地,自编码器的目标也可以用于辅助任务。

    哪些辅助任务是有帮助的?

    在本节中,我们讨论了可用于 MTL 的不同辅助任务,即使我们只关心一个任务。然而,我们仍然不知道什么辅助任务在实际中是有用的。寻找辅助任务主要是基于一种假设,即认为辅助任务与主任务有某种相关性,并且有助于预测主任务。

    然而,我们仍然不知道什么时候两个任务应该被认为是相似或相关的。Caruana(1997)定义如果两个任务使用相同的特征作判断,那么这两个任务是相似的。Baxter(2000)认为理论上相关的任务共享一个共同的最优假设类,即具有相同的归纳偏置。[50] 提出,如果两个任务的数据可以使用一个从一组分布变换 F 得到的固定概率分布生成,那么两个任务是 F-相关的。虽然这允许对不同传感器收集的相同分类问题的数据的任务进行推理,例如用不同角度和照明条件的相机得到的数据进行对象识别,这不适用于处理不同问题的任务。Xue 等人(2007)讨论,如果两个任务的分类边界即参数向量接近,则两个任务是相似的。

    在理解任务相关性方面,尽管有这些早期的理论进展,但实践中还没有太多进展。任务相似度不是二进制的,而是在一个频谱范围内。MTL 中,更多的相似任务有更大的作用,而较少的相似任务相反。允许我们的模型学习如何分享每个任务,可能使我们能够暂时避开理论的缺失,并更好利用即使是松散相关的任务。然而,我们还需要制定一个有关任务相似性的原则概念,以便了解我们应该选择哪些任务。

    最近的工作 [52] 发现了标签满足紧凑且均匀分布的辅助任务,这适用于 NLP 中的序列标签问题,并且已经在实验中(Ruder 等人,2017)得到证实。此外已经发现,主任务更有可能快速达到高峰平稳(plateau),而辅助任务不容易达到高峰平稳 [53]。

    然而,这些实验迄今在范围上受到限制,最近的发现仅提供了加深对神经网络中多任务学习理解的启发式线索。

    结论

    在本篇概述中,我们回顾了多任务学习的发展历程,以及最近的深度学习 MTL 的研究。虽然对 MTL 的应用更加频繁,但是有 20 年历史的 Hard 参数共享模式仍然普遍存在于神经网络 MTL 中。然而,最新的基于让模型学习共享参数的方法的进展让我们看到了希望。同时,我们对任务的理解仍然有限(如,它们的相似性、关系、层次结构和 MTL 的用处),我们需要更多地了解它们,以便更好地了解 MTL 在深度神经网络方面的泛化能力。

    https://www.sohu.com/a/151345709_465975

    展开全文
  • 多任务学习(Multi-Task Learning, MTL)

    万次阅读 多人点赞 2017-10-11 16:26:47
    3.1 提高泛化能力的潜在原因3.2 多任务学习机制3.3 后向传播多任务学习如何发现任务是相关的4 多任务学习可被广泛应用?4.1 使用未来预测现在4.2 多种表示和度量4.3 时间序列预测4.4 使用不可操作特征4.5 使用额外...

    作者:猿辅导研究团队

    多任务学习(Multi-Task Learning, MTL)是一种归纳迁移机制,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力,多任务学习通过使用共享表示并行训练多个任务来完成这一目标[1]。一言以蔽之,多任务学习在学习一个问题的同时,可以通过使用共享表示来获得其他相关问题的知识[2]。归纳迁移是一种专注于将解决一个问题的知识应用到相关的问题的方法,从而提高学习的效率。比如,学习行走时掌握的能力可以帮助学会跑,学习识别椅子的知识可以用到识别桌子的学习,我们可以在相关的学习任务之间迁移通用的知识。

    1 背景

    在1997年之前,很多的归纳学习系统仅专注于单一任务,因此归纳迁移领域的研究者提出了这个问题:如何通过使用多个学习任务的知识来增强学习能力[3]?为达到同等水平的性能,归纳迁移学习可以减少训练样本的数目或训练的迭代次数 ,这对于训练样本不足的学习任务而言是非常有意义的。1997年,机器学习杂志发表了一个关于归纳迁移的特刊[4],归纳迁移领域的主要研究者发表了一系列文章研究如何训练多个学习任务的问题。其中[1]提出一种学习多个任务的算法并介绍多任务学习的过程,在三个领域展现了多任务学习的能力以及讨论该算法可以应用的场景,实验结果表明,在现实中有很多可以应用多任务学习的场景。

    首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获得更好的泛化能力。此外,由于使用共享表示,多个任务同时进行预测时,减少了数据来源的数量以及整体模型参数的规模,使预测更加高效。因此,在多个应用领域中,可以利用多任务学习来提高效果或性能,比如垃圾邮件过滤、网页检索、自然语言处理、图像识别、语音识别等。

    既然同时学习多个相关任务有重要的意义,那么什么是相关任务?有些理论对任务的相关性的刻画已经很清楚了:

    • 如果两个任务是处理输入的相同函数,但是在任务信号中加入独立的噪声处理,很明显这两个任务是相关的。
    • 如果两个任务用于预测同个个体的属性的不同方面,这些任务比预测不同个体的属性的不同方面更相关。
    • 两个任务共同训练时能相互帮助并不意味着它们是相关的:有时通过在后向传播网络的一个额外输出加入噪声可以提高泛化能力,但是这个噪声任务与其它任务不相关。

    随着深度学习被广泛应用,计算机视觉和语音识别领域也有了更深远的发展。深度学习网络是具有多个隐层的神经网络,逐层将输入数据转化成非线性的、更抽象的特征表示。并且深度学习网络中各层的模型参数不是人为设定的,而是给定学习器的参数后在训练过程中学到的,这给了多任务学习施展拳脚的空间,具备足够的能力在训练过程中学习多个任务的共同特征。

    2 什么是多任务学习?

    图1展示了4个独立的神经网络,每个网络是一个针对同样输入的仅有一个输出的函数。误差后向传播被应用于这些网络来单独训练每个网络,由于这些网络相互之间没有任何连接,因此其中一个网络学习到的特征并不能帮助另一个网络的学习。本文称这种方法为单任务学习(STL,Single Task Learning)。

    mt1
    图1. 四个输入相同的任务的单任务后向传播

    图2展示了一个输入与图1中的四个网络一致的单一网络,但该网络有四个输出,每个输出对应图1中的一个任务。需要注意的是,这些输出可以连接他们共享的一个隐层的所有神经元,也可以如图2所示,在共享的一个隐层后形成独立的子网络,训练不与其他任务共享的参数。本文称这种方法为多任务学习(MTL,Multi Task Learning),在多任务学习网络中,后向传播并行地作用于4个输出。由于4个输出共享底部的隐层,这些隐层中用于某个任务的特征表示也可以被其他任务利用,促使多个任务共同学习。多个任务并行训练并共享不同任务已学到的特征表示,是多任务学习的核心思想。

    多任务学习是一种归纳迁移方法,充分利用隐含在多个相关任务训练信号中的特定领域信息。在后向传播过程中,多任务学习允许共享隐层中专用于某个任务的特征被其他任务使用;多任务学习将可以学习到可适用于几个不同任务的特征,这样的特征在单任务学习网络中往往不容易学到。

    归纳迁移的目标是利用额外的信息来源来提高当前任务的学习性能,包括提高泛化准确率、学习速度和学习的模型的可理解性。提供更强的归纳偏向是迁移提高泛化能力的一种方法,可以在固定的训练集上产生更好的泛化能力,或者减少达到同等性能水平所需要的训练样本数量。归纳偏向会导致一个归纳学习器更偏好一些假设,多任务学习正是利用隐含在相关任务训练信号中的信息作为一个归纳偏向来提高泛化能力。

    mt2

    图2. 四个输入相同的任务的多任务后向传播

    3 多任务学习如何发挥作用?

    为什么在一个神经网络上同时训练一个任务及其相关任务的学习效果会更好?这是因为额外任务的信息有助于共享的隐层学到更好的内部表示。那么,多任务学习是如何利用相关任务的训练信号中的信息呢?

    3.1 提高泛化能力的潜在原因

    有很多潜在原因解释了为什么往后向传播网络增加额外的输出可以提高泛化性能。比如,[5] 通过偶尔为后向传播网络增加噪声来增强泛化能力。某种程度上,不相关任务对于聚合梯度的贡献对于其他任务来说可以视为噪声。那么,不相关任务也可以通过作为噪声源来提高泛化能力。另一种可能性是增加任务会影响网络参数的更新,比如增加额外的任务增加了隐层有效的学习率,具体取决于每个任务输出的错误反馈权重。第三种可能性是网络的容量,多任务网络在所有任务之间共享网络底部的隐层,或许更小的容量就可以获得同水平或更好的泛化能力。

    可以设计实验来验证这些可能的解释,但最好可以揭示多任务学习可受益于和主任务相关的任务的训练信号。[1] 做了一组实验:准备一个训练集,对于训练集中的每一个样例,包含一组输入特征、主任务训练信号和一组额外任务的训练信号。在所有样例中打乱额外任务的训练信号,在没有改变额外任务的其他属性的情况下改变了主任务和额外任务的关系,但是额外任务的分布依旧保持不变。如果多任务学习依赖于训练信号中与主任务相关的额外信息,打乱顺序将会削弱这种关系,进而减少多任务学习的收益;如果多任务学习的收益依赖于多个输出的某些其他属性,打乱顺序将不会影响最终的收益。实验结果是打乱额外任务顺序降低了多任务学习的性能,这表明观察到的多任务学习的收益应归功于额外训练信号中的信息。

    3.2 多任务学习机制

    这一节总结了几种帮助多任务学习网络更好地泛化的机制,它们都衍生于对不同任务在隐层的误差梯度求和,但是各自又利用任务间的不同关系。

    • 统计数据增强

    相关任务训练信号中的额外信息相当于有效增加了样本大小,特别是训练信号中存在噪声时,相当于做了数据增强。假定有两个任务T和T’,它们的训练信号中都加入独立的噪声,都受益于计算隐层中输入的特征F。一个同时学习了T和T’的网络,如果发现了两个任务共享F,可以使用两个训练信号通过在不同的噪声处理过程中平均化F,从而更好地学习F。

    • 属性选择

    考虑两个任务T和T’,使用共同的特征F,假定网络有很多个输入。如果训练数据比较有限或噪声比较明显,一个学习T的网络有时难以区分与F相关的和不相关的数据。然而,一个同时学习T和T’的网络将可以更好地选择与F相关的属性,因为数据增强为F提供更好的训练信号,使该网络能更好地判断哪些输入用于计算F。属性选择是数据增强的结果。

    • 信息窃取

    考虑一个对任务T和T’都有用的隐层特征F,该特征在学习T时比较容易学到,而在学习T’时比较难学到(因为T’用一种更复杂的方式使用F或者没有F时T’学到的残留误差更大)。一个网络学习T将可以学到F,但一个只学习T’的网络将不能做到。如果一个网络在学习T’时还学习T,那么T’可以在隐层中窃取T已经学到的信息,因此可以学得更好。一旦T’和F的表示的建立了连接,从T’关于F的额外信息将帮助网络通过其它的机制更好地学习F。

    • 表示偏置

    因为神经网络以随机权重初始化,后向传播是一个随机搜索过程,多次运行很少产生同样的网络。假定任务T能够发现两个极小值区域A和B,一个学习任务T’的网络同样有两个极小值区域A和C,它们在A共享极小值,但在B和C没有重叠区域,[1] 对此做了两个实验。在第一个实验中,单独训练T的网络以均等概率找到A和B,单独训练T’的网络以均等概率找到A和C。而同时训练T和T’的网络,通常对于两个任务都只找到了A。这表明多任务学习任务偏好其他任务也偏好的隐层表示,搜索对T或T’单独学习到的表示的交集倾斜。

    mt3

    图3. 相关任务极小值区域重叠示意图

    另一个实验中,选择使T对B有强烈偏好的极小值:一个训练T的网络总是落入B。然而,T’依然对A或C没有倾向。当T和T’同时在一个网络上训练,T如预料中落入B:T’未能帮助T从B拉入A。令人惊讶的是,T’通常落入C,未与T共享极小值。T在隐层表示中创建一个潮流从A流向B,而T’对A或C没有任何倾向,但受制于T创建的潮流,因此通常落入C。多任务学习任务倾向于不使用其它任务不偏好使用的隐层表示。

    3.3 后向传播多任务学习如何发现任务是相关的

    多任务学习后向传播网络能否发现任务是否相关?答案是肯定的。后向传播网络虽然主要用于监督学习,但可以在不同任务学习的隐层特征上完成有限的非监督学习,揭示后向传播网络是如何发现任务之间的相关性非常有意义。

    [1] 设计了一系列测试问题称为峰值函数,每个峰值函数的形式如下:

    IF (1 > ½) THEN2, ELSE $3

    其中12和$3从{A、B、C、D、E、F}中取3个字母的排列进行实例化,共有120个函数:

    P001=IF(A > ½) THEN B, ELSE C

    P002=IF(A > ½) THEN B, ELSE D

    P014=IF(A > ½) THEN E, ELSE C

    P024=IF(B > ½) THEN A, ELSE F

    P120=IF(F > ½) THEN E, ELSE D

    这些变量A-F是定义域为[0, 1]的实数,作为一个后向传播网络学习峰值函数的输入。A-F的值以编码的方式给神经网络,而不是简单的连续输入。一个学习峰值函数的网络不仅需要学习函数,还必须学习正确地解码输入。这里A-F中的每个值使用10个输入来编码,总共有60个输入。

    在所有120个函数上训练一个多任务学习网络,这个网络有60个输入和120个输出,每个输出对应120个函数中的一个。分析网络的参数可以观察多少个不同的输出共享了隐层,[1] 对每个输出和每个隐藏单元做了敏感度分析。通过对比输出P001对每个隐藏单元和输出P002对每个隐藏单元的敏感度,可以测量P001和P002共享隐层的程度。结果表明两个峰值的相关性取决于它们使用几个相同的变量以及它们是否以同样的方式使用这些变量。比如P001和P120不共享任何变量,因此它们是不相关的。P001和P024共享了两个变量,但以不同的方式使用它们;P001和P014也共享两个变量,并且以同样的方式使用它们。因此P001与P014比与P024更相关。通过更加深入的分析,可以发现在条件IF测试的重叠比在THEN或ELSE部分的重叠更重要。

    4 多任务学习可被广泛应用?

    4.1 使用未来预测现在

    通常有价值的特征在作出预测之后才变得可用,这些特征在运行时不可用,因此不能作为输入。如果可以离线学习的话,这些特征可以收集起来作为训练集,在额外的任务中使用。学习器为这些额外任务作出的预测在系统被使用时可能会被忽略,这些预测的主要功能是为学习器在训练时提供额外的信息。

    一个从未来学习的应用是医疗风险预测,比如肺炎风险问题,在这个问题中,可以使用可用的实验室测试作为额外输出任务,但在为病人诊断时这些测试是不可用的。来自未来测量方法中的有价值的信息将会帮助网络学习可以更好支持风险预估的隐层表示。

    未来测量方法在很多离线学习问题中可用,有些特征不能在运行时实时获得,因此不能作为输入。但作为多任务学习的输出,它们提供了可以帮助学习的额外信息,即使这些输出在运行时不能获得。

    4.2 多种表示和度量

    有时获得在一个误差度量或一种输出表示中比较重要的一切是很困难的。当可替代的度量或输出表示可以捕获一个问题的不同但有用的方面时,多任务学习可以从中收益。

    4.3 时间序列预测

    这种类型的应用是用未来预测现在的一种分类,未来任务和现在任务是相同的除了它们发生在更迟的时候。将多任务学习用于时间序列

    预测的最简单方式是使用一个有多个输出的单一网络,每个输出和在不同时间的相同任务对应。图2展示的是一个有四个输出的神经网络,如果输出k指的是任务在时间Tk的预测,那么该网络可以对相同任务在四个不同时间做出预测。

    4.4 使用不可操作特征

    有些特征在运行时使用是不现实的因为它们的计算代价太高,或者因为它们需要不可利用的人类专门知识。训练集通常比较小,并且我们会花费大量的时间来准备。为训练集计算的不可操作特征可以用作多任务的输出。

    一个很好的例子是场景分析,通常需要人类知识来标注重要的特征,而学习系统在使用时人不会参与其中。那么这意味着有人标注的特征就不能用于学习吗?当然不是,如果训练集可以获得这些标注数据,它们能够作为额外任务来使用,在系统使用时这些额外任务将不是必要的。

    4.5 使用额外任务来聚焦

    学习器通常学会使用输入中大量的、普遍存在的模式,而忽视少量或不常见的但有用的输入。多任务学习可通过强制学习支持严重依赖可能会被忽略模式的任务的内部表示。

    4.6 有序迁移

    有时我们已经根据之前的学习有了相关任务的领域理论,而用于训练这些模型的数据可能不再可用了。多任务学习可以在没训练数据的条件下从这些预训练的模型中受益吗?我们可以使用模型来生成人造数据,并在人造数据中使用训练信号作为额外任务。

    4.7 多个任务自然地出现

    通常这个世界给予我们一系列相关任务可供学习,传统的方法是将它们划分成独立的问题各自训练;如果相关任务一起训练的话能够使彼此受益。一个很好的例子是语音识别需要学习单词的音素和重音。

    4.8 将输入变成输出

    很多可以应用多任务学习的领域是那些将一些特征作为输入是不现实的地方,多任务学习提供一种通过使用这些特征作为额外任务并从中获益的方式。有些特征作为输出比作为输入会更好,我们可以构造一些问题,使得特征作为输出比输入更有用。

    假定有下面的函数:

    考虑如图4所示的后向传播网络,有20个输入、16个隐藏单元和一个输出,通过训练来学习F1(A,B)。F1(A,B)的数据是通过在区间[-5,5]随机采样A和B的数值生成的,用输入中的10位二进制编码表示A和B。目标输出是F1(A,B)的实数值。

    mt4

    图4. 三个学习F1的网络架构。A:STD是一个不适用额外特征的标准网络;B:STD+IN是一个使用额外特征作为一个额外输入;C:STD+OUT是多任务学习网络,额外特征是作为额外输出使用。(图片引用自 [1])

    表1展示了三个后向传播网络进行50次试验的平均性能,对于每次试验,重新生成随机训练集、验证集和测试集。

     

    表1. 单任务学习、有额外输入的单任务学习和多任务学习在F1函数上的性能对比

    网络 试验次数 平均RMSE
    STD (没有额外输入、输出) 50 0.0648
    STD+IN (有额外输入) 50 0.0647
    MTL (有额外输出) 50 0.0631

     

    现在考虑F1的相关函数:

    假设除了用于A和B的20个输入,还多一个输入给F2(A,B)作为额外输入特征,如图4b中的网络所示。这个额外输入会帮助F1(A,B)学得更好吗?不一定!对于随机数值A和B,A+B和A-B并不相关,对于生成的训练集这两个随机变量的相关系数的绝对值小于0.01。这将削弱后向传播网络学习使用F2(A,B)来预测F1(A,B)的能力。表1的STD+IN说明了增加额外输入的单任务学习网络的性能,相比没有额外输入,性能没有显著变化。可见将特征作为输入时,包含在特征F2(A,B)中的额外信息并不会帮助后向传播网络学习F1(A,B)。

    如果使用F2(A,B)作为额外输入不会帮助后向传播学习F1(A,B),我们是否可以忽略F2(A,B)?当然不可以,因为F1(A,B)和F2(A,B)是强相关的。它们都需要计算同样的子特征A和B。如果将F2(A,B)作为必须学习的额外输出,它将使共享的隐层更好地学习A和B,因此最终将帮助网络更好地学习预测F1(A,B)的能力。

    图4c展示了一个有20个输入和2个输入的网络,一个输出用于F1(A,B),另一个用于F2(A,B)。只在F1(A,B)的输出上对网络做性能评估,但在两个输出都做后向传播。表1中的最后一行说明了多任务学习网络在F1(A,B)上的平均性能。使用F2(A,B)作为额外输出提高了F1(A,B)的性能。在这个问题上,使用额外特征作为额外输出比作为额外输入好。

    有一类特别有趣的问题是当特征中存在噪声时,将特征作为输出比作为输入更有用,因为额外输出中的噪声比额外输入中的噪声危害更小。

    5 多任务深度学习应用

    5.1 脸部特征点检测

    脸部特征点检测受遮挡和姿势变化等问题的影响,[6] 研究通过多任务学习提高检测健壮性的可能性,而不是把检测任务视为单一和独立的问题,希望优化脸部特征点检测和一些不同但细微相关的任务,比如头部姿势估计和脸部属性推断。这是有意义的,因为不同的任务有不同的学习困难和收敛率。为了定位这个问题,他们构想一个新的限制任务的深度模型,通过尽早停止辅助任务来促使学习收敛。

    脸部特征点检测不是一个独立的问题,它的预测会被一些不同但细微相关的因素影响。比如一个正在笑的孩子会张开嘴,有效地发现和利用这个相关的脸部属性将帮助更准确地检测嘴角。 如图5所示,TCDCN除了检测特征点任务,还有识别眼镜、笑脸、性别和姿态这四个辅助任务,通过与其它网络的对比,可以看出辅助任务使主任务的检测更准确。

    TCDCN通过随机梯度下降进行学习,不同的任务有不同的损失函数和学习难度,因此有不同的收敛速度,网络结构如图6所示。早期的方法通过探索任务之间的关系,比如学习所有任务权重的协方差矩阵来解决收敛速度不同的问题,但是这种方法只能在所有任务的损失函数相同时才能应用。TCDCN采用一种尽快停止辅助任务的方法,避免这些任务对训练集过拟合后影响主任务的学习:在训练开始时,TCDCD受所有任务的约束,避免陷入不好的局部最优;随着训练的进行,有些辅助任务将不再使主任务受益,它们的学习过程将被停止。

    mt5

    图5.卷积神经网络、级联卷积神经网络和任务约束深度卷积网络(TCDCN)的脸部特征点检测例子

    (图片引用自 [6])

     mt6
    图6. TCDCN网络结构示意图 (图片引用自 [6])

     

    5.2 DeepID2 (Deep Identification-verification)

    [7] 提出一个同时使用人脸鉴定和确认信号作为监督的方法,以解决发掘扩大个体之间差异同时减少个体内部变化的有效特征的挑战。DeepID2通过精心设计的深度卷积网络来学习,人脸分类任务通过刻画从不同个体提取的DeepID2特征来增加个体之间的差异,而人脸确认任务通过激励从相同个体提取的DeepID2特征减少个体内部的变化。在LFW[8] 数据集上达到99.15%的人脸确认准确度。DeepID2的网络结构如下图所示:

     mt6

    图7. DeepID2特征提取卷积网络结构示意图 (图片引用自 [7])

    DeepID2网络中包含四个卷积层,在最后一层(DeepID2层)提取一个160维的DeepID2特征向量。DeepID2特征提取过程可以表示为:

    f=Conv(x, θc)

    其中x是输入的人脸图片,f是提取的DeepID2特征向量,θc表示卷积网络将要学习的参数。

    DeepID2特征是通过两个监督信号来学习。第一个是人脸鉴定信号,把每张人脸图片归类为n个不同个体的其中一个,通过最后一层中的一个n路Softmax层来实现人脸鉴定。该网络是训练来最小化交叉熵损失,论文中称人脸鉴定损失:

    faceloss

    其中,f是DeepID2特征向量,t是目标分类,θid 表示Softmax层的参数。

    第二个是人脸确认信号,激励从相同个体的人脸提取的DeepID2特征。确认信号直接规范DeepID2特征并且能够有效减少个体内部的差异。常用的约束包括L1/L2范数和余弦相似度,DeepID2采用如下基于L2范数的损失函数:

    facelossl2

    其中,fi和fj是从两张对比的人脸图片中提取的DeepID2特征向量。yij=1表示fi和fj来自相同个体,在这里最小化两个DeepID2特征向量的L2距离。yij=-1表示不同个体,要求距离大于m。θve = {m} 是确认损失函数要学习的参数。

    训练过程只要有如下步骤:

    • 从训练集中取两个训练样本
    • 计算两张人脸图片的特征向量
    • 计算参数θid、θve、fi、fj、θc的梯度
    • 更新θid、θve、θc的值
    • 重复1)直到收敛

    5.3 Fast R-CNN

    Fast R-CNN [9] 是一个物体检测的快速的基于区域的卷积网络,其中也有多任务深度学习的应用,图8展示了Fast R-CNN的网络结构。

    mt8
    图8. Fast R-CNN网络结构示意图。一张图片和多个RoI(感兴趣区域)输入到一个全卷积网络,每个RoI会进入一个固定大小的feature map,然后被全连接层映射到一个特征向量。每个RoI有两个输出:softmax概率和每个分类的矩形框回归补偿。 (图片引用自 [9])

     

    从图8可看出,一个Fast R-CNN网络有两个输出层:第一个输出K+1个分类的概率分布,p = (p0,…,pk);第二个输出每个分类的边框回归补偿,tk = (tkx, tky, tkw, tkh)。每个训练RoI标注为一个参考标准分类u和一个参考标准边框回归对象v,在每个标注的RoI用多任务损失函数L来共同训练分类和矩形框回归:

    上式中的Lcls(p,u) = -log(pu)是正确分类u的log损失函数 。Lloc是分类u对应的矩形框回归目标的损失函数:

    其中,

    mt-smooth

    通过λ来控制两个任务的损失均衡。

    5.4 旋转人脸网络

    视角和光照变化给人脸识别带来了困难,一些研究者试图通过引入姿态和光照不变特征来解决这个问题。[10] 提出一个基于多任务学习的深度神经网络,在旋转一张任意角度和光照的人脸图片到特定角度的人脸图片方面达到很好的性能,在卡内基梅隆大学的MultiPIE人脸数据库上的表现超出文章发表时的最佳算法4-6%。如图9所示,新的模型可以合成正面光照条件下不同角度的图片。

    早前的多任务学习模型通过共享一些层来决定公共特征,共享层后剩余的层被分割成多个任务,如图9所示,这个用于旋转人脸的深度神经网络提供一种新颖的多任务学习方式:多任务模型共享主任务的所有层,辅助任务附加在主任务后面以提高保留个体身份的能力。

    图9的深度神经网络共由四部分组成:抽取特征、旋转特征、生成图片和重建任务。模型的主要目标是生成特定角度的图片,但在这个任务的后面又附加一个用于重建输入图片的任务,这两个任务都使用L2范数作为损失函数。对于第一个任务,生成新图片的输出层的损失函数定义如下:

    其中Yi,GT和Yi分别是标注数据和输出数据。

    mt9
    图9. 第一列表示MultiPIE数据库中两个人在不同关照条件下的输入测试图片。剩下的列是输入图片完成不同编码后的输出。 (图片引用自 [10])

    mt10

    图10. DNN模型结构示意图 (图片引用自 [10])

     

    对于第二个任务,重建输入图片的损失函数定义如下:

    Er=Ni=1|Xi,GTXi|22

    最终的损失函数是对两个任务损失函数的加权求和:

    E=λcEc+λrEr

    6 总结

    多任务学习是一种归纳迁移机制,利用额外的信息来源来提高当前任务的学习性能,包括提高泛化准确率、学习速度和已学习模型的可理解性。在学习一个问题的同时,可以通过使用共享表示来获得其他相关问题的知识,多个任务并行训练并共享不同任务已学到的特征表示,是多任务学习的核心思想。

    通过往后向传播网络增加额外输出可提高神经网络的泛化能力,是一件很有意义的事情,能提高泛化能力的可能原因有三:第一,不相关任务对于聚合梯度的贡献相对于其他任务来说可以视为噪声,不相关任务也可以通过作为噪声源来提高泛化能力;第二,增加任务会影响网络参数的更新,比如增加了隐层有效的学习率;第三,多任务网络在所有任务之间共享网络底部的隐层,或许更小的容量就可以获得同水平或更好的泛化能力。因此,我们需要关注如何选择多个相关任务及数据集使网络更好地泛化,有四种机制可以帮助多任务学习网络更好地泛化:统计数据增强、属性选择、信息窃取、表示偏置。

    多任务学习已经在多个领域中应用,本文列举了一些可应用多任务学习的场景:

    • 使用未来预测现在
    • 多种表示和度量
    • 时间序列预测
    • 使用不可操作特征
    • 使用额外任务来聚焦
    • 有序迁移
    • 多个任务自然地出现
    • 将输入变成输出

    深度学习网络是具有多个隐层的神经网络,在深度学习网络中应用多任务学习是一种很自然的想法。机器视觉领域有广泛的多任务学习应用,主要方式包括:多个任务并行输出,同时做分类和回归或使用不同的损失函数;多个任务如流水线般,辅助任务附加在主任务后面。

    多任务学习将会在越来越多的领域作为一种提高神经网络学习能力的手段被广泛应用。 

    7 参考文献

    [1] R. Caruana, “Multitask Learning,” Mach Learn, vol. 28, no. 1, pp. 41–75, Jul. 1997.

    [2] “Multi-task learning.” [Online]. Available: https://en.wikipedia.org/wiki/Multi-task_learning.

    [3] L. Pratt and S. Thrun, “Guest Editors‘ Introduction,” Mach Learn, vol. 28, no. 1, pp. 5–5, Jul. 1997.

    [4] T. G. Dietterich, L. Pratt, and S. Thrun, Eds., “Machine Learning – Special issue on inductive transfer,” Mach Learn, vol. 28, no. 1, 1997.

    [5] L. Holmstrom and P. Koistinen, “Using additive noise in back-propagation training,” IEEE Trans. Neural Netw., vol. 3, no. 1, pp. 24–38, Jan. 1992.

    [6] Z. Zhang, P. Luo, C. C. Loy, and X. Tang, “Facial Landmark Detection by Deep Multi-task Learning,” in Computer Vision – ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part VI, D. Fleet, T. Pajdla, B. Schiele, and T. Tuytelaars, Eds. Cham: Springer International Publishing, 2014, pp. 94–108.

    [7] Y. Sun, Y. Chen, X. Wang, and X. Tang, “Deep Learning Face Representation by Joint Identification-Verification,” in Advances in Neural Information Processing Systems 27, Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, and K. Q. Weinberger, Eds. Curran Associates, Inc., 2014, pp. 1988–1996.

    [8] G. B. Huang, M. Ramesh, T. Berg, and E. Learned-Miller, “Labeled faces in the wild: A database for studying face recognition in unconstrained environments,” Technical Report 07-49, University of Massachusetts, Amherst, 2007.

    [9] R. Girshick, “Fast R-CNN,” in The IEEE International Conference on Computer Vision (ICCV), 2015.

    [10]   J. Yim, H. Jung, B. Yoo, C. Choi, D. Park, and J. Kim, “Rotating Your Face Using Multi-Task Deep Neural Network,” in The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.

     

    展开全文
  • 多任务学习-Multitask Learning概述

    万次阅读 2018-10-15 22:04:03
    1、单任务学习VS多任务学习  单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。  多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。  多任务学习...

    1、单任务学习VS多任务学习

        单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。

        多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。

        多任务学习(multitask learning)产生的原因?

        现在大多数机器学习任务都是单任务学习。对于复杂的问题,也可以分解为简单且相互独立的子问题来单独解决,然后再合并结果,得到最初复杂问题的结果。这样做看似合理,其实是不正确的,因为现实世界中很多问题不能分解为一个一个独立的子问题,即使可以分解,各个子问题之间也是相互关联的,通过一些共享因素或共享表示(share representation)联系在一起。把现实问题当做一个个独立的单任务处理,忽略了问题之间所富含的丰富的关联信息。多任务学习就是为了解决这个问题而诞生的。把多个相关(related)的任务(task)放在一起学习。这样做真的有效吗?答案是肯定的。多个任务之间共享一些因素,它们可以在学习过程中,共享它们所学到的信息,这是单任务学习所具备的。相关联的多任务学习比单任务学习能去的更好的泛化(generalization)效果。

    单任务与多任务对比如图1所示:

    从图1中可以发现,单任务学习时,各个任务之间的模型空间(Trained Model)是相互独立的(图1上)。多任务学习时,多个任务之间的模型空间(Trained Model)是共享的(图1下)。

    假设用含一个隐含层的神经网络来表示学习一个任务,单任务学习和多任务学习可以表示成如图2所示。

     从图二可以发现,单任务学习时,各个task任务的学习是相互独立的,多任务学习时,多个任务之间的浅层表示共享(shared representation)。

    2、多任务学习的定义

        多任务学习(Multitask learning)定义:基于共享表示(shared representation),把多个相关的任务放在一起学习的一种机器学习方法。

        多任务学习(Multitask Learning)是一种推导迁移学习方法,主任务(main tasks)使用相关任务(related tasks)的训练信号(training signal)所拥有的领域相关信息(domain-specific information),做为一直推导偏差(inductive bias)来提升主任务(main tasks)泛化效果(generalization performance)的一种机器学习方法。多任务学习涉及多个相关的任务同时并行学习,梯度同时反向传播,多个任务通过底层的共享表示(shared representation)来互相帮助学习,提升泛化效果。简单来说:多任务学习把多个相关的任务放在一起学习(注意,一定要是相关的任务,后面会给出相关任务(related tasks)的定义,以及他们共享了那些信息),学习过程(training)中通过一个在浅层的共享(shared representation)表示来互相分享、互相补充学习到的领域相关的信息(domain information),互相促进学习,提升泛化的效果。

     

        共享表示shared representation:

       共享表示的目的是为了提高泛化(improving generalization),图2中给出了多任务学习最简单的共享方式,多个任务在浅层共享参数。MTL中共享表示有两种方式:

       (1)、基于参数的共享(Parameter based):比如基于神经网络的MTL,高斯处理过程。

     (2)、基于约束的共享(regularization based):比如均值,联合特征(Joint feature)学习(创建一个常见的特征集合)。

    3、多任务学习有效的原因

        为什么把多个相关的任务放在一起学习,可以提高学习的效果?关于这个问题,有很多解释。这里列出其中一部分,以图2中由单隐含层神经网络表示的单任务和多任务学习对比为例。

        (1)、多人相关任务放在一起学习,有相关的部分,但也有不相关的部分。当学习一个任务(Main task)时,与该任务不相关的部分,在学习过程中相当于是噪声,因此,引入噪声可以提高学习的泛化(generalization)效果。

        (2)、单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值。

        (3)、添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。比如,多任务并行学习,提升了浅层共享层(shared representation)的学习速率,可能,较大的学习速率提升了学习效果。

        (4)、多个任务在浅层共享表示,可能削弱了网络的能力,降低网络过拟合,提升了泛化效果。

    还有很多潜在的解释,为什么多任务并行学习可以提升学习效果(performance)。多任务学习有效,是因为它是建立在多个相关的,具有共享表示(shared representation)的任务基础之上的,因此,需要定义一下,什么样的任务之间是相关的。

    4、相关(related)定义

        相关(related)的具体定义很难,但我们可以知道的是,在多任务学习中,related tasks可以提升main task的学习效果,基于这点得到相关的定义:

    Related(Main Task,Related tasks,LearningAlg)= 1

    LearningAlg(Main Task||Related tasks)> LearningAlg(Main Task)                                        - (1)

        LearningAlg表示多任务学习采用的算法,公式(1):第一个公式表示,把Related tasks与main tasks放在一起学习,效果更好;第二个公式表示,基于related tasks,采用LearningAlg算法的多任务学习Main task,要比单学习main task的条件概率概率更大。特别注意,相同的学习任务,基于不同学习算法,得到相关的结果不一样:

        Related(Main Task,Related tasks,LearningAlg1)不等于 Related(Main Task,Related tasks,LearningAlg2)

    5、多任务学习中的相关关系(task relationship)

        多任务学习并行学习时,有5个相关因素可以帮助提升多任务学习的效果。

        (1)、数据放大(data amplification)。相关任务在学习过程中产生的额外有用的信息可以有效方法数据/样本(data)的大小/效果。主要有三种数据放大类型:

        统计数据放大(statistical data amplification)

        采样数据放大(sampling data amplification)

        块数据放大(blocking data amplification)。

        (2)、Eavesdropping(窃听)。假设

        (3)、属性选择(attribute selection)

        (4)、表示偏移(representation bias)

        (5)、预防过拟合(overfitting prevention)

        所有这些关系(relationships)都可以帮助提升学习效果(improve learning performance),关系具体定义可以参考文献[1]

    6、Multitask Learning方法

        浅层隐含层节点共享神经网络是最简单MTL,如图2所示。还有基于特征(feature table)共享MTL。

        基于特征的共享MTL(联合特征学习,Joint feature learning),通过创建一个常见的特征集合来实现多个任务之间基于特征(features)的shared representation,其共享表示如图3所示。

    基于特征共享的MTL输入输出关系如图4所示,其中采用L1正则来保证稀疏性。

    如图4,等号左边nxp的输入矩阵,乘上一个由k个任务构成的pxk的共享特征矩阵,加上一个nxk的噪声矩阵(不相关部分),就得到了左边的输出矩阵。

        其他多任务学习方法还有均值约束 MTL:基于均值来约束所有的task,参数共享的高斯处理MTL,低秩约束MTL,交替结构优化MTL等等。

    7、多任务学习与其他学习算法之间的关系

        多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习之前介绍过。定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升target domain的学习效果(performance)。

        多标签学习(Multilabel learning)是多任务学习中的一种,建模多个label之间的相关性,同时对多个label进行建模,多个类别之间共享相同的数据/特征。

        多类别学习(Multiclass learning)是多标签学习任务中的一种,对多个相互独立的类别(classes)进行建模。这几个学习之间的关系如图5所示:

    8、多任务学习应用概述

        基于神经网络的多任务学习,尤其是基于深度神经网络的多任务学习(DL based Multitask Learning),适用于解决很多NLP领域的问题,比如把词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务,都可以采用MTL任务来解决。

        其他MTL的应用还有,网页图片和语音搜索[Zhou et. al. KDD’11],疾病预测[Zhang et. al. NeuroImage 12]等等

    F、参考文献

    [1] Caruana, R. (1997). Multitask Learning. Machine Learning, 28(1), 41–75. doi: 10.1023/A:1007379606734

    [2] Collobert, R., & Weston, J. (2008). A unified architecture for natural language processing: Deep neural networks with multitask learning.Presented at the Proceedings of the 25th international conference ….

    [3] Lounici, K., Pontil, M., Tsybakov, A. B., & van de Geer, S. (2009, March 8). Taking Advantage of Sparsity in Multi-Task Learning. arXiv.org.

    [4] Zhang, Y., & Yeung, D.-Y. (2012, March 15). A Convex Formulation for Learning Task Relationships in Multi-Task Learning. arXiv.org.

    [5] Zhou, J., Chen, J., & Ye, J. (2012) Multi-Task Learning , Theory, Algorithms, and Applications, SDM

    展开全文
  • 多任务学习(Multi-task learning)

    万次阅读 2016-10-24 14:45:29
    多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解成...
  • 多任务学习

    2018-11-10 19:35:56
    1、多任务学习导引 多任务学习是机器学习中的一个分支,按1997年综述论文Multi-task Learning一文的定义:Multitask Learning (MTL) is an inductive transfer mechanism whose principle goal is to improve ...
  • 多任务学习综述

    2020-03-30 21:22:41
    机器学习中,我们通常关心针对特定指标的优化,无论这是某个基准的分数还是业务关键绩效指标。为了做到这一点,我们通常训练一个模型或一组模型来执行我们所期望的任务。然后我们对这些模型进行微调,直到它们的性能...
  • 多任务学习

    万次阅读 2018-01-12 16:35:45
    多任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理解为定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升...
  • 多任务学习 相关方法

    2019-08-13 20:49:55
    2. 多任务学习好处: i. 提高泛化能力 多人相关任务放在一起学习,有相关的部分,但也有不相关的部分。当学习一个任务(Main task)时,与该任务不相关的部分,在学习过程中相当于是噪声,因此,引入噪声可以提高...
  • 深度学习笔记(19) 多任务学习

    万次阅读 2019-06-16 08:47:49
    多任务学习概念、物体检测的多任务学习多任务学习的条件
  • 多任务学习(Multi-Task Learning)

    万次阅读 2018-10-23 10:45:27
     多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解...
  • 多任务学习与深度学习

    千次阅读 2018-04-25 15:40:21
    多任务学习是机器学习的一个子领域,学习的目标是同事执行多个相关任务。比如,系统会同时执行学习两项任务,以便这两项任务都有助于别的任务的学习。这是模仿人类智能的一种方式,即人类如何同时执行多项任务。例如...
  • 为什么是多任务学习? 当你在思考新事物的时候,他们通常会利用他们以前的经验和获得的知识来加速现在的学习过程。当我们学习一门新语言的时候,尤其是相关的语言时,我们通常会使用我们一级学过的语言知识来加快这...
  • 1、单任务学习VS多任务学习 单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。 多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。 多任务学习...
  • TensorFlow 多任务学习

    千次阅读 2018-09-13 12:12:22
    多任务学习 多任务学习,顾名思义,就是多个任务模型同时执行,进行模型的训练,利用模型的共性部分来简化多任务的模型,实现模型之间的融合与参数共享,可以在一定程度上优化模型的运算,提高计算机的效率,但模型...
  • 多任务学习-Multitask Learning

    万次阅读 2017-07-12 17:10:16
    1. 单任务学习VS多任务学习原文地址单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。现在大多数机器学习...
  • 多任务学习在推荐中的探索

    万次阅读 2020-03-11 19:08:36
    多任务学习(Multi-task learning)在cv和nlp领域已经得到广泛的应用,无论是经典的maskrcnn—同时预测bounding box的位置和类别,还是称霸nlp的bert—预测某个单词和句子是否相关联,都属于多任务模型。在推荐中是...
  • 深度学习之----多任务学习

    千次阅读 2018-10-17 13:56:18
    在机器学习(ML)中,通常的关注点是对特定度量进行优化,度量有很种,例如特定基准或商业 KPI 的分数。为了做到这一点,我们通常训练一个模型或模型组合来执行目标任务。然后,我们微调这些模型,直到模型的结果...
  • caffe多任务学习之多标签分类

    万次阅读 多人点赞 2016-11-15 20:50:30
    后来发现现在深度学习中的多任务学习可以实现多标签分类,所有的类别只需要训练一个分类模型就行,其不同属性的类别之间是共享卷积层的。我所有的项目开发都是基于caffe框架的,默认的,Caffe中的Data层只支持单维
  • 多任务学习是一个很有前景的机器学习领域,相关的理论和实验研究成果以及应用也在不断涌现。近日,香港科技大学计算机科学与工程系的杨强教授和张宇助理教授在《国家科学评论(National Science Review)》2018 年 1...

空空如也

1 2 3 4 5 ... 20
收藏数 724,065
精华内容 289,626
关键字:

多任务学习