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

相关文章

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本