VLP:《视觉-语言预训练》综述

2023-10-30 03:20
文章标签 语言 训练 视觉 综述 vlp

本文主要是介绍VLP:《视觉-语言预训练》综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

中科院自动化所最新《视觉-语言预训练》综述

转载来自公众号:机器学习算法与自然语言处理

论文标题:

VLP: A Survey on Vision-Language Pre-training

论文链接:https://www.zhuanzhi.ai/paper/426bf1325e3132ff5a4aa1cc90c27f3c

01摘要

在过去几年中,预训练模型的出现将计算机视觉(CV)和自然语言处理(NLP)等单模态领域带入了一个新时代。大量工作表明它们有利于下游单模态任务,并可以避免从头开始训练新模型。那么这样的预训练模型能否应用于多模态任务呢?研究人员已经探索了这个问题并取得了重大进展。本文调查了视觉-语言预训练 (VLP) 的最新进展和新的前沿,包括图像-文本和视频-文本预训练。为了让读者更好地全面掌握 VLP,我们首先从特征提取、模型架构、预训练目标、预训练数据集和下游任务五个方面回顾其最近的进展。然后,我们详细总结了具体的 VLP 模型。最后,我们讨论了 VLP 的新领域。据我们所知,这是VLP 领域的第一个综述。我们希望这个综述能够为 VLP 领域的未来研究提供启示。

02介绍

让机器以类似于人类的方式做出反应一直是人工智能研究人员的不懈目标。为了让机器能够感知和思考,研究人员提出了一系列相关任务,例如人脸识别、阅读理解和人机对话,以训练和评估机器在特定方面的智能。具体来说,领域专家手动构建标准数据集,然后在其上训练和评估相关模型。然而,由于相关技术的限制,往往需要在大量的标注数据上进行训练,以获得更好、更有能力的模型。最近出现的基于 Transformer 结构的预训练模型缓解了这个问题。它们首先通过自监督学习进行预训练,其通常利用辅助任务(预训练目标)从大规模未标记数据中自动挖掘监督信号来训练模型,从而学习通用表示。然后,他们可以通过仅在下游任务上使用少量人工标记数据进行微调就能实现令人惊讶的效果。自从 BERT在自然语言处理 (NLP) 中出现以来,各种预训练模型在单模态领域如雨后春笋般涌现,例如计算机视觉 (CV)领域的Vision Transformer (ViT) 和 语音领域的Wave2Vec。大量工作表明它们有利于下游单模态任务,并避免从头开始训练新模型。

与单模态领域类似,多模态领域也存在高质量标注数据较少的问题。一个很自然的问题是上述预训练方法能否应用于多模态任务?研究人员已经探索了这个问题并取得了重大进展。在本文中,我们关注主流的视觉-语言预训练(VLP),包括图像-文本和视频-文本预训练。VLP 主要通过基于大规模数据进行预训练来学习不同模态之间的语义对应关系。例如,在图像-文本预训练中,我们期望模型将文本中的“狗”与图像中的“狗”相关联。在视频-文本预训练中,我们期望模型将文本中的物体/动作映射到视频中的物体/动作。为了实现这一目标,需要巧妙地设计 VLP 目标和模型架构,以允许模型挖掘不同模态之间的关联。

为了让读者更好地了解 VLP,我们首先从5个重要方面全面回顾其最新进展:

  1. 特征提取:本节包括 VLP 模型中图像、视频和文本的预处理和表示方法(参见第3节);

  2. 模型架构:我们从两个不同的角度介绍VLP模型的架构:从多模态融合的角度分为单流与双流,从整体架构设计的角度分为Encoder-only与Encoder-decoder (参见第4节);

  3. 预训练目标:预训练目标是VLP的核心,主要用于指导模型学习视觉语言相关联的信息。我们总结了典型和特殊的预训练目标,分为补全、匹配、时序和特殊类型(参见第5节);

  4. 预训练数据集:数据对于 VLP 至关重要。我们简要介绍了 VLP 的主流语料库及其具体大小(参见第6节);

  5. 下游任务:多种任务需要视觉和语言的合作知识。我们将它们分为五类:分类、回归、检索、生成和其他任务。我们还讨论了这些任务的基本细节和目标(参见第7节)。

然后我们详细总结了具体的最先进(SOTA)VLP 模型(参见第8节)。最后,我们总结论文并对 VLP 的新前沿进行了广泛的讨论(参见第9节)。

据我们所知,这是VLP领域的第一篇综述。我们希望我们的综述能够帮助研究人员更好地了解这一领域,并激发他们设计出更好的模型。

03特征抽取

本节介绍 VLP 模型如何预处理和表示图像、视频和文本以获得对应特征。

特征预处理

图像特征预处理主要包括三种:基于目标检测的区域特征,基于CNN的网格特征以及基于ViT的patch特征。

视频特征预处理:主要先对视频分帧得到图像序列,然后按照上述图像特征预处理方式进行处理。

文本特征预处理:主要遵循BERT的预处理方式,将输入句子切分为子词序列,然后收尾追加[CLS]和[SEP], 最后输入表示为词embedding+位置embedding+segment embedding。

特征表示

为了充分利用单模态预训练模型,VLP 模型可以将视觉或文本特征输入到Transformer编码器。具体来说,VLP 模型利用具有随机初始化的标准Transformer编码器来生成视觉或文本表示。此外,VLP 模型可以利用预训练的视觉Transformer对基于ViT的patch特征进行编码,例如 ViT 和 DeiT。VLP 模型也可以使用预训练的文本Transformer对文本特征进行编码,例如 BERT。为简单起见,我们将这些Transformer命名为 Xformer。更多细节描述详见论文 Section 2

04 模型结构

在本节中,我们从两个不同的角度介绍 VLP 模型的架构:(1)从多模态融合的角度分为单流与双流,以及(2)从整体架构设计来看分为only-encoder与encoder-decoder。

Single-stream versus Dual-strea

单流架构是指将文本和视觉特征连接在一起,然后输入单个Transformer模块,如 Fig 1(a)所示。

双流架构是指文本和视觉特征没有连接在一起,而是独立送到两个不同的Transformer块,如 Firgue 1 (b) 所示。

Encoder-only versus Encoder-decoder

许多 VLP 模型采用仅编码器架构,其中跨模态表示直接馈入输出层以生成最终输出。相比之下,其他 VLP 模型提倡使用转换器编码器-解码器架构,其中跨模态表示首先馈入解码器,然后馈入输出层。更多细节描述详见论文 Section 3

05 预训练目标

本节介绍我们如何通过使用不同的预训练目标来预训练 VLP 模型,这对于学习视觉-语言的通用表示至关重要。我们将预训练目标总结为四类:补全、匹配、时序和特定类型。

补全类型通过利用未掩码的剩余部分来重建掩码元素从而理解模态,包括Masked LanguageModeling, Prefix Language Modeling,Masked Vision Modeling等;

匹配类型将视觉和语言统一到一个共享隐藏空间中,以生成通用的视觉-语言表示,包括Vision-Language Matching,Vision-LanguageContrastive Learning, Word-Region Alignment等;

时序类型是通过对中断的输入序列重新排序来学习良好的表示,主要针对视频相关的预训练,如FrameOrder Modeling等;

特殊类型由其他预训练目标组成,例如视觉问答和视觉描述等。

更多细节描述详见论文 Section 4.

06 预训练数据集

大多数 VLP 数据集是通过组合跨不同多模态任务的公共数据集构建的。然而,之前的一些工作,例如 VideoBERT、ImageBERT、ALIGN和 CLIP,处理从互联网收集的大量数据并使用他们自己构建的数据集进行训练。在这里,一些主流语料库及其规模信息如表 1所示。

07 下游任务

各种各样的任务需要视觉和语言方面的合作知识。在本节中,我们将介绍此类任务的基本细节和目标,并将其分为五类:分类、回归、检索、生成和其他任务,其中分类、回归和检索任务也称为理解任务。

分类任务主要包括:Visual Question Answering (VQA)、Visual Question Answering (VQA)、NaturalLanguage for Visual Reasoning (NLVR).、VisualCommonsense Reasoning (VCR)等;

回归任务包括Multi-modal Sentiment Analysis (MSA);

检索任务主要指的是一些视觉-语言检索任务;

生成任务包括:Visual Dialogue (VD)、Visual Captioning (VC)等;

其他任务包括:Multi-modal  Machine Translation  (MMT)、Vision-Language Navigation (VLN).

更多细节描述详见论文 Section 6.

08 SOTA VLP models基于上述VLP模型的5大方面,我们对近几年的VLP模型进行了汇总整理:

更多细节描述详见论文 Section 7.

09 总结和新前沿

在本文中,我们提供了第一个 VLP 综述。我们从特征提取、模型架构、预训练目标、预训练数据集和下游任务五个方面回顾了它的最新进展,并详细总结了具体的 SOTA VLP 模型。希望我们的综述能够帮助研究人员更好地了解 VLP,并激发新的工作来推动这一领域的发展。未来,在现有工作的基础上,VLP可以从以下几个方面进一步发展:

  1. Incorporating Acoustic Information.以前关于多模态预训练的大多数工作都强调语言和视觉的联合建模,但忽略了隐藏在音频中的信息。尽管音频中的语义信息可能与语言重叠,但音频可以提供额外的情感信息、声学边界信息等。此外,使用音频进行预训练使模型能够处理具有声学输入的下游任务。到目前为止,跨文本、视觉和音频的联合建模和表示仍然是一个有待进一步研究的悬而未决的问题。一些前沿的工作已经阐明了这个研究领域的未来。与之前的 VLP 模型不同,VATT将原始音频作为输入,并通过噪声对比估计 (NCE) 学习多模态表示。与 VATT 不同,OPT 结合各种多级掩蔽策略学习跨文本、图像和音频的跨模态表示,并且它还能够生成文本和图像。其他一些工作,例如 AudioCLIP 和 MERLOT Reserve,也展示了他们在三种模态上学习跨模态表示的独特方法;

  2. Knowledgeable Learning and Cognitive.虽然现有的 VLP 模型已经取得了显着的性能,但它们的本质是拟合大规模的多模态数据集。使 VLP 模型更具有知识性对于未来的 VLP 很重要。对于输入的视觉和文本,有丰富的相关外部常识世界知识和说明性情景知识,可以用来增强输入,加速模型训练和推理。解决这个问题需要统一的认知模型架构、知识引导的预训练目标以及与新知识交互的支持;

  3. Prompt Tuning.目前,微调是将 VLP 的知识转移到下游任务的主要方法。然而,随着模型规模的增加,每个下游任务都有其微调参数,导致参数效率低下。此外,多样化的下游任务也使得预训练和微调阶段的设计变得繁琐,导致它们之间存在gap。最近,Prompt Tuning在 NLP 中越来越受到关注。通过设计离散或连续Prompt并将 MLM 用于特定的下游任务,这些模型可以a. 减少微调大量参数的计算成本;b. 弥合预训练和微调之间的差距。Prompt Tuning是激发 PLM 中分布的语言和世界知识的一种很有前途的方法。下一步可以改进并迁移到多模态场景,打破传统范式,解决VLP的痛点问题。

VLP: A Survey on Vision-Language Pre-training 论文总结_南楚巫妖的博客-CSDN博客_vlp pretrain 下游任务

VLP:A survey on vision-language pre-training_qq_24876435的博客-CSDN博客_vlp 机器学习

这篇关于VLP:《视觉-语言预训练》综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/305254

相关文章

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态:

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

如何合理管控Java语言的异常

《如何合理管控Java语言的异常》:本文主要介绍如何合理管控Java语言的异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、Thorwable类3、Error4、Exception类4.1、检查异常4.2、运行时异常5、处理方式5.1. 捕获异常

C语言中的常见进制转换详解(从二进制到十六进制)

《C语言中的常见进制转换详解(从二进制到十六进制)》进制转换是计算机编程中的一个常见任务,特别是在处理低级别的数据操作时,C语言作为一门底层编程语言,在进制转换方面提供了灵活的操作方式,今天,我们将深... 目录1、进制基础2、C语言中的进制转换2.1 从十进制转换为其他进制十进制转二进制十进制转八进制十进

$在R语言中的作用示例小结

《$在R语言中的作用示例小结》在R语言中,$是一个非常重要的操作符,主要用于访问对象的成员或组件,它的用途非常广泛,不仅限于数据框(dataframe),还可以用于列表(list)、环境(enviro... 目录1. 访问数据框(data frame)中的列2. 访问列表(list)中的元素3. 访问jav

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚