,复旦大学数据智能与社会计算实验室
Fudan DISC
近年来,多模态大模型(LMM)相关的研究百花齐放。然而,现有的综述缺乏对LMM构建中各方面的研究问题的全面讨论。为此,来自复旦大学的研究团队尝试从一个更加具有一般性的角度——“输入输出空间扩展”出发,分析了577篇多模态大模型相关论文,全面系统地总结了当前多模态大模型的研究现状及未来趋势。
01.引言
从ChatGPT问世,大语言模型(Large Language Model,简称LLM)的发展极大地推动了通往泛用性人工智能(General-purpose AI)的进程。然而,要实现更切实广泛的应用,需要模型能够理解语言之外的信息——如图像、视频、音频等多种模态。因此,研究者们开始探讨如何扩展大语言模型的输入输出空间:如图1所示,通过输入端扩展使其理解多模态内容,通过输出空间扩展使其生成多模态的回复,最终成为支持多模态信息交互的多模态大模型(Larg Multi-modal Models, 简称LMM)。
图1:多模态大模型框架概览:将输入和输出扩展到更多的模态和信息,并通过统一建模学习模态间的交互,对齐跨模态的表示。
目前已经有不少的研究工作对LMM近来的发展进行了回顾,但由于目前LMM的研究呈现出百花齐放的态势,多数综述都聚焦于一个特定的角度进行讨论,或局限于对输入端拓展的讨论,或局限于特定的模型架构(仅考虑LLaVA类以连续形式编码模态信息进行扩展,而不考虑离散化表示的LMM,如Chameleon,AnyGPT等),或局限于特定的场景和模态,或局限于特定的子问题,比如数据的构建、评测等。这样的局限性使得LMM构建过程中的问题没有得到全面且系统性的梳理。
为此,本文则尝试从一个更加一般性的角度,“输入输出空间扩展”出发对LMM的构建方法进行回顾。具体来说,我们希望基于现有工作在本文中讨论和回答以下问题:
-
如何通过不同的方式,将或离散或连续的模态表示与文本空间结合得到多模态的输入输出空间?
-
如何设计模型架构及对应的训练策略来对齐所构建的多模态输入输出空间?
-
如何在所拓展的输入输出空间的基础上对多模态大模型进行全面可靠的评测?
-
以具身智能场景为例,输入输出扩展的框架如何进一步扩展到任意形式的输入输出信号,最终达到具有一般性能力的世界基座模型?
本文将以从视觉-语言的角度出发,并自然地拓展到对任意模态的讨论上。在本文的最后,我们对上述问题进行了简单的总结,并提供了对应的take-home messages以及对未来的展望。希望本综述能够为多模态领域的研究者提供一个直观全面的概述并给未来的发展带来一些启示。
02.多模态研究的演变:
从任务专用到通用架构
图2:多模态模型的演变发展历程
在介绍LMM之前,我们希望简单地回顾深度学习场景下多模态研究范式的演变,来说明LMM的特别以及先进之处。具体而言,多模态的研究的范式经历了从“任务专用”到“通用架构”三个阶段的演进过程:
-
任务导向阶段:早期的多模态模型大多是为特定的,具有应用场景的任务设计的,比如视觉问答(VQA)、图像描述(Image Captioning)和图文检索(Image-Text Retrieval)等。每个任务通常需要专门的形式和数据集进行定义。主流的模型架构也根据对应的任务进行设计,因此通用性较差。模型的设计和发展依赖于大量训练样本和特定任务的指标,这样的范式在跨任务应用中表现不佳,且迁移成本高。
-
视觉-语言预训练阶段:为了提升模型的通用性,研究者们引入了类似BERT的自监督预训练方法。在大规模图文对(Image-Text Pair)数据上进行自监督学习,获得的多模态表示可用于多个下游任务。这种方式使模型能够适应更广泛的任务场景,但依然需要在特定任务上引入特定的参数进行微调,未能实现真正的零样本应用。
-
多模态大模型阶段:受大语言模型的启发,研究者们希望利用语言作为用户与模型的统一交互工具,通过将不同模态的信息与语言对齐,使得模型能够在零样本场景中理解多模态信息并生成响应。这种通用性和交互性的提升使得大规模多模态模型有望成为多模态领域的基础模型,支持未来的广泛应用。
03.输入输出空间扩展:
多模态大模型的构建核心
图3:不同的输入输出空间说明
大规模多模态模型的核心问题是如何构建和扩展输入输出空间,从而实现多模态信息的对齐和生成的问题。如图3所示,我们从以下几方面对拓展后的多模态的输入输出空间结构进行了分类:
-
多模态输入空间拓展:为了让模型能够处理不同的模态,需要为文本、图像和音频等模态构建不同的表示方式。例如,文本通常以离散的token表示,而图像则可以通过视觉编码器转化为连续的特征向量(比如通过CLIP)或离散的视觉代码(比如通过VQ-VAE)。这样的输入表示可以分为两类:混合的输入空间(输入类型A)和统一的离散输入空间(输入类型B)。前者将文本作为离散表示,而图像和音频则是连续表示,需要后续设计对应的架构进行对齐;后者通过进一步离散化其他模态的表示,使所有模态的数据在统一的离散空间中表示,减少了跨模态对齐的难度。
-
多模态输出空间扩展:在输出端,LMM可以根据需要生成不同模态的内容。常见的输出空间结构分为三类:仅文本输出空间(输出类型1)、混合多模态输出空间(输出类型2)和统一的离散多模态输出空间(输出类型3)。只输出文本的模型可以生成语言描述,适用于多模态理解类任务;混合多模态输出的模型则划分了输出的空间,并将连续的输出引入到特定的模态解码器(如Stable Diffusion)中来生成多模态的回复;而统一离散输出则通过建立统一的离散表示,让模型自由的在各模态间切换,实现更灵活的多模态内容生成。
-
输入输出空间结构的组合:通过组合上述不同结构的输入空间,主流的LMM可以分为:(i)LLaVA,Qwen-VL为代表的多模态理解模型,利用类型A的输入和类型1的输出,能够以文本进行回复;(ii)以GILL,DreamLLM为代表的多模态生成模型,利用类型A的输入和类型2的输出,能产生多模态混合的回复;(iii)以Chameleon,Any-GPT为代表的统一离散化模型,利用类型B的输入和类型3的输出,以统一的离散形式支持多模态的输入和输出。当然也存在这三类以外的架构,具体请参阅原文表格1,2中的总结。
04.多模态对齐架构:
实现跨模态理解与生成
在扩展输入输出空间之后,如何在不同模态之间实现对齐是多模态大模型设计中的关键。首先需要根据所构建的输入输出设计对应的模型架构,大致可以分为以下几个模块:
-
基座模型用于统一建模不同模态的表示,主流为多层的Transformer架构,与此同时,基座模型通常会从预训练的LLM进行初始化,得到更好的文本表示能力。
-
输入对齐模块来帮助模型理解和对齐来自多个模态的输入。对于类型A的输入空间,需要引入连接模块(如多层感知器或注意力模块)来将视觉或音频信息转换为与文本表示兼容的形式,从而进行统一处理。对于类型B的输入空间则直接通过拓展输入词表的形式即可完成对齐。上述方法都能保证不同模态输入的一致性。
-
内部对齐模块通过在基座模型内部,通常是Transformer架构基础上引入跨模态注意力层或“视觉专家”模块,增强了对于跨模态建模的能力。这种方式增强了模态之间的内部关联,使得模型能够更深层次地理解复杂的多模态信息。
-
输出对齐模块来将基座模型的输出对齐到特定模态的生成器(例如图像生成器或音频生成器)上。类型1和3的输出空间可以直接通过分类解码方式进行完成,无需额外模块,而类型2的输出空间则需要额外的映射模块(通常为线性层和Transformer)来连接基座模型的输出和模态生成器的输入。这最终使模型不仅能生成文本,还可以在需要时生成图像或音频,为多模态生成提供了更多可能性。
详细论述以及各个模型的架构总结请读者参阅原论文Section 4.1和表格1,2。
05.多模态大模型的训练
图4:多模态大模型的不同阶段的训练配置
上一节中构建的架构需要学习到不同模态之间的关联,从而在各种任务中准确地处理多模态信息。通常训练包括两个阶段:
-
第一阶段是基于大规模的多模态交错数据(multimodal interleaved data)进行预训练,以建立初步的跨模态关联:
-
训练数据:通常包括简单的X-Text Pairs(X-文本对)数据,多模态交错文档以及各种特定场景下的数据,这些数据可以通过标注、网络爬取以及模型生成的方式得到。请参阅原文表格3,4,5。
-
训练目标:通常会根据上述数据构建对应的多模态序列,采用对于文本生成的损失进行训练,帮助模型从多模态语境中生成相关的文本。而对于具有多模态生成能力的模型,则同样会需要对序列其他模态内容进行生成。
-
其他训练设定:针对不同的模型架构,需要考虑在预训练阶段激活不同的模块,在保证足够的可学习参数容量的同时引入更多高质量的数据。进一步还可以将预训练进一步拆分成多个阶段,逐步进行学习。
-
接着通过指令微调,让模型理解和遵循多模态场景下的用户指令:
-
训练数据:类似LLM,通常需要引入了多模态信息的指令数据进行支持。常见的构造方法为重构已有的任务数据集以及通过self-instruct类方式构造新的数据,具体请参阅原文表格6,7,8。具体训练中需要合理地根据目标合理地混合不同的指令数据来提高模型的泛化性。
-
训练目标:类似预训练,本阶段同样利用生成的损失进行训练,需要额外考虑的是仅需要考虑对指令数据中模型回复部分进行生成和损失的计算,而不用考虑用户输入的指令。
-
其他训练设定:在指令微调过程中,由于语境较为复杂,通常需要激活基座模型来提供足够的可学习参数,还可以通过引入parameter-efficient模块(比如LoRA),或者引入纯文本的训练数据来更好地保持基座模型本身的能力。
-
除此之外,一些特殊的模型架构还会引入额外的训练阶段,比如生成类模型可能需要额外的生成训练来更好地对齐多模态的输出空间;而引入了基于MoE的稀疏内部对齐模块的模型则需要通过sparse upcycling后进行额外的训练来更好地学习稀疏化的模型参数。
详细论述请读者参阅原论文Section 4.2,以及表格9,10对于现有模型训练设定的总结。
06.多模态大模型的评测
在将输入输出空间拓展到多个模态后,LMM就可以支持各种各样的下游应用。为了保证可靠性,对于其实际能力的评估就显得尤为重要。本文根据不同任务要求的输出空间的不同,将评测任务分为以下类别:(详细论述请读者参阅原论文Section 5,6)
6.1 模态理解任务
图5:模态理解任务的输出输出和评估方式概览
这类评测的目标在于探究模型是否很好地理解了多模态信息,通常以“X+Text→Text”的输入输出形式存在。如图5所示,理解类Benchmark通常根据目标的模态和对应任务场景设计对应的多模态语境输入(数据样本),并设计合适的问题形式,结合数据构造对应的指令,最终根据不同的评估目标,设计对应的指标和评估方法来判断自然文本形式的输出是否包括了正确的信息。
6.2 模态生成任务
图6:模态生成任务的输入输出和评估方式概览
生成类任务则针对输出空间的拓展进行评测,衡量模型在多模态场景下生成内容的连贯性和准确性,大多以“X+Text→X”的输入输出形式存在。如图6所示,这些任务要求模型根据一定的生成条件生成目标模态的数据,而生成的条件可能是文本,同模态的信息,或者是其他模态的信息。最后根据目标的生成模态,生成目标的参照信息(比如ground truth,ground truth对应的文本描述等),设计不同的指标来评估生成内容的质量。
6.3 幻觉诊断任务
尽管在输入输出空间进行了有效的拓展,目前多模态大模型内部仍然存在模态不对齐的情况,模型无法完全理解多模态的信息,产生了错误的输出,即为幻觉。对于幻觉的评估也非常重要,目前通常会有判别式以及生成式的评估方法,前者考察模型是否能区分正确和带幻觉的信息,后者诊断模型在输出过程中信息的准确性。
07.扩展至具身智能场景
图7:不同具身智能任务的输出和输出示例
除了对于模态的拓展,我们发现多模态大模型的输入和输出能够进一步扩展,容纳更多形式的信号,具有很强的可扩展性,其中最具有应用场景的即为具身智能体(Embodied Agent)的构建。
具身智能体指的是能够在物理环境中感知、理解并执行任务的智能系统,例如机器人、自动驾驶汽车等。这类智能体需要处理来自多种模态的信息(如视觉、听觉、触觉等),并能够实时地与环境交互。因此,具身智能体不仅要求多模态信息的理解,还需具备实时决策和行动规划的能力。
如果需要将多模态大模型应用到具身场景下,则需要如图7所示,在输入端拓展对环境的感知能力,并在输出端拓展对于不同行为的行动和规划能力。目前已经有了一些相关的研究工作,对于输入端,研究者通过将环境地图、价值函数加入多模态大模型的输入空间,可以帮助智能体识别场景中的物体、人物、障碍物等,从而增强智能体的环境感知能力。在输出端,通过为不同的具身智能任务设计动作空间和对应的输出空间,具身智能体可以将不同模态的信息对齐并整合,并在动态环境下的实时决策。同样,针对具身目标的输入输出扩展,相应的模型架构、训练方法、以及评估方法也被提出。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。