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

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa