多模态中预训练的演变史

2021-12-04 10:18:31 浏览数 (1)

自从2018年bert在NLP领域声名鹊起,通过预训练在n多NLP任务中刷榜,成功发掘出了transformer的潜力,众多研究者就看到了多模态发展的新的机会——使用大量数据做预训练。因为从updn模型开始,多模态这面普遍把图片提取成区域特征序列做后续处理,这样的话多模态是视觉和文本特征序列,NLP中是文本特征序列,没什么本质差异,自然可以把预训练搬过来,一系列多模态transformer预训练的文章应运而生。举个栗子:LXMERT、VLBERT、ViLBERT、UNITER、UNIMO、OSCAR、VisualBert、VLP、今年的ViLT、VinVL、SOHO、SimVLM、METER等等,以及没有使用预训练也达到很好效果的MCAN。

按结构主要可以分为单流、双流,单流就是把不同模态特征序列先拼起来,通过transformer进行自注意力,双流就是先各个模态特征单独自注意力,再经过transformer交叉注意力。模型都是大同小异,或者预训练方法有些小的差别,最主要的趋势是预训练数据越来越大。

几个模型的预训练数据规模:

LXMERT: Learning Cross-Modality Encoder Representations from Transformers

视觉特征使用faster rcnn提取区域化特征,文本提取word-level特征。预训练使用了五个:Language Task: Masked Cross-Modality LM;Vision Task: RoI-Feature Regression;Vision Task: Detected-Label Classification;Cross-Modality Matching;Image Question Answering (QA)。

ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks

结构基本和LXMERT一样,差别有以下几点:预训练时vilbert对masked region的预测是一个object label的概率分布,让它去接近区域特征提取器、即目标检测模型对该区域的预测label分布,损失为两个分布的KL散度;预测答案时输出头不同,vilbert用[IMG]、[CLS]表征向量相乘后接分类器。

UNITER: UNiversal Image-TExt Representation Learning

结构和其他的一样,预训练任务采用了四个:MLM;MRM,把某区域特征换为全0,然后去恢复它,mlm和mrm不同时进行,mrm分为三类,一个是回归特征向量,一个是分类任务,GT是目标检测预测的label,再一个是最小化预测的分类分数向量和目标检测预测的分数向量之间的KL散度;ITM,图文匹配;WRA,为了提供视觉区域和文本单词更细粒度的对齐,通过使用Optimal Transport,有效地计算从图片特征转换到文本特征的最小代价,这里没太看懂,大概就是OT可以学出一个矩阵T,表示第i个区域、第j个文本是否是对应的,损失就是

,这里的c 是余弦距离。预训练策略是对每个batch随机采样一个任务来训练。

Oscar: Object-Semantics Aligned Pre-training for Vision-Language Tasks

本文预训练使用的数据是 图片-文本-检测到的object标签 三元组,相当于用物体标签做图片和文本的锚点,减小两种模态之间的gap,因为标签一方面和图片的某区域对应,另一方面它又是文本内容。两个预训练任务:A Dictionary View: Masked Token Loss,即恢复被mask掉的文本token,可能在句子里,也可能是tags;A Modality View: Contrastive Loss,把tags序列以50%概率换掉,然后在输出进行二分类,判断此时的三元组是正确的还是被污染的。

Seeing Out of tHe bOx: End-to-End Pre-training for Vision-Language Representation Learning

CVPR2021 oral

作者团队来自北京科技大学、Beijing Engineering Research Center of Industrial Spectrum Imaging、MSRA。本文提出模型SOHO(see out of the box),用整张图片作为输入,用端到端的方式学习视觉语言表征,即无需提取区域化特征,所以叫做out of the (bounding) box。由于不需做目标检测,推理速度快了十倍。SOHO通过便于跨模态理解的视觉字典(VD)提取全面而紧凑的图像特征。本文使用一个叫做MVM(masked visual modeling)的预训练,会利用到VD,其他预训练有MLM、ITM(图文匹配)。但其实使用网格特征很多之前的工作都已经在用了。

很常见的结构,比较新的是visual dictionary的提出,它的motivation是CNN提取出的图片的网格化特征并没有一个明确的含义(不像区域化特征对应了object),VD目的是弥补网格特征和语言token之间的gap,比较巧妙,最终实现的目的是让属于同一类object的网格特征具有更高的语义相似性。VD是一个二维矩阵,由k个特征d组成,对于某一个视觉特征v,计算最相似的d(二范数距离最小),(然后用这个d替代v,但我觉得这样的话会丧失一个物体的不同网格之间的特异性)。VD的更新:先随机初始化,然后用移动平均法更新:

没太看懂它的公式,总之思路就是视觉字典中的特征d 应该向目前输入的特征v 学习,就是找到和v 最相似的存储的特征后,再用v 更新这个存储的特征,使得存储的特征越来越趋向于表征某一类物体。

预训练用了masked language modeling、image-text matching,以及masked visual modeing,MVM是随机mask掉某个物体的所有网格,然后预测这些网格属于的类别(这里的类别指的是在VD中,每一个存储的特征给一个编号)。

实验在一些下游任务上都取得了较可观的效果。

ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

本文motivation在于视觉特征不管用目标检测得到的区域特征,还是卷积得到网格化特征,都是很耗时的。

ViLT提取图片特征的方法模仿ViT,对每个patch做一个linear projection,参数量骤降,具体做法就是把每个patch(

)展成一维,再映射到隐状态维度。模型初始化使用ViT的权重,结构也和vit相同(结构上与bert唯一的不同在于LN层的位置)。

预训练的方法有:image text matching (ITM) and masked language modeling (MLM)。另外使用了一种word patch alignment (WPA)的方法计算文本子集和视觉子集的对齐分数(仿照uniter)。引入WholeWord Masking的方法,因为分词时有时会把一个词分开,这种方法是把属于一个词的所有分词都mask掉。使用Image Augmentation 增强模型泛化性,在微调时,他们使用RandAugment里的所有方法,除了两个:颜色转换和裁剪。

SIMVLM: SIMPLE VISUAL LANGUAGE MODEL PRETRAINING WITH WEAK SUPERVISION

作者团队来自CMU、谷歌、华盛顿大学。总体思路是用更大尺度弱监督数据做预训练,用一个语言建模的目标去进行端到端地训练。在相当多任务上达到sota,尤其在VQA2.0上,达到了80的准确率,刷新认知,犹记得大四下做VQA时,准确率还停留在70出头,当时想上个70都很难,现在都卷到80了。。SimVLM预训练更简单,不需要做目标检测(不需使用区域化特征)或辅助的损失(比如lxmert里使用了5个预训练任务),但是获得了很好的表现。并且模型有很强的泛化能力,在零样本学习中同样表现良好。

simvlm使用的结构还是transformer,与之前的模型的一个区别在于预训练方法的不同,本文使用prefixLM。之前的预训练一般用MLM,建模双向的关系,或者生成式的LM,逐词生成,建模单向的关系。prefixLM算是两者的结合,即给定前半段文本,逐词生成后半段文本。

预训练的数据取用的是大尺度的图片-文本对(由于数据量很大,所以也含有较多噪声),数据来自Scaling up visual and vision-language representation learning with noisy text supervision 。由于预训练任务对模态不敏感,所以也可以用纯文本加入预训练,弥补图片-文本对时包含的噪声。

实验

设计了三种变体:base、large、huge。具体超参数设置见原文。使用AdamW做优化器。在5个下游任务作了微调:VQA、Visual entailment(视觉文本关系判断)、视觉推理、image caption、多模态翻译。

零样本生成任务:不需微调训练。比如image caption,在推理时,给一个前缀prompt“a picture of”,就可以生成后续的描述。获得了和监督学习一样好的效果。还比如开放域VQA等。

An Empirical Study of Training End-to-End Vision-and-Language Transformers

这篇文章就是在视觉、语言特征提取上用了最新的有效的基于transformer的模型比如swin、roberta等,最后在下游任务上,比如VQA2.0,取得了仅次于simvlm的结果,文章强调了meter的预训练数据只有4M,而simvlm用了1.8B。

这篇文章做了大量的实验,在每一个环节都尝试了大量的方法,经典“a b”,不过大部分这些预训练的文章感觉创新都不是很大。结构上,视觉特征用了ViT,DeiT,Distilled-DeiT,CaiT,VOLO,BEiT,Swin Transformer,CLIP-ViT,文本用了BERT,RoBERTa,ELECTRA,ALBERT,DeBERTa。融合模块用了双流和单流两种。整体结构有Encoder-Only,Encoder-Decoder两种。

预训练又试了很多:MLM、ITM、MIM(设计了两种masked patch classification方法)(mim用处不大)。

实验

证明了文本roberta、视觉swin transformer、CLIP-ViT-224/16效果较好。

发现的trick:(1)随机初始化的权重设置学习率应大于有预训练的权重的学习率;(2)用插值等方法提高图像分辨率。

融合部分co-attention优于merged attention。

预训练部分证明了MLM和ITM是有效的,MIM起反作用。

VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts

根据评论区提醒,再补充一篇也是11月份刚挂在arxiv上的多模态预训练模型VLMO。作者团队来自微软。

本文作出的主要改进在于这几个方面:对transformer结构做了一些修改,将传统编码器的FFN分为三条路径(视觉、语言、跨模态),分别构成了dual encoder和fusion encoder,可以分别适用于不同的下游任务,比如检索任务用dual、需要跨模态语义信息的分类任务用fusion;预训练任务分阶段进行,image-only、text-only、image-text。

作者认为多模态编码器可以分为两类,一类是像CLIP、ALIGN这样的dual encoder,分别对图片、文本编码后,计算一个编码特征之间的相似度;一类是fusion encoder,就是我们常见的这些,挖掘跨模态的语义信息。vlmo做的事情主要就是把两类融合起来,这样可以适用的预训练、下游任务更广泛。

具体方法。图片表征和vit、vilt相同,分patch,再展平做线性映射作为输入。(这种方法最大的优势就是快,但从vlit结果来看,准确率有点拉,这篇文章虽然也用这种方法,但是准确率很高)文本编码一样,联合特征就是拼接起来。模型结构比较灵活,要单独编码图片、文本时,就用V-FFN、L-FFN,编码拼接起来的图片文本序列时,用VL-FFN。daul时,就用前两层;fusion时,底层用前两个分别编码,上层用VL-FFN编码高级特征。

预训练。三个:Image-Text Contrast,一个batch的图片、文本作对比学习,对角线上是正样本对(这是一般的方法,但本文的方法分为图片对文本、文本对图片的相似度,没太看懂);MLM;ITM。预训练在三类数据上分阶段进行。实验也是常用的四个预训练数据集:coco、vg、sbu、gcc。

0 人点赞