李明晓作者鲁汶大学博士生学校自然语言处理研究方向

BERT在多模态领域中的应用

BERT (Bidrectional Encoder Representations from Transformers) 自提出后,凭借着 Transformer 强大的特征学习能力以及通过掩码语言模型实现的双向编码,其大幅地提高了各项 NLP 任务的基准表现。

鉴于其强大的学习能力,2019 年开始逐渐被用到多模态领域。其在多模态领域的应用主要分为了两个流派:一个是单流模型,在单流模型中文本信息和视觉信息在一开始便进行了融合;另一个是双流模型,在双流模型中文本信息和视觉信息一开始先经过两个独立的编码模块,然后再通过互相的注意力机制来实现不同模态信息的融合。

本文主要介绍和对比五个在图片与文本交互领域应用的 BERT 模型:VisualBert, Unicoder-VL, VL-Bert, ViLBERT, LXMERT。虽然 VideoBert 是第一个将 Bert 应用到多模态的模型,然而其考虑的是视频流和文本因此不在本文的介绍当中。 

以下内容分为两部分,第一部分介绍单流模型,第二部分介绍双流模型。

单流模型

1. VisualBERT 

论文标题:VisualBERT: A Simple and Performant Baseline for Vision and Language

论文链接:https://arxiv.org/abs/1908.03557

源码链接:https://github.com/uclanlp/visualbert

和 BERT 类似,VisualBERT 在结构上采用了堆叠的 Transformer。其在一开始就将文字和图片信息通过 Transformer 的自注意力机制进行对齐融合。

其文字部分的输入为原始的 BERT 文字输入(词向量+位置编码+片段编码)加上 Token/Image 编码来表示其是图片或文字,而图片部分的输入则是采用通过 Faster-RCNN 提取的图片区域特征加上相应的位置编码,片段编码和 Token/Image 编码(如下图右侧所示)。

VisualBERT 遵循 BERT 一样的流程,先进行预训练然后在相应的任务上进行微调,其采用了两个预训练任务:第一个是和 BERT 一样的语言掩码,第二个则是句子-图像预测 (即判断输入的句子是否为相应图片的描述)。

作者在 VQA,VCR,NLVR2 和 Flickr30k 四个视觉语言任务上进行了测试,结果表明 VisualBERT 在四个任务中都达到了最好的表现或和已知最好表现相近的表现。进一步的消融实验表明 VisualBERT 可以有效地学习到语言和相应图像区域的联系,同时也具有一定的句法敏感性。

2. Unicoder-VL

论文标题:Unicoder-VL: A Universal Encoder for Vision and Language by Cross-modal Pre-training

论文链接:https://arxiv.org/abs/1908.06066

该模型与(1)中的 VisualBERT 极其相似,在结构上同样采用堆叠的 Transformer,并且同样在一开始就对图像和语言信息进行对齐和融合。

其与 VisualBERT 最大的不同在于改模型在输入端对图像的处理。其文字部分的输入与(1)中相似。在图像的输入上,其首先通过 Faster-RCNN 提取区域图像特征,然后将该特征与区域图像在图像中的位置编码进行拼接再经过一个连接层投影到与语言输入维度相同的空间(如下图所示)。

同样的其也遵循先预训练后微调的模式。该模型在三个任务中进行预训练,前两个与(1)相同为语言掩码和图像语言匹配任务,第三个为图像标签预测,即预测区域图像所物体类别。

作者在 MSCOO 和 Flicker30K 上分别进行测试,该模型取得了最佳效果。 

3. VL-BERT 

论文标题:VL-BERT: Pre-training of Generic Visual-Linguistic Representations

论文链接:https://arxiv.org/abs/1908.08530

源码链接:https://github.com/jackroos/VL-BERT

与上述两个模型相同,VL-BERT 在结构上依旧直接采用堆叠的 Transformer。如下图所示其在输入端与上述两个模型略有不同。

首先图像端的输入由以下几个编码的加和构成:a. Faster-RCNN所提取的区域图像特征和该区域在原图像中位置信息的拼;b. 位置编码;c. 片段编码;d. [IMG] 编码。

在文字端该模型的输入为正常 BERT 文字输入和整个图像特征的加和。同第二个模型相似,该模型分别在三个任务上进行预训练分别为:语言掩码、图像标签分类和图像语言匹配任务。

作者最后在 VCR, VQA, REC (Referring expression comprehension) 三个任务上测试模型,该模型都取得了最佳或者与最佳相当的表现。

双流模型

1. ViLBERT 

论文标题:ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks

论文链接:https://arxiv.org/abs/1908.02265

源码链接:https://github.com/facebookresearch/vilbert-multi-task

基于双流的 ViLBERT,在一开始并未直接对语言信息和图片信息进行融合,而是先各自经过 Transformer 的编码器进行编码。分流设计是基于这样一个假设,语言的理解本身比图像复杂,而且图像的输入本身就是经过 Faster-RCNN 提取的较高层次的特征,因此两者所需要的编码深度应该是不一样的。

当两种模态各自进行编码后,其输出会经过一个共注意力机制模块(如下图右侧所示)。该模块也是基于 Transformer 的结构,只是在自注意力机制中每个模块都用自己的 Query 去和另一模块的 Value 和 Key 计算注意力,由此来融合不同模块间的信息。

该模型在两个任务上进行了预训练,第一个任务为掩码任务,其中语言端和 BERT 的语言掩码任务一样,在图像端任务的目标则是当区域图像被掩盖后模型对其输出的分类分布能够尽可能与用来提取区域特征的模型(这里是 Faster-RCNN)的输出分布一致因此这里作者使用 KL 散度作为目标函数;第二个任务则是常规的语言图像匹配任务。

作者分别在 VQA, VCR, GRE, IR, ZSIR 等五个任务中最模型进行测试。该模型在五个任务中都取得了当前最好或与最好相当的表现。其后作者又对预训练过程进行分析发现与训练过程中模型已经能够学习到语言与图像在语义上的对齐关系。

2. LXMERT 

论文标题:LXMERT: Learning Cross-Modality Encoder Representations from Transformers

论文链接:https://arxiv.org/abs/1908.07490

源码链接:https://github.com/airsplay/lxmert

该模型与 ViLBERT 一样采用了双流模型。如下图所示,语言与图像在一开始先各自经过独立的编码层进行编码,然后再经过一个模态交互编码层进行语言与图像在语义上的对齐和融合。

在交互编码层中,该模型同样的也是使用共注意力机制,即自注意力中的 query 来自一个模态,而 key 和 value 来自另一个模态。该编码层过后,图像与语言各自又经过一层自注意力层进一步提取高层特征。

该模型的输出有三个部分,一个语言端的输出,一个图像端的输出,一个多模态的输出。该模型在与训练时使用了四个任务:语言掩码任务,图像掩码任务(该任务有两部分,第一部分为预测被掩图像物体类别,第二部分为 ROI 特征回归任务该任务使用 L2 损失函数,语言图像匹配任务和图像问答任务。

最后作者分别在 VQA,GQA 和 NLVR 任务上测试该模型,模型在这些任务上都取得了最好的表现。作者同时又做了一些对比实验验证了预训练有效的提高了模型在最后测试中的表现。 

总结

这五篇论文都尝试把 BERT 的框架迁移到了多模态领域,并类似于 Bert 那样想在多模态领域建立一个可通用的特征学习模型。多个实验表明像 Bert 这样的架构在多模态领域依旧具有很强的学习能力。

然而,究竟是单流更佳还是双流更佳还不是很明确,虽然主张单流的论文里有作者与双流模型进行比较得出单流更好的结论,但是在双流的论文里同样有与单流的比较而结果是双流更好。关于单双流究竟哪个更好或者是与特定任务相关,看来还需要未来更严谨的对比实验来进一步进行验证。

Reference

[1] VL-BERT: Pre-training of generic visual linguistic representations. Weijie Su, Xizhou Zhu, Yue Cao, Bin Li, Lewei Lu, Furu Wei, Jifeng Dai 
[2] Unicoder-VL: A universal encoder for vision and language by cross-modal pre-training. Gen Li, Nan Duan, Yuejian Fang, Ming Gong, Daxin Jiang, Ming Zhou 
[3] VisualBERT: A simple and performant baseline for vision and language. Liunian Harold Li, Mark Yatskar, Da Yin, Cho-Jui Hsieh, Kai-Wei Change
[4] LXMERT: Learning cross-modality encoder representations from transformers. Hao Tan, Mohit Bansal 
[5] ViLBERT: Pretraining task-agnostic visiolinguistic representations for vision-and-language tasks. Jiasen Lu, Dhruv Batra, Devi Parikh, Stefan Lee
PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

理论BERT
相关数据
自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~