论文阅读_跨模态模型VILBERT

论文地址:https://arxiv.org/pdf/1908.02265.pdf
相关源码:https://github.com/facebookresearch/vilbert-multi-task

ViLBERT是Vision-and-Language BERT的缩写,它源于2019年发表在NIPS(Advances in Neural Information Processing Systems)上的论文《ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks》——预训练未知任务的视觉语言学表征。模型结合了图片和文本信息的特征,将BERT改造成双路结构,并通过co-attention方式交互。文中用大型的图像标题数据库训练通用模型,基于该模型进行少量调整即可实现按标题检索图片,视觉问答等具体任务。在2019年底,论文作者Jiasen Lu又发论文《12-in-1: Multi-Task Vision and Language Representation Learning》,展示了用十二个数据集训练更通用模型的情况。

文中借鉴了当前很多模型使用自监督的无标注数据学习的方法,尤其在自然语言中,抓取大量无标注数据,通过遮蔽其中部分信息,使模型实现自监督学习,使用该方法的BERT,GPT等模型都取得了很好的效果。作者也希望将该方法用到跨模态的模型之中,通过抓取网络上带有简单描述的图片进行训练,实现通用的高质量模型。

为了更好的使用文本、图片数据,并将二者相结合,作者设计了双路two-stream的模型,前期分别处理文字和图片,后期用co-attention将二者结合起来(实验部分对单/双路模型进行了对比)。

文中用两种任务训练模型:遮蔽部分图片区域和文中的词,根据上下文内容预测被遮蔽部分(BERT训练无标注数据的基本方法);以及预测文字与图片是否匹配。并在四个领域验证了模型,它们分别是:视觉问答、根据标题检索图片、看图识物、图片常识归因。

实现

BERT模型

BERT是基于Transformer的双向语言模型,它使用大量的无标注数据预训练,并在明显提高了多种自然语言处理任务的效果。

BERT的输入是token(简单理解为词),BERT网络由多个block块组成,每个block包括Attention模型,全连接层,和残差处理,其中每一块的内部结构如下图左侧所示:

最核心的模块是Multi-Head Attention模型,它根据上一个隐藏层h的输出计算V,K,Q,分别是queries, keys,和values,通过Q与K的关系,计算V的权重,由此实现了根据上下文信息给各个词加权。文中使用同样的原理,构建了右图中的结构,名为co-attention,即将图片中各区域的信息作为上下文给文本加权,或者根据文本上下文给图片区域加权。

BERT模型输入的文本由三部分构成:词嵌入(词义),位置(词在句中的位置),段信息(文本的功能)。BERT模型训练通常由两部分组成,遮蔽部分内容,并让模型计算遮蔽数据;以及具体的应用,比如判断前后两句的内容是否连续,句子的类别,两句描述的是否为同一内容等等。

ViLBERT

文中设计的ViLBERT模型与BERT模型类似,它的输入是图片和文字。

结合文字和图片最简单而直接的处理方式是将图片中的区域处理成类似词的形式,但是图像和文字之间存在一定差别,比如图中区域间的相关性小于词间的相关性,图片的输出一般已经经过了多层网络处理,最终大量网络权重的修改可能把预训练的网络带偏。于是文中将两个网络分开,只在小范围内结合二者的注意力交互。

如第一张结构图所示,双路结构的每个分支都由Transformer blocks(TRM)组成,并设计了一个结合两部分的Co-TRM,在两分支之间交换信息,图片的输入是v1…vt,文本的输入是w1…wt,输出是通过网络处理后的隐藏层hv1..hvt和hw1…hwt。从图中可以看到,图片特征直接送入Co-TRM,而文本特征多加了一层TRM,这是由于图片已经经过了深层网络的编码。

交互注意力层

Co-Attentional Transformer Layers的输入是图片隐藏层Hv和文本隐藏层Hw,与基础BERT模型不同的是其Key和Value交叉传递,用图片的上下文给文字加权,用文字的上下文给图片加权。

图像表示

模型先用Faster R-CNN模型从图像中提取多个目标区域的特征,由于图片特征不像文字特征一样含有位置信息,因此用5维数据给图片位置编码,它们分别是归一化之后左上角坐标,右下角坐标,以及面积。然后将其投影到匹配视觉特征的维度,并对其求和。

训练任务和目标

训练任务如上面所述包含遮蔽和匹配。

如图(a)中所示,遮蔽输入的15%,遮蔽的可能是图片,也可能是文字,用剩余部分对其进行预测,遮蔽图片时有90%的情况用0填充,10%的情况下该区域不变,模型根据语义预测图片区域的分布,使用最小化KL距离方法衡量预测的分布和真实分布的关系,这是由于语言常常能反应图片的高级语义,但无法描述精确的信息。

在匹配任务中,模型的输入是{IMG,v1, . . . , vT,CLS,w1, . . . , wT,SEP},当文字描述的是图片内容时,将hIMG和hCLS作为文字和图片的整体表示,计算hv与hw相乘的结果(点乘计算cosine距离)并学习一个线性层判断二者最终是否匹配,预训练的数据集中仅存在图片和标题对,因此将其它的标题与图片配对生成反例。

实验

训练模型

文使用Conceptual Captions数据集预训练模型,它从网上抓取了3.3 million的图片标题对,经过清洗处理后,使用了3.1 million个数据对。在文字处理方面使用预训练的BERT_base模型参数,在图像处理方面使用了以ResNet 101为backbone的Faster R-CNN识别目标区域并提取特征,用平均池化处理卷积层输出的数据。

具体应用

文中将预测训练的VILBert模型,用各个领域数据继续训练精调,应用于四个实际应用场景之中,训练成端到端的模型;并将预训练模型直接应用于Zero-shot问题之中。

视觉问答VQA (Visual Question Answering):根据图片内容回答用自然语言提出的问题,VQA 2.0数据集包含1.1million个关于COCO数据集的问题,可能的答案有3072个,把它看作一个多标签的分类任务,在图像和文本表示的基础上构建了两层MLP训练类别,使用交叉熵来衡量模型结果。

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

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

基于标题的图片检索(Caption-Based Image Retrieval),根据文字描述在图片池中搜索图片,Flickr30k数据集包含31000张图片,这些图片和文字的对应关系优于自动抓取的图片。使用一对四的方式训练,对每个数据对随机抽取三个干扰项:一个随机的标题,一个随机图像以及一个从一百个最近邻中选取的难负例。计算每个文图对的匹配度;实际预测时计算文图匹配度并选择得分最高的图片作为预测结果。

基于标题的Zero-shot图片检索,Zero-shot指检索在训练集中未见过的数据,之前的几个任务都使用数据集精调模型,此任务中直接使用预训练的模型在Flickr30k数据集上检索。以评测预训练模型提取特征的能力。

结果与分析

下表展示了ViLBert与流行的其它模型对比,以及消融实验的效果,其中Single模型是与双路模型对应的单路模型,右上角的+表示模型未经过文中大规模的图像标题对数据预训练,但使用了预训练的图像模型和文本BERT参数。

软件安装

使用了mask R-CNN和pytorch-transformers作为基础库,安装起来有些难度。

$ git clone https://github.com/facebookresearch/vilbert-multi-task
$ apt-get install libcap-dev
$ pip install PyYAML==5.1.2
$ pip install pytorch-transformers==1.2.0
$ pip install -r requirements.txt
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345