多任务适配扩展:BERT and PALs: Projected Attention Layers forEfficient Adaptation in Multi-Task Learning

在这里插入图片描述
在这里插入图片描述

Abstract

多任务学习在相关任务之间共享信息,有时减少了所需参数的数量。跨多个自然语言理解的最新成果GLUE基准测试中的任务以前都是从单个大任务转移过来的:用BERT进行无监督的预训练,其中每个任务都有一个单独的BERT模型进行微调。我们将探索使用少量附加任务特定参数共享单个BERT模型的多任务方法。通过使用新的自适应模块、PALs或“投影注意力层”,我们在GLUE基准上以减少大约7倍的参数匹配单独微调模型的性能,并在识别文本蕴涵数据集上获得最新的结果。

1. Introduction

这项工作探索了如何调整单个大型基本模型以处理多个任务。我们特别关注使用深度神经网络,在大量的英语文本上预先训练,在几个自然语言理解(NLU)任务上进行多任务学习。一些多任务学习方法考虑了共享任务所有参数的学习代理通用模型(如McCann等人提出的NLP decathlon,2018)。该设置要求所有任务具有相同的输入和输出空间,并且输入表示该任务。相反,我们考虑在所有任务中共享大多数参数,但只有少数任务特定参数来适应共享模型的设置。任务之间共享参数,从而使用一种通用的表示,有时会导致更好的泛化。然而,在实践中,为每个任务调整单独的模型通常效果更好。尽管我们对多任务方法感兴趣,这些方法的结果接近(或优于)最先进的水平,但维护任务之间的共享参数有不同的动机。
在移动设备等应用程序中,我们可能对电池寿命有限制。将几个不同的神经网络应用于相同的输入成本能源。如果只有模型的顶部是特定于任务的,那么我们可以只对输入使用共享的转换,并多次使用转换后的表示,作为每个特定于任务的函数的输入。
同样在移动设备上,由于交换专用集成电路上的参数,为各种任务运行多个不同的神经网络可能会产生计算和能量开销(Reffi等人,2018)。
具有大量任务的应用程序可能对可优化的参数数量有限制。例如,web规模的应用程序可能需要避免为每个用户存储单独的大模型。
考虑到基本模型中有大量共享参数,以及少量特定于任务的参数,我们的关键问题是:我们应该在哪里改造基础模型?这些转变应该采取什么形式?我们假设任务是已知的,所以模型总是能给出正确的适应参数和输出空间。
我们在GLUEbenchmark(Wang等人,2018a)的八个NLU任务中进行了实验,其中包括问题回答、情感分析和文本蕴涵。在不同的任务中,训练实例的数量差别很大,因此我们探讨如何安排训练,以避免过度偏向资源充足的任务,或过度适应资源不足的任务。
我们使用BERT模型(来自变压器的双向编码器表示,Devlin等人,2018)作为我们的基本预训练模型。预先训练的BERT表示可以通过一个额外的输出层进行微调,从而为各种任务(包括GLUE基准)创建最先进的模型。但是,整个模型是经过微调的,这意味着我们需要为每个任务提供一个单独的模型。BERT所基于的transformer体系结构是一种强大而流行的体系结构,因此找到一种使该体系结构的参数适应于多任务学习的最佳方法可能在其他环境中有用,例如多语言机器翻译。
我们的主要贡献是:

  1. 我们引入了“ProjectedAttention Layer”(PAL),一种低维的多头注意力层,与普通的BERT层并行添加。
  2. 我们引入了一种新的训练调度方法,在此方法中,我们首先对与训练集大小成比例的任务进行采样,而不再强调训练集的大小。
  3. 我们对基于自我注意的体系结构的交替适应模块进行了实证比较。

通过链接到视觉文献,我们确定了在哪里根据资源约束添加任务适应参数的共享经验.在GLUE基准测试中,我们展示了PALs的性能可以与经过微调的BERT base(Devlin等人的两个模型中较小的一个)相比。在许多任务中,参数减少约7倍。

2. Background

多任务学习旨在提供一种归纳偏差,这意味着模型必须学习一般特征,以便在许多任务中表现良好(Caruana,1997)。在NLP中,先前工作的例子包括使用单个模型对文本应用共享的神经网络进行分块、标记、命名实体识别和角色标记,具有不同的输出层(Collobert等人,2011)。另一种方法使用语言层次的思想在不同的层次上输出预测(Hashimoto et al.,2017;Sanh et al.,2018)。Subramanian等人。(2018)训练任务序列RNN模型,包括机器翻译和自然语言推理,以及对下游任务有用的学习内容表示。在NLP之外,多任务学习已经应用于语音识别(Deng et al.,2013)和信息学习(Teh et al.,2017)。Ruder(2017)提供了更全面的概述。
许多多任务学习方法可分为“硬参数共享”或“软参数共享”。硬参数共享对所有任务使用相同的隐藏层,并具有特定于任务的输出层。软参数共享为每个任务提供了自己的模型,但是模型参数之间的距离被正则化以使参数相似。在这项工作中,我们假设与整个BERT共享的软参数需要太多的参数。相反,我们将探讨如何通过向共享层以及通常的单独输出层添加适配器来实现硬参数共享。

2.1. Adaptation Parameters

增加适应参数的各种策略已经被探索。学习隐藏单元贡献(LHUC,Swietojanski & Renals, 2014)通过将每个隐藏单元乘以一个可学习标量来修改神经网络。由于该方法的单元数比网络中的参数数小得多,因此与我们所考虑的其他方法相比,该方法所增加的参数数较少。残余适配器模块(Reffi等人,2018年)采用了大规模的预训练残差网络(He等人,2016年),用于计算机视觉中的多任务学习。每个适配器模块包含一个1×1滤波器组,该滤波器组可以串联在原始网络层或并行层之间,作为层的附加输入。对于有通道的层,模块为每个任务每层包含一个额外的C×C矩阵,包含C1×1卷积过滤器.这个C×C矩阵可以通过用低秩近似代替它来压缩,这样适配器包含的模型参数的一小部分(例如,对于每个任务,小于10%)。我们的一些方法的灵感来自于对模型的关键操作使用一个低秩近似的想法:在处理图像时使用卷积层,或者在transformer中使用多头注意力。

2.2. Fine-tuning Approaches

迁移学习的一个最新趋势是,在为受监督的下游任务微调同一个模型之前,根据语言建模目标对一些模型体系结构进行预训练(Dai&Le,2015;Howard&Ruder,2018;Radford,2018)。BERT采用了类似的方法,但经过了两个目标的预训练:
1)填充一个输入句子中被屏蔽的单词,2)对两个输入句子在一个文本语料库中是否相邻进行分类。与一般的语言模型化目标不同,在预测掩蔽词时,BERT条件同时适用于左右语境。
BERT中的神经网络层取自transformer模型(Vaswani et al.,2017),这是一种在机器翻译方面取得最新成果的序列到序列模型。transformer层随后被广泛地使用,例如用于语言建模(Dai等人,2019年)、图像生成(Zhang等人,2018年),以及广义的视频分类、目标检测/分割和hu-man姿势估计(Wang等人,2018b)。
Houlsby等人提出的一种并行方法。(2019年),引入了与我们的“低等级”层类似的适配器(第3.3节),但在每次应用层规范之前在每个层中添加了适配器。
这项工作也保持了Bert模型在训练适配器模块时是固定的。我们集中精力在所有任务上联合微调整个BERT模型,它有以下几个方面:
1)存储知识的保留和遗忘是可能的
2)我们要求在训练中有机会完成所有任务。但是多任务设置需要较少的适应参数以获得良好的性能(我们使用1.13×参数与其1.3×参数1相比较,以匹配每个GLUE任务的独立模型),并且对于传输效果至关重要,从而使我们能够在RTE上获得良好的性能。

3. Adapting Self Attention

我们采用的BERT模型是在vaswani等人的原始模型的基础上设计的一种多层双向transformer编码器。(2017年)。我们只考虑较小的BERT基模型,它包含1.1亿个参数。我们可以任意地将我们自己限制在1.13倍的总参数增加,这相当于1500万个,或者每个任务有190万个参数。这种选择避免了几乎没有额外的任务特定参数,或者为每个任务分配自己的整个模型的极端情况。
在下面的部分中,我们首先介绍完整的BERT模型的各种组成部分,并讨论它们需要多少参数(第3.1节)。然后,我们将展示添加参数所采用的确切形式,区分添加到模型顶部、输出部分之前(章节3.2)或BERT base架构的每一层中(章节3.3)。

3.1. Model Architecture and Multi-head Attention

这部分符号较多,意思却很简明,是不错的公式化描述Bert计算的参考,直接看论文吧。

4. Multi-task Training and Experiment Setup

4.1. Sampling Tasks

一个简单的方法是在多个任务上训练一个模型,就是从每个任务中选择一组训练示例,以固定的顺序在其中循环。我们称之为循环抽样。但是,如果任务有不同数量的训练例子,循环抽样可能不能很好地工作。当我们看到一个特定任务中的每个示例时,我们可能多次循环访问另一个任务的较小的数据集。这种不平衡可能导致对较小任务的过度适应,而对较大任务的训练不足任务。可能我们可以通过手动调整每个任务的正则化超参数来缓解这个问题。
在这里插入图片描述
或者,我们可以使用从具有更大关联数据集的任务中看到更多示例的方法。
在这里插入图片描述
这是wang等人提出的多任务BiLSTM方法。(2018a)在 GLUE 基准上,并被sanh等人使用。(2018年)。它有一个吸引人的特性,即以相同的概率选择每一个例子,并结合所有的任务,统一地挑选例子(尽管我们从每个任务而不是单个例子中批量训练)

在这里插入图片描述
当共享一个池化层时,使用平方根或退火采样方法是特别重要的(参见3.1),并且当输出之前的层被共享时,我们需要防止任务之间的干扰,这很直观。

4.3. Details of GLUE Tasks

单句任务:使用COLA进行可接受性分类(Warstadt等人,2018);使用SST进行二元情感分类(Socher等人,2013)。
句子对任务:与MSRParaphose语料库(MRPC:Dolan&Brockett,2005)、STS基准(STS:Cer等,2017)和Quora问题对(QQP)数据集的语义相似性,以及多GenreNLI语料库的文本蕴涵(MNLI:Williams等人,2018),Thert challenge语料库的一个子集(Dagan等人,2006),以及来自Squad的数据(QNLI:Rajpurkar等人,2016)
就像Devlin等人。(2018)我们排除了Winograd NLItask。当系统接受这项任务的训练时,它们的表现总是比预测多数类的65.1基线精度差。在我们的报告中,我们也预测了多数阶级。

5. Experiments and Discussion

通过构造,除了我们的适应参数之外,我们使用与BERT-base完全相同的架构。我们注意到,除了对RTE的结果外,通过对BERT大模型进行微调,可以获得更好的性能,该模型的参数约为BERT-base的3倍。
多任务训练的使用显著提高了即时任务的结果,达到了最先进的表现。类似的改进也在基于多任务lstm的系统中被观察到(Wang et al., 2018a),并在RTE微调之前对MNLI进行了预训练(Phang et al.,2018)。

在向 BERT-base的顶部添加参数时,使用注意力而不是前馈转换形式是很重要的。额外的六层效果最好,比使用12层或3层效果更好。我们还发现,在每一次应用注意后,使用层归一化和剩余连接是关键的。令人惊讶的是,对于这些使用独立池层的模型来说,结果并没有明显的改变,我们使用共享池层来报告结果,这需要更少的参数。这些模型在RTE任务上表现较差,可能是因为其他任务的转移很重要,而且将模型拆分为多个“头”来处理每个任务会降低共享知识的好处。

5.2. Where should we add Adaptation Modules?

添加特定于任务的函数到网络中比将它们添加到顶部效果更好(对于给定数量的参数)。如Reffi等人发现的。(2018年),性能最好的模型对基础网络的每一层都进行了调整,在基础模型的最后一半中添加适配器模块比在输入后添加到另一半要好。不幸的是,调整基础模型的每一层代表了在任务之间共享操作的最坏情况。(我们再次注意到,只有当我们想在同一段文本上执行许多任务时,才有可能实现这种共享)。但调整后半场的表现比增加 BERT-base的顶部略好。当适应最后一半时,我们仍然可以共享前六层的操作,提供了一个有用的折衷方案。在网络适应中,并行连接比串行连接工作得更好,这也是reffiet al。(2018年)。

6. Further Discussion

我们发现如何安排每个任务中的训练示例的细节很重要。与我们的“退火”方法相比,在大量参数共享的情况下,与数据集大小成比例的采样任务会降低性能,因为我们慢慢降低了数据集大小对采样概率的影响。退火增加了随机种子的性能差异以及平均性能,这意味着我们可能需要支付几个训练运行的成本,以从该方法中获得最佳的单个模型。我们没有考虑训练方法的许多变化,也没有使用任何方法来减少训练对分离任务的干扰(例如,Lopez Paz&Ranzato,2017年的“梯度情节记忆”)。这些方法如何与自适应参数的选择相互作用,是进一步研究的方向。最终,使用哪种方法取决于所处的限制条件;如果参数的限制较少,但您希望尽可能多地共享操作,那么在模型的顶部添加整个特定于任务的BERT层是有意义的。如果共享操作不是问题,那么将PALs添加到每一层将会在很少的参数下表现良好。最后,只适应基本模型的后半部分提供了性能和共享操作之间的折衷

猜你喜欢

转载自blog.csdn.net/g534441921/article/details/107734293