1. 综述2. 多模态经典方法CLIP: 连接文本和图像的桥梁ViLT:一种极简多模态学习框架 BaselineALBEF:先对齐后融合VLMO: 混合多模态专家的视觉语言预训练BLIP:理解、生成都要CoCa: 让模型训练得更快一点BEITv3:图片也是一种语言BLIP2:将图像特征对齐到预训练语言模型InstructBLIP:指令微调训练通用视觉语言模型MiniGPT-4:LLM 助力多模态Visual Instruction Tuning:继续将指令微调发扬光大VisualGLMCogVLM:视觉优先再现江湖MiniGPT-5:多模态生成是未来GPT-4V:远远领先!ImageBind:更多模态一起对齐Meta-Transformer:用一个 Transformer 模型去编码12类模态3. 多模态个人总结4. 下游任务(视频理解)Video-LLaMa:利用多模态增强对视频内容理解(分类)Text as Images:文本替代图像(分类) CDUL:多标签分类(音视频异常检测)AVAD:视听同步(分类)DAC:域对齐(分类)Rumor-Short-Video:多模态对比学习5. CLIP的微调MBT:加入跨模态融合模块MaPLe:多模态提示学习Self-regulation Prompts:引入正则化TCL:考虑模态内对比6. 参考
1. 综述
常见的多模态研究分为以下五类:
- 表征。如何挖掘模态间的互补性或独立性以表征多模态数据。
- Joint结构注重捕捉多模态的互补性,融合多个输入模态 获得多模态表征 ,进而使用 完成某种预测任务。网络优化目标是某种预测任务的性能。
- Coordinated结构并不寻求融合而是建模多种模态数据间的相关性,它将多个(通常是两个)模态映射到协作空间,表示为: ,其中~表示一种协作关系。网络的优化目标是这种协作关系(通常是相似性,即最小化cosine距离等度量)。
相较于多模态,基于单模态的表征学习已被广泛且深入地研究。在Transformer出现之前,不同模态所适用的最佳表征学习模型不同,例如,CNN广泛适用CV领域,LSTM占领NLP领域。较多的多模态工作仍旧局限在使用N个异质网络单独提取N个模态的特征,之后采用Joint或Coordinated结构进行训练。不过这种思路在很快改变,随着越来越多工作证实Transformer在CV和NLP以及Speech领域都可以获得极佳的性能,仅使用Transformer统一多个模态、甚至多个跨模态任务成为可能。基于Transformer的多模态预训练模型在2019年后喷涌而出,如LXMERT, Oscar, UNITER属于Joint(单塔)结构,CLIP, BriVL 属于Coordinated(双塔)结构。
- 翻译。学习一个模态到其他模态的映射。例如:image captioning。
- 对齐。将多模态数据的子元素进行对齐。例如phrase grounding任务:将一幅图中的多个物体与一段话中的短语(或单词)进行对齐。在学习表征或翻译时也可能隐式地学习对齐。
- 显示对齐。如果一个模型的优化目标是最大化多模态数据的子元素的对齐程度,则称为显示对齐。包括无监督和有监督方法。无监督对齐:给定两个模态的数据作为输入,希望模型实现子元素的对齐,但是训练数据没有“对齐结果”的标注,模型需要同时学习相似度度量和对齐方式。而有监督方法存在标注,可训练模型学习相似度度量。Visual grounding便是有监督对齐的任务,而weakly-supervised visual grounding是无监督对齐的任务。
- 隐式对齐。如果模型的最终优化目标不是对齐任务,对齐过程仅仅是某个中间(或隐式)步骤,则称为隐式对齐。早期基于概率图模型(如HMM)的方法被应用于文本翻译和音素识别中,通过对齐源语言和目的语言的单词或声音信号与音素。但是他们都需要手动构建模态间的映射。最受欢迎的方式是基于注意力机制的对齐,我们对两种模态的子元素间求取注意力权重矩阵,可视为隐式地衡量跨模态子元素间的关联程度。在图像描述,这种注意力被用来判断生成某个单词时需要关注图像中的哪些区域。在视觉问答中,注意力权重被用来定位问题所指的图像区域。很多基于深度学习的跨模态任务都可以找到跨模态注意力的影子。
跨模态对齐目的是挖掘多模态数据的子元素之间的关联性,例如visual grounding任务。对齐广泛应用于多模态任务中,具体的应用方式包括显式对齐和隐式对齐。
对齐可以作为一个单独的任务,也可以作为其他任务的隐式特征增强手段。多模态对齐可挖掘子元素间的细粒度交互,同时有可解释性,被广泛应用。但多模态对齐面临如下挑战:仅有少量数据集包含显式的对齐标注;跨模态度量难以设计;可能存在多种对齐,也可能存在某些元素无法在其他模态中找到。
- 融合。融合两个模态的数据,用来进行某种预测。例如:Visual Question Answering需融合图像和问题来预测答案;Audio-visual speech recognition需融合声音和视频信息用以识别说话内容。
若测试场景下的输入数据包含多个模态,那么必须面对多模态特征融合。多模态融合是多模态机器学习最原始的议题之一。
模型无关的融合策略:
前融合:指在模型的浅层(或输入层)将多个模态的特征拼接起来。后融合:独立训练多个模型,在预测层(最后一层)进行融合。混合融合:同时结合前融合和后融合,以及在模型中间层进行特征交互。
基于模型的融合策略:
多核学习(Multiple Kernel Learning)是SVM的扩展。SVM通过核函数将输入特征映射到高维空间,使线性不可分问题在高维空间可分。在处理多个输入时,多核处理多个模态特征,使得每个模态都找到其最佳核函数;基于概率图模型利用隐马尔可夫模型或贝叶斯网络建模数据的联合概率分布(生成式)或条件概率(判别式)。基于神经网络的融合。使用LSTM、卷积层、注意力层、门机制、双线性融合等设计序列数据或图像数据的复杂交互。
讨论:多模态融合是依赖于任务和数据的,现有工作中常常是多种融合手段的堆积,并未真正统一的理论支撑。对于这种由任务/数据所导致的融合策略的选择问题,十分适合用Neural Architecture Search高效且自动地搜索。当然,多模态融合仍存在的挑战:不同模态的序列信息可能没有对齐;信号间的关联可能只是补充(仅提高鲁棒性而无法增大信息量)而不是互补;不同数据可能存在不同程度的噪声。
- 共同学习(co-learning)。模态间的知识迁移。使用辅助模态训练的网络可以帮助该模态的学习,尤其是该模态数据量较小的情况下。
2. 多模态经典方法
CLIP: 连接文本和图像的桥梁
论文名称:Learning Transferable Visual Models From Natural Language Supervision (ICML 2021)
CLIP 是由 OpenAI 在 2021 年提出的预训练模型,用于评估给定图像与给定文本描述的匹配程度。该模型使用大量(约 4 亿)从网页中爬取的图像 - 文本对 (pair) 数据进行对比学习。
数据的收集:
- 搜索了 50w 个 queries(query 列表主要来自英文版维基百科中至少出现 100 次的所有单词,并做了些其他补充)
- 为了保证每个 query 的数据相对平衡,每个 query 保留最多 2w 个(image, text)
典型的双塔模型,有两个 encoder,一个对应图片,一个对应文本,图像和文本经过各自的 encoder 后,通过简单的点乘来代表不同模态的交互(相似性)。
训练时,假设一个 batch 有 对(图像,文本)对,可以有 N x N 种组合方式,对比学习把原始数据集中的 N 个组合作为正样本(下图对角线),把其他的 种组合作为负样本(下图非对角线)。
模型训练的目标就是最大化对角线上的分数,并最小化对角线外的分数。这里从分类的角度给大家一个关于损失函数的理解,可以把每一行 / 列看作是个一个 N 分类问题,其中分类的标签就是真实图文组合所在位置 (也就是对角线),比如第一行的 label 是 0,第二行的 label 是 1,以此类推。
论文中给出了实现 CLIP 的 numpy 风格伪代码,
因为 CLIP 在两个 encoder 后只进行了简单的内积作为模态的交互,对于复杂点的任务就不那么 work 了,一个顺其自然的发展就是去增强不同模态的交互 / 融合,也就是可以用一个神经网络来替换内积。
ViLT:一种极简多模态学习框架 Baseline
论文名称:ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision (ICML 2021)
ViLT 可以看做是一种极简多模态学习框架 Baseline,它的特点是把每个模态的特征抽取部分做到了最小化,把主要的计算量都使用 Transformer 放在了特征融合部分,在很大程度上推动了当年多模态学习的进展。比如图片部分需要一个特征提取器,文本部分呢,也需要一个特征提取器。目前的 Vision-and-Language Pre-training (VLP) 方法严重依赖于图像特征提取过程,其中大部分涉及区域性特征 (如目标检测) 和卷积架构 (如 ResNet)。ViLT 的图片和文本的特征提取模型都是 Convolution-Free 的极简架构。作者表明,ViLT 比以前的 VLP 模型快十倍,但具有竞争力或更好的下游任务性能。那么 ViLT 到底做了什么呢?其实从题目中的 "Without Convolution or Region Supervision" 就大概看得出来,ViLT 把以往多模态工作中的目标检测部分的区域性特征,从多模态学习的框架中给移除了。
式中,文本输入 通过 Word Embedding 矩阵变为 , 即文本位置编码的维度是。
图像输入首先通过分块操作分成 大小的 N个 Patch,并展平成 维度的向量, 。通过线性投影矩阵变为 , 即图像位置编码的维度是 。
是文本的 Embedding,后面还要加上 ,这是一个表示模态的变量。是图像的 Embedding,后面还要加上 ,这是一个表示模态的变量。把图像的 Embedding 和文本的 Embedding 拼接在一起之后得到 z^0为全部的 Embedding,并喂入 Transformer 模型。经过 D层 Transformer 块之后,得到的 z^D_0通过一个线性变换 和函数得到输出 p 。
对于权重以 ViT-B/32 的预训练权重做初始化模型 ViLT-B/32,隐维度大小 H为 768,深度 D为 12,Patch 大小 P为 32,MLP 中间尺寸大小为 4×768=3072,注意力 head 数为 12。
ALBEF:先对齐后融合
论文名称:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation (NeurIPS 2021)
文章的主要贡献有两个:
- ALBEF 解决了多模态领域中图像和文本对齐、交互的问题。在 ALBEF 之前,多模态方法通常使用 transformer 的多模态编码器来同时编码视觉和文本特征,由于目标检测器是提前训练好的,因此视觉和文本特征并不是对齐的。图像和文本特征可能距离很远,这使得多模态编码器难以学习到它们之间的交互。为了解决这个问题,ALBEF 通过一个对比损失(也就是 CLIP 中的 ITC 损失)在进行多模态交互之前对齐图像和文本数据。
- 网上爬取的大量图文对通常噪声很大(图文不匹配)。ALBEF 采用动量蒸馏(momentum distillation)的自训练方法来从网络图文对数据中学习,以缓解原始数据中的噪声问题。从理论上讲,ALBEF 通过互信息最大化的角度解释了不同的多模态任务,说明不同任务实际上为图文对提供了不同的视角,类似于数据增强,使得训练得到的多模态模型能够理解不同模态下的语义,具备语义保持的能力。
接下来看一下模型的结构:
- 下面红色框其实就类似于 CLIP,双塔各自编码图像和文本,然后取 CLS 进行对比学习;
- 上面蓝色框就是为了加强不同模态交互用的编码器(前面提到过 CLIP 内积的方式太简单了,这里就是加强多模态融合以适配更难的任务);
- 视觉编码器就是 ViT,初始化权重也是来自它;
- 图像编码器 12 层,文本编码器 6 层,多模态编码器 6 层;其实右侧是将一个 12 层的文本编码器拆成了两部分,这是因为一些研究工作发现在多模态中需要更强的图像编码器,进行这样的拆分一定程度上保证了强图像 encoder 和弱文本 encoder,且保证了模型参数不过多的情况下融合图像和文本的信息。
训练的目标函数:
- ITC loss,这个跟 CLIP 是一样的
- ITM loss,在 ITM 任务中,模型需要判断一对图像和文本是否匹配。为了实现这一目标,论文使用多模态编码器输出的 [CLS] token 的嵌入作为图像 - 文本对的联合表示,并通过一个全连接层和 softmax 函数来预测一个二分类的概率。由于判断 batch 内的负样本过于简单,文章提出通过 ITC loss 计算得到的各样本间的余弦相似度,取除正样本外相似度最高的作 "hard negatives"。
- MLM loss,mask 掉一些文本,然后将 mask 过后的文本和图片一起通过 ALBEF 模型,预测 mask 掉的文本。因此,ALBEF 的每一轮迭代需要经过两次前向传播的过程。多模态学习的方法通常训练时长较长,就是因为需要进行多次前向传播,计算不同的损失。
总的 loss 就是三个 loss 简单加和:
动量蒸馏:通过保持一个模型的动量版本来生成伪标签,作为额外的监督信号进行训练。为了克服noisy data的问题。
- 使用基础模型的参数的指数移动平均版本作为动量模型
- 使用动量模型生成的伪标签(是个分布)进行训练
- 主模型的预测既要跟 one-hot 标签尽可能接近之外,也要跟 pseudo-targets 尽可能接近(KL 散度)
ITC loss:
MLM loss:
多模态编码器能够提高不同模态交互 / 融合的能力,使得模型在一些任务上表现更好,但是在检索任务数据集大的时候,推理时间会非常慢,那能不能解决这个问题?
VLMO: 混合多模态专家的视觉语言预训练
论文名称:VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts (NeurIPS 2022)
VLMo 模型通过使用混合模态专家(MoME)Transformer 实现了统一的视觉 - 语言预训练。MoME Transformer 的结构设计允许根据输入信号的不同使用对应的 FFN 层参数进行计算。具体来说,VLMo 模型包括了视觉专家(V-FFN)、文本专家(L-FFN)和图文专家(VL-FFN),它们分别用于处理图像、文本和图像 - 文本输入。这种灵活的设计使得 VLMo 模型能够根据任务的不同使用不同的结构进行训练和推理。
在预训练阶段,VLMo 模型采用了三种任务:图像 - 文本对比学习(ITC)、图像 - 文本匹配(ITM)和掩码语言建模(MLM)。在 ITC 任务中,VLMo 模型以双塔结构对图像和文本进行嵌入。在 ITM 和 MLM 任务中,VLMo 模型以融合编码器的形式,分别提取图像和文本的特征,并通过 MoME Transformer 进行模态融合。VLMo 模型使用不同的 FFN 层参数来计算不同任务的损失函数,并更新对应的参数。
图像的表征
遵循 ViT 的做法对输入图片 进行分块操作,分成 个等大的 Patch 。其中, C 是通道数, N 是序列长度, P 是 Patch 的大小, H,W 是图片的大小。图像块再被展平为向量,并经过线性投影之后获得 Patch Embedding。VLMo 模仿 ViT 的做法添加一个 [I_CLS] token,加上 1D 位置编码 以及类型编码 ,最终得到: ,式中 ,投影为 。
文本的表征
遵循 BERT 的做法先把输入单词转化成词根,再经过线性投影之后获得 Word Embedding。VLMo 模仿 ViT 的做法添加一个 [T_CLS] token 和结束符 [T_SEP],加上 1D 位置编码 以及类型编码 ,最终得到:,式中 ,投影为 。其中, M 是 tokenized 词根长度。
文本和图像的表征
作者把图像和文本输入向量拼接在一起形成文本和图像的表征: 。
VLMo 的模型架构
我们在前面提到,VLMo 相当于是一个混合专家 Transformer 模型。那既然是 Transformer 模型 (Mixture-of-Modality-Experts, MoME),就肯定还是需要遵循 Transformer 的一般设计思路,即:如下图1所示,MoME Transformer 也是先一个 Multi-Head Self-Attention 的子模块,再串联一个 FFN 的子模块。但是和正常 Transformer 不同的是,这个 FFN 子模块是由3个并行,独立的 FFN 并联得到的。这3个 FFN 分别是 Vision-FFN,Language-FFN 和 Vision-Language-FFN,作者称它们分别为:视觉专家,文本专家和视觉文本专家。它们可以看成是3个专家模型,但是前面的 Multi-Head Self-Attention 都是共享权重的。
那设计成这样的好处是什么呢?就是这个 MoME Transformer 可以分情况选择不同的专家来使用。
- 当我们要做对比学习任务 (ITC) 的时候,如下图1右上所示,VLMo 和 CLIP 很像,可以让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,把得到的输出做对比学习即可。
- 当我们要做图文匹配任务 (ITM,二分类) 的时候,如下图1右中所示,可以在前几个 Block 让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,在后几个 Block 把信息给视觉文本专家,然后做二分类即可。
- 当我们要做完形填空任务 (MLM,预测任务) 的时候,如下图1右下所示,可以在前几个 Block 让视觉专家 V-FFN 输入视觉信息,让文本专家 L-FFN 输入文本信息,在后几个 Block 把信息给视觉文本专家,然后做预测即可。
简答概括一下就是:如果输入是纯图像或者纯文本,就使用视觉专家和文本专家分别对输入的图像和文本进行编码。如果输入由多模态的向量组成,比如是图像和文本的拼接,就先使用视觉专家和文本专家分别对输入的图像和文本进行编码,再使用多模态专家进行联合地交互。VLMo 根据需求可以灵活地使用不同的专家模型,不论是架构层面还是训练层面都很灵活。
VLMo 的预训练方法
VLMo 的预训练任务也基本遵循了常规多模态学习的方案的3个经典预训练任务,分别是:
- 对比学习任务 (Image-Text Contrast, ITC)
给定一个 Batch 的 N 个图像-文本对,图像-文本对比学习旨在从 个可能的图像-文本对中预测匹配的对。训练批次中有 N 个正样本和 个负样本。
简单来讲,视觉专家 [I_CLS] token 的输出和文本专家 [T_CLS] token 的输出,分别经过一个线性映射层和归一化,得到 和 ,然后再按照下式来计算相似度:
式中, 代表第 i 张图片和第 j 个文本的 image-to-text相似度, 代表第 i 个文本和第 j 张图片的 text-to-image 相似度。 是学习的温度参数。和 是 Softmax 归一化之后的相似性。使用图像到文本和文本到图像相似性的交叉熵损失来训练模型。
- 图文匹配任务 (Image-Text Matching, ITM,二分类)
预测图像和文本是否匹配,作者使用 [T_CLS] token 的最终向量来表示图像-文本对,并将向量输入到具有交叉熵损失的分类器中进行二分类。作者遵循 ALBEF 的做法使用 hard negative 的图文对以辅助训练。
- 完形填空任务 (Masked Language Modeling, MLM,预测任务)
遵循 BERT 的做法,随机选择文本序列中的标记,并用 [MASK] 标记替换。训练 VLMo 模型使之从 "未被 mask 掉的文本" 和 "视觉信息" 中预测盖住的词是什么。使用分类器得到 masked token 的输出分布,交叉熵损失训练。
除此之外,因为是针对3个专家模型的训练,所以作者还开发了一种分阶段的预训练方案,目标是利用大规模的纯图像的数据集和纯文本的语料库。如下图2所示:
- 第1步 (视觉预训练):在纯图像数据集上面预训练视觉专家模型,方案就是 Masked Image Modeling 的做法。文本专家模型和视觉文本专家模型的 FFN 权重冻结,共享的 Self-Attention 参数更新。
- 第2步 (文本预训练):在纯文本数据集上面预训练文本专家模型,方案就是 Masked Language Modeling 的做法。视觉专家模型和视觉文本专家模型的 FFN 权重冻结,共享的 Self-Attention 参数也冻结,注意这里的 Self-Attention 的参数还是视觉数据集上面训练出来的了。
- 第3步 (多模态预训练):在多模态数据集上面预训练文本专家模型,方案就是上面的3个目标函数,所有参数都开放更新。
VLMo 经过了前两个阶段的预训练之后,视觉和文本专家的参数都得到了很好的初始化,这样在进行第三阶段多模态预训练时的泛化性能就比较好。
VLMo 模型的优势之一是其灵活性。在训练阶段,根据任务的不同使用不同的结构计算损失函数,并更新对应的参数。这样的训练过程需要多次模型前向计算,但在推理阶段,灵活性的优势得到了体现。对于检索类任务,可以使用单独的文本 / 图像编码器提取特征,提高处理效率;而对于推理类任务,可以通过图文编码器进行充分的模态交互。这种设计巧妙地解决了传统视觉 - 语言模型中双编码器和融合编码器之间的冲突。
另一个 VLMo 模型的优化是引入大规模的图像和文本数据进行分阶段的预训练。首先,在图像数据上训练视觉专家和自注意力层的参数;然后,在文本数据上训练文本专家的参数;最后,在多模态数据上训练自注意力层和三种专家的参数。通过这种分阶段的预训练策略,VLMo 模型能够学习到更具泛化能力的表示。
BLIP:理解、生成都要
论文名称:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML 2022)
多模态本身是一个混沌的命题。CLIP直接用ViT做出图像的embed,用BERT做出文字的embed,然后两者做双塔的contrastive learning来匹配语意,其实是很难从先验的角度出发证明work的。从后验角度出发,可以解释为文字和图像具有概念层面的统一性,比如“狗”和一张狗的图片共享一个ontology,但是也让人觉得不可思议。大量多模态的工作提到,在图像任务中加入文本模态可以提升图像任务的性能,在文本任务中加入图像模态训练可以提升文本任务的性能,也说明了这种后验关系。
文章的研究动机:
- 现有的预训练模型通常在理解型任务或生成型任务中表现出色,但很少有模型能够同时在这两种任务上达到优秀的性能。
- 现有的性能改进主要是通过扩大数据集规模并使用从网络收集的带有噪声的图像 - 文本对进行训练实现的。然而,网络数据集中的噪声会对模型的性能产生负面影响。
主要的贡献:
- 统一了图像 - 语言的理解与生成任务
- Bootstrap 的方式清洗网络噪声数据
在模型的设计上结合了 ALBEF 和 VLMo,看下图中红色框中就类似 ALBEF,只是画 image-grounded text encoder 的位置不同;蓝色框中类似 VLMo,虽然有三个模型,但是大部分参数都是共享的。
- 左一为 Image Encoder(图像编码器):该组件使用 Vision Transformer(ViT)对图像进行编码,将全局图像特征表示为一个额外的 [CLS] 标记。
- 左二为 Text Encoder,采用了 BERT 的结构,提取文本特征用于与视觉特征计算 ITC loss。Text Encoder 不与视觉特征计算交叉注意力。
- 左三为 Image-grounded Text Encoder(基于图像的文本编码器),该组件通过在每个 Transformer 块的自注意力(Self-Attention)层和前馈神经网络(Feed Forward Network)之间插入一个交叉注意力(Cross-Attention)层,将视觉信息注入到文本编码中,提取文本特征用于计算 ITM 损失。
- 左四为 Imagegrounded Text Decoder(基于图像的文本解码器),用于进行 LM 语言建模训练(这里不再是用 MLM 了),生成与图像相关的文本描述。
- 三个文本编解码器分别为在文本前添加 [CLS]、[Encode]、[Decode] token
- 与 ALBEF 一样,同样采用动量模型为 ITC 生成伪标签;使用 ITC 为 ITM 进行难负例挖掘。
BLIP 的训练流程:
- 使用含噪声的数据训练一个 MED(Multimodal Mixture of Encoder-Decoder)模型;
- 将该模型的 Image-grounded Text Encoder 和 Image-grounded Text Decoder 在人工标注的 COCO 数据集上进行微调,分别作为 Filter 和 Captioner;
- Captioner 根据图像数据生成对应的文本描述;
- Filter 对噪声较大的网络数据和生成数据进行过滤清洗,得到较为可靠的训练数据;
- 再根据这些可靠的训练数据,训练更好的 MED 模型,从而实现 bootstraping 训练。
CoCa: 让模型训练得更快一点
论文名称:CoCa: Contrastive Captioners are Image-Text Foundation Models
CoCa 将解决图像或多模态问题的模型概括成 3 种经典结构,分别是 single-encoder model、dual-encoder model、encoder-decoder model。Single-encoder model 指的是基础的图像分类模型,dual-encoder model 指的是类似 CLIP 的双塔图文匹配模型,encoder-decoder model 指的是用于看图说话任务的生成式模型。
CoCa 的出发点就是将三种类型的模型结构进行统一,它是 ALBEF 的后续工作,从结构上看来,都是左侧处理图像,右侧文本从中间劈开,前半段处理文本,后半段进行不同模态的融合。与 ALBEF 最大的不同在于 CoCa 右侧处理文本和进行多模态融合的网络是一个 decoder 而非 encoder。
在模型的训练上,看名字就能知道它是使用对比损失和文本生成损失进行训练,也就是使用了 ITC 和 LM loss;这里没有使用 ITM loss,减少了模型参数每次迭代所需前向传播的次数,从而降低了训练时间。
BEITv3:图片也是一种语言
论文名称:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks (CVPR 2023)
BEIT-3 这个工作的关键词就是:大一统,即:用一个模型架构和一个训练任务,打造出多模态领域的集大成者。BEITv3 的主要想法就是希望统一多模态学习中的模型结构、预训练任务以及模型规模。为此将图片也看作一种语言(Imglish),图像文本对看作是 parallel sentences。在输入形式统一之后,也就不需要 ITC、ITM、MLM、WPA 等其他目标函数,而是可以使用统一的 masked “language” modeling 的方式进行训练。
具体而言,作者从三个方面实现了大一统:模型架构(VLMo中使用的 Mixture-of-Modality-Experts, MoME,即 Multiway Transformer)、预训练任务 (Mask Data Modeling) 和模型缩放 (把模型放大)。
BEITv3 的模型结构使用的是 Multiway Transformer (其实就是前面 VLMo 的 MoME),因此也就具备了之前提到的灵活性的特点,可以适用于非常多的下游任务。
文章使用了一个统一的预训练任务:masked data modeling。该任务涉及到对单模态数据(如图像和文本)以及多模态数据(如图像 - 文本对)进行掩码操作,并训练模型来恢复被掩码的标记。
- 文本数据使用 SentencePiece tokenizer 进行 tokenize
- 图像数据使用 BEIT v2 的 tokenizer 进行 tokenize,以获得离散的视觉 token 作为重构的目标
- 当输入数据是纯文本时,掩码的比例是 10%
- 当输入数据是纯图像时,使用 block-wise 掩码策略,掩码的比例是 40%
- 当输入数据是图文对时,会对文本的 50% 进行掩码
到这里时,其实已经呈现了一个趋势,多模态模型的规模在不断扩大,训练用的数据规模也在扩大,虽然这一定程度上对性能有利的,但是端到端训练的成本也会随之增加。
此时也就会有另外一种思考,有没有什么高效的对齐方法,直接利用已经预训练好的视觉、文本模型就能快速对齐,完成对模态任务。
BLIP2:将图像特征对齐到预训练语言模型
论文名称:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
BLIP-2 通过在冻结的预训练图像编码器和冻结的预训练大语言模型之间添加一个轻量级 查询 Transformer (Query Transformer, Q-Former) 来弥合视觉和语言模型之间的模态隔阂。在整个模型中,Q-Former 是唯一的可训练模块,而图像编码器和语言模型始终保持冻结状态。
Q-Former 由两个子模块组成,这两个子模块共享相同的自注意力层:
- 与冻结的图像编码器交互的图像 transformer,用于视觉特征提取
- 文本 transformer,用作文本编码器和解码器
图像 transformer 从图像编码器中提取固定数量的输出特征,这里特征的个数与输入图像分辨率无关。同时,图像 transformer 接收若干查询嵌入作为输入,这些查询嵌入是可训练的。这些查询还可以通过共享的自注意力层与文本进行交互。
Q-Former 分两个阶段进行预训练。 第一阶段,图像编码器被冻结,Q-Former 通过三个损失函数进行训练:
- ITC loss
- ITM loss
- Image-grounded Text Generation (ITG) loss:用于训练 Q-Former 模型在给定输入图像条件下生成文本。在注意力机制上,queries 之间互相可见但是不能看到文本 token,而文本 token 可以看到所有的 queries 以及它之前的文本 token。此外将 CLS token 替换为 DEC token 以便提示模型进行解码任务。
代码中采用了facebook的opt模型,训练流程如下:
通过第一阶段的训练,Query 已经能够理解图片的含义了,接下来就是让 LLM 也能够理解图片信息,因此作者针对两类不同 LLM 设计了不同的任务:
- Decoder 类型的 LLM(如 OPT):以 Query 做输入,文本做目标;
- Encoder-Decoder 类型的 LLM(如 FlanT5):以 Query 和一句话的前半段做输入,以后半段做目标;因为不同模型的 embedding 维度不同,所以这里还加上了一个全连接层。
BLIP2 验证了之前的想法,直接利用已经预训练好的视觉、文本模型,通过设计参数量较少的 “对齐模块” 来实现多模态的对齐。
然而,注意到 BLIP2 在抽视觉特征其实是不考虑文本的;此时也正值 指令微调 在大语言模型中大杀四方,因此进一步的发展方向也就诞生了。
InstructBLIP:指令微调训练通用视觉语言模型
论文名称:InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning
InstructBLIP 可以理解为是 BLIP2 + 指令微调
- 作者们收集了 26 数据集并转化指令微调的格式
- 并改进 BLIP2 中的 Query Transformer 为 指令感知的 Query Transformer,能够抽取和给定指令相关的信息
InstructBLIP 是 BLIP 作者团队在多模态领域的又一续作。现代的大语言模型在无监督预训练之后会经过进一步的指令微调 (Instruction-Tuning) 过程,但是这种范式在视觉语言模型上面探索得还比较少。InstructBLIP 这个工作介绍了如何把指令微调的范式做在 BLIP-2 模型上面。用指令微调方法的时候会额外有一条 instruction,如何借助这个 instruction 提取更有用的视觉特征是本文的亮点之一。InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。在指令微调期间只训练 Q-Former,冻结图像编码器和 LLM 的参数。作者将26个数据集转化成指令微调的格式,把它们分成13个 held-in 数据集用于指令微调,和13个 held-out 数据集用于 Zero-Shot 能力的评估。
InstructBLIP 的模型结构如下所示:
和 BLIP-2 保持一致,依然由视觉编码器,Q-Former 和 LLM 组成。视觉编码器提取输入图片的特征,并喂入 Q-Former 中。此外,Q-Former 的输入还包括可学习的 Queries (BLIP-2 的做法) 和 Instruction。Q-Former 的内部结构如图3黄色部分所示,其中可学习的 Queries 通过 Self-Attention 和 Instruction 交互,可学习的 Queries 通过 Cross-Attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。
Q-Former 的输出通过一个 FC 层送入 LLM,Q-Former 的预训练过程遵循 BLIP-2 的两步:1) 不用 LLM,固定视觉编码器的参数预训练 Q-Former 的参数,训练目标是视觉语言建模。2) 固定 LLM 的参数,训练 Q-Former 的参数,训练目标是文本生成。
可以看到 Q-Former 的输入部分多了 Instruction,指令可以通过 Q-Former 的自注意力层与查询嵌入进行交互,并鼓励提取与任务相关的图像特征。
MiniGPT-4:LLM 助力多模态
对于 GPT4 能够具有超强的图文理解能力,作者们的理解是这是得益于大语言模型的能力,因此考虑将最新的一些能跟 ChatGPT “媲美” 的语言模型引入其中,这里采用了 Vicuna 作为语言模型,在视觉理解上,作者采用了和 BLIP2 里面一样的视觉模块,包含一个 ViT 模块和一个 Q-Former 模块。模型的整体框架如下所示,我们从下往上看:首先一张图片会经过视觉模块(ViT&Q-Former)进行编码得到一个图像 embedding,由于视觉模块给出的 embedding 不能够直接被语言模型理解,因此一般需要将视觉 embedding 和文本 embedding 进行对齐,这里加入了一个线性层,可以理解为这里假设图片编码器得到的输出经过一个线性层后就能够被语言模型理解了,然后将原始的文本信息和经过对齐后的图像信息拼接起来,送入 LLM,就可以实现能够接受多模态信息的 GPT 了。
对于这样一个模型如何进行训练呢?我们可以看到模型架构中视觉模块和 LLM 模块都有个 “冷冻” 起来的标志,这表示这两个模块的模型参数是固定的,也就是不进行更新的,可以理解为这两个模块继承了原来的视觉模块和 LLM 模型的能力;需要训练的地方只有线性层,通过训练这一层线性层实现图像 embedding 向文本 embedding 的转化。
要实现图像和文本信息的 “对齐” 自然需要相应的数据集,数据集还必须是那种图像 - 文本对的形式,这里采用了 Conceptual Caption、SBU、LAION 三个数据集和混合,大概 5million 的图像 - 文本对来进行模型的训练。这其实这是 miniGPT4 第一阶段的训练,因为作者发现这样训练完后让模型进行生成的文本缺乏连贯性,会出现一些比如重复或者断断续续的情况。
进一步,作者借助 ChatGPT 来修正一些描述,按照设计的对话模板构造了一个大约 3000 个图像 - 文本对的高质量数据集用于第二阶段的训练。
此时的感受就是:大语言模型牛 X、高质量数据牛 X,一些基于开源 LLM 进行修改的多模态大模型也开始百花齐放
Visual Instruction Tuning:继续将指令微调发扬光大
LLaVA 模型的结构包括两个主要组件:视觉编码器和语言模型。
- 视觉编码器:LLaVA 中使用的视觉编码器基于 CLIP(ViT-L/14 变体)。在 LLaVA 中,视觉编码器接收输入图像X_v。使用 ViT-L/14 模型生成视觉特征Z_v。然后,使用可训练的投影矩阵W,将这些视觉特征转换为语言嵌入标记H_v。这个投影矩阵使得图像特征能够与语言模型的词嵌入空间对齐。
- 语言模型:LLaVA 中使用的语言模型为 LLaMA。语言模型接收由视觉编码器生成的语言嵌入标记以及文本信息作为输入,并根据这些输入生成文本输出。
训练模型的输入序列构造:
LLaVA 模型的训练过程分为两个阶段:
- 阶段 1:视觉编码器和 LLM 权重被冻结,可训练的参数是投影矩阵(W)
- 阶段 2:端到端微调
最近的升级版本 LLaVA-1.5
主要做了几点优化:
- 使用单一的响应格式提示语,明确指示输出格式。例如,“Answer the question using a single word or phrase.” 这样的提示语可以促使 LLM 根据用户的指示正确调整输出格式。
- vision-language 的 connector 使用一个两层的 MLP
- 额外使用一些学术任务导向的数据集
- 扩大 LLM 的参数规模、图像的分辨率等
VisualGLM
没有放出相关的论文,这是一次分享中的 PPT,可以看到和前面的做法大同小异:
CogVLM:视觉优先再现江湖
这是 VisualGLM 的升级版,但是放弃了 VisualGLM 的一些思想,这里的主要思想回归 LLM 前的多模态研究思路:更大的图像编码器可能是有效的,也就是视觉优先。
模型的结构如下所示:
- 图 a 可以看到跟之前的方法类似,图像经过图像编码器后经过一个浅层的 MLP 来向文本对齐
- 图 b 可以看到在语言模型中新增了视觉专家模块(图像的 QKV 矩阵和 FFN 层),以实现深度视觉 - 语言特征对齐
- 这设计有一点前面 VLMO 的味道,但本质又不一样
MiniGPT-5:多模态生成是未来
之前的工作大多是考虑的是多模态理解(看图说话),最近刚提出的 MiniGPT-5 则想着直接多模态同时生成(同时生成文本和图片)。
图片生成的话用 Stable Diffusion 来做是个比较常规的操作了,简单回忆下 Stable Diffusion 怎么做的,其实就是一个 Unet 接收加噪的图片、时间步长、以及文本的 token embedding 来进行生成,这里的文本编码器来自于 CLIP,那多模态发展得风风火火,把这里的文本编码器换成新一点的模型是不是可行?
答案是可以的,MiniGPT-5 本质可以理解为就是将 Stable Diffusion 中的 CLIP 文本编码器替换成 MiniGPT-4,从而实现文本、图像同时生成。
为了能够将 MiniGPT-4 和 Stable Diffusion 中 Unet 完美结合起来还需要对模型结构进行一定的修改:
- 为了 LLM 的词表添加了用来表示图像的 token,称为 generative vokens
- 为了将 MiniGPT-4 的输出 embedding 输入到 Unet,用一个 MLP+Transformer 进行了映射(上图中间红色框部分)
这样一个复杂的模型要训练起来肯定是费劲的,除了让模型要同时理解图像和文本的对应关系,再生成的时候还要保证一致性,作者也是提出了一个两阶段训练的方式。
- 第一阶段除了考虑文本生成的 loss、图像生成的 latent diffusion model loss,还要 SD 的文本编码器的输出对 generative vokens 进行了引导
- 第二阶段使用更复杂的数据和任务来进行微调,只考虑了文本生成的 loss 和图像生成的 loss
- 因为训练涉及到图像生成,所以也用了 Classifier-free Guidance 来提升条件扩散模型的性能
GPT-4V:远远领先!
openai 还是保持着 closeai 的风格,关于 GPT-4V 的模型以及训练相关的细节并没有公布,只有一份微软的测评论文,从结果上来看是远远领先。
看完两个模态的多模态工作,再来看看如何扩展到更多的模态
ImageBind:更多模态一起对齐
论文名称:IMAGEBIND: One Embedding Space To Bind Them All (CVPR 2023)
ImageBind 是一个学习一个联合特征嵌入 (Joint Embedding) 的方法,这个联合嵌入可以同时编码 images, text, audio, depth, thermal, 和 IMU 数据。而且,在训练这个联合嵌入的时候,不需要所有模态彼此同时出现的数据集,比如不需要配对的 image + text + audio + depth + IMU 数据。而是只需要与 image/video 配对的数据即可,比如,image + text,image + audio 这样的数据集。
这个性质可以为 ImageBind 带来一些开箱即用的功能,比如:跨模态检索,将模态与算术相结合,跨模态检测和生成等。
ImageBind 的目标是将不同模态的 embedding 对齐到一个公共的空间,可以理解为是 CLIP 的多模态版本。
文章的主要思想是通过图片作为桥梁来将不同模态的数据关联起来。
假设每个模态有个自己的编码器,编码器输出加一个映射层来对齐 embedding 的维度,然后就跟 CLIP 一样用对比学习来训练就可以了。
这里表示的是图片的 embedding,是和图片对应的其他任意模态的 embedding。
ImageBind 考虑的主要是不同模态的对齐,那如何进行一些多模态的下游任务呢?
Meta-Transformer:用一个 Transformer 模型去编码12类模态
论文名称:Meta-Transformer: A Unified Framework for Multimodal Learning
Meta-Transformer 野心就比较大了,同时考虑了 12 种模态。
它的主要思想是使用一个统一的框架来处理来自多种模态的数据,而无需为每种模态设计特定的模型或网络。通过将所有模态的数据映射到一个共享的 embedding 空间,并使用一个公共的编码器来提取特征。
- 统一的 Tokenization:通过设计特定的 Tokenization 策略,例如将图像分割成小块或将文本分割成词或子词,然后为每个块或词生成一个 token。这些 token 然后被映射到一个连续的向量空间,形成 token embedding;
- 模态共享的编码器: 使用一个预训练的 Transformer 编码器,它的参数是冻结的。这个编码器可以处理来自不同模态的 token embedding(因为它们都在同一个共享的流形空间内);
- 任务特定的头部:这些头部通常由多层感知机 (MLP) 组成,并根据不同的模态和任务进行调整。
3. 多模态个人总结
看了这些多模态的研究后,多模态的研究做的事情主要是:
- 不同模态进行对齐
- 不同模态进行融合
- 指令微调促进人机交互,数据的质量可能比数量更重要
- 模型设计既要保证检索任务下的高效推理,又要能够进行多模态深度融合
- 进入大语言模型时代前,用更大的图像编码器一般是更有效的
- 进入大语言模型时代后,图文理解能力的强大可能来自于大语言模型的能力
- 进入大语言模型时代后,视觉优先仍然是值得探索的方向,但是训练大视觉模型向来是比较困难的
- 想要在多模态理解的基础上扩充多模态生成能力需要设计不同模态对应的解码器
- 理想的框架:多模态对齐 + 统一的编码器 + 统一的解码器,一统多模态理解和生成
4. 下游任务
(视频理解)Video-LLaMa:利用多模态增强对视频内容理解
论文名称:Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding(EMNLP 2023)
理解和解释视频内容是一项复杂的任务,不仅需要视觉和听觉信号的整合,还需要处理上下文的时间序列的能力。提出了一个视频Q-former来捕捉视觉场景的时间变化,一个音频Q-former来整合视听信号。
1、Video Q-former:一个动态的视觉解释器
Video Q-former是video - llama框架的关键组件。它旨在捕捉视觉场景中的时间变化,提供对视频内容的动态理解。视频Q-former跟踪随时间的变化,以一种反映视频演变性质的方式解释视觉内容。这种动态解释为理解过程增加了一层深度,使模型能够以更细致入微的方式理解视频内容。
VL分支模型:ViT-G/14 + BLIP-2 Q-Former
- 引入了一个两层视频Q-Former和一个帧嵌入层(应用于每帧的嵌入)来计算视频表示。
- 在Webvid-2M视频标题数据集上训练VL分支,并完成视频到文本的生成任务。还将图像-文本对(来自LLaVA的约595K图像标题)添加到预训练数据集中,以增强对静态视觉概念的理解。
预训练后,使用MiniGPT-4, LLaVA和VideoChat的指令调优数据进一步微调VL分支。
2、Audio Q-former:视听集成
Audio Q-former是Video-LLaMa框架的另一个重要组件。它集成了视听信号,确保模型完整地理解视频内容。
- AL分支(音频编码器:ImageBind-Huge)
- 引入两层音频Q-Former和音频段嵌入层(应用于每个音频段的嵌入)来计算音频表示。
- 由于使用的音频编码器(即ImageBind)已经跨多个模态对齐,所以只在视频/图像指令数据上训练AL分支,只是为了将ImageBind的输出连接到语言解码器。
(分类)Text as Images:文本替代图像
数据受限情况下图像分类的一个很有意思的方法,在缺少图片数据或者标注时,用替代文本训练。
- 这里的h和H是<EOS> token经过映射得到,代表一种平均的表达。
- 同样是为了让下游任务的表征空间接近CLIP的原始共空间
(分类) CDUL:多标签分类
论文名称:CDUL: CLIP-Driven Unsupervised Learning for Multi-Label Image Classification (CVPR2023)
- CLIP往往适合单标签分类,而不适合多标签分类
- 多标签的注释获取往往是带有噪声的
- 伪标签初始化。将图片分割成很多小的snippet,并编码,就可以看到图片中角落里的信息,实现多标签。聚合全局和局部信息,令CLIP关注多类对象。
- 梯度对齐训练。loss函数:KL散度。递归地更新网络参数和伪标签(潜在参数)。
(音视频异常检测)AVAD:视听同步
论文名称:Self-Supervised Video Forensics by Audio-Visual Anomaly Detection (CVPR2023)
寻找视频中视觉和音频信号之间的不一致性。
- 提出一种通过异常检测识别被篡改视频的方法,训练自回归生成模型来标记概率很低的视频。
- 仅使用真实的未标记数据训练模型,以了解音视频是如何共现的,测试时,模型标记的低概率视频即为假视频。
- 视听同步模型两阶段:第一阶段负样本来自不同视频;第二阶段负样本在相同视频中随机采样。
- 测试时的测试集可以为不同的说话人。(以前的方法的测试集都是在训练集基础上做一些数据增强得到)
(分类)DAC:域对齐
论文名称:Domain Aligned CLIP for Few-shot Classification (WACV 2024)
提出了DAC,可以有效使用先验知识将CLIP适应到下游任务中。提升后的跨模态alignment和模态内alignment的结合可以带来downstream分类任务中few-shot transfer的更好表现。
将整个分类任务分成跨模态分类和模态内分类的ensemble。跨模态分类使用了图像-文本对的similarity,模态内分类的实现方式则是使用(由几个带标签图像的precomputed image embedding组成的)visual cache。
(分类)Rumor-Short-Video:多模态对比学习
论文名称:Multimodal Short Video Rumor Detection System Based on Contrastive Learning
(1)创建包括从短视频中提取的多个特征的综合数据集;(2) 多模式谣言检测模型的开发:首先,使用时间段网络(TSN)视频编码模型来提取视频特征,然后使用光学字符识别(OCR)和自动语音识别(ASR)来提取文本特征。随后,采用BERT模型融合文本和视频特征;(3) 通过对比学习实现:通过抓取相关来源来获取外部知识,并利用向量数据库将这些知识纳入分类输出中。将编码后的视频文本信息和图像信息输入到Bert模型中,并利用Bert模型的交叉注意力机制进行融合。通过最近邻居查询来检索特征向量数据库中最近的10个向量。以相似性作为权重来累积标签,并且使用最高加权得分作为视频类型判断的预测值。
视频分类模型
- C3D:C3D模型是一种使用3D卷积网络学习时空特征的模型,它可以对视频序列进行特征提取和分类。C3D模型的主要思想是将3D卷积和3D池化应用于视频帧,从而同时捕获空间和时间维度的信息。C3D模型的结构类似于VGG网络,但是将所有的2D卷积和2D池化替换为3D卷积和3D池化。C3D模型具有高效、简单、紧凑的特点,可以在多个视频理解任务上取得较好的效果。
- TSN:TSN模型是一种用于视频分类的网络模型,它基于2D-CNN,通过稀疏采样视频帧的方式来提取视频的全局信息和局部信息。TSN模型包含两个分支:空间分支和时间分支,空间分支用于提取每帧图像的静态特征,时间分支用于提取相邻帧之间的动态特征。两个分支的特征通过后期融合的方式来进行分类或检测。TSN模型是一种简单而有效的视频理解方法,可以适应不同长度和复杂度的视频。TSN模型是一种利用稀疏采样和双分支结构的视频CNN模型,可以同时学习空间和时间特征。
- Slowfast:Slowfast模型是一种用于视频理解的双模CNN模型,它由两个分支组成:Slow分支和Fast分支。Slow分支使用较少的帧数和较大的通道数来学习空间语义信息,Fast分支使用较多的帧数和较少的通道数来学习运动信息。两个分支通过侧向连接来融合特征,最后进行分类或检测。Slowfast模型受到了灵长类动物视网膜神经细胞种类的启发,可以有效地利用不同速度的视频信息,提高了视频识别的性能。Slowfast模型是一种利用双速率分治策略的视频CNN模型,可以同时学习空间和运动特征。
- VideoSwin:VideoSwin模型是一种基于Swin Transformer的视频分类模型,它利用了Swin Transformer的多尺度建模和高效局部注意力特性,可以在视频Transformer中引入局部性的归纳偏置,提高了速度-准确度的权衡。VideoSwin模型在动作识别和时序建模等视频理解任务上取得了最先进的性能,超过了其他的Transformer模型,例如ViViT和TimeSformer等。VideoSwin模型是一种利用局部注意力机制的视频Transformer模型,可以有效地处理视频序列数据
5. CLIP的微调
MBT:加入跨模态融合模块
论文名称:Attention Bottlenecks for Multimodal Fusion( NeurIPS 2021)
这篇文章针对的是多模态的一般方法,如果单纯地把所有的token做cross attention去融合,复杂度太高,能否只做部分融合?
本文任务是视频分类,方法是多模态视觉(图像)和音频融合。
第一种方法是多模态学习中的一种常见方法,即将跨模态流动限制在网络的后一层 ,前面的层采用单模态学习,这种方法被成为“中期融合”,如上图中的Mid Fusion所示。
第二种方法,也是本文的主要贡献点, 是限制层内token之间的跨模态注意 。模型必须在与其他模态共享之前,对每个模态的信息进行整理和“浓缩”。核心思想是引入一小部分 “注意力瓶颈 ” 的潜在融合单元(如上图中的Bottleneck Fusion),层中的跨模态相互作用必须通过这些单元执行。作者证明了这种 “瓶颈” 结构优于其不受限制的版本,且计算成本较低。
引入Bottlenecks,在layer内的不同模态的tokens之间做跨模态的attention。单模态内部仍然是原始的self-attention,但是跨模态的fusion使用每个模态的部分tokens信息来做cross-attention。这样就能降低计算量并且处理部分冗余信息
主要思路是:原始transformer里面的attention层能够自由地接触和处理每个token之间的关系,这样模态内的冗余信息会造成计算量浪费。所以本文将原始transformer中attention层修改为模态内attention(保持self-attention结构不变)+ 模态间attention(设计cross-attention只在每个模态的部分token之间做attention,避免过度计算冗余信息,降低计算量。并且选择了mid fusion,探讨了fusion层在模型early,mid,late部分的影响。
MaPLe:多模态提示学习
论文名称:MaPLe: Multi-modal Prompt Learning(CVPR2023)
因为原始的CLIP的泛化能力足够强大,提示学习旨在让下游任务的表征去接近原始的CLIP的共空间,一般是加入一些可学习的token。
- 研究发现Clip的问题:在单个分支(语言或视觉)中使用prompt来调整表示是次优的,它不能在下游任务上灵活地动态调整两个表示空间。
- 作者提出了针对视觉和语言分支的多模态提示学习(MaPLe),以改善视觉和语言表征之间的一致性。
- 多模态提示是在视觉和语言分支的多个转换块中学习的,以逐步学习两种模态的协同行为。
- 提出了耦合函数,将文本和图像编码器中的提示学习联系起来,作为两种模式之间的桥梁,允许梯度的相互传播,以促进协同作用。
- 通过在不同的transformer阶段将视觉提示明确地限制在文本提示上,来确保视觉语言模式之间的协同作用。
因为它的可学习参数多,few shot需要train的又少,很容易有一个过拟合的问题。
Self-regulation Prompts:引入正则化
论文名称:Self-regulating Prompts: Foundational Model Adaptation without Forgetting(ICCV2023)
提出了一种 self-reguluating prompts 的框架来替代传统的prompt训练方法,即使用 cross-entropy 损失函数。传统的prompt训练方法通常会过度拟合数据分布,无法捕捉 frozen CLIP 中的通用特征。这导致模型失去了其原初的泛化能力。
是上一篇论文的改进,用一个正则化的方式去缓解过拟合。这里的Image Encoder和Text Encoder跟上篇论文类似,同样有可学习模块,但是不用从文本到图像投影。而是采用一致性的方式去拉近图像和文本Embedding的共空间,原始图片的表征和可学习token的表征一致,从而不让图像的表征不偏离原始的CLIP的共空间,不去过拟合下游任务的子空间。
- 通过三种正则化去解决了过拟合的一个问题,是目前CLIP微调的SOTA方法。
- 最后一个Epoch累积了前面19个Epoch去加权,用EMA的形式采用高斯加权融合。
TCL:考虑模态内对比
论文名称:Vision-Language Pre-Training with Triple Contrastive Learning (CVPR2022)
Representation learning with contrastive predictive coding (CPC)这篇论文中,作者对互信息的公式进行了分析,得到互信息下界的相反数为InfoNCE loss,即最小化InfoNCE Loss可以最大化互信息的下界,从而使得互信息最大。即对比学习的infoNCE等价于最大互信息。在TCL这篇文章中,作者即说用了对比学习,又说用了最大化互信息,实则二者都是infoNCE loss。
与之前的研究不同,之前的研究通过跨模态对比损失简单地对齐图像和文本表示,TCL进一步考虑模态内监督,这篇论文是在ALBEF的基础进行扩充的。ALBEF(Align before Fusion)的idea通过在多模态特征融合前对齐不同模态之间的表示,从而解决了融合编码器难以融合异构,且维度不同的多模态数据。但是ALBEF的对齐是image-text pair之间的全局对齐,没有考虑到模态内部的对齐,以及global-local的细粒度对齐。所以TCL这篇论文把ALBEF中的一种对齐方式扩展到了三种对齐方式。
三个对比学习损失:
CMA(Cross-Modal Alignment):拉近相似的image-text pair ,拉远不相似的image-text pair。图像和文本可以看做相同语义的两个不同视图view,即最大化这两个视图之间的互信息。负样本来自memory bank。
IMC(Intra-Modal Contrastive ):同一数据样本会经过一个编码器和一个动量编码器,得到一个样本的两个视图view,即最大化这两个视图之间的全局互信息。负样本来自memory bank。
LMI(Local MI Maximization):最大化全局表示和局部表示互信息,例如,要最大化图像的全局表示和图像中每个patch的互信息,最大化句子表示和句子中每个token的互信息。负样本来自memory bank。
两个预训练任务:
ITM(Image Text Matching):多模态预训练模型中常见的预训练任务,判断图像和文本是否匹配。
MLM(Masked Language Modeling):类似于BERT中的MLM完形填空,mask的是图像文本对中文本的某些token,让模型预测这些token的ground-truth。
6. 参考
- Learning Transferable Visual Models From Natural Language Supervision
- Align before Fuse: Vision and Language Representation Learning with Momentum Distillation
- VLMo: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts
- BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
- CoCa: Contrastive Captioners are Image-Text Foundation Models
- Image as a Foreign Language: BEiT Pretraining for All Vision and Vision-Language Tasks
- BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
- InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning
- MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models
- Visual Instruction Tuning
- VisualGLM
- CogVLM
- MiniGPT-5: Interleaved Vision-and-Language Generation via Generative Vokens
- The Dawn of LMMs: Preliminary Explorations with GPT-4V(ision)
- ImageBind: One Embedding Space To Bind Them All
- Meta-Transformer: A Unified Framework for Multimodal Learning
- Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding
- Vision-Language Pre-Training with Triple Contrastive Learning