专栏首页朴素人工智能跨模态语言模型

跨模态语言模型

本文为预训练语言模型专题的第17篇。

今天聊一聊近年来挺火的“多模态”任务。其实这不是我们第一次聊到多模态了,之前发的Kaggle PetFinder比赛方案其实就在解决一个多模态预测的问题。准确地说今天介绍的模型都是“双模态”,即同时处理文本数据和图像数据。

多模态任务

虽然生活中需要处理多模态输入的场景比比皆是,但众所周知,目前的AI水平还比较低,只能处理一些特定的任务。在介绍模型之前,我们先介绍几个在当前研究中常见的多模态问题。

视觉问答

比较有名的是视觉问答VQA,简单的说就是针对图片提问题让计算机回答。有一个叫VQA[1]的著名数据集,发布于2015年,2017年发布了最新的2.0版本。数据集包含大约二十万张图片、一百多万个问题以及一千多万个标注答案。就像之前的ImageNet一样,每年都有针对这个任务的挑战赛,2020年第一名的accuracy已经达到了76.36%,2017年这一数字是69%。

VQA数据集样例

视觉常识推理

视觉常识推理(visual commonsense reasoning,VCR)也是一个热门且有趣的任务。他比VQA更进一步,计算机不仅要回答问题(Question Answering,Q->A),还需要给出一个理由(rationale)来解释为什么给出这个答案,这个给理由的任务有两种设定,一种是只给Q同时得到A和R(Q->AR),另一种是给定Q和A纯粹获得R(Answer Justification, QA->R)。

VCR数据集样例,模型不仅要给出答案,还要给出理由

VCR数据集的leaderboard也很活跃。这里贴一个目前排行榜top5的成绩,从图中可以看出,这个任务目前算法的水平距离人类还有较大差距。

VCR排行榜前五名

多模态检索

最后介绍一个跟大家生活比较贴近的任务,以KDD 2020的Multimodalities Recall challenge[2]为例。简单的说就是用自然语言问句来搜图,这个在大家日常生活中需求很大。由于互联网图片通常有大量的文字上下文,现有技术可以完全不利用多模态交互做到一个比较好的使用体验。但基于多模态的技术会大大扩展检索的使用范围并提高体验。

多模态检索任务示意图,对于这个例子大家在搜索引擎搜“豹纹女鞋”应该都能得到好结果

多模态模型

为了更好地解决多模态问题,大概有以下几个重要的子问题需要解决

  1. 多种模态如何混合输入
  2. 多种模态间的信息怎么交互
  3. 如何发挥预训练的威力

下面我们以ICLR 2020上提出的VL-BERT[3]为主线,紧扣这3个问题介绍一下多模态模型。

多模态输入

目前最新的多模态模型基本都是以transformer为backbone,为了达到更好的语言模态处理能力,往往都在预训练语言模型的基础上进行扩展。

从VL-BERT的名字就可以看出它采用了BERT。BERT的输入方式大家应该都已经非常熟悉,在讲文本序列令牌化后,分别转化为word embeddingposition embeddingsegment embedding输入进多层transformer模型。

下图是VL-BERT的模型结构图,可以看到有三个主要的变化。首先,embedding从三种变成了四种,增加了第二行的visual feature embedding;其次,引入了特殊的[IMG] token以及相应的token embedding;最后segment embedding从原来的0/1两种变成了A、B、C三种,其中A、B对应原来的0和1,C专门留给图像特征。

VL-BERT结构图。值得注意的点:visual feature embedding,两个预训练任务,被抹去的ROI(蓝色斜线)。

visual feature embedding(以下简称VFE)是对R-CNN网络输出的ROI(regions of interest,简单理解就是模型认为有意义的区域)进行高维向量表征。其中又分为两个小部分:一个是对图像信息进行表示的appearance feature,另一部分是对位置信息进行表示的geometry。最终的VFE是这两个特征向量拼接后用全连接降维得到的。对于一张图片,R-CNN网络会给出多个ROI,因此也就得到了多个VFE

仔细观察会发现VFE叠加在原来的文字输入上(图中黑框),这部分叠加的是从整张图片获得的VFE。而对于拼接的部分,则是从单个ROI获得的VFE。另一个细节是视觉信息的position embedding都是一样的,这是因为ROI并没有所谓的序列位置关系,其图像位置信息已经包含在了VFE中。

通过以上的方式,图像和文本信息就都输入进了模型里。

多模态信息的交互

由于VL-BERT使用的是BERT作为backbone,很自然的,信息的交互是通过自注意力机制完成的。模型的整体性很好,从我们在NLP领域的经验来看,这种方式的效果也是比较好的。

但这不是唯一的方式,例如更早的模型LXMERT[4]就采用了双塔结构。先分别使用语言编码器和图像编码器对两种信息进行分别编码,再通过一个跨模态编码器(cross-modality encoder)进行交互。如果你熟悉文本匹配,那对这种套路应该再熟悉不过了。

LXMERT模型结构。采用“双塔”分别对文本和图片进行编码,再通过跨模态编码器进行交互

如何预训练

在介绍VL-BERT的预训练之前,我们先简单回顾一下BERT的预训练任务。BERT采用了两个预训练任务,分别是masked language model(MLM)和next sentence prediction(NSP)。这两个任务大家应该也比较熟悉,尤其是MLM被证明是非常有效的预训练任务,NSP在最近倒是有淡出历史舞台的迹象。

VL-BERT的预训练任务是对MLM的扩展,一共有两个。第一个任务是带视觉线索的掩码语言模型(Masked language model with visual clues)。这个任务的扩展是自然的,在就是引入视觉信息之后做MLM。被mask的token只会来自于文本。

第二个任务是带语言信息的掩码ROI分类(Masked RoI Classification with Linguistic Clues)。这个任务是第一个任务的对偶任务,前面那个任务是用视觉信息来辅助语言模型训练,而这个是借助语言信息来进行ROI图像预测。预测的标签来自于R-CNN模型的预测结果(注意,这个结果是来自于视觉信息的)。

这个任务比较复杂,因为需要处理视觉信息泄露。所谓视觉信息泄露,就是直接通过VFE就得到了图像类别。例如R-CNN框出了一只猫并生成了相应的VFE,那目前的模型基本都可以做到轻松地从视觉特征向量预测出这个框里面是只猫而完全不需要借助文本提供的信息。这是我们不希望看到的,我们希望模型能够建立跨模态的联系,它需要从输入的“kitten drink from bottle”里预测出被mask掉的区域里应该有只猫(因为另一个区域已经有瓶子了)。为了解决视觉信息泄露的问题,需要在数据输入时就做好准备。被预测的ROI需要从图中抹去(像素值置零)。

由于输入信息丰富,除了VL-BERT采用的两个预训练任务外还有好多其他的选择。这里提一下比它稍微早一些的VisualBERT[5],这个模型也采用了两个预训练任务,其中有一个是和VL-BERT一样的MLM,而另一个是图像语言相关性任务(sentence-image prediction)。具体的说,COCO image caption[6]数据集对每张图片有多个caption,模型预训练时会输入两个句子+视觉信息,第一个句子是和图片相关的,而第二个句子有50%的概率是随机挑的,模型需要学会分辨这两种情况。

从历史的后视镜看,VisualBERT的这个任务明显简单于VL-BERT的ROI分类任务。即使不靠图片信息,BERT也已经可以分辨两句话的意思是否相同。从结果也可以看出来,在COCO上进行预训练对VisualBERT的VQA成绩提升是从70.18到70.8,并不是非常显著。

VisualBERT结构图,输入方式和VL-BERT大体相同,但使用了不同的预训练任务。

转过头说回VL-BERT,它的预训练步骤对VQA成绩的提高是从69.58到71.16,除了任务先进,它还做了不带图像信息的单纯MLM预训练(还是第一个训练任务,但没有输入任何图像信息),不仅质高,而且量大,超过前辈自然不在话下。

总结

在VL-BERT论文的附录里有一张表,对近几年重要的多模态模型进行了比较全面的对比。表里面可以直观地看到各模型的结构、视觉信息、数据集、预训练任务以及下游任务信息,感兴趣的朋友可以作为路线图做更细致的研究。

重要多模态模型对比

另外,前面提到的KDD 2020比赛不少前排大佬已经放出了解决方案,例如第一名方案[7]就采用了MCAN[8]和VisualBERT融合,大家可以通过这些材料看一下在实际问题中多模态技术是如何应用的。

今天的文章就到这,欢迎关注我们,方便获取后续更多精彩内容。

参考资料

[1]

VQA数据集: https://visualqa.org/

[2]

KDD 2020多模态检索赛道: https://tianchi.aliyun.com/competition/entrance/231786/information

[3]

VL-BERT: http://arxiv.org/abs/1908.08530

[4]

LXMERT: https://arxiv.org/abs/1908.07490

[5]

VisualBERT: A Simple and Performant Baseline for Vision and Language: http://arxiv.org/abs/1908.03557

[6]

Microsoft COCO captions: Data collection and evaluation server: https://arxiv.org/abs/1504.00325

[7]

KDD 2020多模态赛道第一名方案: https://github.com/steven95421/KDD_WinnieTheBest

[8]

Deep Modular Co-Attention Networks for Visual Question Answering : https://arxiv.org/abs/1906.10770

本文分享自微信公众号 - 朴素人工智能(sunnyday_no1),作者:远皓

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [预训练语言模型专题] RoBERTa: 捍卫BERT的尊严

    5-8:[BERT来临]、[浅析BERT代码]、[ERNIE合集]、[MT-DNN(KD)]

    朴素人工智能
  • 从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史

    来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/146325984

    朴素人工智能
  • [PLM专题] 十分钟了解文本分类通用训练技巧

    欢迎大家来到预训练语言模型的专题系列分享,本篇推送是该专题系列的第三篇。在前两篇推送[萌芽时代],[风起云涌]中,我们分享了该领域的奠基文章以及声名鹊起却生不逢...

    朴素人工智能
  • 重回榜首!Facebook开源加强版BERT,全面超越XLNet

    今年六月,谷歌发布XLNet,指出并解决了BERT的缺点,在20多个指标上全面刷爆了BERT之前的成绩,数据、算力相比BERT增加了很多,也在业内引起了激烈讨论...

    大数据文摘
  • PermissionX重磅更新,支持自定义权限提醒对话框

    大家早上好,今天带来一篇原创。很高兴告诉大家,PermissionX又出新版本了。

    用户1158055
  • 用python解析html[SGMLPa

    因为要用python做学校网络的认证程序,需要解析服务器传回的html,本以为会像javascript里操作DOM那样简单,结果发现并不是 这样。

    py3study
  • 新冠肺炎数据里学到的四个数据分析和机器学习知识

    虽然现在大家很容易获取机器学习和数据科学的学习工具,但是除了学习如何使用工具以外,往工具里输入数据之前如何有效地探索数据,并找出其局限性也同样重要。

    统计学家
  • lottie系列文章(二):lottie最佳实践

    新建src/assets/lottie/文件夹,并将bodymovin_light.min.js文件和设计师给的动画json文件统一放到src/assets/l...

    IMWeb前端团队
  • 8篇论文梳理BERT相关模型进展与反思 | MSRA出品

    BERT 自从在 arXiv 上发表以来获得了很大的成功和关注,打开了 NLP 中 2-Stage 的潘多拉魔盒。

    量子位
  • XLNet:公平PK,BERT你已经被超过!

    【导语】几周前,XLNet 团队发布了新型预训练语言模型 XLNet,这个新模型在各项基准测试中都优于谷歌之前发布的BERT模型,其中模型 XLNet-Larg...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券