查看原文
其他

【源头活水】Transformer is All You Need 论文翻译

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—编号626

地址:https://www.zhihu.com/people/xing-ji-kuang-gong-44

Transformer is All You Need: Multimodal Multitask Learning with a Unified Transformer

https://arxiv.org/pdf/2102.10772.pdf

快捷下载:本公众号后台回复【paper70】下载本论文

摘要

我们提出了UniT,一个统一的transformer模型,以同时学习跨越不同的领域的最突出的任务,从目标检测到语言理解和多模态推理。基于transformer编码器-解码器架构,我们的单元模型使用编码器对每个输入模式进行编码,并在编码的输入表示上使用共享解码器对每个任务进行预测,之后跟着的是特定任务的输出头。整个模型是端到端联合训练的,每个任务都有损失。与之前使用transformer进行多任务学习的工作相比,我们为所有任务共享相同的模型参数,而不是分别微调特定任务的模型,并在不同领域处理更多不同的任务。在我们的实验中,我们在8个数据集上共同学习7个任务,在相同的监督下,使用一组紧凑的模型参数,在每个领域取得了与表现良好的先前的工作相当的性能。代码将被发布在MMF上,https://mmf.sh。


01

引言
transformer最初是在[58]中提出的,它在包括但不限于自然语言、图像、视频和音频等广泛领域都取得了巨大的成功。先前的研究(例如[13,42,43,4,64,34,28,44,48])表明,在大型语料上训练的transformer可以学习大量下游语言任务的强表示。在视觉领域,基于transformer的模型在图像分类、目标检测和全视分割等方面取得了很好的效果(如[39,3,21,20,46,14,60,5,71,2,57])。除了建模单个模态外,transformer模型还在视觉和语言的联合推理任务中表现出较强的性能,如视觉问题回答(如[30,37,38,56,9,29,55,70,22])。
然而,尽管在transformer在特定领域的应用方面取得了上述成就,但在使用transformer连接不同领域的不同任务方面,还没有多少前人的努力。在见证了transformer的成功之后,各种各样的问题自然出现了;对于文本输入的自然语言推理训练的transformer模型也能对图像进行目标检测吗?或者基于transformer的图像分类器也能检查文本含义吗?总的来说,是否有可能建立一个单一的、统一的模型,同时处理不同领域中的任务?之前的工作试图解决其中的一些问题,但只是在有限的范围内:
  • 只处理单个领域或特定多模态领域的任务;ViT[14]和DETR[5]专注于仅视觉的任务,BERT[13]及其衍生作品[34,64,28,44]仅处理语言任务,而VisualBERT、VILBERT[37,30]等多模态transformer仅工作于特定的视觉和语言多模态领域。
  • 涉及每个任务的特定任务微调,不利用任务之间的任何共享参数,通常以N倍于N个任务的参数结束;我们必须分别为BERT的每一个任务微调一个模型。
  • 仅从单一领域对相关或类似任务执行多项任务,有时使用硬编码的训练策略;例如,T5[44]只适用于语言领域的任务,而VILBERT-MT[38]只适用于相关的视觉和语言任务。
在这项工作中,我们建立了一个统一的transformer(UniT)编码器-解码器模型,将图像和/或文本作为输入,并共同训练多个任务,从视觉感知和语言理解到联合视觉和语言推理。UniT由编码模块组成,这些模块将每个输入模态编码为隐藏状态序列(特征向量),在编码的输入模态上有一个transformer解码器,然后是应用在解码器隐藏状态上的特定任务输出头,以对每个任务做出最终预测。与之前使用transformer进行多任务学习的工作(例如[38])相比,我们对UniT进行了训练,并在更大范围的任务上实现了与表现良好的之前工作相当的性能;不仅在视觉和语言的联合任务上,如VQA,而且在仅视觉和仅语言的任务上也是如此。我们在这项工作中做出了以下贡献:
  • 我们提出了UniT,一个统一的transformer编码器-解码器体系结构,能够在单一模型中连接和学习多个任务和领域。
  • 我们联合学习最突出的视觉领域和文本领域及其交叉领域的任务,即物体检测、视觉问题回答、视觉蕴涵和GLUE基准[59]中的自然语言理解任务,包括QNLI[45]、MNLI[61]、QQP[23]和SST-2[51]。我们证明在我们的训练方案下,这些不同的任务可以同时学习并恰当地收敛。
  • 通过对各种任务的分析,我们表明多模态任务(如VQA和视觉蕴涵)从单模态任务的多任务训练中受益。


02

相关工作
语言、视觉和多模态任务的transformer。transformer被首先应用到语言领域,进行序列到序列的[58]建模。BERT [13], GPT [42,43,4], XLNet [64], RoBERTa [34], AL-BERT [28], T5 [44], T-NLG[48]等最近的研究表明,在大型语料上预先训练的transformer学习的语言表示可以通过微调迁移到一些下游任务。
在视觉域,Image Transformer[39]通过局部像素邻域建立transformer模型,实现图像生成和超分辨率。Image GPT[8]和ViT[14]将transformer应用于平面图像像素或图像块进行分类。DETR[5]采用端到端的编解码器模型进行检测和分割。此外,transformer的多头自我注意机制也有利于广泛的视觉应用(如[60,46,11,68,69])。对于视觉和语言的联合推理任务,如视觉回答问题,transformer模型已经扩展到将图像和文本形式都作为输入(如VisualBERT [30], VILBERT [37,38], LXMERT[56]和UNITER[9])。
以前的大多数transformer应用和扩展都为每个感兴趣的任务训练(或微调)一个特定的模型。在BERT[13]中,预先训练好的transformer模型在多个下游语言任务上分别进行微调。在T5[44]中,在不同的语言任务上共同训练一个文本到文本transformer。然而,尽管通过多任务预训练学习通用表示,T5仍然对每个下游任务的不同参数集进行微调。相反,我们在一个transformer中同时学习多个任务。
用transformer进行多任务学习。在视觉(如[17,67,54,53,66])、语言(如[52,16,32,49,10])或多模态领域(如[24,25,41,7,38])的多任务学习研究已经有很长的历史了。以前关于多任务学习的大部分努力都集中在特定的领域或模式上,通常使用针对该领域的模型体系结构。然而,在使用单一通用模型的跨领域多任务学习方面也有值得注意的研究。在[24]中,基于transformer多头注意机制的编码器-解码器体系结构可以应用于不同的输入输出领域,如图像分类、机器翻译和图像字幕。[24]中的解码器是专门为每个输出任务设计的,而我们的模型涉及的任务特定细节较少,因为我们对所有任务都应用了相同的解码器架构。在MT-DNN[33]中,通过在transformer中共享下层,同时使顶层具有任务特异性,建立了多任务语言理解模型。在VILBERT-MT[38]中,利用基于VILBERT[37]的多任务转换模型,共同学习了12个视觉和语言任务。与[33]和[38]相比,我们扩展了固定输入模式,并通过统一的transformer模型共同处理不同的单模态(仅视觉和仅语言)和多模态任务。


03

UniT:一个transformer学习所有
在本文中,我们通过一个统一的单一模型,在不同的模式下共同学习多个任务。我们的模型,UniT,是建立在transformer编码器-解码器架构上的[58,5],由每个输入模态类型的独立编码器和带有简单任务特定头的解码器(每个任务或共享)组成。图2显示了UniT的概述。
我们考虑两种输入方式:图像和文本。受[5]启发,我们在图像输入的基于transformer的编码器中,首先应用卷积神经网络主干来提取视觉特征映射,然后通过transformer编码器将其编码成一组隐藏状态,以整合全局上下文信息。对于语言输入,我们使用BERT[13],特别是12层未封装版本,将输入单词(例如问题)编码成从BERT的最后一层开始的一系列隐藏状态。在将输入模态编码成隐藏状态序列之后,我们将transformer解码器应用于单个编码模态或两个编码模态的连接序列,这取决于任务是单模态(即仅视觉或语言)还是多模态。我们将探索在所有任务中使用独立(即特定于任务)或共享的解码器。最后,transformer解码器的表示被传递到特定任务的头部,例如一个简单的两层分类器,它输出最终的预测。鉴于UniT的简单性,它可以很容易地扩展到更多的形式和输入。我们的经验表明,我们的模型可以在8个数据集上共同学习7个不同的任务。以下部分将进一步描述UniT中每个组件的细节。

3.1 图像编码器

仅视觉的任务(如物体检测)和视觉和语言的任务(如视觉问题回答和视觉蕴含)需要感知和理解图像作为输入。在我们的模型中,我们用卷积神经网络和transformer编码器将输入图像编码为一组编码的视觉隐藏状态  。
我们的图像编码过程的灵感和类似DETR[5]。首先,在输入图像上应用卷积神经网络骨干提取大小为  视觉特征映射  :
在我们的实现中,骨干网遵循ResNet-50[18]的结构结构,对其最后一个C5块进行扩张[65],并在[5]中进行目标检测的预训练。
我们应用了有  层,并且特征图  上面的隐藏层大小为  的视觉transformer编码器  来进一步将其编码到大小为  的视觉隐藏状态  中(其中  为编码的视觉隐藏状态的长度)。另外,考虑到不同的任务(如目标检测和VQA)可能需要提取不同类型的信息,我们还添加了一个任务嵌入向量  到transformer编码器来允许它在输出中提取特定于任务的信息,如下所示:
  是从视觉特征维度  到编码隐藏大小  的线性投影。视觉transformer编码器  的结构遵循DETR[5],其中位置编码添加到特征图。任务标记  是一个学得的维度为  的参数,它被连接到扁平的视觉特征列表  的开头,并从输出隐藏状态  中被剥离出来。

3.2 文本编码器

QNLI[45]、MNLI[61]、QQP[23]、SST-2[51]等GLUE基准[59]任务以及VQA、视觉蕴涵等视觉语言联合推理任务提供了文本输入。本文利用BERT[13]对文本输入进行编码。BERT[13]是在大型语料库上预先训练的transformer编码器模型,具有掩蔽语言建模和下一句预测任务。
给定输入文本(例如一个句子或一对句子),我们用与BERT相同的方式将它标记为一个有  个标记序列  ,有  [CLS](BERT中用于分类的特殊池化标记)。然后,将标记序列用作预先训练的BERT模型的输入,以提取大小为  的文本隐藏状态序列  ,其中  为BERT隐藏层大小。与图像编码器类似,在文本编码器中,我们也添加了一个学习任务嵌入向量  作为BERT输入的一部分,在嵌入的标记序列的开头加上前缀,然后将其从输出文本隐藏状态中剥离,如下所示。
然而,我们发现在实践中,只保留与  中[CLS]对应的隐藏向量作为解码器的输入几乎同样有效,这节省了计算量。
在我们的实现中,我们使用了一个从Huggingface的transformer库中预先训练的基于BERT的未封装模型[62],它有  层。

3.3 领域无关的UniT解码器

对输入模态进行编码后,我们对其应用隐藏层大小为  ,层数为  的transformer解码器  来输出一个解码的隐藏状态序列  ,用于对每个任务的预测。不同于针对每种模式都有特定架构设计的图像和文本编码器,我们的解码器在所有任务中都建立在相同的领域无关的transformer解码器架构[58]之上。
对于只有视觉的任务,我们在编码的图像  上应用解码器,描述见3.1节,对于只有语言的任务,我们在编码的文本  上应用解码器,见3.2节,最后,对于视觉和语言的联合任务,我们将两种模式的编码输入连接成一个单一的序列  作为解码器的输入。
transformer解码器  接受编码后的输入序列  和一个特定于任务的长度为  的查询嵌入序列  。它对每个第  个transformer解码器层输出一个解码的隐藏状态序列  ,解码的隐藏状态序列与查询嵌入  一样有相同的长度  。
在我们的实现中,我们使用了与DETR[5]相同的transformer解码器架构。在第  个解码器层中,解码器的隐藏状态  的不同位置之间采用了自注意,并且交叉注意被应用到了编码的输入模式  中。
在我们的实验中,要么使用(i)一个单独的共享解码器  对所有任务,或者使用(ii)一个分开的解码器  对于每个具体的任务  。

3.4 特定于任务的输出头

对解码器隐藏状态  ,我们为每个任务  应用一个特定于任务的预测头,用于最终预测。对于目标检测,我们添加了一个分类头来产生分类输出(包括“背景”)和一个盒子头(box head)来为解码器隐藏状态  中的每个位置产生边界框输出。分类头和盒子头遵循DETR[5]中的实现。对于每个框上都有属性标签的数据集(我们实验中的视觉基因组数据集[27]),我们还在实现BUTD[1]之后添加了一个属性分类头。解码器隐藏状态中的每个位置要么产生一个对象类,要么产生背景。
分类头和盒子头的输出被后处理为对象边界框。跟随DETR,在训练中我们对在解码器隐藏状态  中的所有层应用这些头:
其中  分别是类别,盒子和属性输出序列,它们都有与用于检测的查询嵌入  相同的长度  。
在测试时,我们只从顶层解码器获取预测  。由于不同的检测数据集通常有不同数量的类,所以在对多个检测数据集进行训练时,每个数据集都有自己的类,盒子和属性头。我们在输出  和  上应用同DETR中一样的检测损失,在  上应用同BUTD[1]中一样的属性损失。
我们在这项工作中处理的所有其他任务,包括视觉问题回答、视觉蕴涵和自然语言理解(QNLI、QQP、MNLI和SST-2),都可以被转换为任务  的  类之间的分类任务。我们在顶层解码器的第一个输出位置隐藏状态  上应用一个特定于任务的分类器来输出一个对于任务  的大小为  的类别预测  。
对于分类器,我们使用一个带有GeLU激活[19](后面是dropout)和隐藏维度等于解码器隐藏大小的两层感知器来生成预测。我们将交叉熵分类损失应用于具有地面真实目标  的预测  上,对模型进行训练。

3.5 训练

我们在多个任务上联合训练UniT。在训练过程中的每次迭代中,我们随机选择一个任务和一个数据集来填充一批样本。我们根据数据集大小和经验证据手动指定每个任务的采样概率。在我们的实现中,我们使用基于PyTorch[40]的MMF框架[50],以分布式方式在64个Nvidia Volta V100-SXM2-32GB GPU(每个GPU批处理大小为1)上以64个批处理大小进行训练。
我们使用加权Adam优化器[26,36],学习速率为5e-5和预热余弦学习率规划[35](使用2000个预热迭代)。优化器根据任务损失的梯度更新模型参数。
在目标检测的训练过程中,跟随DETR[5],我们将放缩和裁剪增强应用于图像输入。在检测训练批中,输入图像被随机调整大小,使其最短边在480到800像素之间,然后从调整后的图像中提取宽度和高度随机在384到600像素之间的裁剪。然而,我们并不将放缩和裁剪增强应用于视觉和语言任务,如VQA,因为这些任务通常需要整个图像来进行全局推理(例如,回答图像中有多少人需要计算整个图像中的每个人)。在目标检测的测试时间以及视觉和语言任务的训练和测试时间里,输入图像被调整为具有800像素的确定的最短边。


04

结论

在这项工作中,我们展示了transformer框架可以应用于多个领域,在一个统一的编码器-解码器模型中联合处理多个任务。我们的单元模型同时处理横跨8个数据集的7个任务,并通过一组共享参数在每个任务上实现强大的性能。通过一个领域无关的transformer架构,我们的模型朝着构建通用智能体的目标迈出了一步,这些智能体能够处理不同领域的广泛应用,包括视觉感知、语言理解和多模态推理。


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存