当前位置: 首页 > news >正文

2024多模态大模型综述最新总结

摘要

随着人工智能技术的快速发展,多模态大模型(MLLM)已成为研究的新热点。这些模型以强大的大型语言模型(LLM)为基础,能够处理和理解多种模态信息,如文本、图像、视频和音频。本文综述了MLLM的最新进展,包括其基本架构、训练策略、数据和评估方法,并探讨了如何扩展MLLM以支持更细粒度的输入输出、更多模态、语言和应用场景。此外,还讨论了多模态幻觉问题和一些关键技术,如多模态上下文学习(M-ICL)和多模态链式推理(M-CoT)。最后,文章指出了当前MLLM面临的挑战和未来研究方向。

1、引言

近年来,LLM在自然语言处理(NLP)任务上展现出了惊人的零样本/少样本推理能力。然而,这些模型在视觉方面是“盲”的,因为它们只能理解离散的文本。与此同时,大型视觉模型(LVM)在视觉感知方面表现出色,但在推理方面通常落后。MLLM的出现,结合了LLM和LVM的优势,能够接收、推理并输出多模态信息。

2、MLLM的基本构成

MLLM通常由三个模块组成:预训练的模态编码器、预训练的LLM和一个连接它们的模态接口模态编码器将原始信息(如图像或音频)压缩成更紧凑的表示。预训练的LLM则负责理解和推理处理过的信号。模态接口用于对齐不同的模态。一些MLLM还包括一个生成器,用于输出除文本之外的其他模态。

2.1 模态编码器

模态编码器的作用是将原始信息压缩成LLM能够理解的紧凑表示。常见的做法是使用预训练的编码器,这些编码器已经在其他模态上进行了对齐。例如,CLIP结合了一个通过大规模预训练在图像-文本对上语义对齐的视觉编码器。因此,使用这种最初就已经预对齐的编码器与大型语言模型(LLMs)进行对齐预训练会更容易。

表1总结了常用的一系列图像编码器。除了普通的CLIP图像编码器之外,一些研究还探索了使用其他变体。 例如,MiniGPT-4采用了EVA-CLIP(ViT-G/14)编码器,该编码器使用改进的训练技术进行训练。相比之下,Osprey引入了一个基于卷积的ConvNext-L编码器,以利用更高分辨率和多级特征。

在选择编码器时,通常会考虑诸如分辨率、参数大小预训练语料库等因素。值得注意的是,许多研究已经通过实验验证了使用更高分辨率可以实现显著的性能提升。提高输入分辨率的方法可以分为直接缩放分块方法

直接缩放方式将更高分辨率的图像输入到编码器中,这通常涉及进一步调整编码器或替换为更高分辨率的预训练编码器。同样,CogAgent使用双编码器机制,其中两个编码器分别处理高分辨率和低分辨率图像。通过交叉注意力,将高分辨率特征注入到低分辨率分支中。

分块方法将高分辨率图像切割成小块,并重用低分辨率编码器。例如,Monkey和SPHINX将大图像分割成较小的块,并将子图像与降采样的高分辨率图像一起发送到图像编码器,其中子图像和低分辨率图像分别捕获局部和全局特征。

2.2 预训练LLM

与从头开始训练一个大型语言模型(LLM)相比,使用预训练的模型更为高效和实用。通过在网络语料库上的大规模预训练,LLMs已经嵌入了丰富的世界知识,并展现出强大的泛化和推理能力。

在表2中总结了常用的和公开可用的LLMs。值得注意的是,大多数LLMs属于因果解码器类别,遵循GPT-3。其中,Flan-T5系列是较早在BLIP-2和InstructBLIP等工作中使用的LLMs。LLaMA系列Vicuna家族是引起学术界广泛关注的代表性开源LLMs,这两个LLMs主要在英语语料库上进行预训练,因此它们在多语言支持方面受限,例如中文。相比之下,Qwen是一个支持中文和英文的双语LLM。

扩大LLMs的参数规模也能带来额外的收益,类似于提高输入分辨率的情况。具体来说,刘等人发现,仅仅将LLM从70亿参数扩大到130亿参数就能在各种基准测试上带来全面的提升。此外,当使用340亿参数的LLM时,模型显示出了在训练期间仅使用英文多模态数据时的零样本中文能力。

也有一些工作使用较小的LLMs以便于在移动设备上部署。例如,MobileVLM系列使用了缩小版的LLaMA(称为MobileLLaMA 1.4B/2.7B),使得在移动处理器上能够高效推理。

2.3 模态接口

由于LLM只能感知文本,因此需要一个接口来建立自然语言和其他模态之间的桥梁。实践中,通常在预训练的视觉编码器和LLM之间引入一个可学习的连接器。另一种方法是在专家模型的帮助下将图像翻译成语言,然后将语言发送给LLM。

可学习的连接器(Learnable Connector)负责弥合不同模态之间的差距。具体来说,该模块将信息投影到LLM能够高效理解的空间中。根据多模态信息融合的方式,大致有两种实现这种接口的方法,即令牌级别(token-level)和特征级别(feature-level)融合。

  1. 令牌级别(Token-level)融合

    • 在这种方法中,多模态信息被转换成LLM可以处理的令牌(tokens),这些令牌可以直接嵌入到文本序列中,比如BLIP-2。
    • 例如,图像或音频特征可以被转换成特定的令牌,然后与文本令牌一起被送入LLM进行处理。
    • 这种方法的优点是可以直接利用LLM的序列处理能力,但可能需要复杂的令牌设计和预处理步骤。
  2. 特征级别(Feature-level)融合

    • 在特征级别融合中,不同模态的特征被映射到一个共同的特征空间,然后在这个空间中进行融合。
    • 这种方法通常涉及到将图像、音频等模态的特征向量与文本特征向量进行某种形式的组合或加权。
    • 特征级别融合的优点是可以更灵活地处理不同模态的特征,但可能需要更复杂的神经网络架构来实现有效的特征交互。

这两种方法都有其优势和挑战,选择哪一种方法取决于具体的应用场景、数据特性以及模型的设计。在实际应用中,可能需要根据性能和效率的考量来调整和优化连接器的设计。

特征级别(Feature-level)融合通过插入额外的模块来实现文本特征和视觉特征之间的深度交互和融合。以下是一些具体的例子:

  1. Flamingo:Flamingo模型在LLMs的固定Transformer层之间插入额外的交叉注意力层,从而将语言特征与外部视觉提示相结合。Flamingo采用了感知重采样(Perceiver Resampler)技术和门控交叉注意力(Gated Cross-Attention)技术进行视觉多模态信息和LLM的融合。

  2. CogVLM:CogVLM在每个Transformer层中插入一个视觉专家模块,以实现视觉和语言特征之间的双重交互和融合[75]。CogVLM模型包括四个基本组件:视觉转换编码器(ViT)、MLP适配器、预训练的大型语言模型(GPT)和视觉专家模块[23]。视觉专家模块在每一层中由QKV矩阵和每一层的MLP组成,QKV矩阵和MLP的形状与预训练语言模型的形状相同,并从预训练的语言模型中初始化。

  3. LLaMA-Adapter:LLaMA-Adapter引入可学习的提示(prompts)到Transformer层中,这是一种轻量级的方法,使用可学习的提示和零初始化的注意力来适配LLaMA,使其成为一个遵循指令的模型。

这些方法通过在预训练的视觉编码器和LLM之间引入可学习的连接器,有效地实现了不同模态之间的深度融合和交互。通过这种方式,模型能够更好地理解和处理多模态输入,提高在多模态任务上的性能。

在参数规模方面,可学习的接口通常与编码器和大型语言模型(LLMs)相比只占很小一部分。以Qwen-VL为例,Q-Former的参数规模约为0.08亿,占整个参数的不到1%,而编码器和LLM分别占约19.8%(1.9亿)和80.2%(7.7亿)

3、训练策略和数据

MLLM的训练分为三个阶段:预训练、指令调优和对齐调优。每个阶段都需要不同类型的数据,并实现不同的目标。

3.1 预训练

预训练的主要目标是对齐不同模态并学习多模态世界知识。这通常需要大规模的文本配对数据,例如图像描述数据。

3.2 指令调优

指令调优旨在教会模型更好地理解用户的指令并完成任务。这种调优方式使得LLM能够通过遵循新指令泛化到未见任务,从而提高零样本性能

3.3 对齐调优

对齐调优通常用于需要模型与特定人为偏好对齐的场景,例如减少幻觉响应。目前主要有两种技术:基于人类反馈的强化学习(RLHF)和直接偏好优化(DPO)。

4、评估

评估是MLLM开发的重要组成部分,它为模型优化提供反馈,并帮助比较不同模型的性能。MLLM的评估可以分为封闭集开放集两种类型。

4.1 封闭集

封闭集问题是指可能的答案选项被预定义并限制在有限集合中的问题。评估通常在特定任务的数据集上进行。

4.2 开放集

与封闭集问题相比,开放集问题的回答可以更加灵活,MLLM在这类问题中通常扮演聊天机器人的角色。

5、MLLM的扩展

MLLM的研究在扩展其能力方面取得了显著进展,从更强大的基础能力到更广泛的应用场景覆盖。

5.1 粒度支持

为了促进代理与用户之间的更好交互,研究人员开发了具有更细粒度输入和输出支持的MLLM。

5.2 模态支持

增加对模态的支持是MLLM研究的趋势之一。研究人员探索了使MLLM适应支持更多模态内容的输入,如3D点云。

5.3 语言支持

当前模型主要是单语的,部分原因是非英语训练语料库的质量参差不齐。一些工作致力于开发多语言模型,以便覆盖更广泛的用户群体。

5.4 场景/任务扩展

除了开发通用的通用助手外,一些研究还专注于更具体的应用场景,其中需要考虑实际条件,而另一些研究则将MLLM扩展到具有特定专业知识的下游任务。

6、多模态幻觉

多模态幻觉是指MLLM生成的回答与图像内容不一致的现象。这是一个基础且重要的问题,已经引起了越来越多的关注。

6.1 评估方法

评估多模态幻觉的方法包括CHAIR、POPE、MME、HaELM和FaithScore等。

6.2 缓解方法

缓解多模态幻觉的方法大致可分为三类:预校正、过程中校正和后校正。

7、扩展技术

7.1 多模态上下文学习(M-ICL)

M-ICL是LLM的重要能力之一,它允许模型从少数示例中学习并推广到新问题,从而以少样本的方式解决复杂任务。

7.2 多模态链式推理(M-CoT)

M-CoT是将LLM的链式推理能力扩展到多模态领域。M-CoT要求模型不仅输出最终答案,还输出导致答案的推理过程。

7.3 LLM辅助视觉推理

LLM辅助视觉推理系统利用预训练的LLM作为助手,执行视觉推理任务。这些系统表现出强大的泛化能力、新兴能力和更好的交互性及控制性。

8、挑战和未来方向

MLLM的发展仍处于初级阶段,存在许多需要改进的地方:

  • 处理长上下文的多模态信息:当前的MLLM在处理长上下文的多模态信息方面存在限制,这限制了具有更多多模态标记的高级模型的发展。
  • 遵循复杂指令:MLLM需要升级以遵循更复杂的指令,例如生成高质量的问题-答案对数据。
  • M-ICL和M-CoT技术的改进:M-ICL和M-CoT技术的研究仍处于初级阶段,MLLM的相关能力较弱,因此探索其背后的机制和潜在改进是有意义的。
  • 基于MLLM的具身代理的发展:基于MLLM的具身代理是一个热门话题,开发能够与真实世界互动的代理模型具有重要意义。
  • 安全问题:与LLM类似,MLLM可能容易受到精心设计的攻击,可能会被误导输出有偏见或不期望的回答。因此,提高模型的安全性将是一个重要的研究课题。

结论

本文综述了MLLM的现有文献,并提供了其主要方向的广泛视角,包括基本配方和相关扩展。此外,文章强调了当前研究中需要填补的差距,并指出了一些有前景的研究方向。希望本综述能为读者提供MLLM当前进展的清晰图景,并激发更多的研究工作。

相关文章:

2024多模态大模型综述最新总结

摘要 随着人工智能技术的快速发展,多模态大模型(MLLM)已成为研究的新热点。这些模型以强大的大型语言模型(LLM)为基础,能够处理和理解多种模态信息,如文本、图像、视频和音频。本文综述了MLLM的…...

Redis——缓存穿透

文章目录 1. 问题介绍1.1 定义1.2 举例 2. 解决方案2.1 方案一:空值缓存2.1.1 做法2.1.2 举例2.1.3 示例代码2.1.4 优点2.1.5 缺点 2.2 方案二:布隆过滤器2.2.1 思想2.2.2 做法2.2.3 示例代码2.2.4 优点2.2.5 缺点 2.3 方案三:限流3. 总结 1.…...

1.gitlab 服务器搭建流程

前提条件: 一、服务器硬件水平 搭建gitlab服务器最低配置要求2核4G,低于这个配置的服务器运行效果很差。 gitlab官网:https://about.gitlab.com/ 下载地址:gitlab/gitlab-ce - Packages packages.gitlab.com 本机ubuntu 二、安装依赖 su…...

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件,包括移动订单进度跟踪和向客户发送营销通信(交易和促销)。 统一事件平台(unified eve…...

GTID详解

概念和组成 1,全局事务表示:global transaction identifiers 2, GTID和事务一一对应,并且全局唯一 3,一个GTID在一个服务器上只执行一次 4,mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…...

图解HTTP-HTTP状态码

状态码 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。 类别原因短语1XXInformational(信息状态码)接收的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕4XXRedirection (重定向状态码)需要…...

sh cmake-linux.sh -- --skip-license --prefix = $MY_INSTALL_DIR

本文来自天工AI --------- 命令用于安装CMake的脚本,其中--skip-license参数表示跳过许可协议的显示,--prefix参数指定了CMake的安装目录。$MYINSTALLDIR是一个环境变量,应该在运行命令之前设置为您想要安装CMake的目录。 -------- sh xx…...

MySQL 在window免安装启动

复制my.ini文件 初始化命令:mysqld --initialize --console 执行启动bat:启动mysql.bat 主要命令是:mysqld --standalone 免密码启动mysql: mysqld --defaults-file"D:\xxx\soft\mysql-8.0.40-winx64\my.ini" …...

[JavaScript] 我该怎么去写一个canvas游戏

首先你得知道canvas的基础语法,此处不过多赘述. 一、如何更新视图 canvas里面有个clearRect方法,可以遮住画布中一个矩形部分. 但是你想这样做就难免会遮住一些本不该遮住的东西,因为它是一个矩形,并且你还要计算它的位置和尺寸…...

【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题

目录 为什么要结合项目与算法? 1. 蓝桥杯与《苍穹外卖》项目的结合 实例:基于蓝桥杯算法思想的订单配送路径规划 问题描述: 代码实现:使用动态规划解决旅行商问题 代码解析: 为什么这个题目与蓝桥杯相关&#x…...

python报错系列(16)--pyinstaller ????????

系列文章目录 文章目录 系列文章目录前言一、pyinstaller ????????1.报错如下2.安装pyinstaller3.报错如下:4.封装py文件为exe成功5.国内源 总结 前言 一、pyinstaller ??? 1.报错如下 PS D:\Users\gxcaoty\Desktop\性能覆盖率> pyinstaller37.exe…...

Pytorch | 从零构建ResNet对CIFAR10进行分类

Pytorch | 从零构建ResNet对CIFAR10进行分类 CIFAR10数据集ResNet核心思想网络结构创新点优点应用 ResNet结构代码详解结构代码代码详解BasicBlock 类ResNet 类ResNet18、ResNet34、ResNet50、ResNet101、ResNet152函数 训练过程和测试结果代码汇总resnet.pytrain.pytest.py 前…...

Spring Boot 配置Kafka

1 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。 2 Maven依赖 <dependency><groupId>org.springframework.kafka</groupId><…...

基于单片机的火灾报警器 (论文+源码)

1.系统设计 本系统由火灾检测模块、A/D转换模块、信号处理模块、声光报警模块和灭火装置模块组成。火灾检测模块由温度检测和烟雾检测构成&#xff0c;其温度传感器选用DS18B20&#xff0c;烟雾传感器选用MQ-2烟雾传感器。A/D转换模块选用常用的模数转换芯片ADC0832。声光报警…...

分析excel硕士序列数据提示词——包含对特征的筛选,非0值的过滤

文章目录 1 分析出发点2 围绕出发点的文件分析3 功能模块计算重心相关性计算教学倾向百分比多列相关性计算结果封装证伪——过滤0后的交叉相关系数封装和总控——批量处理特征筛选——筛选提问倾向最大和最小的前五代码总的清洗1 分析出发点 写一个python代码,遍历"D:\Ba…...

MongoDB 更新文档

关于MongoDB更新文档的操作&#xff0c;可以通过多种方法实现。以下是一些常用的方法&#xff1a; updateOne() 方法&#xff1a;用于更新匹配过滤器的单个文档。其语法为 db.collection.updateOne(filter, update, options)。其中&#xff0c;filter 用于查找文档的查询条件&a…...

分布式协同 - 分布式事务_TCC解决方案

文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC&#xff08;Two-Phase Commit&#xff0c;二阶段提交&#xff09;3PC&#xff08;Three-Phase Commit&#xff0c;三阶段提交&#xff09;TCC&#xff08;Try-Confirm-Cancel&#xff09;2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…...

MFC/C++学习系列之简单记录13

MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧&#xff01; memset memset通常在初始化变量或清空内存区域的时候使用&#xff0c;可以对变量设定特定的值。 使用&#xff1a; 头文件&#xff1a; C&#…...

PostgreSQL表达式的类型

PostgreSQL表达式是数据库查询中非常重要的组成部分&#xff0c;它们由一个或多个值、运算符和PostgreSQL函数组合而成&#xff0c;用于计算出一个单一的结果。这些表达式类似于公式&#xff0c;可以用查询语言编写&#xff0c;并用于查询数据库中的特定数据集。 PostgreSQL表…...

速通Python 第四节——函数

一、函数 编程中的函数和数学中的函数有一定的相似之处. 数学上的函数, 比如 y sin x , x 取不同的值, y 就会得到不同的结果. 编程中的函数, 是一段 可以被重复使用的代码片段 代码示例 : 求一段范围的数的和 , 不使用函数 # 1. 求 1 - 100 的和 sum 0 for i in range(1, …...

如何在Windows系统上安装和配置Maven

Maven是一个强大的构建和项目管理工具&#xff0c;广泛应用于Java项目的自动化构建、依赖管理、项目构建生命周期控制等方面。在Windows系统上安装Maven并配置环境变量&#xff0c;是开发者开始使用Maven的第一步。本文将详细介绍如何在Windows系统上安装和配置Maven&#xff0…...

STM32之GPIO输出与输出

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 一.GPIO输入1.1GPIP简介1.2GPIO基本结构1.3GPIO位结构1.4GPIO的八种模式1.4.1浮空/上拉/下拉输入1.4.2 模拟输入1.4.3 推挽输出\开漏输出 二.GPIO输入2.1.按键介绍2.2传感器模块介绍2.3按键电路 一.G…...

linux定时器操作

目录 1 简单示例2 timer_create方式2.1 SIGEV_SIGNAL信号方式通知2.2 SIGEV_THREAD启动线程方式通知2.3 参数 1 简单示例 #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <signal.h> #include <unistd.h>void setup_t…...

重拾设计模式--观察者模式

文章目录 观察者模式&#xff08;Observer Pattern&#xff09;概述观察者模式UML图作用&#xff1a;实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题&#xff08;Subject&#xff09;&#xff1a;具体主题&#xff08;Concrete Subject&#xf…...

Vue.js前端框架教程7:Vue计算属性和moment.js

文章目录 计算属性(Computed Properties)基本用法缓存机制计算属性 vs 方法使用场景计算属性的 setter 和 getter结论Moment.js 进行时间处理1. 安装 Moment.js2. 在 Vue 组件中引入 Moment.js3. 在全局使用 Moment.js4. 使用 Vue 插件的方式引入 Moment.js5. 常用日期格式化…...

【游戏设计原理】22 - 石头剪刀布

一、游戏基础&#xff1a;拳头、掌心、分指 首先&#xff0c;石头剪刀布&#xff08;又名“Roshambo”&#xff09;看似简单&#xff0c;实际上可是个“深藏玄机”的零和博弈&#xff08;听起来很高深&#xff0c;其实就是输赢相抵消的意思&#xff09;。游戏中有三种手势&…...

3-Gin 渲染 --[Gin 框架入门精讲与实战案例]

在 Gin 框架中&#xff0c;渲染指的是将数据传递给模板&#xff0c;并生成 HTML 或其他格式的响应内容。Gin 支持多种类型的渲染&#xff0c;包括 String HTML、JSON、XML 等。 String 渲染 在 Gin 框架中&#xff0c;String 渲染方法允许你直接返回一个字符串作为 HTTP 响应…...

python小课堂(一)

基础语法 1 常量和表达式2 变量和类型2.1 变量是什么2.2 变量语法 3 变量的类型3.1 动态类型特性 4 注释4.1注释是什么 5 输入输出5.1 print的介绍5.2 input 6 运算符6.1 算术运算符在这里插入图片描述6.2 关系运算符6.3 逻辑运算符6.4赋值运算符 1 常量和表达式 在print()中可…...

GESP202309 二级【小杨的 X 字矩阵】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202309 二级] 小杨的 X 字矩阵 题目描述 小杨想要构造一个 的 X 字矩阵&#xff08; 为奇数&#xff09;&#xff0c;这个矩阵的两条对角线都是半角加号 &#xff0c;其余都是半角减号 - 。例如&#xff0c;一个 5 5 5 \times 5 5…...

@PostConstruct注解解释!!!!

PostConstruct 注解修饰的方法是在 Bean 完成初始化后自动调用的。它是 Java EE 和 Spring 中的一种机制&#xff0c;用于在 Bean 被创建并依赖注入完成后&#xff0c;执行一些初始化的操作。 具体触发时机&#xff1a; 依赖注入完成后&#xff1a;首先&#xff0c;Spring 容器…...