Multi-Task 多任务学习, 那些你不知道的事

做者 | 三和厂妹   html

来源 | 文末『阅读原文』处node


概念

当在一个任务中要优化多于一个的目标函数[1] ,就能够叫多任务学习web

一些例外

  • 「一个目标函数的多任务」:不少任务中把loss加到一块儿回传,实质优化的是一个目标函数, 但优化的是多个任务,loss相加是多任务学习的一种正则策略,对多个任务的参数起一种相似与均值约束的做用 [2],因此也叫multi-task
  • 「多个目标函数的单任务」:一些NLP中用main-task和auxiliary-task 辅助任务,不少辅助任务的loss并不重要,我的以为这种虽然是多个loss,可是就是为了main-task ,不该该算多任务

动机

  • 应用上节省资源,一个模型跑多个任务,单倍的时间双倍的快乐
  • 感受上很是的直观,好不容易花了30分钟都出门了,确定多逛几个个商场,顺便剪个头发作个指甲
  • 从模型的角度,学习得的底层的几率分布一般是对多个任务都是有效的

两种常见方式

  • 参数的硬共享机制:从几十年前开始到如今这种方式还在流行(Multitask Learning. Autonomous Agents and Multi-Agent Systems [3]),通常认为一个模型中任务越多,经过参数共享下降噪声致使过拟合的风险更低,在参数硬共享机制中loss直接相加就是一种最简单的均值约束。
  • 参数的软共享机制:每一个任务都由本身的模型,本身的参数。对模型间参数的距离进行正则化来保障参数空间的类似。
  • 混合方式:前两种的混合

为何会有效

1. 不一样任务的噪声能有更好的泛化效果

因为全部任务都或多或少存在一些噪音,例如,当咱们训练任务A上的模型时,咱们的目标在于获得任务A的一个好的表示,而忽略了数据相关的噪音以及泛化性能。因为不一样的任务有不一样的噪音模式,同时学习到两个任务能够获得一个更为泛化的表示面试

2. 辅助特征选择做用

若是主任务是那种,噪音严重,数据量小,数据维度高,则对于模型来讲区分相关与不相关特征变得困难。其余辅助任务有助于将模型注意力集中在确实有影响的那些特征上。微信

3. 特征交流机制

在不一样的任务之间的特征交互交流,对于任务B来讲很容易学习到某些特征G,而这些特征对于任务A来讲很难学到。这多是由于任务A与特征G的交互方式更复杂,或者由于其余特征阻碍了特征G的学习。网络

4. 相互强调(监督)机制

多任务学习更倾向于学习到大部分模型都强调的部分。学到的空间更泛化,知足不一样的任务。因为一个对足够多的训练任务都表现很好的假设空间,对来自于同一环境的新任务也会表现很好,因此这样有助于模型展现出对新任务的泛化能力(Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers[4]、Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts[5]),很是适合迁移学习场景。app

5. 表示偏置机制

如归约迁移经过引入归约偏置来改进模型,使得模型更倾向于某些假设,能起到一种正则效果。常见的一种归约偏置是L1正则化,它使得模型更偏向于那些稀疏的解。在多任务学习场景中,这会致使模型更倾向于那些能够同时解释多个任务的解。框架

为何无效

先说是否是,再问为何.机器学习

在Identifying beneficial task relations for multi-task learning in deep neural networks[6]中,做者探究究竟是什么让multi-task work, 做者使用严格意义上相同的参数用NLP任务作了对比实验,图中分别是两个任务结合时与单任务loss的对比,大部分多任务的效果比不上单任务,做者的结论是单任务的主要特征在起做用,那些多任务结合效果好的状况,是「主任务比较难学(梯度降低比较缓慢),辅助任务比价好学的时候,多任务会有好效果」编辑器

为何会无效?由于全部有效的缘由都有它的负向效果

  • 不一样任务的噪声提升泛化,在模型容量小的时候引入的噪声也没法忽视。
  • 特征的选择,交流这些起做用的机制会产生一种负迁移(Negative Transfer),共享的信息交流的信息反而是一种误导信息
  • ...

Muti-task的一些思路

1. 对任务间的不一样强制加稀疏性约束的正则化项

如块稀疏正则化,对于不一样任务的参数,加l1正则,或者l1/lx, x>1等的正则,起任务参数的选择,让模型自动去选择应该共享哪些参数, 在keras的multi-task框架中,就是多个任务的loss相加后,用一个优化器优化,就是这种思路

2. 对中间层添加矩阵先验,能够学习任务间的关系

3. 共享合适的相关结构

  • 高层次监督(High Supervision),共享大部分结构,后面直接输出分叉那种共享(就是大多数人入手的multi-task),我的以为除非有很精致的一些调整,感受效果很难超多个single-task.
  • 低层次监督(Low Supervision),Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers中,在NLP中,做者使用deep bi-RNN低层开始对各个任务分别建模,不共享的部分模型更新时不受其余任务影响,效果不错。

4. 建模任务之间的关系

  • 建模任务之间的关系有很是多的方式,如,加各类约束项,这个约束项,让不一样任务的参数空间,尽可能平均, 有不少方式花式拓展,正则也是一种约束项,loss相加也是一种创建任务之间关系的约束项目,如 Learning Multiple Tasks with Kernel Methods [7]对模型聚类 ,a是任务参数,让各类任务参数空间尽可能靠近

a是各个任务的参数

  • 特征交互,在 Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts 中,做者经过不一样任务的高层特征交互,同时完成情感向判断和情感向缘由提取,这跟有些多模态特征fusion的方式很类似,

Cross-Stitch Networks for Multi-Task Learning[8]将两个独立的网络用参数的软共享方式链接起来, 用所谓的十字绣单元来决定怎么将这些任务相关的网络利用其余任务中学到的知识,并与前面层的输出进行线性组合。

  • 串行的联合多任务模型(A Joint Many-Task Model)

NLP 领域中,各个任务间常常是有层级关系,A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks[9]中在多任务并行的同时,加了串行结构,例如具体任务:词性分析 POS->语块分析 CHUNK->依存句法分析 DEP->文本语义相关 Relatedness->文本蕴涵 Entailment,每一个子任务都偶有本身的loss, 而后又会做为其余任务的输入

5. 用loss调整任务之间的关系

Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics[10] 用同方差不肯定性对损失进行加权(Weighting losses with Uncertainty),做者认为最佳权值与不一样任务的衡量规模和噪声相关,而噪声中除了认知不肯定性,异方差不肯定性,这些取决于数据的不肯定性外,做者把同方差不肯定性做为噪声来对多任务学习中的权重进行优化,做者根据噪声调整每一个任务在代价函数中的相对权重,噪声大则下降权重,反之。

GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks[11] 基于不一样任务loss的下降速度来动态调整权值, 做者定义了另一个专门针对权值的优化函数

是每一个任务的loss相对第一步loss的优化程度, 是每一步 对 task 任务的梯度,即若是某个任务的优化程度小,这个loss会超那么就调大这个任务的权值优化,达到个loss学习程度的平衡

应用|适用任务

辅助任务,相关性任务,对抗性任务....等[12]

一块儿交流

重磅推荐!『NewBeeNLP』目前已经创建了多个不一样方向交流群(机器学习 / 深度学习 / 天然语言处理 / 搜索推荐 / 面试交流 /  等),名额有限,赶忙添加下方微信加入一块儿讨论学习吧!(注意必定要备注信息才能经过)

本文参考资料

[1]

An Overview of Multi-task Learning in Deep Neural Networks: https://arxiv.org/abs/1706.05098

[2]

Identifying beneficial task relations for multi-task learning in deep neural networks: https://www.aclweb.org/anthology/E17-2026/

[3]

Multitask Learning. Autonomous Agents and Multi-Agent Systems: https://www.cs.cornell.edu/~caruana/mlj97.pdf

[4]

Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers: https://www.aclweb.org/anthology/P16-2038/

[5]

Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts: https://www.aclweb.org/anthology/P19-1096/

[6]

Identifying beneficial task relations for multi-task learning in deep neural networks: https://www.aclweb.org/anthology/E17-2026/

[7]

Learning Multiple Tasks with Kernel Methods: https://jmlr.org/papers/v6/evgeniou05a.html

[8]

Cross-Stitch Networks for Multi-Task Learning: https://arxiv.org/abs/1604.03539

[9]

A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks: https://arxiv.org/abs/1611.01587

[10]

Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics: https://arxiv.org/abs/1705.07115

[11]

GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks: https://arxiv.org/abs/1711.02257

[12]

辅助任务,相关性任务,对抗性任务....等: https://blog.csdn.net/qq280929090/article/details/79649163


- END -




BERT-Flow | 文本语义表示新SOTA

2020-12-23

你的模型可能学错了!!深刻探究答案位置误差

2020-12-10

Node2Vec:万物皆可Embedding

2020-12-03




本文分享自微信公众号 - NewBeeNLP(NewBeeNLP)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索