今日arXiv最热NLP大模型论文:一文读懂多模态大模型的进化之路

2024-03-09 15:36

本文主要是介绍今日arXiv最热NLP大模型论文:一文读懂多模态大模型的进化之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着注意力机制和Transformer架构的引入,我们见证了处理多种模态信息的模型在规模和能力上的飞跃。这一进步主要得益于这些技术的通用性和灵活性。最初,这些技术被应用于语言特定的模型,但很快就扩展到了视觉处理的支持,并最终发展为能够整合多种模态的模型。特别是,大语言模型(LLMs)的复杂性和它们对上下文学习的能力,激励研究者们将这些模型的应用范围扩展到输入和输出的多模态领域。这种扩展导致了如GPT-4V和Gemini等尖端模型的开发,它们在多个领域展现了最先进的性能。

多模态大语言模型(MLLMs)的发展涉及将视觉和语言的单模态架构合并,通过视觉到语言的适配器建立有效的连接,并设计创新的训练方法。这些方法对于确保模态之间的对齐和准确遵循指令至关重要。在快速发布新模型的背景下,我们的目标是提供MLLM领域的全面概述,重点关注利用视觉模态的模型。这一概述既是对当前状态的更新,也是未来发展的灵感来源。

论文标题:
The (R)Evolution of Multimodal Large Language Models :A Survey

论文链接:
https://arxiv.org/pdf/2402.12451.pdf

MLLMs的发展

MLLMs的发展路径与LLMs相似,Flamingo是首个在视觉语言领域大规模探索上下文学习的模型。随后,视觉指令调整迅速成为多模态领域最突出的训练范式,以及使用PEFT技术对LLM进行微调。如下图所示,任何MLLM至少包含三个组件:作为与用户交互的接口的LLM主干,一个(或多个)视觉编码器(Visual Encoder),以及一个或多个视觉到语言适配器模块(Adapter)。流行的LLM主干选择通常属于LLaMA家族,鉴于它们的权重是免费可获取的,它们仅在公共数据上进行了训练,并且为了适应不同的用例,它们拥有不同的大小。此外,它们的衍生版本也很受欢迎,例如Alpaca和Vicuna。前者在使用GPT-3编写的指令上微调LLaMA,而后者利用用户与ChatGPT的共享对话。其他选择包括OPT、Magneto、MPT以及经过指令调整或多语言版本的T5,这是一个为多个任务预训练的编码器-解码器语言模型。

图片

MLLMs的架构概述

1. 语言模型的核心作用与用户接口

多模态大语言模型(MLLMs)是在传统大语言模型(LLMs)的基础上发展而来,旨在处理和理解多种模态的数据,如文本和图像。LLMs的核心作用在于其强大的语言理解和生成能力,这使得它们能够在没有明确任务指示的情况下,通过上下文学习(in-context learning)来执行各种语言任务。MLLMs继承了这些能力,并通过用户接口与用户进行交互,用户可以通过对话形式提出问题或指令,模型则能够理解并生成相应的回答或执行指定的任务。

2. 视觉编码器的重要性与常用模型

视觉编码器在MLLMs中扮演着至关重要的角色,它负责将视觉信息转换为模型能够理解的特征表示。这些特征随后会被送入语言模型,与文本信息结合进行处理。常用的视觉编码器模型包括基于Vision Transformer(ViT)的CLIP和OpenCLIP模型,它们通过对齐图像和文本嵌入来训练,以此捕获视觉内容的丰富信息。此外,EVA-CLIP模型[1]也被用于训练MLLMs,它通过重建遮蔽的图像-文本对齐视觉特征来提供有效的视觉编码(下图)。

图片

3. 视觉到语言适配器的作用与类型

视觉到语言适配器是连接视觉编码器和语言模型的关键组件,它使得不同模态的信息能够在同一模型中融合和交互。适配器的类型多样,从简单的线性层或多层感知机(MLP)到更复杂的基于Transformer的Q-Former模型[2],以及增加的条件交叉注意力层。这些适配器通过不同的机制将视觉特征映射到文本空间,从而实现跨模态的信息融合(下图是Q-Former使用一组可学习的查询向量从冻结的图像编码器中提取视觉特征,在这里它为LLM提供最有用的视觉特征,以便LLM输出期望的文本。)。

图片

MLLMs的训练方法与数据

1. 单阶段与双阶段训练的对比

MLLMs的训练通常涉及单阶段或双阶段过程。单阶段训练中,模型通常使用图像-文本对进行联合训练,同时处理视觉知识和文本指令。而双阶段训练首先关注将图像特征与文本嵌入空间对齐,在第二阶段则进一步提升模型的多模态对话能力。不同的MLLMs采用不同的训练策略,以适应特定的任务和性能要求。

2. 训练数据的来源与特点

MLLMs的训练数据来自多个来源,包括公开的图像-文本数据集如LAION-2B[3]、LAION-400M[4]、Conceptual Captions[5]和COYO-700M[6]等。这些数据集提供了大量的图像和对应的描述,用于训练模型的视觉理解能力。此外,还有专门为视觉指令调整而设计的数据集,如LLaVA-Instruct[7],它扩展了COCO数据集,加入了由GPT-4生成的指令。这些数据集的多样性和丰富性对于训练具有强大视觉理解和生成能力的MLLMs至关重要。

MLLMs在视觉任务中的应用

1. 视觉理解任务的范畴

视觉理解任务是多模态大语言模型(MLLMs)的关键应用领域之一。这些任务通常要求模型能够理解和解释视觉内容,包括图像和视频。视觉理解的范畴广泛,涵盖了从基本的图像分类和目标检测到更复杂的场景解析、视觉问答(VQA)、图像字幕生成和视觉对话等任务。例如,在视觉问答任务中,模型需要根据图像内容回答相关问题,这不仅要求模型具备强大的视觉感知能力,还要求其能够理解和处理自然语言。

2. 视觉定位与图像生成的进展

在视觉定位方面,MLLMs已经能够实现精确的目标检测和定位。例如,通过结合视觉编码器和语言模型,MLLMs可以识别图像中的特定对象,并在对话中提供关于这些对象的信息。在图像生成方面,MLLMs的进展同样显著。它们不仅可以生成与文本描述相匹配的图像,还可以进行图像编辑,如改变图像中对象的颜色或形状。这些能力的提升得益于先进的视觉编码器和适配器模块的开发,以及针对特定视觉任务的训练数据集和评估基准的编制。

面向视频、多模态和特定领域的MLLMs

1. 视频理解能力的增强

随着研究的深入,MLLMs在视频理解方面的能力也得到了显著提升。这些模型可以独立处理视频帧,提取帧级特征,并通过池化机制或基于Q-Former的解决方案结合这些特征。这使得MLLMs能够处理视频对话、视频问答和视频字幕生成等任务。此外,一些模型还结合了音频特征,进一步丰富了视频序列的表示。

2. 能处理多种模态的模型

上文讨论的几乎所有模型都将单一模态作为输入处理。然而,有大量研究工作集中在设计能够有效处理多种模态的有效解决方案上。这通常是通过使用如Q-Former和Perceiver[8]这样的Transformer模块来对齐多模态特征,或者通过利用ImageBind[9]来有效提取本质上是多模态的特征并进行联合空间嵌入(下图),图像、视频和音频是最常见的处理模态。此外,一些工作也有效地编码了3D数据和惯性测量单元(IMU)传感器信号。

图片

除了这些能处理多模态输入的解决方案,也有像NExT-GPT[10]和Unified-IO 2[11]这样的能够生成不同模态输出的解决方案。下图是NExT-GPT通过将LLM与多模态适配器和扩散解码器连接起来, 实现了通用多模态理解和任意模态间的输入和输出。

图片

3. 针对特定应用领域的模型定制

除了通用的视觉理解任务,MLLMs也被定制用于特定领域的应用。这些领域特定的MLLMs通常是在预训练的LLM基础上进行训练,或者使用特定领域的数据对现有MLLM进行微调。例如,已经开发了针对文档分析、医疗视觉学习和自动驾驶等领域的MLLMs。这些模型不仅能够处理通用的视觉输入,还能够理解和执行与特定领域相关的复杂任务,如信息提取、图表分析和交通状况理解。

MLLMs的挑战与未来方向

在多模态大语言模型(MLLMs)的发展过程中,研究者们面临着一系列挑战,同时也在探索未来的发展方向。以下是目前MLLMs面临的一些主要挑战以及可能的解决策略。

1. 减少幻觉现象的策略

MLLMs在生成长文本描述时,常常会出现幻觉现象,即模型生成与图像内容不符的描述。为了解决这一问题,研究者们提出了多种策略。例如,通过引入对抗性样本来训练模型,使其能够更好地区分相关与不相关的内容。此外,还可以通过增加模型的视觉理解能力,例如使用更强大的视觉编码器,或者通过两阶段训练方法,在第一阶段让视觉编码器可训练,以增强模型对视觉信息的捕捉能力。

2. 防止生成有害和有偏见内容的方法

由于MLLMs通常使用从网络上收集的大量数据进行训练,这些数据可能包含有害或有偏见的内容。为了防止模型生成不当内容,研究者们正在探索不同的方法。一种方法是在训练过程中引入安全和公平性的约束,以确保模型不会生成不适当的内容。另一种方法是使用更加精细的数据清洗和筛选技术,以减少训练数据中的有害内容。

3. 降低计算负担的可能途径

从下图可以看到各种MLLMs训练所需的GPU小时数,说明MLLMs训练和部署需要大量的计算资源,这限制了它们的可访问性和可持续性。为了降低计算负担,研究者们正在探索多种途径。例如,使用参数高效的微调技术(PEFT),只对模型的一小部分参数进行更新,从而减少训练成本。此外,还可以通过模型压缩和量化技术来减少模型的大小和运行时的计算需求。

图片

总结:MLLMs的当前状态与未来展望

MLLMs作为一种新兴的技术,已经在多模态理解和生成任务中展现出了巨大的潜力。然而,它们仍然面临着一系列挑战,包括如何减少幻觉现象、防止生成有害内容以及降低计算成本。未来的研究将需要在提高模型性能的同时,解决这些挑战,以实现更广泛的应用和更好的用户体验。随着技术的不断进步和研究的深入,我们有理由相信MLLMs将在未来的人工智能领域扮演更加重要的角色。

这篇关于今日arXiv最热NLP大模型论文:一文读懂多模态大模型的进化之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

一文详解JavaScript中的fetch方法

《一文详解JavaScript中的fetch方法》fetch函数是一个用于在JavaScript中执行HTTP请求的现代API,它提供了一种更简洁、更强大的方式来处理网络请求,:本文主要介绍Jav... 目录前言什么是 fetch 方法基本语法简单的 GET 请求示例代码解释发送 POST 请求示例代码解释

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例