多模态大模型工作梳理(施工中....)

本文是对于近年来一些多模态大模型工作的相关总结,重点是这些模型的演化路线,各自做了什么改进。

CLIP

论文链接:https://arxiv.org/abs/2103.00020
以往的图像模型都是采用有监督的预训练,需要在人工标注的数据集上进行学习,这限制了图像模型预训练的数据规模。
CLIP采用了自然语言信号来监督图像模型的学习。人工标注的数据集很贵,但是图片-文本pair对在网上随处都是。因此,作者从网上爬取了一个新的数据集,其中包含4亿对 (图像,文本) 对,用于对比学习。
CLIP训练
CLIP采用了一个图像编码器和一个文本编码器,两者都生成一个向量,通过拉近相同pair对的距离,拉远不同pair对的距离,来进行对比学习。所用的损失为InfoNCE Loss,也是Moco中采用的损失。
ÍCLIP的预测
CLIP的预测不依赖于softmax,因此预测训练中没有出现过的标签。通过将类别标签拓展为多个文本,通过文本编码器后和图像向量进行比较,相似度最高者即为预测结果。
由于采用了以往难以企及的大规模预训练,CLIP有着强大的Zero-shot能力。

SLIP

论文地址:https://arxiv.org/abs/2112.12750
SLIP在CLIP的基础上,引入了更多的模态内部的自监督信号。
SLIP中,一张图片经过三种数据增强形成三张图片:

  1. 图片1和文本做对比学习。
  2. 图片2和图片3做对比学习。
  3. 图片1和文本用了clip embedding层,图片2和图片3用了同一个用于图片的embedding层。

DeCLIP

论文地址:https://arxiv.org/abs/2110.05208
继续引入监督信息,以降低对数据规模的依赖。使用了以下三种监督信号:

  1. 图像-文本对比监督:即clip的监督方法。
  2. 自监督:
  • 图像:使用simsiam的方法,一张图片增强得到两个图片view,用共享参数的encoder提取特征,计算并将提升余弦相似度,然后一边的encoder回传梯度,另一边停止梯度。
  • 文本:使用Bert的MLM预训练。
  1. 最邻近监督学习(Nearest-Neighbor Supervision, NNS):维持一个文本特征队列,对于每一个图像的两个view,选取这个队列中与其最相近的文本特征作为正样本,队列中的其他特征作为负样本,做infonce。这样做是因为非一对的文本和图片并不一定是不匹配的,这样可以挖掘潜在的正样本。

ViLT

论文地址:
以各部分的模型复杂度分类多模态模型
ViLP属于模型d,视觉和文本编码器都很轻量,这也是首个视觉编码器和文本编码器一样轻量的方法。且ViLT不采用目标检测器的同时,没有损失太多精度。
ViLT结构图
ViLT表达式
模型流程:

  1. 文本:使用word embedding对文本进行转换后与model type embedding进行拼接,并加上文本位置编码。
  2. 图像:分块后经过一个线性层进行embedding,与model type embedding进行拼接,并加上图像位置编码。
  3. 文本和图像在向量维度上进行拼接,输入Transformer Encoder中。Transformer Encoder用ViT的预训练权重做初始化(可能是因为没有专门的图像提取器,而图像用transformer提是需要大量预训练的)。

模型预训练:

  1. Image Text Matching:Transformer的输出经过池化和线性层,来判断文本、图片是否为一对。
  2. MLM:Bert的预训练,采用了Whole Word Masking,避免只通过单词上下文进行预测。

ALBEF

论文地址:https://arxiv.org/abs/2107.07651
ALBEF的全名为ALign the image and text representations BEfore Fusing them,顾名思义,在多模态的特征融合之前先进行对齐。
ALBEF模型结构
模型由三部分构成:

  1. 图像编码器:采用12层的ViT-base;
  2. 文本编码器: 采用Bert的前6层;
  3. 多模态编码器: 采用Bert的后6层,使用啦cross attention。

共有三个损失函数:

  1. image-text contrastive learning(ITC):图文对比损失,采用了Moco的feature queue,且图像和文本各维护一个feature queue,单模态的向量各自和另一个模态的队列做infonce;相当于有两个image encoder和两个text encoder,其中一个采用动量更新参数,并构建图像特征和文本特征,并存入队列中,从而增大对比损失时的负样本数量。
  2. Masked Language Modeling(MLM): Bert的预训练。
  3. Image-Text Matching(ITM): 图像和文本的匹配损失函数。采用多模态编码器的[cls],后跟线性层和softmax,进行二分类判断图文是否一致。由于这个任务过于简单,所以采用了hard negatives:对于一个 mini-batch 中的每张图片,按照对比相似度分布(ITC那一步得到的)从同一 mini-batch 中抽取一个不与该图片成对的文本,作为 hard negative(与图片更相似的文本被抽取的机会更高)。同样地,也为每个文本抽取一个 hard negative。

采用动量模型进行蒸馏学习

在高噪声的训练数据集上,很有可能一段不与图像匹配的文本也很好地描述了图像内容,可能比 ground truth 描述地还要好。为了提升在噪声数据上的训练效率,ALBEF 采用了 Momentum Distillation(动量蒸馏)的方法生成 pseudo label(是一个 softmax score)。
ITC:
ITC+知识蒸馏
上式中的p和q即softmax得分
即附加一个对动量模型中ITC得到的softmax score的KL散度。
MLM:
MLM+知识蒸馏
即在MLM部分,附加一个对动量模型的MLM中预测得到的softmax score的KL散度。

VLMo

VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts
论文地址:https://arxiv.org/abs/2111.02358
双塔结构:如CLIP,模态交互较为简单,适用于多模态检索任务。
单塔结构:如ViLP和ALBEF,会融合模态信息,适用于多模态分类。
VLMo是一种统一的多模态模型,将多个模态的编码器统一到了一起,即mixture of modality experts。VLMo的transformer中,多头自注意力的参数都是相同的,即模态间共享;每个模态都有一个属于自己的FFN。VLMo中使用了三种:图像、文本和图像文本混合。
VLMo框架
如上图所示,VLMo可以适配双塔和单塔的任务:

  1. ITC:图像给V-FFN,文本给L-FFN,最后两者做对比学习。
  2. ITM:前几个Block图像和文本分开做,后几个Block把两者拼接起来并给VL-FFN。
  3. MLM:同ITM。
    图像和文本的表征:
    图像表征
    图像:附加一个[cls],patch后展平经过线性层,加上位置编码和图像标记。
    文本表征
    文本:附加一个[cls]和[sep],单词转为词根,经过线性层,加上位置编码和文本标记。
    联合:沿着向量方向拼接文本和图像表征。
    VLMo的预训练也采用了以上三个任务,但是ITC没使用moco,只使用mini-batch内的负样本。同时采用了分阶段预训练,首先利用 BEIT中的大规模纯图self-attention自我注意模块的参数,并在大量纯文本数据上通过掩码语言建模训练语言专家(L-FFN)。最后,对整个模型进行视觉语言预训练,即ITC、ITM和MLM。
    三种预训练任务

BLIP

论文地址:https://arxiv.org/pdf/2201.12086.pdf
BLIP主要的贡献为:

  1. 采用了统一的、混合了encoder-decoder架构完成理解任务和生成任务。
  2. 提出了Captioner-Filter对训练集进行过滤。
    BLIP的框架
    BLIP由三部分构成:
  3. 图像编码器,ViT。
  4. Image-grounded text encoder:Bert的Bi Self-Att后加了一个Cross Att用于多模态交互。在ITC中提取文本特征时,不使用Cross Att,该种情况下,仅做文本编码器。在ITM任务中,使用Cross Att用于多模态融合。
    3.Image-grounded text decoder: 将编码器的Bi Self-Att换成Causal Self-Att,其他部分不变。

BLIP的训练任务整体与ALBEF相似,都采用了moco、infonce和动量蒸馏,采用了ITC和ITM损失,但是将MLM换成了LM(Language Modeling)。

  1. ITC: 与ALBEF相同。
  2. ITM: 使用多模态编码器来进行模态交互,其他与ALBEF相同。
  3. LM:给定文本前缀和图片,预测下一个词是什么。
    在进入三项任务前,文本前都会加上不同的标识符以做区分(见框架图)。

CapFit

为了提升对数据噪声的鲁棒性,BLIP采用Captioner、Filter的机制。BLIP先在全量数据上进行预训练,获得一个初步的预训练模型,后再在COCO上进行微调,并得到它的动量模型。
Filter: 使用Image-grounded text encoder去过滤不匹配的图文对。
Captioner: 使用Image-grounded text decoder生成另一段标注,再用Filter去决定要不要留下这图文对。
最后用清洗过的数据集进行预训练。

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

论文地址:https://arxiv.org/abs/2301.12597
BLIP2使用了Q-Former(一个小型的Transformer,约180M)来对齐视觉特征和文本特征,使得可以直接使用那些预训练好的单模态模型(原先这两个模型是没对齐的),从而极大地减少了训练成本。

预训练阶段1:表征学习

BLIP2表征学习

  1. 图像编码器,是冻结参数的。
  2. Q-Former:由两个Transformer组成,一个用于处理Query(一组可学习的token),另一组处理文本token。左边的Transformer的每一个偶数层都插入了一个随机初始化的CA,每一个SA都以image encoder的输出为图像侧的输入。左右两个Transformer都用Bert-Base作为初始化(除CA),且Self-Attention部分共享参数(这使得query token和text token也是互相可见的)。

文中说的是,Q-Former能够提取Image token中那些最和text相关的部分,且不管image token有多少个,都能得到最相关的那N个。这N个其实就是query token,因为query token作为query,是image token作为key和value聚合而成的。

阶段一也有ITC,ITM和ITG(Image-Grounded Text Generation,其实和BLIP的LM一样)三个训练任务,为了使得信息不泄露,三个任务中,Attention的Mask不同(BLIP2表征学习的右图)。具体而言,ITM中,使用的双向注意力,query token和text token互相可见。ITC中,query token和text token互相不可见,但各自内部是可见的。在ITG中,text token的待预测部分被masked。

预训练阶段1:图像生成文本学习

阶段1的Q-Former已经学习到了根据文本提取图片特征,阶段2的任务是把图片特征喂给冻结的LLM,根据图片特征生成文本,以进一步对齐图片-文本特征。
BLIP2阶段2

  1. 纯Decoder的LLM:将query token升维后喂给LLM,期望它生成文本。
  2. Encoder-Decoder的LLM:将query token和前缀text token升维后喂给LLM,期望它生成后缀。

BLIP2不用训练视觉模型,因此可以使用比较heavy的视觉模型。它在LLM上的训练不涉及LLM的更新,因此LLM不会出现灾难性遗忘的问题。

Coca

https://blog.csdn.net/lansebingxuan/article/details/131611916

posted @ 2024-03-14 00:16  InunI  阅读(352)  评论(0编辑  收藏  举报