2019-12-29 05:43:17
ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks
论文作者:
Jiasen Lu, Dhruv Batra, Devi Parikh, Stefan Lee(佐治亚理工学院、俄勒冈州立大学、Facebook AI Research)
论文地址:
https://www.aminer.cn/pub/5db9297647c8f766461f745b/
论文代码:
https://github.com/jiasenlu/vilbert_beta
本文提出ViLBERT(Vision-and-Language BERT),该模型学习图像内容和自然语言的无任务偏好的联合表征。ViLBERT在BERT的基础上扩展为多模态双流模型,在各自的流中处理图像和文本输入,这两个流通过共注意力transformer层进行交互。该模型在Conceptual Captions数据集上进行预训练,再将其迁移应用到多个视觉-语言任务:视觉问答,视觉常识推理,指示表达(referring expressions)和基于字幕的图像检索。ViLBERT应用到下游任务时仅需对基础架构进行少量添加。实验结果表明本文的ViLBERT在4个下游任务中显著优于面向特定任务的最先进模型。
ViLBERT代表了一种转向:从将学习视觉和语言之间的基础知识仅作为任务训练的一部分,转向将视觉基础知识作为一种可预训练和可迁移的能力。
视觉理解任务包括通过在图像、视频甚至整个3D环境中生成或响应自然语言已经取得了稳步的进展。这些方法和对应的任务可以归为"vision-and-language"。尽管人们普遍需要将自然语言和视觉刺激结合起来,即进行视觉基础训练,但用于vision-and-language任务的方法缺乏一个统一的基础以提升这种能力。相反,最主要的策略是先基于其他大规模任务分别预训练语言和视觉模型,然后将其作为具体任务训练的一部分学习基础知识。这种方案学习到的基础知识并不牢靠,当视觉-语言数据有限或有偏时,模型泛化能力很差。
先预训练再迁移的学习方案在计算机视觉和自然语言处理中广为应用。这种易用且表示能力强大的方案已经成为标配。对于vision-and-language任务来说使用这种方案当然也是必不可少的,与此同时考虑视觉和语言之间的关系也同等重要。比如即使狗品种分类的视觉表征是完美的,但是当下游vision-and-language模型无法将该视觉表征与形如"小猎犬"或"牧羊人"这样的近似短语进行关联时,这种完美的视觉表征也是近乎无用。因此,本文提出一种通用的视觉基础模型,这种模型可以学习上述的这些联系,并将它们运用到多个vision-and-language任务中。换句话说,ViLBERT是面向视觉基础的预训练。
为学习视觉和语言的联合表征,本文参照了最近在自监督学习方面取得的成果。在NLP领域的佼佼者如ELMo、BERT、GPT等,这些模型都取得了令人瞩目的成果。本文通过类似的方法来学习视觉基础知识,我们需要先确定一个视觉和语言能够相互对应的数据集。本文选用的是Conceptual Captions数据集,该数据集大概包括330万张图像,每张图像带有弱关联的描述标题。这些图像均来源于网络上带有alt-text的图像。补充一点,所谓alt-text是在html语法中图片的替代文字,当图片失效或是无法显示时,浏览器显示会被文字替代。
本文提出的ViLBERT是一个能够从视觉-语言数据集中学习到任务无关的视觉基础知识的联合模型。ViLBERT扩展了BERT模型以共同推理文本和图像。本文的关键创新点在于提出一种双流机制,即分别面向视觉和语言的流。该双流能够在共注意力transformer层进行交互。该结构能够适应每种模态的不同处理需求,并在不同表示深度上提供模态之间的交互。实验结果表明,该结构优于单流统一模型。
在Conceptual Captions进行预训练时涉及的目标函数:
(1)给定输入,预测被遮蔽的字和图像区域的语义;
(2)预测图像和文本是否语义匹配。
在预训练之后引入4个vision-and-language 任务:
(1)视觉问答;
(2)视觉常识推理;
(3)指示表达;
(4)基于字幕的图像检索。
ViLBERT在上述4个任务上都取得了SOTA结果。这里选用的基准是面向具体任务最先进模型(分别独立预训练视觉和语言模型),实验结果表明ViLBERT在各个任务上都提升了2~10个百分点的精度。此外,ViLBERT针对这些任务的修改很简单,所以该模型可以作为跨多个视觉和语言任务的视觉基础。
与BERT相关的基础理论就不赘述了。这里主要介绍ViLBERT对于BERT的改进。ViLBERT与BERT的对比见于Figure 1。ViLBERT修改BERT中query条件下的key-value注意力机制,将其发展成一个多模态共注意transformer模块。
Figure 1:本文基于transformer框架引入的一种新型共注意力机制。在多头注意力中交换的key-value对,该结构使得vision-attended语言特征能够并入视觉表征(反之亦然)。
受BERT的启发,可以发展出类似的模型并训练出能够从文本-图像对中学习到图像和文本的联合表征。具体到本文,我们考虑的是静态图像及其对应描述文本的联合表征。
一种对BERT改动最小的简单方法是:通过聚类简单地将视觉输入的空间离散化,将这些看得到的"token"与文本输入完全一样对待,然后预训练一个BERT模型。这种框架有如下缺点:
(1)初始化的聚类可能造成错误离散化和丢失视觉细节;
(2)以相同的方式对待两种模式的输入,忽略了它们可能需要不同级别的处理。这其实是由于固有的复杂性或其输入表征的初始抽象级别所需要的。比如,图像区域之间的关系可能比句子中的单词弱,而视觉特征本身往往已经是一个非常深的网络的输出;
(3)强制将预训练的权重去适应大量额外的视觉"token"可能会破坏已经学习的BERT语言模型;
本文提出一个双流架构,分别对每种模态进行建模,然后通过一组基于注意力的交互将它们融合在一起。这种方法允许对每种模态使用可变的网络深度,并支持不同深度的跨模态连接。
ViLBERT的模型如Figure 2所示。该模型由分别作用于图像区域和文本段的2个平行BERT-style的模型组成。每个流都是由一系列的transformer blocks(TRM)和共注意力transformer层(Co-TRM)组成。其中Co-TRM是用以模态之间信息的交换。需要注意的是,流之间的信息交换是被限制于特定层的,所以,文本流在与视觉特征进行交流之前有更多的处理。这也符合我们的直觉,所选择的视觉特征已经相对高级,与句子中的单词相比,视觉特征需要有限的上下文聚合。
Figure 2:ViLBERT由两个平行的流组成,分别是视觉流(绿色)和语言流(紫色),这两个流在共注意力transformer层进行交互。这种结构允许每个模态有不同的深度,并通过共注意力机制实现稀疏交互。虚线框下的乘数下标表示重复的层。
• 共注意力Transformer层:
本文引入的共注意力transformer层如Figure 1b所示。给定中间态的视觉表征和语言表征,该模块计算query、key和value矩阵(与标准的transformer block一样)。但是,每个模态中的keys和values输入到其他模态的多头注意力block。因此,注意力block为每一种依赖于另一种模态产生注意池化(attention-pooled )特征。这会在视觉流中表现为图像条件下的语言注意力,在语言流中表现为语言条件下的图像注意力。后者模仿了vision-and-language模型中常见的注意力机制。Transformer block的其余部分与BERT一样,包括与初始化表征的残差相加:产生一个多模态特性。一般来说,对vision-and-language的共同注意力并不是一个新概念(之前已有学者提出),现有工作表明类似的共注意Transformer结构在视觉问答任务是有效的。
• 图像表征:
本文基于一个预训练的目标检测网络生成图像区域特征及其视觉特征。与文本中的词不同,图像区域是天然无序的。为此本文使用了一个5维的向量对区域位置编码,从而实现图像空间位置的编码。这5个维度分别是归一化后的bounding boxes的左上角和右下角的坐标以及图像区域的覆盖占比。然后通过映射将其维数与视觉特征的维数相匹配,并对它们进行求和。此外,将特定的IMG token作为图像区域序列的起始,并用IMG token最后的输出表征整个图像。换句话说,带有空间位置编码信息的视觉特征的均值池化表征整个图像。
• 训练任务和目标:
训练ViLBERT时采用了2个预训练的任务:
(1)遮蔽多模态建模
(2)预测多模态对齐
遮蔽多模态建模任务如Figure 3a所示:
Figure 3:在Conceptual Captions数据集上训练ViLBERT,训练过程使用两个任务目标以学习视觉基础。在学习遮蔽多模态中,模型需要根据带遮蔽的输入重建出被遮蔽掉的图像区域分类结果或词。在预测多模态任务中,模型需要预测标题描述是否与图像匹配。
• 遮蔽多模态建模:
与标准BERT一样,ViLBERT中词和图像区域输入的遮蔽占比大概是15%,在给定剩余输入的情况下,对输入进行重建。遮蔽图像区域的时候,90%时候是直接遮蔽,另外10%的时候保持不变。文本的遮蔽方式与BERT一样。需要注意的是,本文并不直接预测被遮蔽掉的特征值,而是预测对应图像区域在语义类别上的分布。为能够对此进行监督学习,本文采用用于特征抽取的预训练的目标探测模型的输出分布。训练的目标是最小化这两个分布的KL散度。这种选择反映了这样一种概念,即语言通常只识别视觉内容的高级语义,不太可能重建精确的图像特征。此外,应用回归损失可能会使其难以平衡遮蔽图像和文本输入引起的损失。
• 预测多模态对齐:
多模态对齐任务如Figure 3b所示,其目标是预测图像-文本对是否匹配对齐,即本文是否描述了图像。以图像特征序列的起始IMG token和文本序列的起始CLS token的输出作为视觉和语言输入的整体表征。借用vision-and-language模型中另一种常见结构,将IMG token的输出和CLS token的输出进行element-wise product作为最终的总体表征。再利用一个线性层预测图像和文本是否匹配。
• 数据集:
本文使用Conceptual Captions数据集,该数据集原本是有330万图像-标题对,但是由于部分链接失效,本文只使用能够下载到的310万的数据对。
• 实施细节:
本文用BERT_base模型对ViLBERT中的语言流进行初始化。该BERT模型基于BookCorpus和English Wikipedia进行预训练。之所以选用BERT的base版主要是出于训练时间的考虑。至于更强大的BERT的large版可能会进一步提高性能,这将在未来进行试验。
使用基于Visual Genome数据集预训练的Faster R-CNN模型抽取图像区域特征。选用类别探测概率高于自信度阈值的区域,并保持10~36个的高分值的bounding boxe。视觉流中的Transformer和共注意力transformer blocks的隐含层大小为1024,注意力头为8个。
对预训练ViLBERT用4个Vision-and-Language任务和一个诊断任务评测。这些任务具体分别是:
(1)视觉问答(VQA),使用VQA 2.0数据集;
(2)视觉常识推理(VCR),使用Visual Commonsense Reasoning (VCR)数据集;
(3)指示表达(referring expressions),所谓的指示表达是对给定的自然语言指代找到对应的图像区域。本文使用的是RefCOCO+数据集;
(4)基于字幕的图像检索,使用Flickr30k数据集;
(5)零样本的基于字幕的图像检索。上述任务都是由特定下游数据集微调,在零样本任务中,直接将预训练的ViLBERT应用于Flickr30k数据集中的多模态对齐预测。
下游任务的微调策略其实很简单,只需增加一层分类器。这与社区内为每个这些任务开发专门模型所做的重大努力形成鲜明的对比。
(一)ViLBERT的基准模型
(1)Single-Stream。使用一个BERT架构处理多模态输入,这意味着视觉输入和文本输入要共享参数。与ViLBERT相比,该模型无需改动BERT体系结构,从而显著地提高了视觉处理的深度并提早了模式之间的交互。与该基准比较,以确定本文双流体系结构的影响。该基准由于两个流始终交互,所以无法缓存任何表征以提高效率。由于高计算成本,本文不在图像检索和零样本图像检索任务中评估该基准模型。
(2)没有使用预训练的ViLBERT。需要注意的是,该基准仍然对语言流进行BERT的初始化,并使用与完整ViLBERT模型相同的Faster R-CNN模型进行图像区域的表征。与此基准进行比较,以隔离偏好特定任务的基线模型的增益,这些基准模型可能是由于架构、语言初始化或视觉特性,而不是在Conceptual Captions数据集上预训练所带来的增益。
(二)上述下游任务的基准模型
(1)VQA:DFAF
(2)VCR:R2C
(3) RefCOCO+:MAttNet
(4)基于字幕的图像检索:SCAN
具体实验结果如 Table 1 所示。
基于Table 1 有以下重要发现:
(1)ViLBERT显著优于singl-stream模型;
(2)预训练能够提升视觉语言表征;
(3)在vision-and-language任务上使用ViLBERT+微调的方案十分强大。
总之,这些结果表明ViLBERT能够学习视觉-语言之间的重要关系,而这种关系能够在下游任务中被利用。
(三)视觉流深度的影响
在Table 2中对比了ViLBERT不同深度的迁移结果。
这里的深度是指CO-TRM-TRM blocks(Figure 2中的虚线部分)的重复数量。可以发现,对于VQA和图像检索任务更大的深度,性能单调增加,直到层深度为6。同样,随着深度的增加,零样本图像检索也会继续取得显著的提升。相比之下,VCR和RefCOCO+似乎更适合使用较浅的模型。
(四)大规模训练数据的优点
从Conceptual Caption数据集中随机取25%和50%的子集,并使用与上面相同的设置进行预训练和finetune ViLBERT。可以看出准确性随着数据量的增加而单调增长,这意味着ViLBERT可能会受益于更多的预训练数据集。
(五)ViLBERT在预训练过程中学到了什么
为了解ViLBERT在基于Conceptual Caption数据集的预训练中学到了什么。用零样本基于标题的图像检索任务来评估。零样本任务的性能(Table 1右)显著低于有微调的模型(31.86 vs 52.20 R1)。对于没有看到Flickr30k图像或标题该模型也能够正常执行(31.86 vs 48.60 R1)。这表明ViLBERT在预训练中学会了视觉和语言之间的语义对齐。
本文面向图像和文本提出一个联合模型,并在自动收集的大规模数据集上进行预训练从而学习到视觉基础知识。本文提出的ViLBERT中引入了一种新的双流框架,该双流框架中使用了共注意力transformer blocks。ViLBERT迁移到多个vision-and-language任务时超过了最先进水平。此外,将ViLBERT迁移到这些任务是简单和容易实现:只需要为每个任务添加一个分类器。