多模态预训练模型串烧1:CLIP、ViLT、ALBEF、VLMo

aaaa
创建于2023-12-16
阅读 245
收藏TA

需扫码在手机上打开
文章后点击更新提醒

所谓多模态就是融合了不止一种模态的信息,比如图像、文本、音频和视频等,现阶段最常见的就是Vision+Language的形式。

本文记录一下基于Transformer 的图文多模态预训练(Vision-and-Language Pre-training (VLP) )基础模型(该模型一旦训练好就可以用于VL下游任务,比如图文检索、视觉问答等,还有比较实用的Document Understanding,分析文档布局、提取文档信息并结构化输出)。

本文分析了几个经典模型(CLIP、ViLT、ALBEF、VLMo)的架构:视觉编码器、文本编码器和特征融合,以及使用的目标函数、主要贡献等等。


CLIP

论文于2021年2月26号挂在Arxiv上(代码在2021年1月6号首次提交),论文题目《Learning Transferable Visual Models From Natural Language Supervision》。

关于clip的应用(零样本图像分类、提示词工程),可参见之前的文章CLIP论文笔记及简单的使用示例。

主要内容:

创建了一个包含4亿条(图像,文本)对的数据,这些数据从因特网上获取得到。


假设给定一个批大小为N的(图像,文本)对,CLIP联合训练图像编码器和文本编码器,学习一个多模态的向量空间,最大化N对真实的图文向量的余弦相似度,最小化N方-N对不正确的图文向量的余弦相似度。


最大的ResNet模型RN50x6在592张V100 GPU上训练了18天,最大的Vision Transformer模型在256张V100 GPU上训练12天。


文本编码器采用GPT2,视觉编码器采用ViT或者ResNet,采用跨模态对比学习目标进行模型训练。架构:

ViLT

代码于2021年3月25日首次提交。v1版本论文于2021年2月5号挂在Arxiv上,2021年6月10号更新v2版本,论文题目《ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision》。

主要贡献:

ViLT采用Transformer模块作为视觉编码器,获得高效的运行时间和参数量。

没有使用区域特征或者卷积视觉编码器,在VL任务上首次获得了具有竞争力的性能。

对于视觉-语言两种模态来说,视觉模块通常需要更大的网络才能提取较好的特征,但两种模态的交互也很重要。

视觉编码模块是大多数Vision-and-Language Pre-training (VLP) 模型的瓶颈。


ViLT基于两点标准将视觉语言模型分为四类,两点标准是:两种模态的表达能力(根据参数和计算量衡量)是否相同。两种模态在深层网络中是否有交互。

ViLT是首个(d)类型的模型,图像编码器跟文本编码器一样采用浅层网络,计算量少,这个结构更多关注的是模态之间的交互。文本编码器采用ViT,视觉编码器采用线性投影,Maked Language Modeling(MLM) 和 Image-Text Matching(ITM) 学习目标,模型架构:

ViLT在四个数据集上进行预训练:Microsoft COCO (MSCOCO),Visual Genome (VG),SBU Captions (SBU) Google Conceptual Captions (GCC)。


ALBEF

代码2021年7月16首次提交。v1版本论文于2021年7月16日挂在Arxiv上,v2版本2021年10月7号更新,论文《Align before Fuse: Vision and Language Representation Learning with Momentum Distillation》。


主要有两点贡献:align before fusion(模态融合前先对齐),momentum model(动量蒸馏)。


一、提出背景:

许多现有的方法采用基于Transformer的多模态编码器,联合编码视觉特征和文本特征,因为两者是没有对齐的(所以需要先对齐)

为了从网络上获取得到的噪声数据中体征学习性能,提出了动量蒸馏,一种从动量模型产生的伪标签中进行学习的自训练方法(动量蒸馏解决网络脏数据问题)

二、怎么做?

解决对齐:

首先使用一个图像编码器和一个文本编码器分别对图像和文本进行独立编码,然后使用多模态编码器通过跨模态注意力将图像特征和文本特征进行融合。


在单模态编码器的特征表示上引入了中间的ITC损失,有三个目的:

(1)将图像特征和文本特征进行对齐,使多模态编码器更容易的进行跨模态学习;

(2)提升单模态编码器更好的理解图像和文本的语义信息;

(3)学习一个低维空间编码图像和文本,使得图文匹配目标通过对比学习得到的困难负样本挖掘找到信息丰富的样例。


解决脏数据:

提出动量蒸馏(MoD),训练时,通过模型参数的移动平均保留一个动量版本的模型,然后使用动量模型生成伪标签作为额外的监督信号。


网络结构:文本编码器为BERT,视觉编码器为ViT。如下图所示:


图像编码器使用12层的ViT-B/16,文本编码器和多模态编码器采用6层的transformer。


三个优化目标:单模态编码器的ITC、多模态 编码器的MLM和ITM,使用online contrastive hard negative mining提升ITM。


动量模型是一个持续进化的teacher,包含单模态和多模态编码器的指数移动平均(ema)版本。


使用MoD得到的伪标签样例(图示所给例子可以看到,top5伪标签比原始的GT更能准确的描述图像内容。):


消融实验结果(加入ITC的提升是非常明显的):



VLMo

代码于2021年11月2号初次提交。v1版本论文于2021年11月3号提交,v2版本于2022年5月27号提交。论文《VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts》。


主要内容有:


引入MoME Transformer,每个块包含一些特定模态的处理模块(专家)和一个共享的自注意力层。MoME Transformer包含三个模态专家,即图像编码的视觉专家,文本编码的语言专家以及图文融合视觉-语言专家。


VLMo通用三个任务来联合学习,即ITC、ITM、MLM


提出分阶段的预训练策略可以高效的利用大规模图像数据和文本语料,首先使用BEIT提出的MIM在图像数据上预训练视觉专家和自注意力模块,然后使用MLM在文本语料上预训练语言专家,最后将训练好的模型用来初始化视觉-语言预训练。


在仅图像特征和仅文本特征上进行ITC学习,在图文对儿特征上进行ITM和MLM学习。


VLP(视觉-语言预训练模型)可分为两类:


第一类利用双编码器对图像和文本单独编码,然后使用余弦相似度或者线性投影层对图像和文本进行交互,如CLIP。


第二类使用跨模态的深度融合编码器对图像和文本进行交互,如ViLT、ALBEF。


网络结构如下图所示(文本编码器为BERT,视觉编码器为ViT):


VLMo应用于下游任务:


预训练的base版本使用64个Nvidia Tesla V100 32GB GPU花了2天来训练,large版本使用128个Nvidia Tesla V100 32GB GPU花了三天进行训练。

查看原文 原文转载自微信公众号,著作权归作者所有
阅读 245
文章由 美篇工作版 编辑制作
投诉