多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、预训练任务、模型

参考:
https://zhuanlan.zhihu.com/p/628840228
https://zhuanlan.zhihu.com/p/628994098
https://zhuanlan.zhihu.com/p/629996372
https://zhuanlan.zhihu.com/p/582424974
多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、模型
1. 多模态介绍
多模态机器学习(multimodal learning )旨在处理和理解不同模态(诸如视觉、语言、听觉等)交织融合的信息
本文重点是视觉和文字语言
2. 下游任务和评价指标
(1)分类任务
视觉问答(visual question answering, VQA). 给予视觉输入(图像或视频), VQA代表了正确提供一个问题的答案的任务。它通常被认为是一项分类任务, 因为模型会从一个选择池中预测出最合适的答案。
视觉推理和组合式问答(visual reasoning and compositional question answering, GQA). GQA是VQA的升级版, 旨在推进自然场景的视觉推理研究[73]. 其数据集中的图像、问题和答案具有匹配的语义表示. 这种结构化表示的好处是答案的分布可以更加均匀, 我们可以从更多的维度分析模型的性能.
自然语言视觉推理(natural language for visual reasoning, NLVR): NLVR任务的输入是两张图像和一个文本描述, 输出是图像和文本描述之间的对应关系是否一致(即真、伪两个标签).
视觉蕴涵(visual entailment, VE): 在视觉蕴含任务中, 图像作为前提, 文本作为假设, 目的是判断前提是否能推理出假设, 即预测视觉信息是否在语义上包含了文本信息.
视觉常识推理(visual commonsense reasoning, VCR): VCR类似于VQA, 但相比于VQA, 模型需要在选择出一个正确回答之后, 还需要提供一个证明其答案的理由.
看图识物(grounding referring expressions, GRE): GRE的任务是给定一个文本参考, 对一个图像区域进行定位. 该模型可以为每个区域输出一个分数, 其中具有最高分数的区域被定位用作预测区域。
由于视觉语言预训练任务所包含的下游任务繁多, 表3中仅节选出最为常见的下游任务进行性能的统计与比较。表3中数据集NLVR2保留了NLVR的语言多样性, 同时也在NLVR的基础上采用了视觉上更为复杂的图像.

在VCR任务中, Q→A表示模型需要根据给出的视觉问题选择正确的答案, QA→R表示模型需要根据视觉问题和回答选择得出该答案的理由, Q→AR则表示模型在给定的视觉问题之后, 要先选择正确的答案, 随后还需要对作答的理由进行选择.
在这里插入图片描述
(2)检索任务
视觉-语言检索(vision-language retrieval, VLR). VLR涉及对视觉(图像或视频)和语言的理解, 以及适当的匹配策略。
它包括两个子任务:
视觉到文本和从文本到视觉的检索, 其中视觉到文本检索是根据视觉从更大的描述库中获取最重要的相关文本描述,
反之亦然. 常见视觉语言预训练模型对应检索型下游任务如表4所示, 包括视觉-语言检索和零样本(zero-shot)的视觉-语言检索.
其中, TR表示从视觉到文本的检索, IR表示从文本到视觉的检索. R@K (K=1, 5, 10)表示出现在排名前K个结果中与真值匹配的百分比, 其中, R@K 指代TR@K和IR@K.
在这里插入图片描述
(3)生成任务
视觉描述(visual captioning, VC). VC旨在为给定的视觉(图像或视频)输入生成语义和句法上合适的文本描述.
大规模新物体描述(novel object captioning at scale, NoCaps): NoCaps[74]扩展了VC任务, 以测试模型描述来自Open Images数据集的新物体的能力, 这些物体都未曾在训练语料库中出现过.
视觉对话(visual dialogue, VD): VD的任务形式是给定一个图像(或视频)、一个对话历史记录和一个用语言描述的问题, 并让模型为问题生成一个答案.
常见视觉语言预训练模型对应生成型下游任务如表5所示, 包括视觉描述和大规模新物体描述. 其中, CIDEr、BLEU-4、METEOR、SPICE为4个评价生成语句的指标.
在这里插入图片描述
(4)其他任务
**多模态情感分析(multi-modal sentiment analysis, MSA)**旨在通过利用多模态信号(如视觉、语言等)来检测其中的情感.
多模态机器翻译(multi-modal machine translation, MMT): 多模态机器翻译是一项包含翻译和文本生成的双重任务, 将文本从一种语言翻译成另一种语言, 并加入来自其他模态的额外信息, 即图像.
视觉语言导航任务(vision-language navigation, VLN)是让智能体跟着自然语言指令进行导航, 这个任务需要同时理解自然语言指令与视角中可以看见的图像信息, 然后在环境中对自身所处状态做出对应的动作, 最终达到目标位置.
光学字符识别(optical character recognition, OCR): OCR一般是指检测和识别图像中的文本信息, 它包括两个步骤: 文字检测(类似于回归任务)和文字识别(类似于分类任务).
此外, 还有一些与视频相关的下游任务, 用于评估视频-文本预训练模型, 包括动作分类(AC)、动作分割(AS)和动作步骤定位(ASL).
3. 数据集
在这里插入图片描述
在这里插入图片描述
4. 基础知识
(1)transformer

在这里插入图片描述
与CNN[7]或RNN[8]相比, 自注意力机制缺乏捕捉
序列位置信息的能力
. 为了解决这个问题, Vaswani等人[2]在编码器和解码器的输入中加入了位置编码.
位置编码如公式(5)和公式(6)所示:
在这里插入图片描述
其中, $pos $ 指词元的位置信息, $ i$ 指词元的维度.
另一种常用的引入位置信息的方法是可学习的位置编码[9]. 实验表明[2], 这两种位置编码方法取得了相近的性能.

自注意力机制是Transformer的核心机制之一。
在自注意力层中, 词元序列 X={x0,x1,…,xn} 作为输入, 该序列可以是NLP领域中的单词序列, 也可以是视频和多模态领域的图像特征或视频片段。
自注意力层首先将输入的词元序列转换为3个不同的向量, 分别命名为: Key ( K∈R n×dK), Query ( Q∈R n×dQ ), Value ( V∈R n×dV ). 注意力的公式如公式(1)所示:
在这里插入图片描述
其中, Q⋅K^T 用来获取不同词元之间的相关性得分, $ \sqrt{d^{Q}}$ 用来使训练过程中相关性得分具有更加稳定的梯度. Softmax 让获得的概率分布正则化, 最后和 V 相乘, 获得相关性加权之后的注意力矩阵.
在解码器中, 编解码注意力与自注意力类似, Key向量和Query向量来自编码器模块, Value向量来自前一个解码器模块的输出.
但是, 并不是所有的词元都能参与自注意力训练. 比如, 在BERT[3]的训练阶段, 15%的词元被随机掩码, 被掩码的词元就不应该参与自注意力进行训练. 当在下游任务中进行语句生成的过程中, 使用BERT生成下一个单词词元时, 解码器模块中的自注意力模块只会关注到之前生成的词元, 这也是使用掩码来实现的, 相应的掩码位置则设置为0.
于是掩码的自注意力公式可以由原来的自注意力公式调整为与如公式(2)所示:
在这里插入图片描述
其中, Q⋅K^T 计算出的词元相关性得分与随机掩码M进行哈达玛积, 未被掩码的元素保留相关性得分, 而被掩码的元素则归零. 最后经过 Softmax 归一化之后与 V 相乘, 得到掩码注意力矩阵.
多头注意力机制在2017年被Vaswani等人[2]提出, 其旨在从不同方面来对复杂的序列进行建模以助于模型捕捉到更加丰富的特征和信息.
具体来讲, 输入序列X被线性转换成 h 个 的组, 每组重复自注意力过程. 最终输入是由 h 个组的输出串联而成, 整个过程可以表示为公式(3)和公式(4):
在这里插入图片描述
其中, Atti 表示对第 i 个组的元素进行注意力操作, MultiHeadAtt(X) 为最终的多头注意力的输出, 其将每个 Att 矩阵进行拼接, W 为权重矩阵.
(2)预训练范式
(2.1)预训练-微调(pretrain fine-tuning)
预训练-微调已经成了经典的预训练范式.
其做法是: 首先以监督或无监督的方式在大型数据集上预训练模型, 然后通过微调将预训练的模型在较小的数据集上适应特定的下游任务.
这种模式可以避免为不同的任务或数据集从头开始训练新模型. 越来越多的实验证明, 在较大的数据集上进行预训练有助于学习通用表征, 从而提高下游任务的性能.
GPT[4]在对有7000本未出版书籍的BooksCorpus数据集[10]进行预训练后, 在9个下游基准数据集(如CoLA[11]、MRPC[12]上获得平均10%的性能大提升. 视觉模型ViT-L/32[6]在对拥有3亿张图像的JFT-300M[13]进行预训练后, 在ImageNet[14]的测试集上获得了13%的准确率提升.
目前, 预训练微调范式在NLP和CV领域都在如火如荼展开工作, 多模态领域也不例外, 大量优秀的工作在此诞生, 包括图像-文本和视频-文本领域.
(2.2)预训练-提示(pretrain prompt)
提示学习起源于NLP领域, 随着预训练语言模型体量的不断增大, 对其进行微调的硬件要求、数据需求和实际代价也在不断上涨. 除此之外, 丰富多样的下游任务也使得预训练-微调阶段的设计变得繁琐复杂, 提示学习就此诞生.
在预训练-提示范式中通常使用一个模板来给预训练模型提供一些线索和提示, 从而能够更好地利用预训练语言模型中已有的知识, 以此完成下游任务.
在GPT-3[15]中, 所有任务都可以被统一建模, 任务描述与任务输入视为语言模型的历史上下文, 而输出则为语言模型需要预测的未来信息, 通过给予模型一些提示语, 让模型根据提示语来生成所需要的输出, 这种方式也被称为是情景学习(in-context learning).
Prefix-Tuning[16]摒弃了人工设计模板或自动化搜索模板的方式, 提出了任务特定的可训练前缀.
P-tuning V1[17]首次提出了用连续空间搜索的嵌入来做提示语.
P-tuning V2[18]引入深度提示编码(deep prompt encoding)和多任务学习(multi-task learning)等策略进行优化, 解决V1版本在一些复杂的自然语言理解任务上任务不通用和规模不通用的问题.
提示学习相对于微调的优势在于:
1)计算代价非常低. 由于整个模型的参数都是固定的, 并不需要对模型中所有的参数进行微调.
2)非常节省空间.
在使用预训练模型进行微调时, 每个不同的下游任务的参数都会相应改变, 因此每个任务都需要进行存储, 而提示学习则不需要. 基于这些优势, 提示学习已经称为了NLP领域的又一大研究热点, 预训练-提示也作为继预训练-微调的又一大范式, 处处崭露头角.
在多模态领域也慢慢燃起了提示学习之火, 诸如CLIP[19], CPT[20]等出色的工作应运而生.
(3)模型结构
从两个不同的角度介绍视觉语言预训练模型的体系结构:
(1)从多模态融合的角度对比单流结构与双流结构.
(2)从整体架构设计的角度对比仅编码结构和编码-解码结构.
(3.1)单流与双流的对比
单流结构:单流结构指一种将文本和视觉特征连接到一起, 然后输入进单个Transformer模块中, 如图4(a)所示. 单流结构利用注意力来融合多模态输入, 因为对不同的模态都使用了相同形式的参数, 其在参数方面更具效率.
双流结构:在双流结构中文本和视觉特征没有连接在一起, 而是单独输入到两个不同的Transformer模块中, 如图4(b)所示. 这两个Transformer没有共享参数. 为了达到更高的性能, 双流结构使用交叉注意力的方式(如图4(b)中的虚线所示)来实现不同模态之间的交互. 为了达到更高的效率, 处理不同模态信息的Transformer模块之间也可以不存在交叉注意.
在这里插入图片描述
(3.2)仅编码结构与编码-解码结构
许多视觉语言预训练模型采用仅编码的体系结构, 其中跨模态表示被直接输入到输出层以生成最终输出.
而其他视觉语言预训练模型使用转换器编码-解码体系结构, 在这种体系结构中, 交叉模态表示首先被输入解码器, 然后再输入输出层.
5. 预训练任务
预训练任务归纳为3类:
补全型任务通过利用未被掩码的剩余信息来理解模态, 从而重建补全被掩码的元素.
匹配型任务是将视觉和语言统一到一个共同的潜在空间中来生成一个一般化的视觉-语言表达.
其他型任务的内容中包含了其他预训练任务.
(1)补全型任务
掩码语言建模(masked language modeling, MLM)在1953年首次由Talyor在文献[21]中提出, 因BERT模型[3]将其作为一种新颖的预训练方式而广为人知.
视觉语言预训练模型中的MLM与预训练语言模型中的MLM相似, 但视觉语言预训练模型中的MLM在预测掩码文本词元时不仅可以使用剩余的文本词元, 也可以同时使用视觉词元. 通常来讲, 视觉语言预训练模型遵从BERT模型的掩码方式, 在输入的文本词元中随机掩码其中15%, 然后将其中80%用一个特殊的词元[mask]代替, 10%用随机词元代替, 剩余10%保持不变.
前缀语言建模(prefix language modeling, PrefixLM)是掩码语言建模和语言建模(LM)的统一.
前缀语言建模的提出是为了使该模型具有实质性的生成能力, 从而在不进行微调的情况下实现文本导向的零样本学习. 前缀语言建模不同于标准语言建模, 它可以对前缀序列进行双向注意力和仅对剩余词元执行自回归因式分解. 在序列间(sequence-to-sequence)框架下的前缀语言建模不仅具有与掩码语言建模相同的双向上下文表征, 也具有类似于标准语言建模文本生成的能力.
与掩码语言建模一样, 掩码视觉建模(masked vision modeling, MVM)对视觉(图像或视频)区域或色块进行采样, 通常掩码其15%的视觉特征. 掩码视觉建模需要在剩余的视觉特征和所有文本特征的基础上重建被掩码的视觉特征. 被掩码的视觉特征设为零矩阵. 由于视觉特征是高维和连续的, 视觉语言预训练模型提出了两种掩码视觉建模变体.
(1)掩码特征回归通过学习将掩码特征的模型输出回归到其原始视觉特征. 模型首先将掩码特征的模型输出转换为与原始视觉特征相同维度的向量, 并对此向量与原始视觉特征进行L2回归来恢复掩码特征.
(2)掩码特征分类通过学习预测掩码特征的目标语义类别. 模型首先将掩码特征的输出反馈到全连接层, 以预测对象类的分数, 然后通过Softmax函数将其转换为正态分布. 模型的训练有两种方法. 一种是模型将目标检测模型中最可能的目标类作为硬标签(概率是0或者1), 假设检测到的目标类是掩码特征的真值标签, 使用交叉熵损失来最小化预测结果和伪类之间的差距. 另一种是模型使用软标签作为监督信号, 也就是检测器的原始输出(即对象类的分布), 并最小化两个分布之间的K-L散度.
(2)匹配型任务
视觉-语言匹配(vision-language matching, VLM)是最常用的视觉和语言一致性预训练目标.
在单流模型中, 使用特殊词元[CLS]的表示作为两种模态的融合表示.
在双流模型中, 将特殊视觉词元[CLSV]的视觉表示和特殊文本词元[CLST]的文本表示串联起来, 作为两种模态的融合表示.
模型将这两种模态关系的融合表示输入给全连接层和Sigmoid函数, 预测出一个0到1之间的匹配度, 其中0表示视觉和语言不匹配, 1表示视觉和语言匹配. 在训练过程的每一步中, 模型都会从数据集中提供匹配或不匹配的样本对, 其中不匹配的样本对由随机替换匹配样本对中的视觉或者语言部分生成.
视觉语言对比学习(vision-language contrastive learning, VLC)在一个训练批次N个视觉-语言对的N×N个可能的视觉语言对中预测出匹配的视觉-语言对. 注意, 在一个训练批中有N到N2个不匹配视觉-语言对. 模型分别使用特殊视觉词元[CLSV]的视觉表示和特殊文本词元[CLST]的文本表示来表达视觉和语言两种模态的融合表示. 模型通过Softmax函数归一化视觉(图像或视频)到文本和文本到视觉的相似性, 并利用这些相似性的交叉熵损失函数进行训练和更新, 相似度通常用点积来实现.
文字-区域对齐(word-region alignment, WRA)是一种无监督的预训练方式, 用于对齐视觉区域(vision patches)和文字. 模型运用最优运输(optimal transport)来学习视觉和语言之间的对齐. 因为精确最小化(the exact minimiza-tion)是在计算中是难以处理的, 所以一般使用IPOT算法来近似OT距离. 求出最小值后, 以OT距离作为WRA损耗来训练模型.
(3)其他型任务
为了更好地对视频的时序进行建模, 模型随机打乱一些输入帧的顺序, 然后预测每一帧的实际位置.
在具体的应用中, 帧时序建模(FOM)会被设计成一个分类器.
视觉语言预训练模型有时也使用一些下游任务的训练对象, 如视觉问答(VQA)[22]和视觉描述(VC)来作为预训练对象.
在视觉问答方面, 模型采用上述融合的表示方法, 使用一个全连接层, 利用转换后的表示方法对预定义的答案进行分类预测.
除此之外, 还可以直接生成原始文本格式的答案.
在视觉描述方面, 为了重构输入句子赋予模型生成能力, 模型使用自回归解码器生成对应图像或视频的文本描述.
6.模型介绍
(1)图像-文本预训练
2019以来, 有关图像-文本预训练的研究慢慢展开.
Lu等人提出了基于双流结构的ViLBERT[23], 输入的文本和经过Fast-RCNN[24]处理后的图像特征分别经过Transformer的编码器进行编码后, 通过共注意力机制模块将语言信息和视觉信息相融合. 该共注意力机制模块基于Transformer中自注意力模块的结构, 在每个模态中都用自身的Query和另一个模态的Value和Key计算注意力, 以此来融合多模态信息.
Alberti等人提出了B2T2模型[25], 进行了详细的对照实验, 讨论了双编码器结构中的早期融合结构和晚期融合结构的优劣, 得出早期融合结构效果更优的结论.
Tan等人提出了LXMERT[26], 该模型与ViLBERT同样使用了双流结构, 即图像和文本分别经过独立的编码器进行编码, 然后通过跨模态编码器进行模态信息的融合. 该跨模态编码器采用多层堆叠的方式, 每一层中包含有两个自注意力层, 两个前馈层和一个双向交叉注意力层, 分别对视觉到语言和语言到视觉进行了交叉注意力. 模型可以输出视觉, 文本和跨模态3种信息.
Li等人提出了基于单流结构的VisualBERT模型[27], 希望通过自注意力机制来挖掘图像和文本中的对应关系. 与BERT类似, 该模型直接将文本与图像信息通过Transformer进行对齐和融合. 语言部分经过BERT得到文本特征, 即词向量编码+位置编码+模态分割编码; 而视觉部分采用了经过Fast-RCNN特征提取的区域特征, 以及与之对应的位置编码作为输入.
Li等人提出了基于单流的Unicoder-VL模型[28], 该模型与VisualBERT最大的不同在于对视觉信息的输入处理上. 输入的图像首先经过Fast-RCNN提取区域特征, 将区域图像特征和其对应的边界框特征分别通过全连接层映射到和语言编码维度相同的向量空间上, 加上对应区域的文本类别标签向量, 与文本向量一起输入到单流模型中.
Su等人提出了单流的VL-BERT[29], 该模型在输入上分为4层, 其中词嵌入层使用原始的BERT的设定; 视觉特征层由视觉外部特征和视觉几何特征拼接而成, 视觉外部特征是由Faster-RCNN提取, 而视觉几何特征是根据位置信息做正余弦处理, 经过全连接层得到的特征. 分割层用于区分不同来源的信息输入. 位置嵌入层与BERT类似, 通过对文本添加一个可学习的位置特征来表示文本输入的顺序和相对位置. 由于输入的图像没有相对的位置, 所以图像的位置信息都是相同的.
为了打造一个端到端的多模态生成和理解模型, Zhou等人提出了VLP[30]. 在此之前, 多模态预训练工作只包含编码器, 需要根据不同的下游任务设计不同的解码器. 该模型采用单Transformer结构, 在预训练任务中引入掩码语言模型(MLM), 对于不同的下游任务, 只需要对解码器进行微调训练.
但由于之前的预训练工作很少考虑到图像描述(image caption)等生成任务, Xia等人[31]专门设计了针对生成任务模型结构. 该模型借鉴了NLP领域的MASS模型[5], 对于文本, 在encoder端连续掩码屏蔽掉一个连续序列的词, 在decoder端只输入前k– 1个词且屏蔽encoder中提供的词, 以此来迫使decoder通过encoder来获取语义和视觉信息.
Yu等人提出了ERNIE-VIL[32], 该模型使用了双流架构, 提出了3个多模态场景预测任务: 目标预测、属性预测和关系预测. 在目标预测任务中, 模型需要根据文本上下文和图像对文本掩码部分进行预测; 在属性预测中, 模型需要根据上下文和图像对物体的属性进行预测; 在关系预测中, 模型需要根据上下文和图像中的<物体, 关系, 物体>三元组进行物体与物体之间关系的预测. 2021年Ramesh等人提出了DALL-E[33], 该模型主要用于文本生成图像任务, 含有120亿的参数量, 整体包含3个阶段, 在第1个阶段, DALL-E将一张 256×256 图像分为 32×32 个图像块, 再使用VQVAE[34]将经过编码的每个图像块映射到一个8 192维的词表中, 最终将一个图像转换为1 024的词元序列; 在第2个阶段, 用BPE编码器对文本进行编码, 得到最多256个文本词元, 再将文本和图像词元进行拼接, 输入到120亿参数量的Transformer中; 最后, 对生成的图像进行采样, 并用CLIP模型对采样进行排序, 得到与文本最匹配的图像.
之前大多预训练工作都是先进行预训练, 然后进行微调工作, 各个下游任务之间相对独立, 每一个下游任务都需要重新进行微调一个模型.
由此Lu等人提出了12-in-1模型[35]. 该模型是ViLBERT的拓展, 将常用的12个数据集按对应的任务分类, 相似的任务分为一组, 共分为视觉问题回答、基于图像描述的图像检索, 看图识物和多模态验证4组, 进行多任务学习.
Hu等人提出了UniT[36], 旨在多个领域的不同任务使用同一个模型, 在所有任务中共享相同的模型参数, 而不是分别对特定任务的模型进行微调. 对于每个任务的不同领域, UniT采用不同的编码器, 但都使用相同的解码器, 并且在解码器之后加上一个特定任务的输出头. UniT在尽可能减少参数量的同时, 保证了效果, 并且能在7个不同的下游任务中达到了不错的效果.
Li等人提出了BLIP[37], 希望训练一个统一的多模态预训练模型来同时解决多模态理解和生成任务. BLIP是个多模态的混合编码-解码器, 可以实现: 1)图像或文本的单模态编码; 2)基于图像的文本编码; 3)基于图像的文本解码3个功能.
多模态预训练的研究本质在于如何更好地对多种模态信息进行对齐和融合, 以此来挖掘模态间对应信息, 对此模型对多模态信息的细粒度融合是非常必要的.
Li等人指出, 以往的视觉语言预训练方法没有将文本中的单词对应图中相应的区域, 因此天然就是一个弱监督学习系统, 因此提出了Oscar[38], 将训练样本定义为一个三元组, 每个三元组由单词序列, 一组目标标记和一组图像区域组成. 训练分两种角度, 模态视角区分图像和文本表示, 字典视角区别两个不同的语义空间.
Xue等人[39]认为把视觉内部的关系信息和跨模态对齐封装在一个Transformer网络中是不合理的, 这种方式会忽略每个物体的特殊性, 由此限制了Transformer中的多模态对齐学习, 于是他们在视觉部分也采用了Transformer, 用自注意力来对视觉信息进行编码, 以此来促进模态内的学习.
Yao等人指出, 大多数现有的方法都是采用交叉/自注意力机制来进行跨模态的交互, 以此感知模态间的相似性, 但是交叉/自注意力在训练和推理方面的效率都较低, 由此提出了FILIP[40], 通过跨模态的晚期交互机制来实现更细粒度的对齐. FILIP通过对比损失增强了图像块和文本单词之间的细粒度表达能力的同时, 也保证了大规模预训练和推理的效率. Duan等人[41]认为, 改善多模态信息的对齐部分将大大提高模型的性能, 提出了较之前工作更为有效的对齐方式, 使用聚类表示在更高更稳定的高层表征上进行模态对齐. 其使用一个可学习的编码表将常见的文本-图像特征向量量化为编码词, 与单模态特征相比, 这些编码为对比推理提供了更加稳定的表现. 实验结果表明, 其在零样本跨模态检索和其他迁移学习任务上都取得了不错的效果.
在图像文本预训练中, 一些工作也针对其中的目标检测进行改进.
由于大多数预训练任务都采用目标检测模型来获取图像中感兴趣区域的视觉特征, 然而区域特征提取器是根据特定视觉任务设计的, 会造成其他重要视觉信息的缺失, 对多模态任务很容易造成语义鸿沟. 为此, Huang等人提出了Pixel-BERT[42], 对整张图像进行卷积池化后再进行随机采样, 再与语义嵌入(semantic embedding)相加, 得到像素级的特征编码后, 与文本编码拼接输送给Transformer进行训练. Zhang等人提出了VinVL[43], 在其团队的前作Oscar模型上开发了一个新的目标检测模型, 通过丰富视觉对象和属性类别, 扩大模型尺寸并在一个更大的数据集上训练, 建立一个新的目标检测模型, 从而在更广泛的视觉语言任务上提高了性能. Huang等人发现用Fast-RCNN提取的视觉区域特征存在上下文信息的丢失等问题, 由此提出了SOHO[44]. 该模型以整张图像作为输入, 以端到端的方式学习视觉表征, 利用视觉字典把不同的视觉语义信息聚合成视觉词元, 弥补了视觉特征和语言词元之间的鸿沟.
对比学习作为一种常用的自监督学习方法, 在图像文本预训练中也表现出很出色的跨模态对齐和零样本学习的能力.
Radford等人提出了CLIP[19], CLIP整体采用对比学习的方法, 将图像和文本分别进行特征提取和编码后, 计算图像文本对的余弦距离, 相匹配的图像文本对距离趋向于1, 而不匹配的则趋向于0, 以此来对图像和文本建立联系. CLIP在零样本学习上的效果足以媲美ResNet50[45], 对之后的工作产生了很大的影响. Li等人提出了UNIMO[46], 该模型能够有效地同时进行的单模态和多模态的内容理解和生成任务, 区别于其他模型只能采用有限的多模态图像文本对进行训练, 该模型可以利用大量的开放域文本语料和图像进行训练. 并且通过一系列的增强方式产生不同粗细粒度特征的正负样本, 实现跨模态的对比学习. Li等人提出了一个全新的视觉语言预训练框架ALBEF[47], 首先通过图像编码器和文本编码器分别对图像和文本进行编码. 然后使用多模态编码器通过跨模态注意力将图像特征与文本进行融合. ALBEF在图像编码器和文本编码器之间加入了中间量的图像文本对比损失, 使多模态编码器能够更好地进行跨模态对齐. 2022年Yang等人利用跨模态和模态内的自监督, 提出了三重对比学习的视觉语言预训练TCL[48]. 之前的研究通过跨模态对比损失简单地对齐图像和文本表示, TCL进一步考虑模态内监督, 以确保学习到的表示在每个模态中也有意义, 进而有利于跨模态对齐和联合多模态嵌入学习. 为了在表征学习中融入局部和结构信息, TCL进一步引入了局部MI, 它最大化了全局表征和来自图像块或文本标记的局部信息之间的互信息. 大量试验结果表明, TCL性能有显著提高.
为了融合不同模态的任务, 学习不同模态的信息。
Wang等人提出VLMo[49], 将传统的FFN模块分为视觉、语言和跨模态3条不同的路径, 分别构成双编码器结构和融合编码器结构以适用于不同的下游任务, 在多模态检索等问题上用双编码器, 在需要跨模态语义信息等问题上用融合编码器. 该模型在多个下游任务中都取得了不错的效果. Shen等人认为现有的视觉语言预训练方法太依赖于视觉编码器, 但是高性能的视觉编码器往往被类别标签或边界框等标注信息制约, 不具备良好的泛化性能, 由此提出了CLIP-ViL[50]. 在CLIP-ViL的工作中, Shen等人着重研究了CLIP带来的优势, 并提出了在两种典型的场景中使用CLIP作为视觉的编码器: 1)将CLIP插入到特定于任务的微调中; 2)借助CLIP良好的零样本迁移学习的能力, 将CLIP与视觉语言预训练相结合, 并迁移到下游任务中. 在下游任务中, 模型获得了不错的效果. Dou等人[51]用大量的实验尝试了端到端的视觉语言Transformer的效果以及各个部分的比较, 得到了如下结论: 1) VIT在模型中起到的作用要高于语言Transformer; 2) cross-attention相比于self-attention能更好地融合视觉语言信息; 3)在视觉问答(VQA)和图像文本检索(image-text retrieval)中, 只使用encoder效果要好于使用encoder-decoder; 4) masked image modeling这个预训练任务不重要.
数据集的质量和规模对于模型训练来说至关重要, Qi等人提出了ImageBERT[52], 设计了一种弱监督的方法, 并从网络上搜集制作了一个千万级的图像文本数据集. 由于数据集的来源不同, 质量也就不同. 于是作者将预训练过程分为了两个部分, 首先用大量的域外数据集进行模型训练, 然后再用小规模的域内数据进行训练, 从而在目标任务上得到更好的效果. Jia等人认为大多预训练工作还都是利用专业的多模态数据集(诸如Conceptual Captions、MS COCO等), 严重依赖于昂贵的专家知识, 由此提出了ALIGN[53]. ALIGN利用了超过十亿个有噪声的图像文本对的数据集来训练, 并且发现在这样的大规模噪声数据集上预训练的视觉语言表示在各种下游任务上取得了非常强的性能. Wang等人提出了SimVLM[54], 旨在大规模的Web数据集上对图像文本和仅文本输入上进行预训练, 用大规模弱监督学习来降低训练的复杂度. 在预训练的方法上, 不同于一般的多模态预训练模型使用MLM, SimVLM使用了prefixLM方法, 即给定前缀(视觉信息), 生成后续内容, 以此来保留视觉语言表征.
**目前预训练-提示(pretrain prompt)**在NLP领域已经成为继预训练-微调(pretrain fine-tuning)之后的又一大预训练范式.
Tsimpoukelli等人提出Frozen[55], 将NLP领域广泛应用的Prompt引入到了多模态领域, 利用图像编码器把图像作为一种动态的提示词, 和文本一起送入到语言模型中, 以此能在语言模型中更好地获取先验知识. 在训练时Frozen将选择冻结语言模型中的参数, 仅训练图像编码器相关的参数. Yao等人提出了CPT[20], CPT主要在视觉描述定位(visual grounding)任务上进行. CPT采用Prompt范式, 其首先将图像用不同颜色来区分不同的实体模块, 随后将问题文本和颜色块问题模板拼接, 最后模型只需要预测描述在哪一块颜色块中即可, 使视觉描述定位任务变为了一个为填空问题.
Transformer因其优异的全局依赖关系建模能力, 成为多模态预训练的首选架构. 但由于多模态预训练过于庞大的输入信息, 当前来讲视觉语言预训练工作仍然需要极大的算力资源做支撑, 致使部分研究人员无法展开相应研究. 如何轻量化预训练模型以节省计算资源也是一个值得研究的内容. Transformer因其优异的全局依赖关系建模能力, 成为多模态预训练的首选架构. 然而在多模态领域中, 捕捉局部信息对最终模型的推理也很重要, 但是对于不同的目标需要配备不同大小的感受野, 这大大增加了显存占用和计算量. Zhou等人提出了一种轻量化的路由方案TRAR[56], 在Transformer的每一层上都配备了一个路由控制器, 根据上一层的输入来动态地选择每一步该采用的最优注意力. Kim等人提出了ViLT[57], 是一个参数量较小的多模态预训练模型. 其通过块映射(patch projection)的多模态预训练方法, 在保证效果的前提下大大减小了模型复杂度和运行时间. ViLT采用了单流架构, 相异于其他预训练模型需要在视觉模态上使用一个独立的视觉编码器, ViLT使用预训练的ViT来处理视觉特征后仅用了简单的线性映射, 大大降低了视觉编码器的参数量.
2022年也诞生出很多不错的工作.
Zhou等人提出了无监督的视觉语言预训练模型UVLP[58], 其根据检索的方式构建了一个弱监督视觉语言语料库, 然后通过基于检索的多粒度对齐来学习非对齐文本和图像源的强视觉和语言联合表示. 实验表明UVLP在VQA、NLVR2等任务上都有不错的表现.
Wang等人提出了一个任务无偏和模态无偏的框架OFA[59], 以达到任务全面性的效果. OFA通过人为指定的预训练和微调任务来达到模型的任务无偏, 仅使用Transformer编码器作为模态无偏的模型框架而不针对任何下游任务添加可学习的模态组件. OFA通过在2千万个公开的图像-文本对上进行了预训练, 在图像描述、文本图像生成、VQA, 视觉蕴含等多个下游任务上达到了非常不错的效果. 图像-文本预训练模型汇总见表1.
(2)视频-语言预训练
Sun等人提出了VideoBERT[62], 该模型是第1个基于Transformer的视频语言预训练模型.
在视频方面, 模型将n个连续帧构成一个片段并对其进行特征提取, 将特征向量做分层矢量量化(hierarchical vector quantization)处理, 得到视频特征词元. 语言方面首先用语音识工具提取视频文本, 再沿用BERT的文本处理方式. 最后将视频信息和语言信息拼接, 通过BERT学习视频与语言之间的关联性. 该模型以YouTube上大量无标签的视频作为数据集, 在视频动作分类, 视频描述等任务上都取得了很好的结果.
Sun等人认为VideoBERT中使用的矢量量化会丢失很多细粒度的细节, 提出了CBT[63], 该模型采用双流结构, 摒弃了VideoBERT中的矢量量化操作, 直接使用了视觉特征向量向量. CBT将BERT结构扩展到多流结构, 并验证了NCE损失[71]对于学习跨模式特征的有效性.
Luo等人提出了UniVL[70], 该模型使用双流结构, 用单模态编码器对文本和视频数据分别进行建模, 再使用跨模态编码器对两个模态的表征进行联合编码. 训练的过程中采用了4个预训练任务, 分别是: 条件掩码语言建模(CMLM, 用于语言损坏)、条件掩码帧建模(CMFM, 用于视频损坏)、视频-文本对齐和语言重建. 在此基础上, 作者还设计了两种预训练策略, 包括分阶段预训练策略(StagedP)和增强视频表示策略(EnhanceDV)来促进UniVL的预训练, 模型取得了很好的效果.
Li等人提出了HERO[65], 在之前的工作中, 视频语言预训练只是简单的改造了来自NLP领域的掩码语言建模(MLM)和视觉语言匹配(VLM)的预训练任务. 考虑到视频在时间序列上的特殊性, 在HERO中首先设计了局部视频语言匹配(LVLM)和帧时序建模(FOM). 实验表明, FOM可以有效优化时间依赖性任务(诸如问答任务), 全局或局部的VLM可以优化检索任务.
由于视频相比于图像特征多了时间维度, 提取视频特征非常耗时且计算量巨大.
Lei等人提出了一种新的端到端的学习框架ClipBERT[68], 该框架采用稀疏采样, 在每个训练步骤中仅采用少量采样的视频片段, 并指出端到端训练策略中使用单个或几个(较少)稀疏采样的视频片段通常比使用密集提取视频特征的传统方法更精确.
Akbari等人提出了端到端的框架VATT[66], 用于从视频、音频和文本中提取多模态表示. 为了获得3种模态的内在共现关系, VATT中采用了ViT[6], 而不是分别为每种模态分别保留词元和线性层映射. VATT通过匹配视频-音频对和视频-文本对的共同空间投影做噪声对比估计(NCE)来进行训练优化.
现有的预训练都是针对特定任务的, 单流结构限制了模型对检索式任务的使用, 双流结构限制了模型的早期跨模态融合, Xu等人提出了一个任务无关的多模态预训练模型VLM[69]. 为了不牺牲可分离性, 该模型在训练过程中引入了新的预训练任务——掩码模态建模(MMM), 来更好地进行跨模态融合. 实验结果表明, VLM以较少的参数达到了有竞争力的性能. 为了解决大规模无标签视频数据自动生成的描述有噪声、不匹配等问题, Tang等人提出了DeCEMBERT模型[67]. 该模型采用单流结构, 首先使用由ASR[72]生成的文本描述作为模型的文本输入. 为了更好地匹配视频和与之对应的生成描述文本, DeCEMBERT提出了一个约束性的注意力损失机制, 鼓励模型从描述候选池中选择最匹配的ASR描述. 实验表现出DeCEMBERT在3个下游任务中都有不错的性能表现.

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 04:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 04:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 04:40:03       82 阅读
  4. Python语言-面向对象

    2024-03-16 04:40:03       91 阅读

热门阅读

  1. Docker中的常用命令

    2024-03-16 04:40:03       38 阅读
  2. Go语言的HTTP WEB Demo案例

    2024-03-16 04:40:03       41 阅读
  3. 力扣131分隔回文串

    2024-03-16 04:40:03       43 阅读
  4. Docker部署ruoyi前后端分离项目 补充

    2024-03-16 04:40:03       50 阅读
  5. asan 使用

    2024-03-16 04:40:03       42 阅读
  6. 电脑上同时安装多个版本的cuda

    2024-03-16 04:40:03       46 阅读
  7. js计算百分比

    2024-03-16 04:40:03       42 阅读