Datawhale干货
作者:张义杰 单位:中国移动云能力中心
(相关资料图)
前言视觉-语言 (Vision-Language, VL) 是计算机视觉和自然语言处理这两个研究领域之间形成的交叉领域,旨在赋予 AI 系统从多模态数据中学习有效信息的能力。受 NLP 预训练语言模型(如BERT\GPT等)的启发,视觉-语言预训练 (Vision-Language Pre-training, VLP) 逐渐受到关注,成为如今 VL 任务的核心训练范式。本文对 VLP 领域近期的综述文章进行整理,回顾其最新的研究进展,旨在提供一份 VLP 入门指南。
什么是视觉-语言任务?首先,我们需要知道视觉-语言任务是什么?顾名思义,视觉-语言任务指的是处理视觉和语言这两种多模态信号输入的任务,根据历史工作主要可以分为三类:
图像-文本任务。这一类任务在 VL 研究中最重要并且也最广泛,包含视觉问答、图像描述、图像-文本检索等任务(如图 1 中橙色部分)。另外围绕这些任务,若干其它的相关任务被提出。例如文本-图像生成,它被看作是图像描述的孪生任务,模型需要根据输入的文本生成高保真图像。本文后续介绍的 VLP 模型主要以图像-文本任务为主。视作 VL 问题的 CV 任务。传统的 CV 领域中的图像分类、目标检测和分割任务等(如图 1 中粉色部分)被看作是单纯的计算机视觉问题。而随着 CLIP 和 ALIGN 等多模态大模型的出现,研究人员意识到语言监督信号也可以在 CV 任务中发挥重要作用。具体做法是,首先利用从网络上抓取的带噪声的大规模图像-文本对数据,从头开始对视觉编码器进行预训练。其次,不再将监督信号(例如类别标签)用作独热编码向量,而是考虑标签中所蕴含的语义信息,并将这些 CV 任务视作 VL 问题来解决。视频-文本任务。除了静态的图像,视频也是一种重要的视觉表现形式。那么自然,上述所有图像-文本任务都有相应的视频-文本任务,例如视频字幕、视频检索和视频问答任务等(如图 1 中绿色部分)。与图像相比,视频输入的特殊性要求系统不仅要捕获单个视频帧中的空间信息,还要捕获视频帧之间固有的时序依赖性。图 1:视觉-语言任务图示
模型结构受预训练语言模型 (PLM) 的启发,以及 NLP 和 CV 领域越来越多地使用基于 Transformer 的统一架构的趋势,关于视觉-语言预训练的研究也受到越来越多的关注。VLP 主要通过在大规模数据上进行预训练来学习不同模态之间的语义对应关系。例如,在图像-文本预训练中,我们希望模型将文本中的“狗”与图像中“狗”的样子相关联。在视频-文本预训练中,我们期望模型将文本中的对象/动作映射到视频中的对象/动作。为了实现这一目标,需要巧妙地设计 VLP 的模型架构,使模型有能力挖掘不同模态之间的关联。
具体来讲,给定图像-文本对,VL 模型首先分别通过视觉编码器和文本编码器提取视觉特征 = {1, ··· , M} 和文本特征 = {1, ··· , N}。这里,M 是图像的视觉特征数量,它可以是图像区域/网格/图像块的数量,具体取决于所使用的特定的视觉编码器,N 则是句子中子词的数量。然后将视觉和文本特征送入多模态融合模块来产生跨模态表示,然后在生成最终输出之前可选择地将其送入至解码器。图 2 展示了这个通用框架的结构。在许多情况下,图像/文本主干、多模态融合模块和解码器之间没有明确的界限。一般将模型中仅以图像/文本特征作为输入的部分称为相应的视觉/文本编码器,将模型中同时以图像和文本特征作为输入的部分称为多模态融合模块。除此之外,如果有额外的模块将多模态特征作为输入来生成输出,则称之为解码器。
图 2:基于Transformer的VL模型的通用框架
视觉编码器视觉编码器主要分为三种类型:(i) 对象检测器 (OD),(ii) 卷积神经网络 (CNN),以及 (iii) Vision Transformer (ViT):
基于OD区域特征:使用 Object Detectors(例如 Faster R-CNN)识别图像中的目标区域,获取每个目标区域的特征表示。例如在图 3 中,ViLBERT 通过提取边界框及其视觉特征来生成图像的区域特征,并与文本特征拼接输入到主模型中。虽然区域特征是对象级的且语义丰富,但是提取区域特征往往十分耗时,并且训练好的 OD 通常在预训练期间被冻结,这可能会限制 VLP 模型的容量。基于CNN网格特征:为了解决上述两个问题,研究人员尝试了不同的方法来以端到端的方式预训练 VL 模型。其中,PixelBERT 和 CLIP-ViL 提出将卷积神经网络的网格特征和文本一起直接输入到到后续的 Transformer 中。此外,SOHO 首先使用已学习的视觉字典离散化网格特征,然后将离散化特征输入到它们的跨模态模块中。虽然直接使用网格特征会很有效,但 CNN 和 Transformer 所使用地优化器通常不一致。例如,PixelBERT 和 CLIP-ViL 在 Transformer 使用 AdamW,而在 CNN 中使用 SGD。基于ViT 图像块特征:第三种编码器类型来源于 Vision-Transformer,它首先将图像切分成图像块,然后将其展平为向量并线性投影以获得图像块的嵌入序列。同时,一个可学习的特殊标记 [CLS] 嵌入也被添加到序列中。这些图像块嵌入,与可学习的 1D 位置嵌入和潜在的图像类型嵌入相加后,被馈送到多层的 Transformer 块中以获得最终的输出图像特征。随着 ViT 的发展,这种视觉特征编码方式逐渐成为主流,与前两种方式相比它运行效率更高,不需要依赖预先训练好的 Object Detection 模型或前置的 CNN 特征提取模块。总之,无论使用什么视觉编码器,输入图像都被表示为一组特征向量 = {1, ··· , M}。
图 3:ViLBERT中的OD区域特征
文本编码器文本编码器的处理方式遵循 BERT 和 RoBERTa 等预训练语言模型。如图 4 所示,首先将输入句子分割成子词序列。然后在句子的开头和结尾插入两个特殊标记以生成输入文本序列。在获得文本嵌入之后,现有的工作要么将它们直接输入给多模态融合模块,要么在融合之前输入给若干个文本信息处理层。对于前者,融合模块通常使用 BERT 进行初始化,文本编码器和多模态融合也因此作用在单个 BERT 模型中,在这种情况下,我们将文本编码器视为词嵌入层。在历史的工作中,研究人员研究了使用 BERT、RoBERTa、ELECTRA、ALBERT 和 DeBERTa 等多种不同的模型进行文本编码。简而言之,无论使用什么文本编码器,输入文本都表示为一组特征向量 = {1, ··· , N}。
图 4:文本编码器输入表示
多模态融合多模态融合模块旨在将编码自不同模态的信息整合成一个稳定的多模态表征。对于像 CLIP 和 ALIGN 这样的双编码器模型,融合是通过两个全局图像和文本特征向量之间的点积来执行的。对于融合编码器,它以 = {1, ··· , M} 和 = {1, ··· , N} 作为输入,并学习表示为 = {1, ··· , M} 和 = {1, ··· , N}。多模态融合模块主要有两类,即单流模式和双流模式,也称作 merged attention 和 co-attention,如图 5 所示。
单流模式指的是将视觉和文本编码特征组合在一起,然后输入单个 Transformer 块中,如图 5(a) 所示。单流架构通过合并注意力来融合多模态输入,通常也被叫做 merged attention。单流架构的参数效率更高,因为两种模式都使用相同的参数集。双流模式是指视觉和文本编码特征没有组合在一起,而是独立输入到两个不同的 Transformer 块,如图 5(b) 所示。这两个 Transformer 块不共享参数,而是通过交叉注意力实现跨模态交互,因此也被叫做 co-attention。图 5:多模态融合图示
仅编码器 vs. 编码器-解码器大多数 VLP 模型仅包含编码器,其中跨模态表示直接输入到基于 MLP 的输出层来生成最终输出。这种设计自然适合 VL 理解任务,例如 VQA 和视觉推理。当用于图像描述时,结构类似的编码器充当解码器,通过使用因果掩码逐个标记地生成输出图像描述文本。
最近,受到 NLP 领域中 T5 和 BART 的启发,VL-T5\SimVLM\OFA 等提出使用基于 Transformer 的编码器-解码器架构,其中跨模态表示首先被送入解码器,然后送入输出层。在这些模型中,解码器同时关注编码器表示和先前生成的标记,以自回归地方式产生输出。使用编码器-解码器架构可以实现各种图像-文本任务的统一和 VLP 模型的零样本/少样本学习,并且也很自然地适合生成类的任务。图 6 展示了仅编码器和编码器-解码器架构之间的说明性比较。
图 6:仅编码器 vs. 编码器-解码器
预训练目标预训练目标指导模型如何学习视觉-语言的关联信息。历史工作中的主流预训练目标主要可以分为三大类:Masked Language Modeling (MLM)、Masked Vision Modeling (MVM) 和 Vision-Language Matching (VLM)。
Masked Language ModelingMLM 源自于 NLP 领域,由于 BERT 将其改编为一种新颖的预训练任务而广为人知。为了以视觉信息为条件对语言进行建模,VLP 模型中的 MLM 与预训练语言模型中的 MLM 类似,但它不仅通过剩下的未遮蔽文本标记,而且还通过视觉标记来预测被遮蔽的文本标记。根据经验,遵循 BERT 的 VLP 模型以 15% 的概率随机遮蔽每个文本输入标记,并在遮蔽的过程中 80% 的时间里使用特殊标记 [MASK] 替换被遮蔽的标记,10% 的时间使用随机文本标记,还有 10% 的时间使用原始标记来进行遮蔽操作。其公式定义如下: