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

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

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


    概念解析

    多任务学习(Multi-task learning):由于我们的关注点集中在单个任务上,我们忽略了可能帮助优化度量指标的其它信息。具体来说,这些信息来自相关任务的训练信号。通过共享相关任务之间的表征,可以使我们的模型更好地概括原始任务。这种方法被称为多任务学习(MTL)。其也是一种归纳迁移机制,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力,多任务学习通过使用共享表示并行训练多个任务来完成这一目标。归纳迁移是一种专注于将解决一个问题的知识应用到相关的问题的方法,从而提高学习的效率。比如,学习行走时掌握的能力可以帮助学会跑,学习识别椅子的知识可以用到识别桌子的学习,我们可以在相关的学习任务之间迁移通用的知识。此外,由于使用共享表示,多个任务同时进行预测时,减少了数据来源的数量以及整体模型参数的规模,使预测更加高效。因此,在多个应用领域中,可以利用多任务学习来提高效果或性能,比如垃圾邮件过滤、网页检索、自然语言处理、图像识别、语音识别等。
    归纳偏执(inductive bias):归纳迁移的目标是利用额外的信息来源来提高当前任务的学习性能,包括提高泛化准确率、学习速度和学习的模型的可理解性。提供更强的归纳偏执是迁移提高泛化能力的一种方法,可以在固定的训练集上产生更好的泛化能力,或者减少达到同等性能水平所需要的训练样本数量。归纳偏执会导致一个归纳学习器更偏好一些假设,多任务学习正是利用隐含在相关任务训练信号中的信息作为一个归纳偏执来提高泛化能力。归纳偏置的作用就是用于指导学习算法如何在模型空间中进行搜索,搜索所得模型的性能优劣将直接受到归纳偏置的影响,而任何一个缺乏归纳偏置的学习系统都不可能进行有效的学习。不同的学习算法(如决策树,神经网络,支持向量机等)具有不同的归纳偏置,人们在解决实际问题时需要人工地确定采用何种学习算法,实际上也就是主观地选择了不同的归纳偏置策略。一个很直观的想法就是,是否可以将归纳偏置的确定过程也通过学习过程来自动地完成,也就是采用“学习如何去学(learning to learn)”的思想。多任务学习恰恰为上述思想的实现提供了一条可行途径,即利用相关任务中所包含的有用信息,为所关注任务的学习提供更强的归纳偏置。


    详解

    1.从机器学习的角度来看,我们将多任务学习视为一种归约迁移(inductive transfer)。归约迁移(inductive transfer)通过引入归约偏置(inductive bias)来改进模型,使得模型更倾向于某些假设。举例来说,常见的一种归约偏置(Inductive bias)是L1正则化,它使得模型更偏向于那些稀疏的解。在多任务学习场景中,归约偏置(Inductive bias)是由辅助任务来提供的,这会导致模型更倾向于那些可以同时解释多个任务的解,这样做会使得模型的泛化性能更好。

    2.深度学习中两种多任务学习模式:隐层参数的硬共享与软共享
    (1)参数的硬共享机制:参数的硬共享机制是神经网络的多任务学习中最常见的一种方式,一般来讲,在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。事实上,有文献证明了这些共享参数过拟合风险的阶数是N,其中N为任务的数量,比任务相关参数的过拟合风险要小。直观来将,这一点是非常有意义的。越多任务同时学习,我们的模型就能捕捉到越多任务的同一个表示,从而导致在我们原始任务上的过拟合风险越小。
    (2)参数的软共享机制(基于约束的共享(regularization based)):每个任务都由自己的模型,自己的参数。在共享 Soft 参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化。我们对模型参数的距离进行正则化来保障参数的相似。如有文献使用L2距离正则化,而也有文献使用迹正则化(trace norm)。用于深度神经网络中的软共享机制的约束很大程度上是受传统多任务学习中正则化技术的影响。约束深度神经网络 Soft 参数共享的思想受到了 MTL 正则化技术的极大启发,这种思想已经用于其它模型开发。

    3.多任务学习的有效性
    由于所有任务都或多或少存在一些噪音,例如,当我们训练任务A上的模型时,我们的目标在于得到任务A的一个好的表示,而忽略了数据相关的噪音以及泛化性能。由于不同的任务有不同的噪音模式,同时学习到两个任务可以得到一个更为泛化的表示(As different tasks have different noise patterns, a model that learns two tasks simultaneously is able to learn a more general representations.)。如果只学习任务A要承担对任务A过拟合的风险,然而同时学习任务A与任务B对噪音模式进行平均,可以使得模型获得更好表示F;
    若任务噪音严重,数据量小,数据维度高,则对于模型来说区分相关与不相关特征变得困难。多任务有助于将模型注意力集中在确实有影响的那些特征上,是因为其他任务可以为特征的相关与不相关性提供额外的证据;
    对于任务B来说很容易学习到某些特征G,而这些特征对于任务A来说很难学到。这可能是因为任务A与特征G的交互方式更复杂,或者因为其他特征阻碍了特征G的学习。通过多任务学习,我们可以允许模型窃听(eavesdrop),即使用任务B来学习特征G;
    多任务学习更倾向于学习到一类模型,这类模型更强调与其他任务也强调的那部分表示。由于一个对足够多的训练任务都表现很好的假设空间,对来自于同一环境的新任务也会表现很好,所以这样有助于模型展示出对新任务的泛化能力;
    单任务学习时,梯度的反向传播倾向于陷入局部极小值。多任务学习中不同任务的局部极小值处于不同的位置,通过相互作用,可以帮助隐含层逃离局部极小值;
    添加的任务可以改变权值更新的动态特性,可能使网络更适合多任务学习。比如,多任务并行学习,提升了浅层共享层(shared representation)的学习速率,可能,较大的学习速率提升了学习效果;
    正则化机制:多任务学习通过引入归纳偏置(inductive bias)起到与正则化相同的作用。正是如此,它减小了模型过拟合的风险,同时降低了模型的Rademacher复杂度,即拟合随机噪音的能力。

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

    5.多任务学习与其他学习算法之间的关系
    迁移学习:自1995年以来,迁移学习吸引了众多的研究者的目光,迁移学习有很多其他名字:学习去学习(Learning to learn)、终身学习(life-long learning)、推导迁移(inductive transfer)、知识强化(knowledge consolidation)、上下文敏感性学习(context-sensitive learning)、基于知识的推导偏差(knowledge-based inductive bias)、累计/增量学习(increment / cumulative learning)等。在机器学习、深度学习和数据挖掘的大多数任务中,会假设training和inference时,采用的数据服从相同的分布(distribution)、来源于相同的特征空间(feature space)。但在现实应用中,这个假设很难成立,往往遇到一些问题:

    a.带标记的训练样本数量有限。比如,处理A领域(target domain)的分类问题时,缺少足够的训练样本。同时,与A领域相关的B(source domain)领域,拥有大量的训练样本,但B领域与A领域处于不同的特征空间或样本服从不同的分布。
    b.数据分布会发生变化。数据分布与时间、地点或其他动态因素相关,随着动态因素的变化,数据分布会发生变化,以前收集的数据已经过时,需要重新收集数据,重建模型。

    多任务学习是针对数据给出多个监督信息(标签)进行学习,例如识别一张图像中的脸是否是人脸、脸部表情、性别、年龄等,识别图像中车的颜色、车型、姿态等,都属于多任务分类。
    多标签学习(Multilabel learning)是多任务学习中的一种,建模多个label之间的相关性,同时对多个label进行建模,多个类别之间共享相同的数据/特征。
    多类别学习(Multiclass learning)是多标签学习任务中的一种,对多个相互独立的类别(classes)进行建模。这几个学习之间的关系如下图所示:
    这里写图片描述


    6.实例介绍

    (1)人脸识别:多任务学习给出多个监督信息(标签),利用任务之间的相关性互相促进。香港中文大学汤晓鸥组发表在NIPS14的论文《Deep Learning Face Representation by Joint Identification-Verification》,提出了一种联合训练人脸确认损失和人脸分类损失的多任务人脸识别网络DeepID2(Deep IDentification-verification features)。DeepID2中共有两个损失函数,分别为人脸分类损失函数和人脸验证loss。结合两个损失学习效果会更好,原因是:分类任务旨在区分不同类,理论上,只要类别不同学习到的特征肯定不同,重点在于扩大类间距离,而验证这个任务从另一个方面提取特征:缩小类内距离扩大类间相对距离!但是后者提取到的特征不能用于分类,只能做二值区分。所以说两个任务具有一定的互补性!
    这里写图片描述

    (2)脸部特征点检测:脸部特征点检测受遮挡和姿势变化等问题的影响,:通过多任务学习具有提高检测健壮性的可能性,而不是把检测任务视为单一和独立的问题。多任务学习希望把优化脸部特征点检测和一些不同但细微相关的任务结合起来,比如头部姿势估计和脸部属性推断。脸部特征点检测不是一个独立的问题,它的预测会被一些不同但细微相关的因素影响。比如一个正在笑的孩子会张开嘴,有效地发现和利用这个相关的脸部属性将帮助更准确地检测嘴角。
    如下图,一个TCDCN模型,除了检测特征点任务,还有识别眼镜、笑脸、性别和姿态这四个辅助任务,通过与其它网络的对比,可以看出辅助任务使主任务的检测更准确。
    这里写图片描述

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

    (3)目标检测: Fast R-CNN。Fast R-CNN 是一个物体检测的快速的基于区域的卷积网络,其中也有多任务深度学习的应用,图中展示了Fast R-CNN的网络结构。一张图片和多个RoI(感兴趣区域)输入到一个全卷积网络,每个RoI会进入一个固定大小的feature map,然后被全连接层映射到一个特征向量。每个RoI有两个输出:softmax概率和每个分类的矩形框回归补偿。

    这里写图片描述
    一个Fast R-CNN网络有两个输出层:第一个输出K+1个分类的概率分布;第二个输出每个分类的边框回归补偿。每个训练RoI标注为一个参考标准分类u和一个参考标准边框回归对象v,在每个标注的RoI用多任务损失函数L来共同训练分类和矩形框回归。


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

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

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

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


    Reference
    机器之心:https://www.jiqizhixin.com/articles/2017-06-23-5
    [1] T. Evgeniouand M. Pontil. Regularized multi-task learning. In Proceeding of thetenth ACM SIGKDD international conference on Knowledge Discovery and DataMining, 2004.

    [2] T. Jebara. MultitaskSparsity via Maximum Entropy Discrimination. In Journal of Machine LearningResearch, (12):75-110, 2011.

    [3] A. Argyriou,T. Evgeniou and M. Pontil. Convex multitask feature learning. In MachineLearning, 73(3):243-272, 2008.

    [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.

    展开全文
  • 深度学习中的多任务学习介绍

    千次阅读 2021-03-27 15:11:22
    在2017年有一篇关于在深度神经网络中多任务学习概述的论文:《An Overview of Multi-Task Learning in Deep Neural Networks》,论文链接为:https://arxiv.org/pdf/1706.05098.pdf,它介绍了在深度学习中多任务学习...

    在2017年有一篇关于在深度神经网络中多任务学习概述的论文:《An Overview of Multi-Task Learning in Deep Neural Networks》,论文链接为:https://arxiv.org/pdf/1706.05098.pdf,它介绍了在深度学习中多任务学习(Multi-task Learning, MTL)的两种最常用的方法。以下截图均来自此论文。

    传统的机器学习方法主要是基于单任务的学习(Single-task Learning)模式进行学习,对于复杂的学习任务也可将其分解为多个独立的单任务进行学习,然后对学习得到的解决进行组合,得到最终的结果。

    多任务学习的关键就在于寻找任务之间的关系,如果任务之间的关系衡量恰当,那么不同任务之间就能相互提供额外的有用信息,利用这些额外信息,可以训练出表现更好、更鲁棒的模型。反之,如果关系衡量不恰当,不仅不会引入额外的信息,反而会给任务本身引来噪声,模型学习效果不升反降。当单个任务的训练数据集不充分的时候,此时多任务学习的效果能够有比较明显的提升,这主要是因为单个任务无法通过自身的训练数据集得到关于数据分布的足够信息。如果有多个任务联合学习,那么这些任务将能从相关联的任务中得到额外的信息,因此学习效果将有显著的提升。目前,多任务学习已经在多个领域得到广泛的应用,比如人脸属性的相关研究、人类疾病的研究、无人驾驶的研究等。

    多任务学习是机器学习的一个重要组成部分,是迁移学习的一种。多任务学习作为迁移学习的一个分支有着其自己独特的学习背景和应用。在给定几个相关联任务的输入数据和输出数据的情况下,多任务学习能够发挥任务之问的关系,同时学习多个模型。与单任务学习相比,主要有以下几个方面的优势:A.多任务学习通过挖掘任务之间的关系,能够得到额外的有用信息,大部分情况下都要比单任务学习的效果要好。在有标签样本比较少的情况下,单任务学习模型往往不能够学习得到足够的信息,表现较差,多任务学习能克服当前任务样本较少的缺点,从其他任务里获取有用信息,学习得到效果更好、更鲁棒的机器学习模型。B.多任务学习有更好的模型泛化能力,通过同时学习多个相关的任务,得到的共享模型能够直接应用到将来的某个相关联的任务上。相比于单任务学习,上面的优点使得多任务学习在很多情况下都是更好的选择。现实生活中有很多适合多任务学习的场景,以下举例说明(1).自然语言处理相关的研究,比如把词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务放在一起研究。(2).人脸识别中,人脸的属性的研究、人脸识别、人脸年龄预测等任务也可以通过多任务学习进行解决。(3).图像分类,不同光照下、拍摄角度、拍摄背景下等分类任务的研究,也可以在多任务研究的框架下完成。除了上述举例的三种不同应用之外,现实生活中还有很多类似的多任务学习的例子。

    深度学习中的两种MTL方法:

    (1).基于硬约束的多任务学习方法,如下图所示:表示的是不同任务通过分享一些底部的层学习一些共有的低层次的特征,为了保证任务的独特性,每个任务在顶部拥有自己独特的层学习高层次的特征。这种方法底层共享的参数是完全相同的。

    多个任务之间共享网络的同几层隐藏层,只不过在网络的靠近输出层的网络开始分叉去做不同的任务。不同任务通过共享网络底部的几层隐藏层来学习一些共有的抽象层次低的特征,这种方法的底层共享的参数是完全相同的。同时针对各个任务的特点,各个任务都设计各自的任务特有层来学习抽象层次更高的特征。所有任务在保留任务特有的输出层的同时可以共享一些相关的隐藏层。这种多任务学习的方法通过平均噪声能有效地降低过拟合的风险。而且相关的任务越多,目标任务的过拟合风险越小。

    (2).基于软约束的多任务学习方法,如下图所示:该方法不要求底部的参数完全一样,而是对不同任务底部的参数进行正则化。相对于硬参数约束的多任务深度学习模型,软约束的多任务学习模型的约束更加宽松,当任务关系不是特别紧密的时候,有可能学习得到更好的结果。多任务深度学习模型需要同时学习一个适合多个任务的网络构架,一般来说模型具有更好的鲁棒性,不容易过拟合。

    软约束的多任务学习方法是隐藏层参数软共享,不同的任务使用不同的网络,但是不同任务的网络参数,采用正则化作为约束,与硬约束的多任务学习不同的是,底层的参数不一定完全一致,而是鼓励参数相似化。

    为什么多任务学习有效:假定有两个相关的任务A和B,它们依赖共享隐藏层。

    (1).隐式数据扩充(Implicit data augmentation):MTL有效地增加了我们用于训练模型的样本量。由于所有任务或多或少存在一些噪音,因此在针对某个任务A训练模型时,我们的目标是得到任务A的一个好的表示,忽略与数据相关的噪声。由于不同的任务具有不同的噪声模式,因此同时学习两个任务的模型可以得到一个更为泛化的表示。如果仅学习任务A要承担对任务A过拟合的风险,然而同时学习任务A和任务B则可以对噪声模式进行平均,可以使模型获得更好的表示。

    (2).注意力机制(Attention focusing):如果一个任务非常嘈杂或数据量有限且维数很高,则模型很难区分相关和不相关特征。MTL可以帮助模型将注意力集中在重要的特征上,因为其他任务将为这些特征的相关性或不相关性提供更多证据。

    (3).窃听(Eavesdropping):一些特征G很容易被任务B学习,但是对于其他任务A则很难学习。这可能是因为A以更复杂的方式与特征进行交互,或者是因为其他特征阻碍了模型学习G的能力。通过MTL,我们可以允许模型进行”窃听”,即通过任务B学习G。最简单的方法是通过”提示”,即直接训练模型来预测最重要的特征。

    (4).表征偏置(Representation bias):MTL biases the model to prefer representations that other tasks also prefer。这也将有助于该模型将来泛化到新任务,因为在足够多的训练任务上表现良好的假设空间,只要它们来自相同环境,对于学习新任务也将表现良好。

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

    深度学习中的MTL

    (1). Deep Relation Networks:如下图所示:计算机视觉中,MTL通常共享卷积层,同时用全连接层学习特定的任务。通过对任务层设定先验,使模型学习任务间的关系。

    (2). Fully-Adaptive Feature Sharing:如下图所示:一种自下而上的方法,从瘦网络开始,贪心地动态加宽网络。贪心方法可能无法做到全局最优。

    (3). Cross-stitch Networks:如下图所示:用软约束的方式将两个独立的网络连接起来,然后使用”cross-stitch units”允许模型通过线性组合学习前一层的输出。

    (4). Low supervision:主要应用在自然语言处理(Natural Language Processing, NLP)中,如词性标注、命名体识别等。

    (5). A Joint Many-Task Model:如下图所示:由多个NLP任务组成分层结构,然后将其作为多任务学习的联合模型。

    (6). Weighting losses with uncertainty:如下图所示:不考虑学习共享结构,采用正交方法考虑每个任务的不确定性。通过基于具有任务相关不确定性的高斯似然性最大化得出多任务损失函数(loss function),来调整成本函数(cost function)中每个任务的相对权重。

    (7). Tensor factorisation for MTL:对模型中的每层参数使用张量分解分为共享参数和特定于任务的参数。

    (8). Sluice Networks:如下图所示:该模型概况了基于深度学习的MTL方法:hard parameter sharing + cross-stitch networks + block-sparse regularization + task hierarchy(NLP)

    在迁移学习中,你的步骤是串行的,你从任务A中学到的,然后迁移到任务B。在多任务学习中,你是开始学习试图让一个神经网络同时做几件事情,然后希望这里的每个任务都能帮到其它所有任务。例如,在研发无人驾驶车辆,如下图,那么你的无人驾驶车可能需要同时检测不同的物体,比如检测行人、车辆、停车标志、交通灯等其它物体,输入图像x,输出将不是一个标签,而是四个标签,因为四个物体可能同时出现在一张图里。那么你现在可以做的是训练一个神经网络来预测这些y值。另外你也可以训练四个不同的神经网络,而不是训练一个神经网络做四件事,但神经网络一些早期特征在识别不同物体时都会用到,你会发现,训练一个神经网络做四件事会比训练四个完全独立的神经网络分别做四件事性能会更好,这就是多任务学习的力量。

    多任务学习什么时候有意义:第一,如果你训练的一组任务,可以共用低层次特征;第二,每个任务的数据量很接近;第三,可以训练一个足够大的神经网络同时可以做好所有的工作。多任务学习的替代方法是为每个任务训练一个单独的神经网络。多任务学习会降低性能的唯一情况就是你的神经网络还不够大。

    注:以上所有的内容的整理均来自网络,主要参考:

    1. https://arxiv.org/pdf/1706.05098.pdf

    2. 《多任务学习的研究》,2018,博论,中国科学技术大学

    GitHubhttps://github.com/fengbingchun/NN_Test

    展开全文
  • 神经网络的多任务学习概览

    千次阅读 2019-05-24 15:39:45
    1. 前言   在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是...为了达到这个目标,我们训练单一模型或个模型集合来完成指定得任务。然后,我们通过精细调参,来改进模型直至性能不...

    译自:http://sebastianruder.com/multi-task/
    转载自:https://www.cnblogs.com/shuzirank/p/7141017.html

    1. 前言

      在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI。为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务。然后,我们通过精细调参,来改进模型直至性能不再提升。尽管这样做可以针对一个任务得到一个可接受得性能,但是我们可能忽略了一些信息,这些信息有助于在我们关心的指标上做得更好。具体来说,这些信息就是相关任务的监督数据。通过在相关任务间共享表示信息,我们的模型在原始任务上泛化性能更好。这种方法称为多任务学习(Multi-Task Learning),是本博文的关注点。

      多任务学习有很多形式,如联合学习(Joint Learning),自主学习(Learning to Learn),借助辅助任务学习(Learning with Auxiliary Tasks)等,这些只是其中一些别名。概括来讲,一旦发现正在优化多于一个的目标函数,你就可以通过多任务学习来有效求解(Generally, as soon as you find yourself optimizing more than one loss function, you are effectively doing multi-task learning (in contrast to single-task learning))。在那种场景中,这样做有利于想清楚我们真正要做的是什么以及可以从中得到一些启发。

      即使对于最特殊的情形下你的优化目标只有一个,辅助任务仍然有可能帮助你改善主任务的学习性能。Rich Caruana 在文献[1]中总结了:“多任务学习通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能”。通过学习本博文,我们将尝试对多任务学习的研究近况做一个简要的回顾,尤其是针对深度神经网络的多任务学习。首先,我们探讨了多任务学习的灵感来源。接下来,介绍多任务学习的两种最常见的方法。接着描述了使得多任务学习在实践中有效的机制。在总结较为高级的基于神经网络的多任务学习方法之前,我们回顾了以往多任务学习文献中的一些背景知识。本文接着介绍了近年来提出的一些给力的基于深度神经网络的多任务学习方法。最后,我们探讨了经常使用的辅助任务的类型以及对于多任务学习讲好的辅助任务所具备的特征。

    2. 动机

      我们提出多任务学习的出发点是多种多样的:(1)从生物学来看,我们将多任务学习视为对人类学习的一种模拟。为了学习一个新的任务,我们通常会使用学习相关任务中所获得的知识。例如,婴儿先学会识别脸,然后将这种知识用来识别其他物体。(2)从教学法的角度来看,我们首先学习的任务是那些能够帮助我们掌握更复杂技术的技能。这一点对于学习武术和编程来讲都是非常正确的方法。具一个脱离大众认知的例子,电影Karate Kid中Miyagi先生教会学空手道的小孩磨光地板以及为汽车打蜡这些表明上没关系的任务。然而,结果表明正是这些无关紧要的任务使得他具备了学习空手道的相关的技能。(3)从机器学习的角度来看,我们将多任务学习视为一种归约迁移(inductive transfer)。归约迁移(inductive transfer)通过引入归约偏置(inductive bias)来改进模型,使得模型更倾向于某些假设。举例来说,常见的一种归约偏置(Inductive bias)是L1正则化,它使得模型更偏向于那些稀疏的解。在多任务学习场景中,归约偏置(Inductive bias)是由辅助任务来提供的,这会导致模型更倾向于那些可以同时解释多个任务的解。接下来我们会看到这样做会使得模型的泛化性能更好。

    3. 深度学习中两种多任务学习模式

      前面我们讨论了多任务学习的理论源泉。为了使得多任务学习的思想更加具体,我们展示了在基于深度神经网络的多任务学习中常用两种方法:隐层参数的硬共享与软共享。(1)参数的硬共享机制:参数的硬共享机制是神经网络的多任务学习中最常见的一种方式,这一点可以追溯到文献[2]。一般来讲,它可以应用到所有任务的所有隐层上,而保留任务相关的输出层。硬共享机制降低了过拟合的风险。事实上,文献[3]证明了这些共享参数过拟合风险的阶数是N,其中N为任务的数量,比任务相关参数的过拟合风险要小。直观来将,这一点是非常有意义的。越多任务同时学习,我们的模型就能捕捉到越多任务的同一个表示,从而导致在我们原始任务上的过拟合风险越小。(2)参数的软共享机制:每个任务都由自己的模型,自己的参数。我们对模型参数的距离进行正则化来保障参数的相似。文献[4]使用L2距离正则化,而文献[5]使用迹正则化(trace norm)。用于深度神经网络中的软共享机制的约束很大程度上是受传统多任务学习中正则化技术的影响。我们接下来会讨论。

    在这里插入图片描述

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

      即使从多任务学习中获得归约偏置的解释很受欢迎,但是为了更好理解多任务学习,我们必须探究其深层的机制。大多数机制早在1998年被Caruana提出。为了便于距离说明,我们假设有两个相关的任务A与B,两者共享隐层表示F。(1)隐世数据增加机制。多任务学习有效的增加了训练实例的数目。由于所有任务都或多或少存在一些噪音,例如,当我们训练任务A上的模型时,我们的目标在于得到任务A的一个好的表示,而忽略了数据相关的噪音以及泛化性能。由于不同的任务有不同的噪音模式,同时学习到两个任务可以得到一个更为泛化的表示(As different tasks have different noise patterns, a model that learns two tasks simultaneously is able to learn a more general representations.)。如果只学习任务A要承担对任务A过拟合的风险,然而同时学习任务A与任务B对噪音模式进行平均,可以使得模型获得更好表示F。(2)注意力集中机制。若任务噪音严重,数据量小,数据维度高,则对于模型来说区分相关与不相关特征变得困难。多任务有助于将模型注意力集中在确实有影响的那些特征上,是因为其他任务可以为特征的相关与不相关性提供额外的证据。(3)窃听机制。对于任务B来说很容易学习到某些特征G,而这些特征对于任务A来说很难学到。这可能是因为任务A与特征G的交互方式更复杂,或者因为其他特征阻碍了特征G的学习。通过多任务学习,我们可以允许模型窃听(eavesdrop),即使用任务B来学习特征G。最简单的实现方式是使用hints[6],即训练模型来直接预测哪些是最重要的特征。(4)表示偏置机制。多任务学习更倾向于学习到一类模型,这类模型更强调与其他任务也强调的那部分表示。由于一个对足够多的训练任务都表现很好的假设空间,对来自于同一环境的新任务也会表现很好,所以这样有助于模型展示出对新任务的泛化能力[7]。(5)正则化机制。多任务学习通过引入归纳偏置(inductive bias)起到与正则化相同的作用。正是如此,它减小了模型过拟合的风险,同时降低了模型的Rademacher复杂度,即拟合随机噪音的能力。

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

      为了更好理解深度神经网络中的多任务学习,我们首先回顾了线性模型、核方法、贝叶斯方法中的多任务学习方法。具体的说,我们将讨论多任务学习中两个普遍存在的重要思想:1)对任务间的不同强制加稀疏性约束的正则化项(enforcing sparsity across tasks through norm regularization);(2)建模任务之间的关系。值得注意的是,文献中的多任务方法大多是处理同质的场景,即他们认为所有任务都与单一的输出相关。例如,MNIST数据集上的多分类问题转换为10个二分类问题来求解。近年来的工作更多的是处理异质场景:每个任务都对应不同的输出。

    5.1 块稀疏正则化(Block-Sparsity Regularization)

      为了更好的将这些方法联系起来,我们首先介绍了一些符号的含义。我们有T个任务,每个任务t,对应的模型记为,模型参数记为,维度为d维。我们用列向量来表示参数。将这些列向量堆起来形成一个矩阵。矩阵A的第i行对应每个模型的第i个特征,第j列对应任务j的模型参数。

      现有的许多方法都对模型参数做出稀疏性假设。文献[8]认为所有模型共享参数的一个小集合。从任务参数矩阵A的角度来看,这就意味着除了少数几行外全部是0,与之对应的只有少数特征是可以在不同任务间共享的。为了强制做到这一点,在多任务学习中强制加L1正则化项。我们可以记得的是L1正则化是对参数之和上的约束,强制除少数几个外的其他所有参数为0。L1正则化又被称为LASSO(Least Absolute Shrinkage and Selection Operator)。

      对于单一任务场景,L1正则化的计算仅依赖于单个任务t中的模型参数。对于多任务场景,L1正则化的计算是基于任务参数矩阵A,首先对每行(对应每个任务的第i个特征)计算正则化,产生列向量,然后计算这个向量的L1正则化,从而强迫b中大部分项为0。

      我们可以使用不同的正则化,取决于我们想要对每行设置什么样的约束。一般来说,我们将之称为混合正则化(mix norm)约束正则化。由于这样做导致A的整行为0,故可称之为块稀疏性正则化(Block-Sparsity Regularization)。文献[9]使用正则化,而Argyriou使用正则化。后者又被称为group lasso,首次提出是在文献[10]中。Argyriou等人于2007年的时候证明了优化非凸的group lasso可以通过对任务参数矩阵A进行迹正则化(trace norm)约束转化为凸优化问题。也就是,强制矩阵A是低秩的,其中的每一个列向量都位于一个低维度的子空间。文献[11]为了进一步在多任务学习中使用group lasso来建立上界约束。

      块稀疏正则化在直觉上是非常受欢迎的,它的受欢迎程度与它依赖于任务间参数共享程度是一样的。文献[12]证明了当任务间特征不重叠时,正则化可能会比单纯的元素层面的正则化效果更糟。因此,文献[13]提出了将块稀疏正则化与元素稀疏正则化结合以改进块稀疏模型。他们将任务参数矩阵A分解为矩阵B与S,其中A=B+S。然后,对B使用强制的块稀疏正则化,对S使用lasso来进行元素稀疏正则化。文献[14]提出了一个分布式版本的group lasso正则化。

    5.2 学习任务间的关系

      group稀疏性约束可以强制模型仅关注一些特征,使得这些特征被所有任务共享。已有的所有方法假设多任务学习中所有任务之间是彼此紧密相关的。然而,事实并非如此,不是每个任务都与其他任务紧密关联。在这些场景中,与不相关的任务共享信息有可能会对性能造成伤害。这种现象称为负迁移(Negative Transfer)。除了稀疏性之外,我们更想要的是使用某种先验知识来表明与一些任务是相关的,而与另一些任务是无关的,在这种情况下,对任务的聚类约束显得更为合适。文献[15]提出了一种聚类约束来同时惩罚列向量及其方差的正则化:

      其中是平均参数向量。该惩罚项强制一个任务向量的聚类靠近其均值,用来控制。他们将之用在了核方法中,但是对线性方法同样适用。

      文献[16]为SVM方法提出了一个类似的约束。这个约束是受贝叶斯方法启发得到的,它寻求使得所有模型接近均值模型。因此它的损失函数是每个SVM所对应的大间隔损失以及与均值模型的距离。文献[17]假设潜在的聚类正则化可以显式表示为A上的聚类约束(当聚类数C已知时),将该聚类正则化分解为三部分:

      全局约束:我们的列向量参数均值有多大:

      聚类间的方差约束:聚类中心到均值的距离:

      聚类内的方差约束:,衡量每个聚类的紧致程度。

      最后将这三部分线性组合起来得到:.

      这种聚类约束中假设聚类或簇是预先知道的,所以他们引入了对上述正则项的约束进行放松。还有一些场景,任务中可能并不存在聚类想象,但是他们确实存在一个结构。文献[18]将group lasso扩展到多个任务呈现树状结构时。文献[19]将group lasso扩展到多个任务呈现图状结构时。尽管以往建模任务之间的关系大都采用加正则项的方法,但是也有以一些并没有。文献[20]是首个用kNN来表示任务聚类的算法。文献[21]试图学习到多个任务之间的一个常见结构,来应用到半监督学习中。多任务学习中很多学习任务间关系的方法采用的是贝叶斯方法。文献[22]提出了一个用于多任务学习的贝叶斯神经网络,通过对模型参数加先验来鼓励不同任务参数相似。文献[23]通过推断一个共享的协方差矩阵,将高斯过程扩展到多任务学习中。由于计算代价高,他们采用以个稀疏近似模式来贪心选择最具信息量的实例。文献[24]也采用高斯过程来做多任务学习,假设多有的模型都来自于同一个先验。文献[25]将正态分布作为先验,对每个任务相关的层进行约束。为了鼓励不同任务间的相似性,他们提出了使得均值是任务相关的,使用混合分布来建模任务间的聚类。重要的是,他们需要任务的特点是预先定义聚类,并指定混合分布的数量。基于此,文献[26]从Dirichlet过程中得到分布并能使得模型学习到任务间的相似性以及聚类的数目(簇数)。同一聚类内的所有任务共享一个模型。文献[27]提出了一个层次贝叶斯模型来学习任务间潜在的层次关系。文献[28]使用高斯过程正则化来做多任务学习,并将高斯过程扩展到大规模场景中。

      其他还有一些方法在关注在线多任务学习(online Multi-task Learning)的场景:文献[29]将已有方法扩展到在线的场景。他们也提出了正则化的感知器在多任务问题上的扩展,并将任务间的关系用一个矩阵来表示。他们使用看多种形式的正则化项来对这个任务相关矩阵进行偏置,如任务特征的相关程度,生成子空间维度的相关性等。值得注意的是,以往这些方法都需要任务特点来定义一个这样的矩阵。文献[30]扩展了这些方法,通过学习得到关系矩阵。

      文献[31]假设任务形成了多个分割的组,处于同一个组内的任务位于同一个低维空间中。每组内部,任务共享一组特征表示,这些参数可以与组分配矩阵使用交替最小化模式共同学习得到,然而完全分割并非最佳方式。文献[32]允许来自不同组的两个任务之间有重叠,假设存在小部分的基本的隐式任务。将每个真实任务的参数向量建模为:。其中为包含k个隐式任务的矩阵,为包含对k个向量进行线性组合的系数。此外,他们还约束这种线性组合应该是稀疏的。这种任务间的重叠应该是稀疏的,以此来控制共享参数的数量。文献[33]学习到一个共享假设的小集合,并将每个任务对应到一个假设上。

    6. 深度神经网络的多任务学习的最新进展

      尽管最近的许多深度学习的工作都或显式或隐式使用了多任务学习作为其模型的一部分,但是使用方式仍然没有超出我们前面提到的两种方式:参数的硬共享与软共享。相比之下,仅有少部分的工作专注于提出深度神经网络中好的多任务学习机制。

    6.1 深度关系网络(Deep Relationship Networks)

      在用于机器视觉的多任务场景中,已有的这些方法通常共享卷积层,将全链接层视为任务相关的。文献[34]提出了深度关系网络。除了共享层与任务相关层的结构,他们对全连接层添加矩阵先验。这将允许模型学习任务间的关系。这一点与我们之前看过的贝叶斯方法是类似的。然而,问题是这个方法依然依赖于事先预定义的共享结构。这一点对于机器视觉问题已经足够,但是对于新任务有错误倾向。

    6.2 完全自适应特征共享(Fully-Adaptive Feature Sharing)

      从另一个极端说起,文献[35]提出了一个自底向上的方法。从瘦网络(thin network)开始,使用对相似任务自动分组的指标,贪心的动态加宽网络。这个加宽的过程动态创建分支,如图4所示。然而这种贪心的做法并不能得到全局的最优。为每个分支分配精确的一个任务,并不能允许模型学到更复杂的任务间的交互。

    6.3 十字绣网络(Cross-Stitch Networks)

      文献[36]将两个独立的网络用参数的软共享方式连接起来。接着,他们描述了如何使用所谓的十字绣单元来决定怎么将这些任务相关的网络利用其他任务中学到的知识,并与前面层的输出进行线性组合。这种结构如图5所示,仅在pooling(池化)层与全连接层之后加入十字绣单元。

    6.4 低层次监督(Low Supervision)

      相形之下,自然语言处理领域中近年来的多任务学习的工作重点在于找到一个好的层次结构:文献[37]展示了一些NLP中的基本工作,如词性标注,命名实体识别等,应该被作为辅助任务,在较低层次时进行有监督学习。

    6.5 联合多任务模型(A Joint Many-Task Model)

      基于这种发现,文献[38]预先定义了一个包含多个NLP任务的层次结构,如图6所示,并用来做多任务学习的联合模型。

    6.6 用不确定性对损失进行加权(Weighting losses with Uncertainty)

      除了学习结构的共享,文献[39]采用一种正交的方法来考虑每个任务的不确定性。他们调整每个任务在代价函数中的相对权重,基于最大化任务相关的不确定性似然函数原理,来得到多任务学习的目标。对u每个像素深度回归、语义分割、实例分割等三个任务的框架如图7所示。

    6.7 多任务学习中的张量分解

      近来许多工作试图将已有的多任务学习模型推广到深度学习中:文献[40]将已有的一些使用张量分解技术推广到模型参数划分来分解出每层的共享参数于任务的相关系数。

    6.8 水闸网络

      最后我们说一下文献[41]中提到的水闸网络,它是对多种基于深度神经网络的多任务学习方法的泛化。如图8所示,这个模型可以学习到每层中哪些子空间是必须共享的,以及哪些是用来学习到输入序列的一个好的表示的。

    6.9 我的模型中应该共享些什么?

      已经回顾了这些相关工作,现在我们来总结一下在深度多任务学习模型中到底应该共享些什么信息。大多数的多任务学习中,任务都是来自于同一个分布的。尽管这种场景对于共享是有益的,但并不总能成立。为了研发更健壮的多任务模型,我们必须处理那些不相关的任务。

      早期用于深度学习的多任务模型需要预定义任务间的共享结构。这种策略不适合扩展,严重依赖于多任务的结构。早在1997年就已经提出的参数的硬共享技术在20年后的今天仍旧是主流。尽管参数的硬共享机制在许多场景中有用,但是若任务间的联系不那么紧密,或需要多层次的推理,则硬共享技术很快失效。最近也有一些工作研究学习哪些可以共享,这些工作的性能从一般意义上将优于硬共享机制。此外,若模型已知,学习一个任务层次结构的容量也是有用的,尤其是在有多粒度的场景中。

      正如刚开始提到的,一旦我们要做一个多目标的优化问题,那么我们就是在做多任务学习。多任务不应仅仅局限于将所有任务的知识都局限于表示为同一个参数空间,而是更加关注于如何使我们的模型学习到任务间本应该的交互模式(it is thus helpful to draw on the advances in MTL that we have discussed and enable our model to learn how the tasks should interact with each other)。

    7. 辅助任务(Auxiliary Tasks)

      对于同时获得多个任务的预测结果的场景,多任务学习是天然适合的。这个场景在金融或经济的预测中是常见的,比如,我们可能既想知道相关的影响因子,又想知道预测结果。在生物信息学中,我们可能想同时知道多种疾病的症候。但是在大多数情况下,我们仅关注一个任务。本节中,我们将讨论如何找到一个辅助任务来使得多任务学习受益。

    7.1 相关任务(Related Tasks)

      使用相关任务作为一个辅助任务,对于多任务学习来说,是一个典型的选择。想要知道什么是“相关任务”,此处我们展示一些直观的例子。Caruana于1997年使用预测不同道路的特征来辅助学习自动驾驶的方向掌控。文献[42]使用头部姿势估计与面部特征属性推断辅助脸部轮廓检测任务。文献[43]同时学习查询分类与网页搜索。文献[44]同时预测图像中物体的类别和位置。文献[45]同时预测文本到语言的过程中音素的持续时间和频率。

    7.2 对抗性(Adversarial)任务

      通常情况下,对于一个相关任务来说,不存在标注数据。然而,在一些场合,我们可以用的任务与我们想要实现的目标是相反的。这样的数据是可以用来做对抗损失的。这些损失不是用来做最小化的,而是使用Gradient Reversal Layer来做最大化训练误差的。文献[46]中展示了这种场景在领域自适应方面的成功例子。这种场景中的对抗任务用来预测输入的领域。通过对对抗任务的梯度求逆,对抗任务损失最大化。这样对于主任务是有利的,可以促使模型学习到不用区分两个域的表示。

    7.3 提示(Hints)性任务

      如前所述,多任务学习可以学到单任务学不到的特征。使用Hints就是这样一种有效的机制:在辅助任务中预测特征。最近的一个例子是在自然语言处理中,文献[47]在情感分析中将一个输入句子中是否包含正负面情感词作为辅助任务。文献[48]在错误名字识别中将判断一个句子中是否包含名字作为辅助任务。

    7.4 注意力集中

      辅助任务可以用来将注意力集中在网络可能忽略的图像的某部分上。例如,对于学习方向掌控的任务中,单一的任务模型通常忽略那些图像的细微之处,如路标等。那么预测路标就可以作为一个辅助任务。迫使模型学会去表示它们,这样的知识可以用于主任务。类似的,对于脸部识别来说,既然这些脸是不同的,我们就可以将预测脸部特征的位置作为辅助任务。

    7.5 量化平滑

      对于多任务来讲,优化目标是已经被量化的。通常连续型的是受欢迎的,而可用的标注是离散集合。在大多数情况下,需要人工评价来收集数据,例如,预测疾病的风险或情感分析(正面、负面、中立),由于目标函数是光滑的,所以使用较少量的量化辅助任务会使学习变得容易。

    7.6 预测输入

      在一些情况下使用某些特征作为输入并不会对预测目标输出有益。然而,它们可能能指导监督学习的过程。在这些情形下,特征是作为输出的一部分,而非输入。文献[49]展示了这些问题在实际应用中的场景。

    7.7 用未来预测现在

      许多场景中一些特征仅在做出预测后才可用。例如,在自动驾驶中,一旦汽车经过障碍物或路标,便可以对它们做出准确的度量。Caruana于1997年举了一个肺炎的例子,只有事发后才能又额外的诊断案例可用。对于这些例子来讲,这些额外的数据由于在输入的时刻并不可用,所以并不能作为特征。然而,可以用作辅助任务来为模型传授额外的知识以辅助训练。

    7.8 表示学习

      多任务学习中辅助任务的目标在于使得模型学习到共享的表示,以帮助主任务的学习。我们目前所讨论到的辅助任务都是隐式的在做这件事情。由于它们和主任务密切相关,所以在学习的同时可能允许这些模型学到有利于主任务的表示。一个更为显式的做法是利用一个辅助任务专门来学习一个可以迁移的表示。Cheng等人2015年的一个工作以及文献[50]所采用的语言模型目标就起到了这样的作用。类似的,autoencoder也是可以用来做辅助任务的。

    8. 为什么辅助任务对主任务是有益的?

      虽然在实际当中我们可能仅仅关心一种辅助任务,但是前面我们已经讨论了在多任务学习中可能用的各种辅助任务。尽管我们并不知道在实际中哪种会起作用。寻找辅助任务的一个基本假设是:辅助任务应该是与主任务密切相关的,或者是能够对主任务的学习过程有益的。

      然而,我们并不知道什么样的两个任务是相关的或相似的。Caruana在1997年给出的定义是:若两个任务使用相同的特征来做决策,那么两个任务是相似的。Baxer于2000年补充道:理论上讲相关的任务共享同一个最优的假设类,也就是同样的归纳偏置(inductive bias)。文献[50]提出若两个任务中的数据都产生自由同一类变换F得到固定的概率分布,那么两个任务是F相关的。尽管可以使用于同一个分类问题,但是不能用于处理不同问题的任务。Xue等人2007年提出若两个任务的分类边界(参数向量)是闭合的,那么两个任务是相似的。

      虽然早期在理解任务相关性的理论定义方面取得了一些进展,但是近期的成果却没有。任务相似性不是二值的,而是一个范围。更相似的两个任务在多任务学习中受益更大,而反之亦然。使得我们的模型能够学习到共享哪些参数可能只是暂时克服了理论上的缺失,以及更好的利用联系不紧密的任务。然而,我们也很需要对任务相似性的理论认知,来帮助我们了解如何选择辅助任务。

      文献[52]发现具有完备且统一的标注分布的辅助任务对于序列标注主任务应该更有益,这一点在实验中已经得到验证。此外,文献[53]发现non-plateauing的辅助任务也会为plateauing的主任务带来改善。

      然而这些实验都是具有范围局限性的。近期的这些研究成果只是为我们进一步理解神经网络中的多任务学习提供了一些线索。

    9. 结论

      本文关注了多任务学习的历史以及在深度神经网络中多任务学习的最新进展。尽管多任务学习频繁使用,但是近20年的参数硬共享机制仍旧是神经网络中多任务学习的主要范式。学习共享哪些信息的工作看起来更具前景。同时,我们对于任务的相似性,任务间的关系,任务的层次,以及多任务学习的收益等的理解仍旧是有限的,我们需要学习更多以理解深度神经网络中多任务学习的泛化能力。

    10. 参考文献:

    [0] 共享相关任务表征,一文读懂深度神经网络多任务学习: https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650728311&idx=1&sn=62b2dcc82657d1ce3bf91fd6a1197699

    [1] Caruana. R. (1998). Multitask Learning. Autonomous Agents and Multi-Agent Systems. 27(1). 95-133.

    [2] Caruana. R. Multitask Learning: A Knowledge based Source of Inductive Bias. Proceedings of the Tenth International Conference on Machine Learning. 1993.

    [3] Baxter, J. (1997) A Bayesian / Information Theoretic Model of Learning to Learn via Multiple Task Sampling. Machine Learning. 28, 7-39.

    [4] Duong, L., Cohn. et.al. 2015. Low Resource Dependency Parsing Cross-Lingual Parameter Sharing in a Neural Network Parser. ACL2015.

    [5] Yang, Y. et. al. 2017. Trace Norm Regularized Deep Multi-Task Learning. ICLR2017 workshop.

    [6] Abu-Mostafa, et. al. 1990. Learning from Hints in Neural Networks, Journal of Complexity.

    [7] Baxter, J. 2000. A Model of Inductive Bias Learning. Journal of Aritificial Intelligence Research.

    [8] Argyriou, A. 2007. Multi-Task Feature Learning. NIPS2007.

    [9] C. Zhang and J. Huang. 2008. Model Selection Consistency of the Lasso Selection in High Dimensional Linear Regression. Annals of Statistics. 2008.

    [10] Yuan, Ming and Yi Lin. 2006. Model Selection and Estimation in Regression with Grouped Variables. Journal of the Royal Statistical Society. 2006.

    [11] Lounici. K, et.al. 2009. Taking Advantage of Sparsity in Multi-task Learning. stat.2009.

    [12] Negahban, S. et. al. 2008. Joint Support Recovery under High Dimensional Scaling: Benefits and Perils of L1,\inf-regularization. NIPS2008.

    [13] Jalali, A. et.al. 2010. A Dirty Model for Multi-Task Learning. NIPS2010.

    [14] Liu, S. et.al. 2016. Distributed Multi-Task Relationship Learning. AISTATS2016.

    [15] Evgeniou, T. et. al. 2005. Learning Multiple Tasks with Kernel Methods. Journal of Machine Learning Research 2005.

    [16] Evgeniou, T. et. al. 2004. Regularized Multi-Task Learning. KDD2004.

    [17] Jacob, L. et. al. 2009. Clustered Multi-Task Learning: A Convex Formulation . NIPS2009.

    [18] Kim, S. and Xing, Eric P. 2010. Tree-Guided Group Lasso for Multi-Task Regression with Structured Sparsity. ICML2010.

    [19] Chen, X. et. al. 2010. Graph Structured Multi-Task Regression and An Efficient Optimization Method for General Fused Lasso.

    [20] Thrun, S. et. al.1996. Discovering Structure in Multiple Learning Tasks: The TC Algorithm. ICML1998.

    [21] Ando, R, K. et. al. 2005. A Framework for Learning Predictive Structures from Multiple Tasks and Unlabeled Data. JMLR2005.

    [22] Heskes, T. 2000. Empirical Bayes for Learning to Learn. ICML2000.

    [23] Lawrence, N.D. et. al. 2004. Learning to Learn with the informative vector machine. ICML2004.

    [24] Yu, K. et. al. 2005. Learning Gaussian Processes from Multiple Tasks, ICML2005.

    [25] Bakker, B. et. al. 2003. Task Clustering and Gating for Bayesian Multi-Task Learning. JMLR2003.

    [26] Xue, Y. et. al. 2007. Multi-Task Learning for Classification with Dirichlet Process Priors. JMLR2007.

    [27] Daume III, H. et. al. 2009. Bayesian Multitask Learning with Latent Hierarcies.

    [28] Zhang, Y. et.al. 2010. A Convex Formulation for Learning Task Relationships in Multi-Task Learning. UAI2010.

    [29] Cavallanti, G. et. al. 2010. Linear Algorithms for Online Multitask Classification. JMLR2010.

    [30] Saha, A. et. al. 2011. Online Learning of Multiple Tasks and their Relationships. JMLR2011.

    [31] Kang, Z. et. al. 2011. Learning with Whom to Share in Multi-task Feature Learning. ICML2011.

    [32] Kumar, A. et. al. 2012. Learning Task Grouping and Overlap in Multi-Task Learning. ICML2012.

    [33] Crammer, K. et. al. 2012. Learning Multiple Tasks Using Shared Hypotheses. NIPS2012.

    [34] Long, M. et. al. 2015. Learning Multiple Tasks with Deep Relationship Networks.

    [35] Lu, Y. et. al. 2016. Fully-Adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attriute Classification.

    [36] Misra, I. et. al. Cross-Stitch Networks for Multi-Task Learning, CVPR2016.

    [37] Sogaard, A. et. al. Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers. ACL2016.

    [38] Hashimoto , K. 2016. A Joint Multi-Task Model: Growing A Neural Network for Multiple NLP Tasks.

    [39] Kendail, A. et. al. 2017. Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics.

    [40] Yang, Y. et. al. 2017. Deep Multi-Task Representation Learning: A Tensor Factorization Approach. ICLR2017.

    [41] Ruder, S. 2017. Sluice Networks: Learning What to Share between Loosely Related Tasks.

    [42] Zhang, Z. 2014. Facial Landmark Detection by Deep Multi-Task Learning. ECCV2014.

    [43] Liu, X. et. al. 2015. Representation Learning Using Multi-Task Deep Neural Networks for Semantic Classification and Information Retrieval.

    [44] Girshick, R. 2015. Fast R-CNN. ICCV2015.

    [45] Arik, S. O. et. al. 2017. Deep Voice: Real-time Neural Text-to-Speech. ICML2017.

    [46] Ganin, T. 2015. Unsupervised Domain Adaptation by Backpropagation. ICML2015.

    [47] Yu, J. 2016. Learning Sentence Embeddings with Auxiliary Tasks for Cross Domain Sentiment Classification. EMNLP 2016.

    [48] Cheng, H. 2015. Open-Domain Name Error Detection Using a Multi-Task RNN. EMNLP2015.

    [49] Caruana, R. et. al. 1997. Promoting Poor Features to Supervisors: Some Inputs work Better as outputs. NIPS1997.

    [50] Rei, M. 2017. Semi-supervised Multitask Learning for Sequence Labeling, ACL2017.

    [51] Ben-David, S. et. al. 2003. Exploiting Task Relatedness for Multiple Task Learning. Learning Theory and Kernel Machines.

    [52] Alonso, H. M. et. al. 2017. When is Multi-Task Learning Effective? Multitask Learning for Semantic Sequence Prediction Under Varying Data Conditions. EACL2017.

    [53] Bingel, J. et. al. 2017. Identifying Beneficial Task Relations for Multi-Task Learning in Deep Neural Networks, EACL2017.

    展开全文
  • 深度学习笔记(19) 多任务学习

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


    1. 多任务学习概念

    在迁移学习中,步骤是串行的,从任务A里学习只是然后迁移到任务B

    在多任务学习中,步骤是同时开始学习的
    试图让单个神经网络同时做几件事情
    然后希望这里每个任务都能帮到其他所有任务


    2. 物体检测的多任务学习

    来看一个例子,假设在研发无人驾驶车辆
    那么无人驾驶车可能需要同时检测不同的物体
    比如检测行人、车辆、停车标志,还有交通灯等其他各种东西

    比如在下边边这个例子中,图像里有个停车标志,然后图像中有辆车,但没有行人,也没有交通灯

    在这里插入图片描述
    如果输入图像是x(i),那么这里不再是1个标签y(i),而是有4个标签
    也许y^((i))的维数会更高,现在就先用4个
    所以 y^((i))是个4×1向量

    如果从整体来看这个训练集标签和以前类似
    将训练集的标签水平堆叠起来,像这样 y(1)一直到 y(m)

    在这里插入图片描述
    不过现在y(i)是4×1向量
    所以这些都是竖向的列向量
    所以这个矩阵Y现在变成4×m矩阵
    而之前,当y是单实数时,这就是1×m矩阵

    那么现在可以做的是训练一个神经网络,来预测这些y值
    输入x,现在输出是一个四维向量y
    请注意,这里输出画了四个节点
    第一个节点就是想预测图中有没有行人,第二个输出节点预测的是有没有车,这里预测有没有停车标志,这里预测有没有交通灯,所以这里^y是四维的
    在这里插入图片描述
    训练神经网络,需要定义神经网络的损失函数,对于一个输出^y,是个4维向量,对于整个训练集的平均损失:
    在这里插入图片描述
    4j=1 L L L(yj(i) ,yj(i))是单个预测的损失
    所以这是对四个分量的求和,行人、车、停车标志、交通灯
    这个标志 L L L 指的是 logistic损失:
    在这里插入图片描述

    这与softmax回归的主要区别在于, softmax是将单个标签分配给单个样本
    然后发现,训练一个神经网络做四件事情会比训练四个完全独立的神经网络分别做四件事性能要更好


    3. 多任务学习的条件

    1. 如果训练的一组任务,可以共用低层次特征
      对于无人驾驶的例子,同时识别交通灯、汽车和行人是有道理的
      这些物体有相似的特征

    2. 如果每个任务的数据量很接近(这个准则没有那么绝对,所以不一定是对的)
      在多任务学习中,通常有更多任务而不仅仅是两个
      但比如说要完成100个任务,而要做多任务学习
      尝试同时识别100种不同类型的物体
      可能会发现,每个任务大概有1000个样本
      所以如果专注加强单个任务的性能
      比如专注加强第100个任务的表现,用A100表示
      如果试图单独去做这个最后的任务,只有1000个样本去训练这个任务
      但这只是100项任务之一
      而通过在其他99项任务的训练,加起来一共100k个样本,大幅提升算法性能
      如果有对称性,其他99个任务
      也许能提供一些数据或提供一些知识来帮到这100个任务中的每一个任务
      所以第二点不是绝对正确的准则,但通常会看的是如果专注于单项任务
      如果想要从多任务学习得到很大性能提升
      那么其他任务加起来必须要有比单个任务大得多的数据量

    3. 当训练一个足够大的神经网络,同时做好所有的工作
      所以多任务学习的替代方法是为每个任务训练一个单独的神经网络
      所以不是训练单个神经网络同时处理行人、汽车、停车标志和交通灯检测
      可以训练一个用于行人检测,一个用于汽车检测,一个用于停车标志检测和一个用于交通信号灯检测的神经网络

    多任务学习会降低性能的唯一情况和训练单个神经网络相比性能更低的情况
    就是神经网络还不够大
    但如果可以训练一个足够大的神经网络
    那么多任务学习肯定不会或者很少会降低性能
    都希望它可以提升性能,比单独训练神经网络来单独完成各个任务性能要更好

    多任务学习能让训练一个神经网络来执行许多任务
    这可以带来更高的性能,比单独完成各个任务更高的性能
    但要注意,实际上迁移学习比多任务学习使用频率更高


    参考:

    《神经网络和深度学习》视频课程


    相关推荐:

    深度学习笔记(18) 迁移学习
    深度学习笔记(17) 误差分析(二)
    深度学习笔记(16) 误差分析(一)
    深度学习笔记(15) 人的表现
    深度学习笔记(14) 评估指标


    谢谢!

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

    万次阅读 2018-10-23 10:45:27
     多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解...
  • 多任务学习通常通过隐藏层的 Hard 或 Soft 参数共享来完成。 共享 Hard 参数是神经网络 MTL 最常用的方法,可以追溯1993年Caruana所发表的论文。在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定...
  • 本文介绍了复旦大学邱锡鹏团队在AAAI 2020 上录用的一篇关于多任务学习的工作:《Learning Sparse Sharing: Architectures for Mltiple Tasks》,这篇文章提出了一种新的参数共享机制:稀疏共享。这种共享机制能够.....
  • 模型学习方式相关
  • 为什么是多任务学习? 当你在思考新事物的时候,他们通常会利用他们以前的经验和获得的知识来加速现在的学习过程。当我们学习一门新语言的时候,尤其是相关的语言时,我们通常会使用我们一级学过的语言知识来加快这...
  • 1 MTL简述 1.1 单任务学习 ...在多任务学习(MTL)中考虑了不同任务之间的关联,所以将不同任务的训练数据都放在一起,来训练多个任务的模型。 1.3 MTL的构建原则 找到建模任务之间的相关性 同时对
  • 多任务学习与深度学习

    千次阅读 2018-04-25 15:40:21
    多任务学习是机器学习的一个子领域,学习的目标是同事执行多个相关任务。比如,系统会同时执行学习两项任务,以便这两项任务都有助于别的任务的学习。这是模仿人类智能的一种方式,即人类如何同时执行多项任务。例如...
  • 多任务学习在推荐中的探索

    万次阅读 2020-03-11 19:08:36
    多任务学习(Multi-task learning)在cv和nlp领域已经得到广泛的应用,无论是经典的maskrcnn—同时预测bounding box的位置和类别,还是称霸nlp的bert—预测某个单词和句子是否相关联,都属于多任务模型。在推荐中是...
  • MTDNN 多任务学习 ENRIE1.0,3种mask策略(BPE)预测短语和实体。...不同于持续学习和多任务学习,序列多任务学习在引入新的训练任务时,先利用之前学习到的参数对模型进行初始化,再同时训练新任务和旧任务...
  • TensorFlow 多任务学习

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

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

    千次阅读 2018-10-17 13:56:18
    在机器学习(ML)中,通常的关注点是对特定度量进行优化,度量有很种,例如特定基准或商业 KPI 的分数。为了做到这一点,我们通常训练一个模型或模型组合来执行目标任务。然后,我们微调这些模型,直到模型的结果...
  • 由于智能的标志之一是学习和存储任务,因此如何在任务上训练神经网络(并解决灾难性遗忘)的问题极为重要。 有一种想法是改变训练数据,使每项任务的训练样本相互交错。例如,假设我们有 3 个任务
  • 多任务学习(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 使用额外...
  • 多任务学习是一个很有前景的机器学习领域,相关的理论和实验研究成果以及应用也在不断涌现。近日,香港科技大学计算机科学与工程系的杨强教授和张宇助理教授在《国家科学评论(National Science Review)》2018 年 1...
  • 多任务学习---综述

    千次阅读 2019-04-26 09:51:47
    学界 | 多任务学习概述论文:从定义和方法到应用和原理分析 多任务深度学习的三个经验教训 多任务学习-An Overview of Multi-Task Learning in Deep Neural Networks论文笔记 【深度学习】多任务学习概览(An ...
  • 多任务学习-Multitask Learning概述

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

    万次阅读 2017-07-12 17:10:16
    1. 单任务学习VS多任务学习原文地址单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。现在大多数机器学习...
  • 1、单任务学习VS多任务学习 单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。 多任务学习:把多个相关(related)的任务放在一起学习,同时学习多个任务。 多任务学习...
  • 多任务学习(Multi-task learning)的两种模式 深度学习中两种多任务学习模式:隐层参数的硬共享与软共享。 隐层参数硬共享,指的是多个任务之间共享网络的同几层隐藏层,只不过在网络的靠近输出部分开始分叉去做...
  • 组合在线学习:实时反馈玩转组合优化 看似无比困难的权衡问题,如今组合在线学习就能帮你“算出”最优解,轻松破解传统组合优化问题。本文中,我们邀请到微软亚洲研究院资深研究员陈卫为大家多面解读组合在线学习的...
  •  多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,也就是系统的输出为实数的情况。复杂的学习问题先被分解...
  • 原文地址:多任务学习模型详解:Multi-gate Mixture-of-Experts(MMoE ,Google,KDD2018),首发微信公众号,现在转到CSDN上~ 欢迎关注我的公众号,微信搜algorithm_Tian或者扫下面的二维码~ 现在保持每周更新的...
  • 多任务学习的资料,有一种机制是主要任务和辅助任务会相互帮助提高性能,那么keras的多输出模型属不属于这种多任务学习尼?还是只是单纯的相互独立的多类别学习而已?
  • 多任务学习Multi-task Learning(MTL)概述

    千次阅读 2019-05-20 19:24:10
    本文学习资料主要来自An Overview of Multi-Task Learning in Deep Neural Networks 背景:只专注于单个模型可能会忽略一些相关任务中可能提升目标任务的潜在信息,通过进行一定程度的共享不同任务之间的参数,...
  • 今天介绍的是腾讯提出的一种新的多任务学习个性化推荐模型,该论文荣获了RecSys2020最佳长论文奖,一起来学习下!1、背景多任务学习通过在一个模型中同时学习多个不同的目标,如CTR和C...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 859,060
精华内容 343,624
关键字:

多任务学习