【论文综述+多模态】腾讯发布的多模态大语言模型(MM-LLM)综述(2024.02)

论文链接:24.02.MM-LLMs: Recent Advances in MultiModal Large Language | 国内-链接
实时网站:https://mm-llms.github.io
参考说明1-readpaper:https://mp.weixin.qq.com/s/ESUVe1aTYFLVJ10S9c1dBg
在这里插入图片描述

一、什么是MM-LLM ?

多模态大语言模型:Multimodal Large Language Models
MM-LLM = 预训练单模态模型( 含LLMs) + 微调对齐所有模态 + 输出调整

MM-LLMs 利用现成的预训练单模态基础模型,
特别是强大的大型语言模型(LLMs), 作为认知核心,赋予各种多模态任务能力。
LLMs 提供了稳健的语言生成、zero-shot 迁移能力和上下文学习(ICL)等可取特性

在这一领域中,主要关注点是通过多模态预训练(MM PT, Pre-Training)+ 多模态指令调整(MM IT)pipeline 来优化模态之间的对齐,以及与人类意图的对齐(aligning with human intent)。

1.1 发展历程

  1. 最初的研究
    图像-文本理解(例如 BLIP-2,LLaVA,MiniGPT-4OpenFlamingo 等工作);
    视频-文本理解(例如 VideoChat,Video-ChatGPT 和 LLaMA-VID 等工作);
    音频-文本理解(例如 Qwen-Audio)等任务。

  2. 随后,MM-LLMs 的能力扩展到支持特定模态生成。
    这包括具有图像-文本输出的任务,例如 GILL,Kosmos-2,Emu 和 MiniGPT-5 等;
    以及具有语音/音频-文本输出的任务,例如 SpeechGPT 和 AudioPaLM 等工作

  3. 最近的研究努力集中在模仿类人任意-任意模态转换
    将 LLMs 与外部工具结合起来,实现,现接近任意-任意的多模态理解和生成,
    例如 Visual-ChatGPT,HuggingGPT 和 AudioGPT

二、模型框架

参考链接:https://zhuanlan.zhihu.com/p/680487634

我们将一般模型架构分解为五个组件

  1. 模态编码器(Modality Encoder) : 直接使用
  2. 输入映射器 (Input projector): 将其他模态的编码特征与文本特征空间对齐
  3. LLM 骨干 (LLM backbone): 直接使用
  4. 输出映射器 (Output Projector) : 将生成模型与 LLM 的输出指令对齐
  5. 模态生成器 (Modality Generator):直接使用

结构见下图2:
在这里插入图片描述

2.1 模态编码器(Modality Encoder):

** 负责对不同的模态输入IX进行编码,得到对应的特征FX。IX可以是图像、视频、音频、3D等不同类型的输入。常用的编码器包括:
图像编码器:NFNet-F6、ViT、CLIP ViT、Eva-CLIP ViT
视频编码器:对视频均匀采样成5帧,进行与图像类似的预处理
音频编码器:C-Former、HuBERT、BEATs、Whisper
3D点云编码器:ULIP-2、PointBERT
统一编码器:ImageBind,支持图像、视频、文本、音频、热图等多种模态

2.2 输入投影器 (Input Projector)

负责将编码后的其他模态特征FX投影到文本特征空间T,得到对齐的特征PX。常用的实现方法有:
直接线性投影或多层感知机
交叉注意力:利用可训练的查询向量与编码特征FX进行压缩,得到固定长度的表示,并直接输入LLM或进行交叉注意力融合
Q-Former:从FX中提取相关特征,作为提示PX
P-Former:生成参考提示,对Q-Former生成的提示进行对齐约束

2.3 LLM骨干网络(LLM Backbone):

用预训练的大型语言模型作为核心,负责对齐后的特征进行语义理解、推理和决策,并输出文本输出t和来自其他模态的信号令牌SX。常用的LLM包括:

  • Flan-T5
  • ChatGLM
  • UL2
  • Qwen
  • Chinchilla
  • OPT
  • PaLM
  • LLaMA
  • LLaMA-2
  • Vicuna

三、训练流程

模态编码器、LLM 骨干和模态生成器通常保持冻结状态
MM-LLMs 的训练流程可以划分为两个主要阶段:MM PT 和 MM IT。

3.1 MM PT (任意模态到文字)

在 PT 阶段,通常利用 X-Text 数据集(见附录),通过优化预定义的目标来训练输入和输出映射器
以实现各种模态之间的对齐。 X-Text 数据集一般包括图像-文本、视频-文本和音频-文本。

3.2 MM IT (指令微调 )

指令微调=监督微调(SFT)和根据人类反馈进行强化学习(RLHF)

MM IT 是一种使用指令格式的数据集对预训练的 MM-LLMs 进行微调的方法
通过这个过程,MM-LLMs 可以通过遵循新的指令来泛化到未见过的任务,从而提高 zero-shot 性能。
SFT 数据集可以构造为单轮 QA 或多轮对话。

四、部分模型性能测评

红色代表在该项测评最高分,蓝色是第二高分

23.12 VILA: On Pre-training for Visual Language Models
更高的图像分辨率可以为模型提供更多的视觉细节,有利于需要细粒度细节的任务。
例如,LLaVA-1.5 和 VILA 使用了 336336 的分辨率,
而 Qwen-VL 和 MiniGPT-v2 则采用了 448
448 的分辨率
在这里插入图片描述

总结

当前的 MM-LLMs 主要支持以下模态:图像、视频、音频、3D 和文本

移动/轻量级部署:在资源受限的平台上部署 MM-LLMs 并同时实现最佳性能,比如低功耗移动设备和物联网设备,轻量级实现至关重要。在这方面的一个显著进展是 MobileVLM

最近,有许多类似的研究致力于轻量化 MM-LLMs,在性能相当或几乎没有损失的情况下,实现了高效的计算和推理,包括 TinyGPT-4、Vary-toy、Mobile-Agent、MoE-LLaVA 和 MobileVLM V2。然而,这一途径需要进一步探索以实现进一步的发展

一些发展趋势:

  1. 从专注于多模态理解到生成特定模态,进一步发展成为任意-任意模态转换(例如,MiniGPT-4 -> MiniGPT-5 -> NExT-GPT);

  2. 从 MM PT 进展到 SFT,再到 RLHF,训练流程不断完善,努力更好地与人类意图保持一致,并增强模型的对话交互能力(例如,BLIP-2 -> InstructBLIP -> DRESS);

  3. 接纳多样化的模态扩展(例如,BLIP-2 -> X-LLM 和 InstructBLIP -> X-InstructBLIP);

  4. 加入更高质量的训练数据集(例如,LLaVA -> LLaVA-1.5);(5)采用更高效的模型架构,从 BLIP-2 和 DLP 中复杂的 Q- 和 P-Former 输入映射模块过渡到 VILA 中更简单但同样有效的线性映射器。

附录

模型按功能分类

I:图像,V:视频,A/S:音频/语音(Audio/Speech),T:文本。
I D I_D ID:文档理解, I B I_B IB:输出边界框, I M I_M IM:输出分割掩码和 I R I_R IR:输出检索到的图像。
在这里插入图片描述

X-Text 数据集的详细信息见表 3。

在这里插入图片描述

指令微调的数据集

在这里插入图片描述

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

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

相关文章

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

node 之 模块化

1.什么是模块化 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。 编程领域中的模块化 编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并…

【力扣 - 只出现一次的数字】

题目描述 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入…

Rocketmq java hello world 入门案例

从零手写实现 mq rocketmq java 入门案例 整体结构 |____src | |____main | | |____java | | | |____com | | | | |____ryo | | | | | |____rocket | | | | | | |____demo | | | | | | | |____common | | | | | | | | |____consumer | | | | | | | | | |____Consumer.java | …

python pandas写入csv

在Python的Pandas库中,可以使用to_csv方法将DataFrame对象写入CSV文件。以下是一个简单的示例: import pandas as pd# 创建一个DataFrame对象 data {Name: [Alice, Bob, Charlie, David],Age: [25, 30, 35, 40],City: [New York, Los Angeles, Chicago…

MySQL统计信息更新

在MySQL使用“采样统计”的方式来维护统计信息。采样统计的时候,InnoDB默认会选择N个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的&#…

怎么调用文心一言的api接口生成一个简单的聊天机器人(python代码)

寒假在学习大模型,但也没弄出多少眉目,电脑性能还有点小问题,大模型总跑不起来,只会简单调用一下现有的大模型的接口,例如:文心一言,下面展示一下代码: import tkinter as tk impor…

Postgresql中VACUUM操作原理和应用

VACUUM操作在PostgreSQL中的底层原理涉及几个关键概念,包括MVCC(多版本并发控制)、事务ID包裹、以及垃圾回收机制。我们逐一解析这些概念,以及它们是如何与VACUUM操作相互作用的。 关键概念 1. MVCC(多版本并发控制&…

Mysql安装教程

一、下载 点开下面的链接:https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹…

第三节-docker-cs架构分析

一、组成 docker engine:docker-client、rest-api、dockerd containerd: 1、管理容器生命周期 2、拉取/推送镜像 3、存储管理 4、调用runc 5、管理网络 containerd-shim:相当于一个驱动,containerd通过containerd-shim驱使…

10个SQL查询方法

SQL 是管理和分析关系数据库的基本工具。掌握基本的SQL命令能够完成简单的数据查询和操作,但是如果想从数据中提取更有价值的信息,数据分析工作者和开发人员应该深入学习和掌握高级的SQL技巧。 1 窗口函数 窗口函数是指在SQL查询中对一组相关行进行聚合…

关于静态应用程序安全测试(SAST)的自动修复(AutoFix)

SAST(Static Application Security Testing,静态应用程序安全测试)具是一种在软件工程中使用的安全解决方案,它主要用于在程序员编写好源代码后,无需经过编译器编译,直接对源代码进行扫描,以找出…

SSM框架,MyBatis框架的学习(下)

MyBatis多表映射 多表结果实体类设计技巧: 对一,属性中包含对方对象 对多,属性中包含对方对象集合 对一查询 对一查询在设计接收多表查询的结果的实体类时,设计一个对方类型的属性即可 查询的结果映射时,如果查询的…

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

动态获取权限,文件管理器选择文件,I/O流

AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><!-- <uses-permission and…

链表的总结

题目&#xff1a;将26个英文字母储存在链表中 #include <stdlib.h> #include <stdio.h> struct list { char Ach; struct list* next; }; void create( struct list* head , char* ch ) 而这个head是定义在局部函数的变量&#xff0c;当出局部函数的时候&…

Kotlin的各种骚气语法

1.奇怪的中括号? 前几星期在群里见群友问这种是什么鬼,kt中有这种语法吗? 但其实这种是重写的操作符,分别是重写了setter和getter,类似于list[0]1这样 上面的两个方法声明如下: 不过这种语法很容易引起歧义,所以除非很适合的情况下不建议重写 ps:更多的操作符重载参考最下…

uniapp 部署h5,pdf预览

1.hubuilderx 打包h5。 2.上传部署包到服务器。 解压部署包&#xff1a;unzip h5.zip 。 3.nginx配置。 user root; worker_processes 1; #worker_cpu_affinity 0001 0010 0100 1000; #error_log logs/error.log; #error_log logs/error.log notice; error_log /var/l…

【工具类】repo是什么,repo常用命令,repo和git和git-repo的关系

1. repo 1. repo 1.1. repo是什么1.2. 安装1.3. repo 命令 1.3.1. repo help1.3.2. repo init1.3.3. repo sync1.3.4. repo upload1.3.5. repo start1.3.6. repo forall 1.4. mainfest 文件1.5. git-repo简介(非android repo)1.6. 参考资料 1.1. repo是什么 Repo 是一个 go…

【重温设计模式】桥接模式及其Java示例

【重温设计模式】桥接模式及其Java示例 桥接模式的介绍 今天我们要探讨的&#xff0c;正是一种名为“桥接模式”的设计模式。桥接模式&#xff0c;英文名Bridge Pattern&#xff0c;是一种结构型设计模式&#xff0c;它的主要目的是将抽象部分与实现部分分离&#xff0c;使得两…