当前位置: 代码迷 >> 综合 >> 【论文】ViLBERT
  详细解决方案

【论文】ViLBERT

热度:64   发布时间:2023-12-13 03:40:52.0

【论文】Lu, Jiasen, Dhruv Batra, Devi Parikh, and Stefan Lee. Vilbert: Pretraining task-agnostic
visiolinguistic representations for vision-and-language tasks. (pdf)


What is ViLBERT

以往的 vision-and-language 任务都是先预训练好独立语言和视觉模型,然后针对特定的任务进行学习。这种方法的问题明显,就是缺少两者之间的互动。ViLBERT 的提出也正是解决预训练模型里视觉特征和语言特征的流动性问题

文中借鉴了当前很多模型使用自监督无标注数据学习的方式。例如,在自然语言中,抓取大量无标注数据通过遮罩其中部分信息,使模型实现自监督学习,BERT、GPT 采用了这种方法都取得不错的结果。作者也希望将该方法用到跨模态的模型训练中,那么首先要解决的问题就是合适的数据源——作者考虑最近发布的 Conceptual Captions dataset

ViLBERT 结合图片和文本信息特征, 将 BERT 改造成双路结构,并通过 co-attention 方式交互。这样的结构可以适应每个模态不同的处理需求,也能在不同的 representation depth 上进行跨模态的交互

文中用两种任务训练模型:预测遮罩掉的图片区域内容和单词;预测文字与图片是否匹配

ViLBERT: Extending BERT to Jointly Represent Images and Text

有一种最简单的方式是通过聚类离散化视觉输入的空间,然后得到一些和输入文本一致的 visual token,接着就输入到 BERT 里面。这种做发问题是:

  • 通过聚类的离散化会丢失重要的视觉细节信息
  • 忽略了两种模态的 input representation 之间具有不同的抽象程度。例如,两个图像区域之间的联系会弱于两个单词之间的联系,如果强行使用那些适应 visual token 的预训练好的权重到语义特征上,那么这样子就会把 learned BERT language model 带跑偏

所以,作者设计了 two-stream architecture,每一个分支都有一组 transformer block 和 co-attention transformer layer 记 v1,?,vTv_1,\cdots,v_Tv1?,?,vT? 表示 region features,w0,?,wTw_0,\cdots,w_Tw0?,?,wT? 表示文本输入,模型最终的输出为 hv0,?,hvTh_{v_0},\cdots,h_{v_T}hv0??,?,hvT??hw0,?,hwTh_{w_0},\cdots,h_{w_T}hw0??,?,hwT??

visual stream: 模型先用 Faster RCNN 从图片中提取多个目标区域的特征,由于图片区域不像文字特征一样含有一定的先后位置信息,因此采用一个长度为 5 的向量给图片位置编码,向量包含左上角坐标、右下角坐标和面积。然后,将位置向量投影到和视觉特征一样的维度,接着对位置向量和视觉特征进行加和

text stream: 在两个分支交互之前,text stream 需要先经过一个 BERT(即下图中的 L-k ×)

Co-Attentional Transformer Layers.

这部分说起来很简单,co-attention transformer layer 有两个 encoder block,一块处理视觉信息,一块处理文本信息,然后视觉的 keys 和 values 传到处理文本信息的 encoder layer 的 multi-head attention 中,同理文本的 keys 和 values 也这么做。因此,各自的注意力模块会以另一种模态为条件产生 attention-pooled features。为什么可以这么做呢?道理很简单,还记得在 transformer 中吗,key 相当于查询索引,value 相当于查询值,那么在 image-conditional language attenttion 下,就是我们拿着视觉上的信息,看看在输出的回答上我们更注意什么,然后更新对 language attention

Training Tasks and Objectives

如图 a 所示,将输入的 15% 进行遮罩,遮掉的可能是图片,也可能是文字,用剩余部分对其进行预测。遮掉图片时 90% 的情况用 0 进行填充,10% 的情况该区域保持不变==(这里原文用的是 unaltered,不太理解什么叫保持不变)==。遮罩掉的文本和 BERT 中的处理一样。模型根据语义预测图片区域的分布,最小化 预测分布和真实分布的 KL 散度。这样做是由于语言常常能反应图片的高级语义,但不太可能重建确切的图像特征

在匹配任务中,模型输入的是 {IMG,vq,?,vT,CLS,w1,?,wT,SEP}\left\{IMG,v_q,\cdots,v_T,CLS,w_1,\cdots,w_T,SEP\right\}{ IMG,vq?,?,vT?,CLS,w1?,?,wT?,SEP}(IMG token 表示图像区域序列的开始,它表征整个图像),输出 hIMGh_{IMG}hIMG?hCLSh_{CLS}hCLS? ,计算两者的点乘并通过一个线性层判断二者最终是否匹配。Conceptual Captions dataset 的图像和描述是对应的,为了生成负样本,选择随机替换掉图像或描述中的一个

Experimental Settings

ViLBERT 的下游任务有四个,分别如下图所示

VQA: 在 VQA 2.0 上进行训练,fine-tunning 时使用 hIMGh_{IMG}hIMG?hCLSh_{CLS}hCLS? 进行点乘,然后经过一个两层的 MLP 映射为 3129 个可能的答案。VQA 可以视为多标签的分类问题,那么每个预测的答案就可以根据它与 10 个人工标注答案的相关性计算一个 soft target score,然后根据 soft target score 计算 binary cross-entropy loss。预测时,只需要一个 softmax 就可以搞定了

VCR: 给出一张图像,完成两个任务:问答(Q → A)和回答理由(Q → AR),答案都是多项选择。VCR 数据集包括 290k 个 QA 问题,它们来自 110k 个电影场景。具体实现是将问题和每个可能的答案连接起来,形成四个不同的文本输入,并将每个文本输入和图像一起传入 ViLBERT,在 VILBERT 基础上加入一个线性层,给每组图文对打分

Grounding Referring Expressions: 根据文字描述在图中框出对应物品,使用 eRefCOCO+ dataset 训练。文中直接使用 Mask R-CNN 在 COCO 数据集上训练得到的目标区域,并在最后的表征层后加入一个线性层,预测各个区域与文字匹配的得分,将最高分区域作为最终的预测结果

Caption-Based Image Retrieval: 根据文字描述在图片池中搜索图片,Flickr30k dataset 包含 31k 张图片,这些图片和文字的对应关系优于自动抓取的图片。使用一对四的方式训练,对每个数据随机抽取三个干扰项:一个随机的标题,一个随机图像以及一个从 100 个最近邻中选取的 hard negative。实际预测时计算 caption-image pair 的匹配度并选择得分最高的图片作为预测结果。为了提高效率,作者在第一个 Co-TRM layer 之前使用了 cache 机制存储 linguistic stream representation

Zero-shot Caption-Based Image Retrieval: Zero-shot 指检索在训练集中未见过的数据,之前的几个任务都使用数据集精调模型,此任务中直接使用预训练的模型在 Flickr30k dataset 上进行检索,以评测预训练模型提取特征的能力

Referencee

  • 论文阅读_跨模态模型VILBERT