多模态大语言模型综述(中)-算法实用指南

news2024/9/20 15:45:26

本文是Multimodal Large Language Models: A Survey的译文之算法实用指南部分。

  • 上:摘要、概念与技术要点实用指南
  • 中:算法实用指南(本文)
  • 下: 任务的实用指南(应用)、挑战等

原始信息

  • 标题: Multimodal Large Language Models: A Survey
  • 译文: 多模态大语言模型综述
  • 地址: arxiv.org/pdf/2311.13…
  • 作者: Jiayang Wu , Wensheng Gan, Zefeng Chen , Shicheng Wan , Philip S. Yu

如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓
请添加图片描述

IV. 算法实用指南

多模态的算法可分为两类: 基础模型和大规模多模态预训练模型。基础模态是多模态的基本框架, 许多新的大规模多模态预训练模型都是基于它进行改进的。

下图是论文涉及的算法清单,含模型名字、年份、技术要点、功能及参考编号,以及代码开源情况。

image.png

基础模型

Transformer

Transformer[39]于2017年提出,颠覆了传统的深度学习模型,在机器翻译任务中取得了良好的性能。它因能够在大规模语料库上进行自我监督的预训练,并随后对下游任务进行微调而受到关注。许多预先训练的大规模模型都遵循了这种范式。

Transformer的权重共享特性与输入序列长度无关,因此适用于多模态应用。

模型中的某些模块可以共享权重参数。Transformer中的权重共享概念源于自注意模块和前馈神经网络不受输入序列长度的影响。这种权重共享概念也可以应用于多模态模型。例如,在涉及图像和文本的多模态设置中,从图像训练中学习到的权重参数可以用于文本训练,并且结果仍然有效,有时即使不需要微调。

VIT(vision transformer)

Transformer模型及其自注意机制在自然语言处理(NLP) 领域的卓越性能引起了计算机视觉领域的广泛关注。许多研究已经开始将Transformer机制纳入计算机视觉任务中。

然而,Transformer在输入数据大小方面有局限性,需要仔细考虑输入策略。Google从之前的工作中汲取灵感,提出了视觉转换器(ViT)模型,该模型由强大的计算资源提供支持。ViT模型通过将图像分割成块(例如,将图像分割为16个块)来解决输入大小限制[40]。然后对这些补丁进行处理,并将其转换为Transformer可以通过线性映射处理的输入。这一突破弥补了计算机视觉和NLP之间的差距。与以前的方法相比,ViT不仅使Transformer能够处理图像,而且还引入了更有效的图像特征提取策略。

BEiT

如果ViT可以被视为计算机视觉中Transformer模型的自适应,那么BEiT可以被认为是计算机视觉中BERT的自适应[24]。生成式预训练(Generative pre-training)是自我监督(self-supervised)学习中的一种重要方法和训练目标,在这种学习中,模型学习如何在不依赖标签或手动标注的情况下生成数据。生成预训练在自然语言处理方面取得了重大成功。

BEiT解决了计算机视觉生成式预训练中的两个关键挑战。第一个挑战是如何将图像信息转换为类似于NLP的离散令牌。BEiT使用离散视觉嵌入聚合方法对图像进行离散化。第二个挑战是如何将图像信息有效地纳入预训练过程。BEiT利用完善的ViT结构来处理图像信息。通过解决这两点,BEiT成功地将掩蔽语言建模(MLM)和掩蔽图像建模(MIM)方法应用于计算机视觉领域,将生成预训练引入计算机视觉领域并实现了大规模的自监督预训练。

大规模多模态预训练模型

Visual ChatGPT

Visual ChatGPT[38]结合了不同的视觉基础模型(VFM)来处理各种视觉任务,例如图像理解和生成。不仅允许用户发送和接收语言,还允许用户接收图像,从而实现复杂的视觉问题和指令。该系统还引入了Prompt Manager,它有助于利用VFM并以迭代的方式接收他们的反馈。这个迭代过程一直持续到系统满足用户的要求或达到结束条件。通过提示将视觉模型信息注入ChatGPT,系统将视觉特征与文本空间对齐,增强了ChatGPT的视觉理解和生成能力。

Visual ChatGPT具有处理语言和图像之外的模态的能力。虽然该系统最初专注于语言和图像,但它为融入视频或语音等其他模态开辟了可能性。这种灵活性消除了每次引入新的模态或功能时训练全新的多模态模型的需要。

MM-REACT

MM-REACT[41]将ChatGPT与各种视觉模型相结合,以实现多模态任务,主要通过VQA格式进行演示。在回答问题时,ChatGPT将视觉模型作为工具,并根据具体问题决定是否使用它们。

该系统与之前使用VQA的字幕模型和语言图像模型的作品有相似之处。在这些方法中,字幕模型将图像转换为文本,然后由更大的模型用作证据来生成答案。然而,MM-REACT在自主决定是否调用视觉模型的能力方面有所不同。

Frozen

Frozen[42]介绍了在多模态上下文学习中使用LLM的新概念。具体方法包括使用视觉编码器(visual encoder)将图像转换为嵌入(embedding)。然后将这些嵌入与文本连接,创建一个集成了两种模态的组合数据格式。随后,该模型使用自回归方法来预测下一个令牌。在整个训练过程中,LLM保持冻结状态,而视觉编码器是可训练的。这允许最终模型保留其语言建模能力,同时获得在多模态环境中执行上下文学习的能力。

BLIP-2

BLIP-2[43]在编码图像时采用了与Flamingo类似的方法,利用Qformer模型提取图像特征。Qformer扮演的角色类似于火烈鸟的感知重采样器。然后,该模型通过交叉注意力促进图像-文本交互。训练期间,BLIP-2冻结视觉编码器和LLM,并且仅微调Qformer。然而,当对特定的下游任务数据集进行微调时,BLIP-2解锁视觉编码器,并将其与Qformer一起进行微调。

BLIP-2的训练过程包括两个阶段

  1. 只有Qformer和视觉编码器(visual encoder)参加训练。它们使用经典的多模态预训练任务进行训练,如图像文本匹配、对比学习和基于图像的文本生成。这个阶段使Qformer能够学习如何从视觉编码器中快速提取与文本相关的特征。
  2. 将Qformer编码的矢量插入LLM中用于字幕生成。BLIP-2在VQA的零样本和微调方案中都表现出了良好的性能。对于同一任务,它在不同数据集之间具有良好的可转移性。

LLaMA-Adapter

LLaMA-Adapter[44] 通过插入适配器在LLaMA中引入了高效的微调,可以扩展到多模态场景。适配器是自适应提示向量,作为可调参数连接到Transformer的最后一层。当应用于多模态设置时,首先使用冻结视觉编码器将图像编码为多尺度特征向量。然后,在将这些向量按元素添加到自适应提示向量之前,通过级联和投影操作来聚合这些向量。

MiniGPT-4

MiniGPT-4 [45] 是基于BLIP-2和Vicuna的组合的GPT-4的某些功能的复制。它直接从BLIP-2传输Qformer和视觉编码器,并将它们与LLM一起冻结,只在视觉侧留下一个线性层进行微调。这种可调参数的压缩导致模型大小为15M。

此外,还采用了两阶段微调策略: i).字幕(Caption)生成被用作训练任务。该模型生成多个字幕,然后使用ChatGPT重写这些字幕,以创建详细而生动的描述。ii).构造一组高质量的图像-文本对以用于进一步的微调。这组图像-文本对用于细化模型。

LLaVA [46]

LLaVA[46]和MiniGPT-4是相似的,因为它们都旨在实现多模态指令的微调。

然而,它们在数据生成和训练策略方面有所不同,导致了LLaVA模型的发展。在数据生成中,LLaVA利用GPT-4创建各种指令微调数据,包括多回合QA、图像描述和复杂推理任务。这确保了模型能够处理广泛的查询。由于GPT-4的当前接口只接受文本输入,因此需要将图像信息转换为文本格式。本研究使用为COCO数据集中的每个图像提供的五个标题和边界框坐标作为输入到GPT-4的文本描述。

关于训练策略,LLaVA采用两阶段方法。i) 根据特定规则,使用从cc3m数据集过滤的600000个图像-文本对对对模型进行了微调。微调过程冻结了视觉和语言模型,只专注于微调线性层。ii)使用上述数据生成策略,生成160000个指令微调数据样本。然后使用语言模型丢失对模型进行进一步的微调。在这个阶段,视觉模型被冻结,线性层和语言模型都被微调。

PICa

PICa[47]是第一次尝试使用LLM来解决VQA任务。其目的是使LLM能够理解和处理图像信息。为了实现这一点,先前的研究采用了字幕模型将图像转换为相应的文本描述。然后,将标题和问题一起输入GPT-3,形成三元组(问题、标题、答案),并利用上下文学习来训练GPT-3回答新问题。在为数不多的情境学习场景中,PICa取得了比 Frozen 更好的成绩,但仍落后于Flamingo。这可归因于在将图像转换为字幕期间视觉信息的丢失。

视觉信息在回答问题中起着至关重要的作用,将图像转换为文本的过程不可避免地会导致视觉细节和语义的损失,从而限制模型的性能。

PNP-VQA

PNP-VQA[48]利用字幕模型和预训练语言模型(PLM)来处理VQA任务。然而,在PLM的选择方面,它与PICa不同,因为它采用了一个名为UnifiedQAv2的问答模型。PNP-VQA专注于实现零样本VQA能力。为了解决字幕中图像信息丢失的问题,PNPVQA在生成字幕之前引入了图像问题匹配模块。该模块识别图像中与给定问题最相关的补丁。然后专门为这些选定的补丁生成字幕。这些标题补丁对,以及原始问题,被用作上下文,并被输入到UnifiedQAv2模型中。这种方法通过结合相关的图像补丁作为上下文,确保生成的字幕与问题密切相关。通过结合图像问题匹配模块并利用UnifiedQAv2作为PLM,PNP-VQA旨在提高生成的VQA字幕的相关性和准确性。这种策略允许模型有效地利用图像和问题信息,以便生成更具上下文相关性的答案。

Img2LLM

Img2LLM[49]旨在解决将LLM用于VQA任务时的两个主要问题: 1) 模态断开,LLM无法有效处理视觉信息;2) 任务断开,通过文本生成预先训练的LLM在没有微调的情况下难以使用VQA的字幕。为了克服这两问题,作者建议通过(问答)对传递视觉信息。具体地,该方法涉及使用字幕模型或类似于PNP-VQA的方法来生成图像的字幕。从这些字幕(captions)中,可以提取出可能作为某些问题答案的相关单词,如名词和形容词。随后,使用问题生成模型来生成相应的问题,从而创建问题回答对。这些配对在上下文学习中起到示范作用,帮助LLM回答有关给定图像的问题。通过问答对传输视觉信息,Img2LLM解决了模态断开和任务断开问题,使LLM能够更好地利用视觉信息执行VQA任务。

术语

  • VQA:自由形式和开放式视觉问答
  • PNP-VQA:Plug-and-Play VQA, 零样本训练的VQA

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2140450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Conda和pip 清空缓存

conda clean --all然后选y,如下图: pip cache purge # 清除所有缓存

视频工具EasyDarwin将本地视频生成RTSP给WVP拉流列表

效果 ffmpeg生成rtsp流 EasyDarwin的rtsp端口默认的是10054, 使用ffmpeg将本地视频转到EasyDarwin的rtsp。 F:\rtsp\ffmpeg-7.0.2-essentials_build\bin>ffmpeg -re -i F:\rtsp\123.mp4 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://127.0.0.1:10054/video11 它的直播…

【C#】vs2022 .net8

Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 更新就会出现

2024年【浙江省安全员-C证】考试试卷及浙江省安全员-C证模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 浙江省安全员-C证考试试卷是安全生产模拟考试一点通总题库中生成的一套浙江省安全员-C证模拟考试题库,安全生产模拟考试一点通上浙江省安全员-C证作业手机同步练习。2024年【浙江省安全员-C证】考试试卷及…

【裸机装机系列】6.kali(ubuntu)-图形界面优化-让linux更适合你的使用习惯

接下来就是图形化界面操作的部分了。会用少量截图来说明,图太多会影响阅读体验,直接文字来描述过程吧。 1> 入口 任务栏左上角——> 开始菜单——> settings——> settings manager 大部分配置都会在这里面设置。 2> 设置里面分的4大…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset

1. 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面 存储的是元素本身。那什么是关…

HCIA--实验十五:ACL通信实验(1)

1.基本ACL配置 一、实验内容 1.需求/要求: 使用一台交换机,两台PC,通过在交换机上配置基本ACL,实现拒绝PC1到PC2的访问。 二、实验过程 1.拓扑图 2.步骤 1.给PC1和PC2配置ip地址: 2.在交换机SW1上做ACL的配置 […

QT模型视图结构1

文章目录 Qt 模型视图结构概述(一)1、模型/视图结构基本原理2、模型3、视图4、代理5、简单实例 Qt 模型视图结构概述(一) ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模型存储数据,视图组件显示模型中的数据,在视图组件里修改的数据会…

QTreeView模糊查询

本文代码效果如下&#xff1a; 本文代码&#xff1a; https://download.csdn.net/download/Sakuya__/89759410https://download.csdn.net/download/Sakuya__/89759410 代码之路 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #incl…

【Linux取经之路】Linux项目自动化构建工具-make/makefile git三板斧

目录 关于make和makefile 一个案例 make和makefile的使用 makefile的基本语法 git的使用 关于make和makefile make是 Linux 系统中广泛使用的一个自动化构建工具&#xff0c;它根据用户定义的规则&#xff08;通常保存在一个名为 makefile的文件中&#xff09;来自动编译…

TikTok商家如何通过真人测评提高流量和销量?

在当今的社交媒体营销领域&#xff0c;TikTok&#xff08;抖音国际版&#xff09;以其独特的短视频内容和庞大的用户群体&#xff0c;成为了品牌营销和产品推广的热门平台。其中&#xff0c;真人测评作为一种有效的营销策略&#xff0c;正逐渐受到商家的青睐。本文将探讨TikTok…

医学数据分析实训 项目三 关联规则分析作业--在线购物车分析--痹症方剂用药规律分析

文章目录 项目三 关联规则分析一、实践目的二、实践平台三、实践内容任务一&#xff1a;在线购物车分析&#xff08;一&#xff09;数据读入&#xff08;二&#xff09;数据理解&#xff08;三&#xff09;数据预处理&#xff08;四&#xff09;生成频繁项集&#xff08;五&…

常见算法——自相关的含义及Python、C实现

常见算法——自相关的含义及C实现 一、概念1. 自相关概念2. 滞后期示例说明&#xff1a; 二、自相关的计算步骤&#xff1a;1. 确定滞后期 (Lag)&#xff1a;2. 计算平均值&#xff1a;3. 计算自相关&#xff1a; 三、示例 Python自相关计算1. 代码2. 运行结果 四、C语言实现自…

yjs06——numpy的介绍与优势(1)

1.numpy是什么&#xff1f; numpy是python的一个科学计算库&#xff0c;用于快速处理 任意维度的数据&#xff1b; numpy的存储单元/基本数据类型是 ndarray&#xff08;多维数组&#xff09; 2.多维数组的建立&#xff1a; import numpy as np np.array([ [1,2,3], [4,5,6…

C++ | Leetcode C++题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), [](const vector<int>& u, const vector<int>& v) …

IV 无规矩不成方圆,区块链的“规矩”是怎么起作用的?

大家好啊&#xff0c;我是豆小匠。 通过前面几期&#xff0c;我们知道区块链是一种非中心化的解决方案&#xff0c;没有“中央处理器”。 那么&#xff0c;区块链中的各种操作&#xff0c;比如转账、状态记录等规则是怎么定义&#xff0c;又是怎么起作用的呢&#xff1f; 本…

QT--connect的使用

在qt里面我们可以用connect将信号与槽函数连接器起来&#xff0c;而connect是一个常用的函数&#xff0c;用法也非常简单。 来看一个非常简单的栗子 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);qpbnew QPushButton(this)…

go语言中的数组指针和指针数组的区别详解

1.介绍 大家知道C语言之所以强大&#xff0c;就是因为c语言支持指针&#xff0c;而且权限特别大&#xff0c;c语言可以对计算机中任何内存的指针进行操作&#xff0c;这样自然而然也会带来一些不安全的因素&#xff0c;所以在golang中&#xff0c;「取消了对指针的一些偏移&…

清理Go/Rust编译时产生的缓存

Go Mac 1T的磁盘频频空间高级&#xff0c;发现是/Users/yourname/Library/Caches/go-build 目录占用了大量空间。 此目录保存来自 Go 构建系统的缓存构建工件。 如果目录太大&#xff0c;请运行go clean -cache。 运行go clean -fuzzcache以删除模糊缓存。 当时直接手工清理了…

C++——多线程编程(从入门到放弃)

进程&#xff1a;运行中的程序 线程&#xff1a;进程中的进程 线程的最大数量取决于CPU的核心数 一、将两个函数添加到不同线程中 demo&#xff1a;两个函数test01()和test02()&#xff0c;实现将用户输入的参数进行打印输出1000次 将这两个函数均放到独立的线程t1和t2中&…