> 技术文档 > 多模态论文阅读总结

多模态论文阅读总结


多模态任务类型

图文检索(Image-Text Retrieval):衡量指标为召回率。
视觉蕴含(Visual Entailment):假设一个前提,能够推理出这个这个前提,如果能推理出来,就是一个蕴含的关系,或者前后矛盾推不出来,或者不知道前后什么关系,就是中立。衡量指标为准确度
视觉问答(Visual Question Answering):给定义一个问题和一个问题,是否能回答这个问题。可以看做分类问题,叫做闭集VQA;或者是开集VQA,也就是生成文本的任务。
视觉推理(Natural Language For Visual Reasoning):预测一个文本能否描述一对图片,即二分类。衡量指标:准确度。
视觉定位(Visual Grounding)

ALBEF

图像侧是一个12层的Transformer Block,文本侧将12层的BERT Model拆成了两部分,前六层做文本编码器,后六层用来做多模态融合的编码器。
从目标函数上看,使用了ITC Loss(Image - Text Contrastive Loss)和 ITM(Image - Text Matching)、MTM(Mask Language Modeling)这三个来训练模型
noisy web data: 从搜索引擎下载下来的图像-文本对,大多是具有搜索属性的,不是很好的描述性的句子。使用动量模型去生成伪标签,从而实现自训练的方式。
对于图像,经过VIT模型,得到图像特征。(其中,使用 [CLS] Token代表整个图像的信息,即全局特征),然后对这个[CLS] Token 向量做下采样,将768×1768×1768×1的向量变为256×1256×1256×1的向量。
;对于文本,经过6层的Transformer Block,得到文本特征。(其中,使用[CLS] Token代表整个句子的文本信息)。然后对这个[CLS] Token 向量做下采样,将768×1768×1768×1的向量变为256×1256×1256×1的向量。
同时将负样本存在一个队列中,然后对模型进行图像-文本对比学习。也就是图像特征与文本特征进入Multimodel Encoder做融合之前,将图像、文本尽可能地拉得很近了。
还有一个动量模型,是另外的一份模型参数,是由左侧的模型的模型参数经过 移动平均 得到的。
ITC Loss:在做对比学习的时候,要定义正样本对,以及其他负样本对,我们希望正样本之间的距离越来越近,负样本对之间的距离越来越远。首先,我们需要抽取全局特征,在特征之间做Embedding Space上的拉进、拉远。
ITM Loss:对于一张图片和一个句子,经过 ALBEF 模型(通过Multimodel Encoder)得到一个向量,经过 FC 层,去判断图像与文本是否是为一对,实际上就是一个二分类。如果判断图像与文本是否为正样本,是有一定难度的,但是判断图像与文本是否为负样本,任务就变得太简单。如果不对负样本做任何约束,那么很快准确度就很高。因此,这里采用选择与正样本最接近的负样本作为困难负样本。具体来说,假设 Batch Size 大小为 N,对于 ITM Loss 来说,正样本对为 N 个。 对于Batch内的所有图片,与所有的文本计算一遍余弦相似度,然后选择除了它自己之外相似度最高的文本作为负样本。
MLM:通过 mask 掉一些词,将原来的完整句子 TTT 变为 T′T^{\'}T,然后将图片与 缺失的句子T′T^{\'}T一起输入ALBEF 模型,然后去把完整的句子给预测出来。
在计算上述三个 Loss 时,每次训练迭代时,ALBEF 做了两次的 Forward过程,一次的输出是 IIITTT,一次是III和 mask 后的T′T^{\'}T

动量模型

先构建一个动量模型,由动量模型生成 Pseudo-Targets,也就是 Softmax Score,不再是 One-Hot-Label。如何构建动量模型?使用指数移动平均。
在训练时,我们希望预测不仅与 Ground Truth 的 One Hot Label 尽可能接近,还想
让它与动量模型生成的 pseudo target 尽可能匹配。
以 ITC Loss 为例,修正后的 Loss 为
Litcmod=(1−α)Litc+α2E(I,T)∼D[KL(qi2t(I)∥pi2t(I))+KL(qt2i(T)∥pt2i(T))]\\mathcal{L}_{\\mathrm{itc}}^{\\mathrm{mod}}=(1-\\alpha)\\mathcal{L}_{\\mathrm{itc}}+\\frac{\\alpha}{2}\\mathbb{E}_{(I,T)\\sim D}\\left[\\mathrm{KL}(\\boldsymbol{q}^{\\mathrm{i}2\\mathrm{t}}(I)\\parallel\\boldsymbol{p}^{\\mathrm{i}2\\mathrm{t}}(I))+\\mathrm{KL}(\\boldsymbol{q}^{\\mathrm{t}2\\mathrm{i}}(T)\\parallel\\boldsymbol{p}^{\\mathrm{t}2\\mathrm{i}}(T))\\right]Litcmod=(1α)Litc+2αE(I,T)D[KL(qi2t(I)pi2t(I))+KL(qt2i(T)pt2i(T))]
修正后的 MLM Loss 为:
Lmlmmod=(1−α)Lmlm+αE(I,T^)∼DKL(qmsk(I,T^)∥pmsk(I,T^))\\mathcal{L}_{\\mathrm{mlm}}^{\\mathrm{mod}}=(1-\\alpha)\\mathcal{L}_{\\mathrm{mlm}}+\\alpha\\mathbb{E}_{(I,\\hat{T})\\sim D}\\mathrm{KL}(q^{\\mathrm{msk}}(I,\\hat{T})\\parallel p^{\\mathrm{msk}}(I,\\hat{T}))Lmlmmod=(1α)Lmlm+αE(I,T^)DKL(qmsk(I,T^)pmsk(I,T^))
最后,模型的 Loss 有五个。
对于 ITM 的 Loss 本身就是基于 GroundTruth的,必须要知道图像与文本是不是一对。

VLMO

模型结构上的改进,训练方式的改进(分阶段训练)
过去的主流架构有两种:双塔机构、融合 Encoder。
出发点:将上面两种结合起来。

模型结构上的改进

MoME
Loss函数与 ALBEF 的 Loss 一样。
以Transformer Encoder 为基础做了改动,即 MoME Transformer。具体来说,在 FFN 的地方,不是一个前馈网络,而是针对不同的输入,不同的模态,有Vision FFN,Language FFN,Vision Language FFN三个不同的 FFN,即 Switching Modality Expert,构建出 MoME Transformer Block,最后构建出 VLMO 整个的结构。
self Attention 的 modules 是共享参数的;但是 3 个 FFN 是不贡献参数的。
在训练时,当计算 ITC Loss 时,VLMO 就等同于 CLIP 模型。当计算 ITM、MLM 时,在前 L-F 层的 Transformer Block,对视觉和文本分类经过 Vision Expert和 Language Expert,在最后的 F 层,使用了 Vision Language Expert。

训练方式的改进

BLIP

Image Captain
对于图像,经过VIT模型得到图像特征;对于文本,有三个模型,分别是标准的Text Encoder、Image-grounded Text Encoder、Image-grounded Text Decoder。有三个目标函数,ITC loss、ITM loss、LM loss。
在每一次训练迭代时,图像端只需要做一次Forward,而文本端需要做三次Forward,然后分别去计算对应的目标函数。

Captioner 与 Filter

假设有一个数据集,里面包含从互联网爬取的数据集,其中从网络爬取的数据集许多图像文本不匹配,含有很多噪音;另外就是手工标记的数据集,比如 CoCo 数据集。
如果用含有噪音的数据集,去训练一个模型,那么它的效果就不是很好。那么如果想去清理一下该数据集,从而达到最优解,该如何去做?
需要训练这样一个模型,能够判断图像文本之间的相似度,相似度高的匹配,相似度不高的不匹配。也就是这里的 Filter,那么这个模型是如何训练的呢?利用已经训练好的 MED 模型,将图像模型和文本模型取出来,然后再干净的数据集上做微调,微调过后的 MED 就是 Filter。经过过滤后,将将原来不是很匹配的文本变为更匹配的文本。
Captioner
用生成的文本得到训练的数据集,是否能够得到更好的模型?
在干净数据集上,微调了 Image-grounded Text Encoder得到 Captioner,然后给定从网上爬取的图像,生成一个 Captain。
通过上述两步,得到新的数据集(数据集变得更大了,质量变得更高),拿这个新的数据集,去再训练 MED,得到更强的模型。

BLIP2

动机:相较于大规模的文本、图像数据,文本-图像对数据比较少,因此作者冻结了预训练的图像编码器、文本语言模型,仅训练包含少量参数的Q-Former层作为将视觉特征映射为文本特征的纽带(这是因为视觉特征与文本特征有很大的Gap)。
训练分为两阶段:第一阶段进行表示学习,使得Q-Former学习与文本最相关的视觉表示;第二阶段进行生成学习,使得Q-Former学习到的视觉表示能够为大语言模型所用。
Q-Former