自然语言处理多任务学习目标

简介: 本文作者通过阅读大量关于自然语言处理多任务的论文,并进行系统的整理分析分类。对于想要了解自然语言处理多任务学习的朋友来说,本文会在理论上给予极大的帮助。
更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud

0caad61d90554205f721b2339032d4a56c7aec4d

之前的博文中,我讨论了如何利用相关任务提高多任务学习(MTL)模型的性能。在此之前,我们需要了解一下到底什么是多任务学习。

多任务学习是和单任务学习相对的一种机器学习方法。在机器学习领域,标准的算法理论是一次学习一个任务,而多任务学习是一种联合学习,多个任务并行学习,结果相互影响。简单来说,就是同时求解多个问题。例如我们经常探讨的“千人千面”这种个性化问题,就是一种典型的多任务学习问题,它可以同时学习多个用户的兴趣偏好。

多任务学习(MTL)主要是由两个部分组成:a)用于任务学习的架构、b)训练相关的辅助任务。而且这两个方面仍有很大的改进空间。此外,多任务学习有可能成为从有限数据中训练更强大的模型的关键技术:训练得到的模型可以执行更广泛的NLP任务。

在实现这一目标的过程中,我们首先需要更多地了解任务之间的关系,我们可以从中学到什么,以及如何最有效地结合它们以获得我们想要的结果。MTL现有的大多数理论主要集中在同类任务上,即分类问题或回归问题变化的任务,如分类个人MNIST数字。然而,这些问题的解决方案并不适用于自然语言处理(NLP)和计算机视觉,这些我们最常解决的异构问题。

最近有一些实验研究了不同NLP任务之间的多任务学习是否有效?但是我们仍然不了解哪些研究是有用的。为此,作为灵感,我将概述以下不同NLP多任务学习方法。我将重点关注多任务学习的第二个组成部分,而不是讨论一个模型如何进行具体的训练,因为大多数模型只在不同层面上适用。

这篇文章有两个主要部分:第一部分,我将讨论可以使用MTL辅助目标的人工任务。在第二部分,我将重点介绍常见的NLP任务,并讨论哪些NLP任务可以帮助更好的解决常见的NLP任务。

1.人工辅助目标(Artificial auxiliary objectives

多任务学习是为了给你的模型添加一个合适的偏差(bias)。它实质上是一种特征工程:不是对特征进行工程设计,而是对优化的辅助任务进行工程设计。与特征工程设计类似,也需要相关领域专业知识,具体如下:

1.1语言建模:语言建模已被证明对许多NLP任务是有益的,并且可以以各种方式并入。众所周知,word2vec近似于语言建模目标,语言模型已被用于预先训练MT(机器翻译)和sequence-to-sequence。类似的上下文语言模型嵌入也被用于许多任务[4]。在这种情况下,我们还可以将语言建模视为与主要任务一起学习的辅助任务。

1.2调节初始状态RNN神经网络的初始状态通常被初始化为零向量。根据Hinton2013演讲,我们可以得知这种初始化的方法是有益的。虽然学习状态比零向量更独立于序列,但是它也并非完美.Weng(2017),他建议通过对NMT的初始编码器和解码器状态添加适当的偏差,通过训练来预测句子中的单词。这个目标本质可以被看作是初始状态语言建模目标因此可能有助于其他任务。同样,我们可以想到利用初始状态下编码的其他特定于任务的偏差来辅助学习,而解析器能够利用树的深度或复杂度解决先前的知识。

1.3对抗损失 :发现辅助对抗损失是因为它对于domin适应有用,它被用于通过无法使模型不同域之间进行区分来学习域不变的表示。这通常通过添加在反向传播期间反转梯度符号的梯度反转层来完成,这反过来将导致对抗损失最大化而不是最小化。它通常通过小的扰动显着增加模型的损失,它训练一个模型来正确地分类这样的例子或生成对抗网络,它们经过训练可以产生一些输出表示,也可以将许多任务中的对抗损失添加到学习任务中独立表示[1]。它也可以用于忽略已被发现不利于泛化的输入的某些特征,例如不太可能推广的特定数据的属性。最后,对抗性辅助任务也可能有助于消除偏差,并通过奖励模型学习来保护更多隐私。

1.4预测数据统计 :辅助损失也可以预测训练数据的某些基础统计数据。与对抗损失相反,它试图使模型忽略某些特征,该辅助任务明确地鼓励模型预测某些数据统计。Plank等人 2016[2]将单词的日志频率预测作为语言建模的辅助任务。这个辅助任务不共享常见和罕见的单词之间的表示,这有利于处理罕见的单词。这个辅助任务的另一个方面是预测用户的属性,例如他们的性别,这已被证明有利于预测精神健康状况[3]或其他人口信息统计[4]。我们还可以想到这可能有利于编码模型的其他信息统计,例如POS标签的频率,解析结构或实体,用户的偏好,句子的总结覆盖率,甚至用户网站的使用模式。

1.5逆向学习(learning the inverse:可能有用的另一个辅助任务是与主任务一起学习任务的逆向。这个框架的一个流行的例子是CycleGAN[5],它可以从绘画中生成照片。而且,逆辅助损失适用于许多其他任务:MT(机器翻译)可能是最直观的,因为每个翻译方向,如英语->法语都是直接提供逆方向的数据,如Xia等人.2016[6]Xia等人(2017[7]在文章中表明这不仅适用于MT,而且还应用于图像分类(以图像生成为逆)和情绪分类(与句子生成配对)。对于多模态翻译,ElliottKádár2017[8]通过预测图像表示共同学习是一个逆向任务。对于许多其他任务来说,并不难实现反向互补:Entailment具有假设生成;视频字幕具有视频制作;语音识别;语音合成等

1.6预测应该在哪里: 对于许多任务来说,模型必须在某些特定的数据上训练,我们可以通过鼓励模型来预测模型的特征。对于情绪分析,例如YuJiang2016[9]预测句子是否包含一个正面或负面的领域中无关的情绪词,使模型对句子中的单词感兴趣。对于名称错误检测,Cheng et al.2015[10]预测一个句子是否包含一个名称。我们可以设想可能对其他任务有用的类似辅助任务:预测某些实体是否发生在句子中可能对关系提取有帮助;预测标题是否包含某些词汇可能有助于clickbait检测,同时预测句子中是否出现情感词可能会有助于情感检测。总而言之,当任务包含某些高度预测性的术语或特征时,此辅助任务应该是有用的。

2.共同训练现有的NLP任务

在第二部分中,我们将介绍现有的NLP任务。虽然已经发现诸如分块和语义标签的某些任务对于许多任务是有帮助的[11],但是使用特定辅助任务的选择在很大程度上取决于主任务的特征。在下文中,我将强调用于为NLP中许多常见任务选择辅助任务的不同策略和理由:

2.1语音识别:用于自动语音识别(ASR)的多任务学习方法是通​​常使用在语音识别流水线中可用的附加监视信号作为端对端训练ASR模型的辅助任务。语音识别和帧级状态分类可以用作辅助任务来引导有用的中间表示。Toshniwal2017[12]发现在中间层定位辅助损耗可以帮助提高性能。

2.2机器翻译 MTL为机器翻译(MT)带来的主要优点是通过共同培训翻译不同语言的翻译模型:Dong et al.2015[13]共同训练解码器;ZophKnight2016[14]共同训练编码器,马拉维亚等(2017[15]训练一种模式,可以同时将1017种语言翻译成英文。Luong等(2015[16]使用解析和图像字幕作为辅助任务也提高了机器翻译的准确性。

2.3多语种任务:类似于MT,多任务学习也能提高多语种任务模型的性能,为不同的语言训练一套模型。这已被证明:依存句法分析[17],命名实体识别[18],部分词性标注[19],文件分类[20],话语分割[21]和序列标签[22]

2.4基础语言(Language grounding:对于图像或视频中的语言,使模型能够从中学习因果关系是一个不错的想法。对于视频字幕,PasunuruBansal2017[23]共同学习预测视频中的下一帧将出现什么,而Hermann等人(2017[24]还预测了视频中的下一帧和表示视频环境状态的单词。

2.5语义解析:对于可以使用多个标签集或形式主义的任务来说,例如语义解析,一个有趣的MTL策略是一起学习这些形式主义。Fan.2017[25]共同学习不同的基于Alexa的语义解析形式。

2.6代表学习:为了学习通用表示,其挑战往往在于定义目标。大多数现有的表示学习模型都是基于单一的损失函数,例如预测下一个单词[26]或句子[27],或者是对一些任务进行训练,如entailment [28]MT [29]。这不是直观地学习基于单一损失的表示,因为使用更多的任务来学习它们,表示可以变得更加普遍。作为这个策略的一个例子,Hashimoto等(2017[30]共同研究了一个关于多个NLP任务的模型。

2.7问题回答:对于问答(QA)和阅读理解,共同学习更复杂的端对端模型的不同部分是有益的:Choi et al.2017[31]共同学习了句子选择和答案生成模型。

2.8信息检索 :对于关系提取、与不同关系或角色有关的信息通常可以共享。为此,江(2009[29]共同学习不同关系类型之间的线性模型;杨和米切尔(2017[32]共同预测语义角色标签和关系;刘等人(2015[33]共同开展域名分类和网页搜索排名。

结论

我希望这篇博客能够为你提供一些新的洞察力,以了解哪些策略用于选择NLP中多任务学习的辅助任务和目标。正如我所提到的,多任务的学习可以定义非常宽泛,所以这篇文章只是宽泛的概述。如果你想要知道关于相关策略的更详细的解释,我建议你去阅读相关论文。

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Multi-Task Learning Objectives for Natural Language Processing

作者:Sebastian Ruder,自然语言处理的博士生。译者:乌拉乌拉,审阅:袁虎

文章为简译,更为详细的内容,请查看原文

相关文章
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。
127 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法
如何快速高效全面的学习自然语言处理
如何快速高效全面的学习自然语言处理
|
4月前
|
机器学习/深度学习 自然语言处理 API
在Python中进行自然语言处理(NLP)的基础任务
在Python中进行自然语言处理(NLP)的基础任务
25 3
|
4月前
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
57 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
19ContraBERT:顶会ICSE23 数据增强+对比学习+代码预训练模型,提升NLP模型性能与鲁棒性:处理程序变异(变量重命名)【网安AIGC专题11.15】
19ContraBERT:顶会ICSE23 数据增强+对比学习+代码预训练模型,提升NLP模型性能与鲁棒性:处理程序变异(变量重命名)【网安AIGC专题11.15】
88 1
|
11月前
|
机器学习/深度学习 存储 自然语言处理
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
93 0
|
5月前
|
存储 机器学习/深度学习 人工智能
5个优质免费自然语言处理学习资源 | 语言技术导航
5个优质免费自然语言处理学习资源 | 语言技术导航
92 1
|
5月前
|
自然语言处理 文字识别 算法
RexPrompt:探索兼顾低成本、多模态、多语言、多任务的零少样本通用自然语言理解框架
RexPrompt框架的推理速度较SiamesePrompt框架提升了2倍,F1-Score提升了10%!
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
详解自然语言处理NLP两大任务与代码实战:NLU与NLG
详解自然语言处理NLP两大任务与代码实战:NLU与NLG
117 0
|
8月前
|
机器学习/深度学习 自然语言处理 算法
NLP(自然语言处理)自学习平台可能是一个很好的选
NLP(自然语言处理)自学习平台可能是一个很好的选
90 3