将双塔结构与单塔结构的优势进行拼接,于是一种统一的视觉语言模型VLMo诞生!VLMo 相当于是一个混合专家 Transformer 模型,预训练完成后,使用时既可以是双塔结构,实现高效地对图像和文本进行检索,又可以是单塔结构,对融合的图像和文本的特征进行建模和交互。

VLMo 是一种多模态 Transformer 模型,从名字可以看得出来它是一种 Mixture-of-Modality-Experts (MOME),即混合多模态专家。怎么理解呢?主流 VLP 模型分为两种,一种是双塔结构 (Dual Encoder),主要用来做多模态检索任务;一种是单塔结构 (Fusion Encoder),主要用来做多模态分类任务。VLMo 相当于是一个混合专家 Transformer 模型,预训练完成后,使用时既可以是双塔结构实现高效的图像文本检索,又可以是单塔结构成为分类任务的多模态编码器。

作者为 VLMo 量身定制了一种分阶段的预训练策略,这种策略除了图像-文本对之外,它可以有效地利用大规模仅图像和纯文本数据。

VLMo:混合多模态专家的视觉语言预训练

论文名称:VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts (NeurIPS 2022)

论文地址:

 https:///arxiv.org/pdf/2111.02358.pdf

代码地址:

 https://github.com/microsoft/unilm/tree/master/vlmo

视觉-语言预训练 (Vision-Language pre-training) 从大规模图像-文本对中学习通用跨模态表示。然后预训练模型可以直接在下游视觉语言任务上进行微调,例如多模态检索和分类 (视觉问答、视觉推理等)。

主流 VLP 模型分为两种。

一种是双塔结构 (Dual Encoder),代表是 CLIP[1] 和 ALIGN[2]。双塔的意思其实就是一个视觉 Encoder 建模图片信息,一个文本 Encoder 建模文本信息,Encoder 的结构一般遵循 Transformer 的 Encoder,图像和文本的特征向量可以预先计算和存储。模态交互部分很简单,一般就是计算图像和文本特征向量的余弦相似度。这种架构的多模态模型长于多模态检索 (Retrieval) 任务,但是也正是由于模态交互部分太过简单,浅层的交互不足以处理复杂的 VL 分类任务。

一种是单塔结构 (Fusion Encoder),代表是 VL-BERT[3],UNITER[4],ViLT[5],ALBEF 等。单塔的意思其实就是一个视觉-文本 Encoder 同时建模图片信息和文本信息,这个视觉-文本 Encoder 一般采用 Cross-Attention 的方式。单塔结在多模态分类 (Classification) 任务上取得了更好的性能。但是在应对检索任务的时候,由于它需要联合编码所有可能的图像-文本对来计算检索任务的相似度分数,二次时间复杂度导致推理速度比双塔结构慢得多,因为双塔结构时间复杂度是线性的。

为了把这两种结构的优势拼在一起,作者提出了一种统一的视觉语言模型 VLMo。VLMo 相当于是一个混合专家 Transformer 模型 (Mixture-of-Modality-Experts, MoME),预训练完成后,使用时既可以是双塔结构,实现高效地对图像和文本进行检索,又可以是单塔结构,对融合的图像和文本的特征进行建模和交互。MoME 的 Transformer 的 FFN 部分有三种模式,分别是用于图像编码的视觉模式、用于文本编码的语言模式和用于图像-文本融合的视觉语言模式。

VLMo 在训练的时候也是遵循多模态模型常见的三个预训练任务,分别是图文对比学习 (Image-Text Contrastive Learning),图文匹配 (Image-Text Matching) 和完形填空 (Masked Language Modeling)。此外,作者还提出一种分阶段的预训练策略,除了图像-文本对数据集,还有效地利用了大规模的纯图像和纯文本语料库。第一阶段像 BEIT 一样使用 masked image modeling 的方法在视觉数据集上预训练,第二阶段像 BERT 一样使用 masked language modeling 的方法在文本数据集上预训练,第三阶段使用上阶段的初始化权重在多模态数据集上预训练。

在下文中,先介绍 VLMo 对于输入图片和文本的表征,再介绍 VLMo 的详细模型架构,最后介绍 VLMo 的预训练方法。

VLMo 的输入表征

图像的表征

VLMo~~_建模

VLMo 的模型架构

我们在前面提到,VLMo 相当于是一个混合专家 Transformer 模型。那既然是 Transformer 模型 (Mixture-of-Modality-Experts, MoME),就肯定还是需要遵循 Transformer 的一般设计思路,即:如下图1所示,MoME Transformer 也是先一个 Multi-Head Self-Attention 的子模块,再串联一个 FFN 的子模块。但是和正常 Transformer 不同的是,这个 FFN 子模块是由3个并行,独立的 FFN 并联得到的。这3个 FFN 分别是 Vision-FFN,Language-FFN 和 Vision-Language-FFN,作者称它们分别为:视觉专家,文本专家和视觉文本专家。它们可以看成是3个专家模型,但是前面的 Multi-Head Self-Attention 都是共享权重的

VLMo~~_建模_02

那设计成这样的好处是什么呢?就是这个 MoME Transformer 可以分情况选择不同的专家来使用。

  • 当我们要做对比学习任务 (ITC) 的时候,如下图1右上所示,VLMo 和 CLIP 很像,可以让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,把得到的输出做对比学习即可。
  • 当我们要做图文匹配任务 (ITM,二分类) 的时候,如下图1右中所示,可以在前几个 Block 让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,在后几个 Block 把信息给视觉文本专家,然后做二分类即可。
  • 当我们要做完形填空任务 (MLM,预测任务) 的时候,如下图1右下所示,可以在前几个 Block 让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,在后几个 Block 把信息给视觉文本专家,然后做预测即可。

简答概括一下就是:如果输入是纯图像或者纯文本,就使用视觉专家和文本专家分别对输入的图像和文本进行编码。如果输入由多模态的向量组成,比如是图像和文本的拼接,就先使用视觉专家和文本专家分别对输入的图像和文本进行编码,再使用多模态专家进行联合地交互。VLMo 根据需求可以灵活地使用不同的专家模型,不论是架构层面还是训练层面都很灵活。

VLMo~~_人工智能_03

VLMo 的预训练方法

VLMo 的预训练任务也基本遵循了常规多模态学习的方案的3个经典预训练任务,分别是:

对比学习任务 (Image-Text Contrast, ITC)

VLMo~~_模态_04

图文匹配任务 (Image-Text Matching, ITM,二分类)

预测图像和文本是否匹配,作者使用 [T_CLS] token 的最终向量来表示图像-文本对,并将向量输入到具有交叉熵损失的分类器中进行二分类。作者遵循 ALBEF 的做法使用 hard negative 的图文对以辅助训练。

完形填空任务 (Masked Language Modeling, MLM,预测任务)

遵循 BERT 的做法,随机选择文本序列中的标记,并用 [MASK] 标记替换。训练 VLMo 模型使之从 "未被 mask 掉的文本" 和 "视觉信息" 中预测盖住的词是什么。使用分类器得到 masked token 的输出分布,交叉熵损失训练。

除此之外,因为是针对3个专家模型的训练,所以作者还开发了一种分阶段的预训练方案,目标是利用大规模的纯图像的数据集和纯文本的语料库。如下图2所示:

  1. 第1步 (视觉预训练): 在纯图像数据集上面预训练视觉专家模型,方案就是 Masked Image Modeling 的做法。文本专家模型和视觉文本专家模型的 FFN 权重冻结,共享的 Self-Attention 参数更新。
  2. 第2步 (文本预训练): 在纯文本数据集上面预训练文本专家模型,方案就是 Masked Language Modeling 的做法。视觉专家模型和视觉文本专家模型的 FFN 权重冻结,共享的 Self-Attention 参数也冻结,注意这里的 Self-Attention 的参数还是视觉数据集上面训练出来的了。
  3. 第3步 (多模态预训练): 在多模态数据集上面预训练文本专家模型,方案就是上面的3个目标函数,所有参数都开放更新。

VLMo~~_数据集_05

VLMo 经过了前两个阶段的预训练之后,视觉和文本专家的参数都得到了很好的初始化,这样在进行第三阶段多模态预训练时的泛化性能就比较好。

VLMo 的下游任务微调

VLMo 的下游任务微调如下图3所示,这里的下游任务主要包括分类任务 (Classification) 和检索任务 (Retrieval)。

检索任务里面 VLMO 被用作图3 (b) 的格式,即双塔结构。在微调期间,使用图像-文本对比损失来优化。在推理过程中,作者计算所有图像和文本的表示,然后使用点积来获得所有可能的图像-文本对的图像到文本和文本到图像相似度分数。VLMo 的这个做法可以实现更快的推理速度。

分类任务主要包括: 视觉问答 (Visual Question Answering, VQA) 和视觉推理 (Natural Language Visual Reasoning, NLVR) 等。这时候 VLMO 被用作图3 (b) 的格式,即单塔结构。先通过视觉专家和文本专家建模各自特征,再联合送入多模态专家完成更复杂的交互,完成分类任务。VLMo 使用令牌 [T_CLS] 的最终编码向量作为图像-文本对的表示,并加上分类头预测类别。

VLMo~~_人工智能_06

实验结果

使用下面4个数据集,图片数加起来大概是 4M,图文对的数量加起来大概是 10M。

  • Conceptual Captions
  • SBU Captions
  • COCO
  • Visual Genome

多模态分类任务实验结果

首先我们看下在多模态分类任务上的结果,如下图4所示,这里作者做了视觉问答 (Visual Question Answering, VQA) 和视觉推理 (Natural Language Visual Reasoning, NLVR) 两个任务。VQA 任务就是说给出了一个自然图像和一个问题,任务是生成或者说选择出正确的答案。作者在 VQA 2.0 数据集上训练和评估模型。按照常见的做法,将 VQA 2.0 转换为分类任务,并从 3, 129 个备选答案中进行选择。NLVR 给出一个文本和一对图像,任务是预测描述对图像输入是否正确。作者把三元组输入 (image1, image2, text) 变成两个图文对,每对包含 text 和一个 image,作者将两个输入对的 [T_CLS] 标记的最终输出向量拼接起来。然后将连接的向量输入一个 MLP 做预测。

实验结果如下图4所示,VLO 实现了最先进的性能,并大大优于以前的方法。

VLMo~~_数据集_07

多模态检索任务实验结果

检索任务包含图像到文本检索和文本到图像检索。作者在广泛使用的 COCO 和 Flickr30K 数据集上评估模型。实验结果如下图5所示,VLMO 与以前的基于融合编码器的模型实现了具有竞争力的性能,同时速度要快得多。

VLMo~~_人工智能_08

视觉任务实验结果

作者使用 VLMO 作为图像编码器,并在图像分类 (ImageNet) 和语义分割 (ADE20K) 任务上对其进行评估。实验结果如图6所示,VLMO 实现了具有竞争力的性能,甚至比用于 BEIT 模型略好。ImageNet 的图像分辨率为 224×224,ADE20K 的图像分辨率为 512×512。作者对所有三个模型在 ImageNet-21k 上执行中间微调。

VLMo~~_人工智能_09