温馨提示:
本篇文章已同步至"AI专题精讲" ViLT: 无卷积或区域监督的视觉-语言Transformer
摘要
视觉与语言预训练(Vision-and-Language Pre-training, VLP)在多种联合视觉与语言的下游任务中显著提升了性能。目前的 VLP 方法在很大程度上依赖图像特征提取过程,其中大多数涉及区域监督(例如,目标检测)以及卷积结构(例如 ResNet)。尽管这一点在文献中常被忽视,我们发现这在以下两个方面存在问题:(1)效率/速度:仅提取输入特征的计算开销远大于多模态交互步骤;(2)表达能力:受限于视觉嵌入器及其预定义视觉词汇的表达上限。
本文提出了一种极简的 VLP 模型——ViLT(Vision-and-Language Transformer),其特点是处理视觉输入的方式被极大简化,与处理文本输入相同,完全不依赖卷积结构。我们展示了 ViLT 相比以往 VLP 模型的速度提升高达数十倍,同时在下游任务上仍保持竞争力甚至更优的性能。
我们的代码与预训练模型已开放获取:https://github.com/dandelin/vilt
。
1. 引言
预训练-微调(pre-train-and-fine-tune)方案已经扩展到了视觉与语言的联合领域,从而催生了视觉与语言预训练(VLP)模型(Lu et al., 2019; Chen et al., 2019; Su et al., 2019; Li et al., 2019; Tan & Bansal, 2019; Li et al., 2020a; Lu et al., 2020; Cho et al., 2020; Qi et al., 2020; Zhou et al., 2020; Huang et al., 2020; Li et al., 2020b; Gan et al., 2020; Yu et al., 2020; Zhang et al., 2021)。这些模型通常使用图文匹配(Image-Text Matching)和掩码语言建模(Masked Language Modeling)作为预训练目标,在图像及其对齐的描述上进行训练,并在输入包含两种模态的下游视觉-语言任务上进行微调。
为了输入到 VLP 模型,图像像素需要与语言标记一起以密集形式进行嵌入。自从 Krizhevsky 等人(2012)的开创性工作以来,深度卷积网络一直被视为该视觉嵌入步骤的核心。大多数 VLP 模型使用在 Visual Genome 数据集(Krizna et al., 2017)上预训练的目标检测器,后者标注了 1,600 个物体类别和 400 个属性类别,如 Anderson 等人(2018)所示。PixelBERT(Huang 等人,2020)是这一趋势的一个例外,它使用在 ImageNet 分类任务(Russakovsky 等人,2015)上预训练的 ResNet 变种(He 等人,2016;Xie 等人,2017),将像素直接嵌入,而不是采用目标检测模块。
迄今为止,大多数 VLP 研究集中在通过增强视觉嵌入器的能力来提高性能。由于区域特征通常在训练时提前缓存,以减轻特征提取的负担,因此学术实验中往往忽视了使用重型视觉嵌入器的缺点。然而,这些限制在实际应用中仍然显而易见,因为现实中的查询必须经过一个缓慢的提取过程。
为此,我们将注意力转向轻量级且快速的视觉输入嵌入。最近的研究(Dosovitskiy 等人,2020;Touvron 等人,2020)表明,使用简单的线性投影来处理图像块足以在将其输入到变换器之前进行像素嵌入。尽管变换器(Vaswani 等人,2017)已经成为文本处理的主流(Devlin 等人,2019),但直到最近,变换器才开始应用于图像。我们假设,变换器模块——在 VLP 模型中用于模态交互——也能够代替卷积视觉嵌入器处理视觉特征,就像它处理文本特征一样。
本文提出了视觉与语言变换器(ViLT),它以统一的方式处理两种模态。与之前的 VLP 模型不同,它通过浅层、无卷积的方式来嵌入像素级输入。去除专门处理视觉输入的深层嵌入器,显著减少了模型的规模和运行时间。图 1 显示,我们的参数高效模型比使用区域特征的 VLP 模型快数十倍,且至少比使用网格特征的模型快四倍,同时在视觉与语言下游任务中展现出相似甚至更好的性能。
我们的关键贡献总结如下:
- ViLT 是迄今为止最简洁的视觉与语言模型架构,它通过委托变换器模块来提取和处理视觉特征,而不是使用单独的深层视觉嵌入器。这一设计天然地带来了显著的运行时和参数效率。
- 首次,我们在没有使用区域特征或深度卷积视觉嵌入器的情况下,成功地在视觉与语言任务上取得了竞争力的性能。
- 首次,我们通过实验证明,VLP 训练方案中前所未有的整体词掩码和图像增强方法,进一步推动了下游任务的性能提升。
2. 背景
2.1 视觉与语言模型的分类
我们提出了一种基于以下两个方面的视觉与语言模型分类法:
(1) 两种模态是否在专门的参数和/或计算方面具有相等的表达能力;
(2) 两种模态是否在深度网络中进行交互。
这两点的组合导致了图 2 中的四种原型。
视觉语义嵌入(VSE)模型,如 VSE++(Faghri 等人,2017)和 SCAN(Lee 等人,2018),属于图 2a 类别。它们使用分别的图像和文本嵌入器,其中图像嵌入器通常更重。然后,它们通过简单的点积或浅层注意力层来表示两种模态的嵌入特征之间的相似性。
CLIP(Radford 等人,2021)属于图 2b 类别,因为它为每种模态使用了分别但同样昂贵的变换器嵌入器。尽管图像和文本向量的交互仍然较为浅显(通过点积),CLIP 在图像到文本检索的零样本性能上取得了显著成绩,但我们在其他视觉与语言下游任务上未能观察到相同的性能水平。例如,使用 CLIP 从图像和文本中提取的点积融合向量作为多模态表示,再对 NLVR2(Suhr 等人,2018)进行微调,得到了低开发集准确率 50.99 ± 0.38(使用了三种不同的随机种子);由于机会水平的准确率为 0.5,我们得出结论认为这些表示无法学习这个任务。这与 Suhr 等人(2018)的发现一致,即所有仅通过简单融合多模态表示的模型都未能学习 NLVR2。
这一结果支持了我们的推测,即即使是来自高性能单模态嵌入器的简单融合输出也可能不足以学习复杂的视觉与语言任务,进一步强调了需要一种更严格的模态交互方案。
与浅层交互模型不同,最近的 VLP 模型(图 2c 类别)使用深度变换器来建模图像和文本特征的交互。然而,除了交互模块外,这些模型仍然需要卷积网络来提取和嵌入图像特征,这占用了大部分计算量,如图 1 所示。基于调制的视觉与语言模型(Perez 等人,2018;Nguyen 等人,2020)也属于图 2c 类别,它们的视觉 CNN 核心对应视觉嵌入器,RNN 生成用于文本嵌入器的调制参数,调制后的 CNN 用于模态交互。
我们提出的 ViLT 是图 2d 类别中的第一个模型,它的原始像素嵌入层与文本标记一样浅且计算轻量。这种架构将大部分计算集中在建模模态交互上。
2.2 模态交互方案
当代 VLP 模型的核心是变换器。它们将视觉和文本嵌入序列作为输入,在各层中建模模态间和可选的模态内交互,然后输出上下文化的特征序列。
Bugliarello 等人(2020)将交互方案分为两类:
(1) 单流方法(例如,VisualBERT(Li 等人,2019)、UNITER(Chen 等人,2019)),在这些方法中,各层共同作用于图像和文本输入的连接;
(2) 双流方法(例如,ViLBERT(Lu 等人,2019)、LXMERT(Tan & Bansal,2019)),在这些方法中,两种模态在输入层级上并不连接。我们为我们的交互变换器模块选择了单流方法,因为双流方法会引入额外的参数。
2.3 视觉嵌入方案
尽管所有高性能的 VLP 模型都共享来自预训练 BERT 的相同文本嵌入器——包括词汇和位置嵌入,这些嵌入与 BERT 类似——但它们在视觉嵌入器上有所不同。然而,在大多数(如果不是所有)情况下,视觉嵌入是现有 VLP 模型的瓶颈。我们通过引入补丁投影来简化这一过程,而不是使用需要重型提取模块的区域或网格特征。
区域特征
VLP 模型主要使用区域特征,也称为自下而上的特征(Anderson 等人,2018)。这些特征是通过现成的物体检测器(如 Faster R-CNN(Ren 等人,2016))获得的。
生成区域特征的一般流程如下。首先,区域提议网络(RPN)基于从 CNN 主干池化得到的网格特征提出兴趣区域(RoI)。然后,非最大抑制(NMS)减少 RoI 的数量,最终只有几千个。经过如 RoI Align(He 等人,2017)等操作池化后,RoI 通过 RoI 头并变为区域特征。NMS 再次应用于每个类别,最终将特征数减少到一百个以内。
上述过程涉及几个影响性能和运行时间的因素:主干网络、NMS 风格、RoI 头。先前的研究在控制这些因素时较为宽松,各自的选择存在差异,如表 7.2 所示:
- 主干网络:ResNet-101(Lu 等人,2019;Tan & Bansal,2019;Su 等人,2019)和 ResNext-152(Li 等人,2019;2020a;Zhang 等人,2021)是两种常用的主干网络。
- NMS:NMS 通常是按类别进行的。对每个类别应用 NMS 会在类别数量较多时成为主要的运行时瓶颈,例如在 VG 数据集中有 1.6K 类(Jiang 等人,2020)。最近引入了类别无关 NMS 来解决这一问题(Zhang 等人,2021)。
- RoI 头:最初使用的是 C4 头(Anderson 等人,2018),后来引入了 FPN-MLP 头(Jiang 等人,2018)。由于头部操作针对每个 RoI,因此它们会对运行时带来较大的负担。
然而,尽管物体检测器比较轻量,但它们的速度不太可能超过主干网络或单层卷积。冻结视觉主干并提前缓存区域特征仅在训练时有帮助,而在推理时并无用处,此外,这可能会限制性能。
网格特征
除了检测头外,卷积神经网络(如 ResNets)的输出特征网格也可以作为视觉特征,用于视觉与语言预训练。直接使用网格特征最早由 VQA 特定的模型提出(Jiang 等人,2020;Nguyen 等人,2020),主要目的是避免使用非常缓慢的区域选择操作。
X-LXMERT(Cho 等人,2020)通过将区域提议固定为网格,而不是来自区域提议网络的区域,再次审视了网格特征。然而,它们的特征缓存排除了对主干的进一步调整。
Pixel-BERT 是唯一一种将 VG 预训练的物体检测器替换为基于 ImageNet 分类预训练的 ResNet 变体主干的 VLP 模型。与基于区域特征的 VLP 模型中冻结的检测器不同,Pixel-BERT 的主干在视觉与语言预训练期间会进行调整。尽管 Pixel-BERT 使用 ResNet-50 的下游性能低于基于区域特征的 VLP 模型,但在使用更重的 ResNeXt-152 时,其性能与其他竞争模型相当。
然而,我们认为网格特征并不是首选,因为深度 CNN 仍然较为昂贵,它们占用了大量计算资源,如图 1 所示。
补丁投影
为了最小化开销,我们采用了最简单的视觉嵌入方案:对图像补丁进行线性投影。补丁投影嵌入由 ViT(Dosovitskiy 等人,2020)为图像分类任务引入。补丁投影将视觉嵌入步骤极大简化,达到了与文本嵌入相同的简单投影(查找)操作级别。我们使用的 32 × 32 补丁投影仅需 2.4M 参数。这与复杂的 ResNe(X)t 主干和检测组件相比有很大差异。其运行时间也可以忽略不计,如图 1 所示。我们将在第 4.6 节进行详细的运行时分析。
3. 视觉与语言变换器
3.1. 模型概述
ViLT 作为一个 VLP 模型,具有简洁的架构,采用最小化的视觉嵌入管道,并遵循单流架构。我们与文献中的做法有所不同,选择将交互变换器的权重从预训练的 ViT 初始化,而非 BERT。这种初始化方式利用了交互层处理视觉特征的能力,同时避免了使用单独的深度视觉嵌入器。
tˉ=[tclass;t1T;⋯;tLT]+Tpos(1)\bar { t } = [ t _ { \mathrm { c l a s s } } ; t _ { 1 } T ; \cdots ; t _ { L } T ] + T ^ { \mathrm { p o s } }\quad(1) tˉ=[tclass;t1T;⋯;tLT]+Tpos(1)
vˉ=[vclass;v1V;⋯;vNV]+Vpos(2)\bar { v } = [ v _ { \mathrm { c l a s s } } ; v _ { 1 } V ; \cdots ; v _ { N } V ] + V ^ { \mathrm { p o s } }\quad(2) vˉ=[vclass;v1V;⋯;vNV]+Vpos(2)
z0=[tˉ+ttype;vˉ+vtype](3)z ^ { 0 } = [ \bar { t } + t ^ { \mathrm { { t y p e } } } ; \bar { v } + v ^ { \mathrm { { t y p e } } } ]\quad(3) z0=[tˉ+ttype;vˉ+vtype](3)
z^d=MSA(LN(zd−1))+zd−1,d=1…D(4)\hat { z } ^ { d } = \mathbf { M } \mathbf { S } \mathbf { A } ( \mathbf { L } \mathbf { N } ( z ^ { d - 1 } ) ) + z ^ { d - 1 } , \qquad d = 1 \ldots D\quad(4) z^d=MSA(LN(zd−1))+zd−1,d=1…D(4)
zd=MLP(LN(z^d))+z^d,d=1⋅⋅⋅D(5)z ^ { d } = \mathrm { M L P } ( \mathrm { L N } ( \hat { z } ^ { d } ) ) + \hat { z } ^ { d } , \qquad \qquad d = 1 \cdot \cdot \cdot D\quad(5) zd=MLP(LN(z^d))+z^d,d=1⋅⋅⋅D(5)
p=tanh(z0DWpool)(6)p = \operatorname { t a n h } ( z _ { 0 } ^ { D } W _ { \mathrm { p o o l } } )\quad(6) p=tanh(z0DWpool)(6)
ViT 由堆叠的块组成,每个块包含一个多头自注意力(MSA)层和一个 MLP 层。ViT 和 BERT 唯一的区别在于层归一化(LN)的位置:在 BERT 中,LN 位于 MSA 和 MLP 之后(“post-norm”);而在 ViT 中,LN 位于 MSA 和 MLP 之前(“pre-norm”)。输入文本 t∈RL×∣V∣t \in \mathbb{R}^{L \times |V|}t∈RL×∣V∣ 通过词嵌入矩阵 T∈R∣V∣×HT \in \mathbb{R}^{|V| \times H}T∈R∣V∣×H 和位置嵌入矩阵 Tpos∈R(L+1)×HT_{pos} \in \mathbb{R}^{(L+1) \times H}Tpos∈R(L+1)×H 被嵌入为 tˉ∈RL×H\bar{t} \in \mathbb{R}^{L \times H}tˉ∈RL×H。
输入图像 I∈RC×H×WI \in \mathbb{R}^{C \times H \times W}I∈RC×H×W 被切割成图像块并展平为 v∈RN×(P2⋅C)v \in \mathbb{R}^{N \times (P^2 \cdot C)}v∈RN×(P2⋅C),其中 (P,P)(P, P)(P,P) 是图像块的分辨率,N=HWP2N = \frac{HW}{P^2}N=P2HW。然后通过线性投影 V∈R(P2⋅C)×HV \in \mathbb{R}^{(P^2 \cdot C) \times H}V∈R(P2⋅C)×H 和位置嵌入 Vpos∈R(N+1)×HV_{pos} \in \mathbb{R}^{(N+1) \times H}Vpos∈R(N+1)×H,vvv 被嵌入为 vˉ∈RN×H\bar{v} \in \mathbb{R}^{N \times H}vˉ∈RN×H。
文本和图像的嵌入通过各自的模态类型嵌入向量 ttype,vtype∈RHt_{type}, v_{type} \in \mathbb{R}^Httype,vtype∈RH 相加,然后合并为一个序列 z0z_0z0。这个上下文化的向量 zzz 通过 D 层变换器迭代更新,直到最终的上下文化序列 zDz^DzD。ppp 是整个多模态输入的池化表示,通过对序列 zDz^DzD 的第一个索引应用线性投影 Wpool∈RH×HW_{pool} \in \mathbb{R}^{H \times H}Wpool∈RH×H 和双曲正切激活函数得到。
在所有实验中,我们使用在 ImageNet 上预训练的 ViT-B/32 权重,因此称之为 ViLT-B/32。隐藏层大小 HHH 为 768,层深度 DDD 为 12,图像块大小 PPP 为 32,MLP 大小为 3,072,注意力头的数量为 12。
3.2. 预训练目标
我们使用两种常见的目标来训练 ViLT:图像-文本匹配(ITM)和掩蔽语言建模(MLM)。
图像-文本匹配 (ITM)
我们以 0.5 的概率随机将对齐的图像替换为不同的图像。一个线性层 ITM 头将池化后的输出特征 pp 投影到二分类的 logits 上,然后我们计算负对数似然损失作为 ITM 损失。
此外,受到 Chen 等人(2019)中词区域对齐目标的启发,我们设计了词图像块对齐(WPA),计算两个子集 zDz_DzD 的对齐分数:zD∣tz ^ { D } | _ { t }zD∣t(文本子集)和 zD∣vz ^ { D } | _ { v }zD∣v(视觉子集),使用不精确近点方法(IPOT)进行最优传输(Xie 等,2020)。我们根据 Chen 等人(2019)设置了 IPOT 的超参数(β=0.5,N=50β=0.5,N = 50β=0.5,N=50),并将近似 Wasserstein 距离乘以 0.1 加到 ITM 损失中。
温馨提示:
阅读全文请访问"AI深语解构" ViLT: 无卷积或区域监督的视觉-语言Transformer