###好好好####多模态中的BERT

Wesley13
• 阅读 973

###好好好####多模态中的BERT

image

BERT自问世以来,几乎刷新了各种NLP的任务榜,基于BERT的变种也层出不穷,在很多任务里都可以看到其身影。大浪淘沙,沉者为金,回想第一次看到BERT的论文时,确实不曾想其也能对工业界产生极大的影响。

本文尝试梳理今年BERT在多模态任务(主要涉及视觉和文本模态)上的一些工作,尝试比较各工作的主要思路以及做法上的区别,因此不会过多的涉及细节。总的来看,众多工作的主体模型大同小异,均使用Transformer,从表1(引用自VL-BERT论文)可以对各工作之间的相似和不同之处有个整体的认识。

###好好好####多模态中的BERT

image

可以看到,各方案之间的差异基本在于模态融合方式、预训练任务、以及下游任务微调,下文也将主要从这几个维度展开介绍和对比(排名不分先后)。

VideoBert

###好好好####多模态中的BERT

image

VideoBert主体采用单Transformer同时对文本token和视频片段进行模态表示和融合。与BERT区别在于把原来的句子对是否匹配(是否为下一句),换成了句子视频是否匹配任务。同时对于视频片段帧进行随机的MASK,预测对应的特征向量,文中叫visual words(通过预训练的视觉模型抽取得来,如S3D,然后聚类得到相应特征向量的id),对应于BERT的masked语言模型。

CBT

###好好好####多模态中的BERT

image

和VideoBert不同在于,视频输入和文本输入分成了两支。视频输入经过S3D网络得到视觉特征序列,文本输入经过BERT得到文本特征序列,两路序列再经过交叉的Transformer做Attention,进行多任务的预训练。

Unicoder-VL

###好好好####多模态中的BERT

image

网络结构和训练策略与VideoBert几乎一致,主要区别在于视觉测的输入由视频片段帧特征换成了单图的区域块(使用预训练的目标检测模型Faster R-CNN预测得到框、区域特征以及相应Label),对应的预测的任务由预测视频片段帧的特征向量,换成了直接预测对应Label。图文匹配任务和masked语言模型任务不变。

VisulBert

###好好好####多模态中的BERT

image

与Unicoder-VL整体思路和方法一致,除了预训练数据集以及微调任务的差异外,预训练目标上少了一个masked图像特征的预测任务。

VL-BERT

###好好好####多模态中的BERT

image

同样与Unicoder-VL相比,模型结构基本一致,不同在于在文本输入的每个token位置加入了图像的特征embedding(完整图像的特征),而在视觉侧直接接上了Fast-RCNN联合训练。

B2T2

###好好好####多模态中的BERT

image

同样也是单Transformer网络结构,不过在模态融合时候分成了晚期融合和早期融合。晚期融合比较简单,只要BERT结构的[CLS]输出端引入整个图像的特征,判断图文是否匹配,其他模块和masked语言模型没太大区别;早期融合和前面的工作相比,没有了单独的图像输入序列区域,而是在原来文本输入masked掉的词的位置输入了该词提到的图像区域块特征。

UNITER

###好好好####多模态中的BERT

image

基本思路和其他单Transformer的结构差异不大,总体感觉是用了更多的预训练数据集,下游任务微调更丰富,实验结果更全,**效果更好**。预训练任务包括masked语言模型、图文匹配和masked图像模型(包括图像region的feature的预测、KL散度的预测以及fastrcnn的label的预测,并做了组合效果的实验)。

VLP

###好好好####多模态中的BERT

image

VLP模型仍采用单Transformer结构,最大不同的是在预训练任务中引入了seq2seq的mask语言模型,天然的适合下游的生成任务做微调,如image caption。

LXMERT

###好好好####多模态中的BERT

image

对应CBT网络,LXMERT同样是两路输入,在视觉侧关注单图,和上文很多方案类似,图像经过目标检测模型得到区域块的特征序列,并经过Transformer进一步编码;文本侧通过BERT结构得到文本的特征序列,最后两者做交叉的Transformer做Attention,进行多任务的预训练。不同于其他工作,LXMERT的预训练任务可以说是巨多,包括masked图像特征的预测、图像label的预测(猫、狗等)、VQA、图文是否匹配以及masked语言模型。

ViLBert

###好好好####多模态中的BERT

image

###好好好####多模态中的BERT

image

和LXMERT一样也是两路输入,基本结构大同小异,主要区别在图像端的输入直接做Embed(特征提取后的特征序列)就和文本序列Transformer编码的输出进行交叉的attention,预训练任务也仅包括masked图像label的预测任务、图文匹配任务以及masked语言模型任务。

一些想法

总的感觉,好的基础工作会带动一波周边的探索,文章介绍的工作在发表时间上并没有太大差距,很多工作可以看作是同时进行。领域研究的持续活跃源自基础工作的不断进步,万丈高楼平地起。

具体工作上,个人感觉序列编码模块上Transformer的地位将长期难以撼动,未来可以发力的点一是模态之间更有效的融合方式,二则是在任务的创新上,如是否可以引入多模态内容之间的相关任务(如多图、多文的内容匹配),多模态内容检索等;

最后,做人也应该像BERT一样,自身不断变异进化,也让周遭环境越来越好。

参考文献

[1] Chen Sun, Austin Myers, Carl Vondrick, Kevin Murphy, and Cordelia Schmid. Videobert: A joint model for video and language representation learning. arXiv preprint arXiv:1904.01766, 2019b. [2] Chen Sun, Fabien Baradel, Kevin Murphy, and Cordelia Schmid. Contrastive bidirectional transformer for temporal representation learning. arXiv preprint arXiv:1906.05743, 2019a. [3] Jiasen Lu, Dhruv Batra, Devi Parikh, and Stefan Lee. Vilbert: Pretraining task-agnostic visiolinguistic representations for vision-and-language tasks. arXiv preprint arXiv:1908.02265, 2019. [4] Peter Anderson, Xiaodong He, Chris Buehler, Damien Teney, Mark Johnson, Stephen Gould, and Lei Zhang. Bottom-up and top-down attention for image captioning and visual question answering. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 6077–6086, 2018. [5] Hao Tan and Mohit Bansal. Lxmert: Learning cross-modality encoder representations from transformers. In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing, 2019. [6] Liunian Harold Li, Mark Yatskar, Da Yin, Cho-Jui Hsieh, and Kai-Wei Chang. Visualbert: A simple and performant baseline for vision and language. arXiv preprint arXiv:1908.03557, 2019b. [7] Gen Li, Nan Duan, Yuejian Fang, Daxin Jiang, and Ming Zhou. Unicoder-vl: A universal encoder for vision and language by cross-modal pre-training, 2019a. [8] Su W, Zhu X, Cao Y, et al. Vl-bert: Pre-training of generic visual-linguistic representations[J]. arXiv preprint arXiv:1908.08530, 2019. [9] Chen Y C, Li L, Yu L, et al. UNITER: Learning UNiversal Image-TExt Representations[J]. arXiv preprint arXiv:1909.11740, 2019. [10] Zhou L, Palangi H, Zhang L, et al. Unified Vision-Language Pre-Training for Image Captioning and VQA[J]. arXiv preprint arXiv:1909.11059, 2019.

作者:zqh_zy
链接:https://www.jianshu.com/p/5f23e8d9224a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这