论文名称:Efficient Multimodal Fusion via Interactive Prompting
代码地址:
https://github.com/yaoweilee/PMF
背景
近年来,大规模预训练语言模型和视觉模型取得了巨大成功,导致了预训练多模态模型的激增去尝试协调不同的模态。许多现有方法利用微调来更新每个目标跨模态任务的模型参数。尽管微调可以实现良好的性能,但由于必须存储多模态模型所有参数的梯度和优化器状态,因此需要大量的计算成本。因此,促使研究人员为多模态学习提出比微调更参数有效的方法。提示微调(prompting tuning)冻结预训练模型的所有参数,同时仅调整连续提示来解决这个问题。具体来说,它将可训练的连续提示添加到输入数据的原始标记序列中。训练期间,仅更新连续提示。对于基于多模态提示的学习,最新的方法提出分解预训练模型的功能,该模型表现出高度的灵活性。尽管该方法显着减少了调整参数(例如,小于预训练模型的0.1%),但它与基于微调的方法之间仍然存在很大的性能差距。
此外,该方法采用顺序模块化结构,即预训练的图像transformer模型后面跟随语言transformer模型,这导致跨模态学习中的两个主要问题:单向路径学习和模型层数的显着增加。具体来说,多模态模型中的单向路径学习通常会迫使一种模态与其他模态保持一致,但反之则不然。这样,由于缺少相互对齐,基于多种不同模态的跨模态学习没有得到充分探索。由于提示被添加到输入数据的标记序列中并在训练中更新,因此它们需要在反向传播中进行大量的梯度计算,这会消耗大量的内存。因此,这种方法虽然减少了需要更新的参数数量,但并没有减少训练期间的内存使用量(最多 20%)。换句话说,这种参数有效的方法仍然需要大量的计算资源,这阻碍了它应用于许多现实世界的应用。
为了解决这些问题,本文提出了一种具有高内存效率的基于提示的多模态融合方法,即 PMF。
(1)提出了一种新的模块化多模态融合框架,该框架具有高度灵活性并促进不同模态之间的双向交互。具体来说,采用双流结构,其中预训练的语言模型和图像模型以并行方式构建多模态模型。因此,不同模态的 token 可以通过类似交叉注意力的操作来学习相互交互。
(2)利用三种类型的交互式提示(即查询提示、查询上下文提示和融合上下文提示)来动态学习多模态学习的不同目标。直观上,查询上下文提示和查询提示可以看作一对“问题”和“答案”,目的是提取两种模态之间交换所需的信息。经过非线性映射“翻译器”翻译后,“答案”被传递给其他模态,以实现更好的跨模态理解。最后,融合上下文提示会为所传递的答案提供上下文以促进融合。
(3)PMF 是一种内存高效的方法,可以显着降低大型预训练模型的内存需求。考虑到计算反向传播提示的梯度非常消耗内存,本文建议仅在所使用的单模态transformer的深层添加提示。因此,反向传播不需要经过整个多模态模型,只需要经过几个深的transformer层就可以到达所有可训练的参数,大大减少了训练内存的使用。
方法介绍
基于提示的多模态融合策略(PMF)分为三部分:
(1)为视觉和语言任务开发的单模态transformer。
(2)基本特征提取。
(3)基于交互式提示将两个单模态 Transformer 层集成为多模态 Transformer 层。
图1应用于视觉语言输入的基于提示的多模态融合策略 (PMF)
单模态transformer**😗*
Vision Transformer (ViT) 中RGB 图像输入 x_img ∈ R^h,w,c 首先被切割成 N_img 非重叠块,然后线性投影到每个 z_i ∈ R^d 的嵌入 z 序列中。语言 Transformer 首先将原始文本标记为 N_txt 个one-hot嵌入,然后将这些离散向量转换为 N_txt 连续嵌入序列。Language Transformer 和 Vision Transformer 的连续嵌入具有相同的结构,如下所示:
欠一公式
其中 CLS 是序列前面的特殊标记,因此它在最后一层的表示可以用作整个序列的表示进行分类。请注意,两个单模态transformer具有不同的 CLS token。然后将连续嵌入 z 馈送到由 L 个transformer层组成的transformer编码器中。对于每个transformer层,输入经过包括多头自注意力、层归一化、多层感知器在内的模块,最后通过残差连接添加到原始输入中。
单模态基本特征提取
如图 1 所示,图像和文本输入首先分别被处理并输入到单模态transformer层中提取基本特征。在此阶段,每个编码器的工作方式与在单模态任务中的工作方式完全相同。将起始融合层表示为 Lf 。每个编码器的基本特征提取可以表示为:
其中 θ 代表预训练参数。较小的 Lf 导致较早的融合,较大的 Lf 导致较晚的融合。
多模态融合层–交互式提示
每个融合层由“查询阶段”和“融合阶段”组成,提取的单模态基本特征通过多个多模态融合层进行融合,如图 2 所示。Querying阶段侧重于提取需要传递的内容,并且融合阶段侧重于融合从其他模态传递的提取信息。
图2基于提示的多模态融合层
采用三种交互提示来实现两种模式信息的融合/交换。在查询阶段使用“查询提示”(,)和“查询上下文提示”(,)来提取需要的信息,经过非线性映射后,在融合阶段借助“融合上下文提示”()将提取的信息融合。黄色和绿色元素分别代表语言和视觉模态。红色框表示可训练模块。
这种两阶段的设置使得原本的即时训练与不同的学习目标纠缠在一起。因此,将普通提示解耦为三种:“查询提示”(QP,表示为 )、“查询上下文提示”(QCP,表示为 )和“融合上下文提示”(FCP,表示为 )以动态地了解多模态学习的不同目标。根据提示使用的方式,每种提示可以进一步指定为 和 来相互区分(例如 和 )
如图2所示,QP和QCP用于查询阶段,FCP用于融合阶段。QP是从单模态输入序列中查询信息,QCP为查询提供额外的上下文。QP和QCP就像一对“问题”和“答案”,通过非线性映射来翻译。FCP负责在融合阶段为融合提供上下文。
实验结果
PMF 与微调基线相比具有竞争力。表 2 显示,PMF 通过完全微调基线实现了可比的性能,可训练参数少于 3%,同时节省了 66% 的内存成本,显着缩小了微调和基于提示的方法之间的差距。此外,当配备更大的transformer(即 bert-large 和 vit-large)时,PMF 甚至优于微调 LateConcat。
表 2. 多模式分类性能。PMF 实现了与微调基线相当的性能,可训练参数不到 3%,训练内存使用量高达 66%。MM-IMDB为F1-Macro / F1-Micro,其他为准确性。表中显示了每种方法在训练和评估 UPMC Food-101 时的最大内存使用情况。“-”表示可训练参数小于 0.1 M。PMF-Large 使用 bert-large 和 vit-large 模型(24 个隐藏层),而其他模型则使用 bert-base 和 vit-base 模型(12 个隐藏层)。M 是提示长度,Lf 是起始融合层。
表 3. PMF 模块消融。PMF 中有四种类型的可训练模块。设置融合层 Lf = 10 并一次添加一个不同的模块以查看它们各自的影响。所有带有 ✓ 的提示的长度均为 4,带有 ✓✓ 的提示的长度为 8。
如何学习大模型 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 的正确特征了。