LLM - 理解 多模态大语言模型 (MLLM) 的预训练与相关技术 (三)
欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/142063880
免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。
完备(Full-Fledged) 的 多模态大语言模型(MLLM) 经历 3 个阶段的训练,即 预训练(Pre-training)、指令微调(Instruction-Tuning) 和 对齐调优(Alignment Tuning)。每个训练阶段都需要不同类型的数据,并且实现不同的目标。本篇介绍,预训练(Pre-training) 部分。
1. 预训练(Pre-training)
预训练 (Pre-training) 的目的是对齐不同的模态,学习多模态的知识,核心是训练 连接器(Connector),模态编码器与 LLM 都是已训练的。预训练的数据,是大量的图像文本对数据,预训练的 损失(Loss) 是 交叉熵(Cross-Entropy)。图像文本对的示例,文本描述计算 Loss,即:
Input: <image> Response: {caption}
在 MLLM 中 连接器(Connector) 类型主要包括 3 类,即 基于映射(Projection-Based)、基于查询特征(Query- Based),基于融合特征(Fusion-Based),即:
在 MLLM 的训练过程中,一般而言,冻结 模态编码器 与 LLM,因为这些大模型已经进行大量数据的预训练,因此,只训练连接器的 可学习接口(Learnable Interface) 即可。注意 Qwen-VL 的训练方式有所不同,不同阶段,模态编码器与 LLM 也会参与训练。训练策略是与训练数据相关的,当数据质量较低时,使用低分辨率(224x224)训练,而数据质量较高,使用高分辨率(448x448)训练。
在预训练阶段,数据集的作用主要是 (1)对齐不同模态,和 (2)提供更充分的世界知识。常用的数据集,包括 粗粒度(Coarse-grained) 数据和 细粒度(Fine-grained) 数据 两类,即:
- 粗粒度数据集:数据量大,样本通常来源于互联网,由于是从网络上抓取的,标题通常较短,且带有噪声,因为描述文本来源于网页图片的 替代文本(alt-text, alternative text),再使用预训练的图像模型 CLIP 进行清洗。
- 细粒度数据集:通常包含更长、更准确的图像描述,从而,实现图像与文本模态之间,更细粒度的对齐。
主要的数据集,包括:
通过 提示能力强大的多模态语言模型(例如GPT-4V) 可以生成高质量的细粒度数据,与粗粒度数据相比,这些数据通常包含更长、更准确的图像描述,从而,实现图像与文本模态之间,更细粒度的对齐。然而,由于这种方法,通常需要调用商业用途的机器学习语言模型,成本较高,数据量相对较小。解决方式是,先标注小批量的数据集,训练 Caption 模型,再进行更大规模的标注。
参考论文:
- Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond,2023.8
- ShareGPT4V: Improving Large Multi-Modal Models with Better Captions,2023.11
- LLaVA-1.5 - Improved Baselines with Visual Instruction Tuning,2023.10
- CC-3M - Conceptual Captions: A Cleaned, Hypernymed, Image Alt-text Dataset For Automatic Image Captioning,2020
- CC-12M - Conceptual 12M: Pushing Web-Scale Image-Text Pre-Training To Recognize Long-Tail Visual Concepts,2021,CVPR,Google AI
- SBU Captions 1M - Im2text: Describing images using 1 million captioned photographs,2011,NIPS
- Laion-5b: An open large-scale dataset for training next generation image-text models,2022,NIPS
- Laion coco: 600m synthetic captions from laion2b-en,Web,2022
- Coyo-700m: Image-text pair dataset,Web,2022
2. Qwen-VL 的全训练
Qwen-VL:训练主要包括 3 个阶段:预训练(Pretraining)、多任务预训练(Multi-Task Pretraining)、有监督微调(Supervised Finetuning),即:
- 预训练(Pretraining) 阶段:冻结大语言模型,只优化视觉编码器和视觉语言适配器。输入图像调整至 224×224,训练目标是最小化文本标记的交叉熵。
- 多任务预训练(Multi-Task Pretraining) 阶段:将视觉编码器的输入,分辨率从 224×224 提高至 448×448,减少图像下采样造成的信息损失,同时,解锁大语言模型,这样就是对于整个模型进行训练,训练目标与预训练阶段相同。
- 监督微调(Supervised Finetuning) 阶段:通过 指令微调(Instruction Fine-tuning) 来对 Qwen-VL 预训练模型进行微调,以增强其遵循指令和对话能力,从而产生交互式的 Qwen-VL-Chat 模型。在训练期间,混合多模态和纯文本的对话数据,确保模型在对话能力上的通用性。在这个阶段,冻结视觉编码器,优化大语言模型和适配器模块。
也就是说,每一阶段都训练适 配器(Adapter) 模块,第一阶段额外增加训练视觉编码器,第二阶段是全部训练,第三阶段额外增加训练大语言模型。
如图:
Qwen2-VL (2024.8.29) 的动态分辨率,与之前不同,Qwen2-VL 能够处理任意图像分辨率,映射到动态数量的视觉 Token 中,不同尺寸的图像,使用不同数量的 Token,提供更加类似人类的视觉效果体验,框架如下:
Qwen2-VL 的多模态旋转位置编码(M-RoPE):将位置嵌入分解成多块,用于捕捉一维文本、二维视觉和三维视频的位置信息,增强其多模态处理能力,参考:
3. ShareGPT4V - 细粒度(Fine-grained) 数据集
ShareGPT4V:构建高质量的 ShareGPT4V 数据集,包括世界知识(World Knowledge)、目标属性(Object Properties)、空间关系(Spatial Relationships)、美学评估(Aesthetic Evaluations)等,图像描述来源于 GPT-4V。在 监督微调(Supervised Finetuning) 阶段中,使用高质量数据,可以有效的提升模型性能。模型架构与 LLaVA 1.5 类似,模态编码器是 CLIP-Large、映射器(Projector) 是两层的 MLP、LLM 是 Vicuna-v1.5,多模态训练只训练映射器 MLP。
效果如图:
LLaVA-1.5 的架构,视觉编码器使用 CLIP ViT-L/336px,视觉-语言连接器使用简单的 MLP,大语言模型使用 Vicuna v1.5 13B。如下:
LLaVA-1.5-HD 的架构,将 LLaVA-1.5 扩展至更高分辨率,将图像分割成网格,独立编码。这使得模型能够扩展到任何分辨率,而无需为 ViTs 执行位置嵌入插值,同时,还会额外连接一个降采样图像的特征,以提供给 大语言模型(LLM) 全局上下文。如图:
4. 粗粒度(Coarse-grained) 数据集
CC-3M 数据集:Conceptual Captions,概念描述,数据处理流程:
- 对于图像,过滤掉含有不适当内容或长宽比不当的图像。
- 对于文本,使用 自然语言处理(NLP) 工具获取文本注释,根据设计的启发式规则过滤样本。
- 对于图像-文本对,通过分类器为图像分配标签。如果文本注释与图像标签不重叠,相应的样本将被丢弃。
数据样例如下:
CC-12M 数据集:即使 替换文字(alt-texts) 不完全精确地描述网络图像,这些数据仍然增加,例如相扑、山竹和水母,这样的长尾视觉概念,提供丰富的资源。通过放宽概念描述 (Conceptual Captions) 中过于严格的过滤器,将视觉和语言预训练数据,扩展至 12M (1200万)。通过,CC-12M 包括长尾数据进行微调,显著降低模型的幻觉,即:
SBU Captions 1M 数据集:SBU,Stony Brook University (美国纽约州立大学石溪分校),来源于 Flickr 网站,带标题照片集合的、带有用户相关标题的照片,并且通过筛选,制作一个包含超过 1M(100万) 张良好标题图片的数据集。具体来说,通过使用大量查询词在 Flickr 网站上查询,初步获取一组图像,这些图像附带的描述作为标题,然后,为确保描述与图像相关,保留的图像满足以下要求:
- 图像的描述,长度,令人满意,这是通过观察决定的。
- 图像的描述,至少包含两个预定义词汇表中的词汇和一个表征性词汇 (例如on、under等),通常表示空间关系。
具体的系统流程:
- 输入查询图像;
- 使用全局图像表示,从带标题集合中检索候选匹配图像;
- 提取关于图像内容的高级信息,包括目标、属性、动作、人物、物品、场景以及 TF-IDF 加权;
- 通过结合所有内容估计重新对于图像进行排名;
- 得出前 4 个结果标题。
即:
LIAON-5B:这个数据集是 多语言(Multilingual) 版本,英文数据集是 2B,大型的 网络规模 (Web-Scale) 数据集,包含从互联网上抓取的图像,以及与之相关的 替代文本(alt-text) 作为标题。为了筛选图像-文本对,执行了以下步骤:
- 丢弃 文本长度过短或图像尺寸过小或过大 的图像-文本对。
- 基于 URL 进行图像去重。
- 提取 CLIP 嵌入向量用于图像和文本,并且使用这些嵌入向量,来丢弃可能的非法内容,以及嵌入向量之间,余弦相似度低的图像-文本对。
如图:
样本示例:
相关文章:

LLM - 理解 多模态大语言模型 (MLLM) 的预训练与相关技术 (三)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142063880 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 完备(F…...

工具篇之Joda-Time
在Java应用程序开发中,处理日期和时间是一项常见且复杂的任务。尽管Java标准库提供了基本的日期和时间操作类,但它们的使用常常不够直观和灵活。Joda-Time 是一个强大的日期和时间库,提供了丰富的API,用于简化日期和时间的操作。本…...

架构师应该懂得东西,软考应该具备的
架构师应该懂得知识 架构师作为软件系统设计和开发的关键角色,需要掌握广泛的知识和技能。具体来说,他们应该懂得以下几方面的知识: 编程语言:掌握至少一种编程语言,如Java、C、Python等,以便于进行系统设…...

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积
99. 岛屿数量(深搜版) 题目链接:99. 岛屿数量 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而…...

什么是API网关(API Gateway)?
1. 什么是API网关(API Gateway)? 在微服务体系结构中,客户端可能与多个前端服务进行交互。 API 网关位于客户端与服务之间。 它充当反向代理,将来自客户端的请求路由到服务。 它还可以执行各种横切任务,例…...

对话:LLC磁集成能否成为充电桩模块电源常态产品?
编者按:在终端需求疲软的影响下,前两年火热的新能源汽车、光伏、储能等新能源领域也掀起了价格战,储能已正式进入0.5元时代,新能源汽车领域价格战更是一轮接一轮,成本管控成为2024年企业绕不开的话题。 接下来我们将围…...

基于SSM的二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手物品交易管理系统7拥有两种角色 管理员:用户管理、分类管理、商品管理、订单管理、系统管理等 用户:登录注册、充值、收货、评价、收藏、购物车、订…...

视觉语言模型中的人脸社会感知
本文研究了视觉语言模型CLIP在处理人脸图像时的社会感知能力及其潜在偏见。研究者们构建了一个名为CausalFace的合成人脸数据集,通过系统地独立变化年龄、性别、人种、面部表情、照明和姿势等六个维度来评估模型的社会感知。他们发现,尽管CLIP是在多样化…...

JAVA学习-练习试用Java实现“最小覆盖子串”
问题: 给定一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。 示例 1&…...

关于axios同步获取数据的问题
axios同步获取数据 Axios介绍问题代码修改 总结 Axios介绍 Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 X…...

java-在ANTLR中,如何从java文件中提取类名和方法名0.1.8
java-在ANTLR中,如何从java文件中提取类名和方法名0.1.0 目标java源文件java的g4文件生成antlr代码最终代码调测结果阶段性总结 2024年9月12日11:16:01----0.1.8 目标 从一个java文件中提取出类名和方法名 java源文件 文件名是main.java,具体内容如下…...

十大护眼灯钢琴灯品牌是智商税吗?十大钢琴灯品牌排行榜
十大护眼灯钢琴灯品牌是智商税吗?不良的光线不仅会使得孩子在读写用眼时眼睛不舒服,还会引起视觉疲劳伤眼视力健康,这个时候要能有一台可靠的护眼灯钢琴灯,那真是再好不过了。但是市面上护眼灯钢琴灯的种类太多,盲目挑…...

搜维尔科技:CyberGlove将实时捕捉运动信号和触觉反馈,将其重新定位到人形机器人进行驱动
CyberGlove将实时捕捉运动信号和触觉反馈,然后将其重新定位到人形机器人上。 这款18个传感器(有18节点和22节点两个型号,22节点早期用于美国军事方面,支持无线通信、蓝牙、WiFi、射频)数据手套的每个手指上有两个弯曲…...

数据结构:堆的算法
目录 一堆的向上调整算法二堆的向下调整算法三堆的应用:堆排序四TOPK问题 一堆的向上调整算法 我们在堆中插入一个数据一般实在堆的最后插入然后可以一步一步与上层结点(父结点进行比较),继而进行交换,完成二叉树的结构࿰…...

python画图|3D直方图基础教程
前述已经完成了直方图和3D图的基本学习,链接如下: 直方图:python画图|水平直方图绘制-CSDN博客 3D图:python画图|水平直方图绘制-CSDN博客 现在我们尝试把二者结合,画3D直方图。 【1】官网教程 首先,依…...

C语言中的函数,实参,形参,递归
1:什么是函数 2:定义带形式参数的函数和带实际参数的函数 3:递归 --------------------------------------------------------------------------------------------------------------------------------- 1:在 C 语言中&…...

ICM20948 DMP代码详解(15)
接前一篇文章:ICM20948 DMP代码详解(14) 上一回开始对icm20948_sensor_setup函数中第3段代码即inv_icm20948_initialize函数进行解析。为了便于理解和回顾,再次贴出其源码,在EMD-Core\sources\Invn\Devices\Drivers\IC…...

NC 和为K的连续子数组
系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个无序…...

JS设计模式之装饰者模式:优雅的给对象增添“魔法”
引言 在前端开发中,我们经常会遇到需要在不修改已有代码的基础上给对象添加新的行为或功能的情况。而传统的继承方式并不适合这种需求,因为继承会导致类的数量急剧增加,且每一个子类都会固定地实现一种特定的功能扩展。 装饰者模式则提供了…...

准备好了吗?JAVA从业AI开发的学习路线详解
作为一个拥有扎实 Java 基础的人,想要涉足人工智能(AI)应用开发,你已经在编程能力方面打下了很好的基础。Java 是一种通用的、强类型的语言,非常适合于开发高性能的应用程序,尤其是在后端服务和大规模分布式…...

神经网络通俗理解学习笔记(1)
神经网络通俗理解学习笔记(1) 神经网络原理激活函数前向传播和反向传播多层感知机代码实现加载数据网络结构损失函数优化器训练测试保存 回归问题一元线性回归多元线性回归多项式回归 线性回归代码实现数据生成设置超参数初始化参数可视化Pytorch模型实现…...

有n个人,他们需要分配m元钱(m>n),每个人至少分到1元钱,且每个人分到的钱数必须是整数。请问有多少种分配方案?
分配方案 描述 有n个人,他们需要分配m元钱(m>n),每个人至少分到1元钱,且每个人分到的钱数必须是整数。请问有多少种分配方案? 输入 一行,两个整数,分别是人数n与钱数m,用一个空格隔开。 输出 一行&am…...

光耦——创新引擎 助推中国经济高质量发展
近年来,中国经济正处于转型升级的关键时期,高质量发展成为经济发展的重要目标。在这一伟大征程中,光耦作为一种关键性的电子元器件,正在发挥着重要的作用,助力中国经济迈向更加光明的未来。 光耦概念及工作原理 ▲光耦…...

Go 中 RPC 的使用教程
前言 RPC(Remote Procedure Call)是一种允许程序调用远程服务器上函数的方法,调用过程对于开发者来说像是调用本地函数一样方便。Go 语言自带了强大的 net/rpc 库,能够让开发者轻松实现基于 Go 的 RPC 服务。本文将介绍 Go 中 RP…...

挖耳勺可以伸进耳朵多深?安全可视挖耳勺推荐!
一般来说,挖耳勺不应该伸进耳朵太深,外耳道的长度大约在2.5厘米到3.5厘米之间,但不建议将挖耳勺伸进超过外耳道外1/3的深度,也就是大概1厘米左右较为安全。因为如果伸得太深,很容易损伤外耳道皮肤,引起疼痛…...

SuperMap GIS基础产品FAQ集锦(20240911)
一、SuperMap iObjects Java 问题1:【iObject Python】Objects Python产品有哪些能力特性和优势? 11.2.0 【解决办法】iObjects Python产品包含传统GIS功能(基于iObjects Java扩展的功能接口)和AI GIS功能模块。 其中传统GIS功能…...

从状态管理到性能优化:全面解析 Android Compose
文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compo…...

ChatGPT提示词优化大师使用指南
我希望你成为我的ChatGPT提示词优化大师。 您的目标是帮助我根据自己的需要制定尽可能最好的提示。 你提供的提示应该是站在我向ChatGPT发起请求的角度来写的。我的初始提示词如下:此处填入你的初始提示词 ChatGPT提示词生成器 我希望你充当提示词生成器。 比如&…...

计算机毕业设计 智能推荐旅游平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

【拥抱AI】基于多种数据分段工具的优缺点分析
最近在深入了解RAG方面的知识,其中数据清洗和数据分段是创建知识库的重要步骤。数据清洗目前暂时选用了MinerU,然后就需要针对数据分段进行选型。 以下是我了解到的几种数据分段工具,简单总结了一下它们的优缺点,权当笔记分享&am…...