LLM - 理解 多模态大语言模型(MLLM) 的 预训练(Pre-training) 与相关技术 (三)

news2024/9/20 2:24:00

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/142167709

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


完备(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),即:

Connector

在 MLLM 的训练过程中,一般而言,冻结 模态编码器 与 LLM,因为这些大模型已经进行大量数据的预训练,因此,只训练连接器的 可学习接口(Learnable Interface) 即可。注意 Qwen-VL 的训练方式有所不同,不同阶段,模态编码器与 LLM 也会参与训练。训练策略是与训练数据相关的,当数据质量较低时,使用低分辨率(224x224)训练,而数据质量较高,使用高分辨率(448x448)训练。

在预训练阶段,数据集的作用主要是 (1)对齐不同模态,和 (2)提供更充分的世界知识。常用的数据集,包括 粗粒度(Coarse-grained) 数据和 细粒度(Fine-grained) 数据 两类,即:

  • 粗粒度数据集:数据量大,样本通常来源于互联网,由于是从网络上抓取的,标题通常较短,且带有噪声,因为描述文本来源于网页图片的 替代文本(alt-text, alternative text),再使用预训练的图像模型 CLIP 进行清洗。
  • 细粒度数据集:通常包含更长、更准确的图像描述,从而,实现图像与文本模态之间,更细粒度的对齐。

主要的数据集,包括:

Dataset

通过 提示能力强大的多模态语言模型(例如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),即:

  1. 预训练(Pretraining) 阶段:冻结大语言模型,只优化视觉编码器和视觉语言适配器。输入图像调整至 224×224,训练目标是最小化文本标记的交叉熵。
  2. 多任务预训练(Multi-Task Pretraining) 阶段:将视觉编码器的输入,分辨率从 224×224 提高至 448×448,减少图像下采样造成的信息损失,同时,解锁大语言模型,这样就是对于整个模型进行训练,训练目标与预训练阶段相同。
  3. 监督微调(Supervised Finetuning) 阶段:通过 指令微调(Instruction Fine-tuning) 来对 Qwen-VL 预训练模型进行微调,以增强其遵循指令和对话能力,从而产生交互式的 Qwen-VL-Chat 模型。在训练期间,混合多模态和纯文本的对话数据,确保模型在对话能力上的通用性。在这个阶段,冻结视觉编码器,优化大语言模型和适配器模块。

也就是说,每一阶段都训练适 配器(Adapter) 模块,第一阶段额外增加训练视觉编码器,第二阶段是全部训练,第三阶段额外增加训练大语言模型。

如图:

Qwen-VL

Qwen2-VL (2024.8.29) 的动态分辨率,与之前不同,Qwen2-VL 能够处理任意图像分辨率,映射到动态数量的视觉 Token 中,不同尺寸的图像,使用不同数量的 Token,提供更加类似人类的视觉效果体验,框架如下:

Qwen2-VL

Qwen2-VL 的多模态旋转位置编码(M-RoPE):将位置嵌入分解成多块,用于捕捉一维文本、二维视觉和三维视频的位置信息,增强其多模态处理能力,参考:

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。

效果如图:

SharedGPT4V

LLaVA-1.5 的架构,视觉编码器使用 CLIP ViT-L/336px,视觉-语言连接器使用简单的 MLP,大语言模型使用 Vicuna v1.5 13B。如下:

LLaVA-1.5

LLaVA-1.5-HD 的架构,将 LLaVA-1.5 扩展至更高分辨率,将图像分割成网格,独立编码。这使得模型能够扩展到任何分辨率,而无需为 ViTs 执行位置嵌入插值,同时,还会额外连接一个降采样图像的特征,以提供给 大语言模型(LLM) 全局上下文。如图:

LLaVA-1.5-HD

4. 粗粒度(Coarse-grained) 数据集

CC-3M 数据集:Conceptual Captions,概念描述,数据处理流程:

  1. 对于图像,过滤掉含有不适当内容或长宽比不当的图像。
  2. 对于文本,使用 自然语言处理(NLP) 工具获取文本注释,根据设计的启发式规则过滤样本。
  3. 对于图像-文本对,通过分类器为图像分配标签。如果文本注释与图像标签不重叠,相应的样本将被丢弃。

数据样例如下:

CC-3M

CC-12M 数据集:即使 替换文字(alt-texts) 不完全精确地描述网络图像,这些数据仍然增加,例如相扑、山竹和水母,这样的长尾视觉概念,提供丰富的资源。通过放宽概念描述 (Conceptual Captions) 中过于严格的过滤器,将视觉和语言预训练数据,扩展至 12M (1200万)。通过,CC-12M 包括长尾数据进行微调,显著降低模型的幻觉,即:

CC-12M

SBU Captions 1M 数据集:SBU,Stony Brook University (美国纽约州立大学石溪分校),来源于 Flickr 网站,带标题照片集合的、带有用户相关标题的照片,并且通过筛选,制作一个包含超过 1M(100万) 张良好标题图片的数据集。具体来说,通过使用大量查询词在 Flickr 网站上查询,初步获取一组图像,这些图像附带的描述作为标题,然后,为确保描述与图像相关,保留的图像满足以下要求:

  1. 图像的描述,长度,令人满意,这是通过观察决定的。
  2. 图像的描述,至少包含两个预定义词汇表中的词汇和一个表征性词汇 (例如on、under等),通常表示空间关系。

具体的系统流程:

  1. 输入查询图像;
  2. 使用全局图像表示,从带标题集合中检索候选匹配图像;
  3. 提取关于图像内容的高级信息,包括目标、属性、动作、人物、物品、场景以及 TF-IDF 加权;
  4. 通过结合所有内容估计重新对于图像进行排名;
  5. 得出前 4 个结果标题。

即:

SBU-1M

LIAON-5B:这个数据集是 多语言(Multilingual) 版本,英文数据集是 2B,大型的 网络规模 (Web-Scale) 数据集,包含从互联网上抓取的图像,以及与之相关的 替代文本(alt-text) 作为标题。为了筛选图像-文本对,执行了以下步骤:

  1. 丢弃 文本长度过短或图像尺寸过小或过大 的图像-文本对。
  2. 基于 URL 进行图像去重。
  3. 提取 CLIP 嵌入向量用于图像和文本,并且使用这些嵌入向量,来丢弃可能的非法内容,以及嵌入向量之间,余弦相似度低的图像-文本对。

如图:

LIAON-5B

样本示例:

LAION-5B

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

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

相关文章

深入 mysql,掌握一对一、一对多、多对多表设计、查询及级联操作

数据库表的基本概念与关系 数据库通常包含多个表&#xff0c;每个表存储特定类型的信息。例如&#xff1a; 学生表&#xff1a;存储学生信息。老师表&#xff1a;存储老师信息。班级表&#xff1a;存储班级信息。 这些表通过各种关系连接&#xff0c;形成一个结构化的数据管…

vscode关闭git的提交提示

问题描述&#xff1a; vscode中光标停留在每一行都会有出现git仓库的提交信息&#xff0c;影响代码阅读。 解决方法&#xff1a; 左下角设置齿轮&#xff1a; 输入关键词commit input 取消勾选&#xff0c;即可解决。

判断n是否为两素数相乘

要求 请编写函数fun&#xff0c;其功能是:验证参数n是否可以分解成2个素数相乘&#xff0c;是则返回1&#xff0c;否则返回0&#xff0c;并通过指针变更x、y返回分解后的2个素数值&#xff0c;要求*x<*y。主程序中将打印出分解结果。 例如:1113*37&#xff0c;当函数fun的参…

Web APIs 第二天

第二天&#xff1a;DOM事件基础&#xff0c;注册事件&#xff0c;tab栏切换 添加事件监听 <body><button>点击</button><script>const btn document.querySelector(button)btn.addEventListener(click, function () {alert(嗲你)})</script> …

数据结构-3.3.栈的链式存储实现

一.链栈的定义&#xff1a; 二.总结&#xff1a;

Net8 调用BarTender2022 R8

先上效果图 官方只能支持.net framework&#xff0c;不支持.netCore 参考链接 https://support.seagullscientific.com/hc/en-us/community/posts/14770890037911-Support-for-NET-6 https://support.seagullscientific.com/hc/en-us/community/posts/360046932953-Make-SDK…

Web开发:ABP框架2——入门级别的增删改查Demo

目录 一、前言 二、上节回顾 ​编辑 三、新建Dto和添加映射 1.新建dto 2.添加映射规则 四、新建WebApi控制器用EFcore进行增删改查 1.新建Webapi控制器接口 2.新建Webapi控制器实现 3.跑项目测试 五、WebApi控制器调用底层代码 1.webapi控制器&#xff08;高层代码&…

JZ2440开发板——S3C2440的存储控制器

以下内容源于韦东山课程的学习与整理&#xff0c;如有侵权请告知删除。 课程中说的“内存控制器”&#xff0c;准确来说是“存储控制器”&#xff0c;其配套书籍写的也是“存储控制器”。 另外“Nor Flash控制器”&#xff0c;说的也是“存储控制器”&#xff0c;或者“存储控…

C++日期类,详细!!!

日期类的练习可以巩固提高之前所学习的知识&#xff0c;还可以完成关于的日期练习 下面是关于日期的对应oj题 KY111 日期差值 计算一年的第几天 累加天数 1.Date.h 头文件部分 看看我们要实现那些接口 1.获取对应月份的天数:GetMonthDay 2. < > …

pybind11 学习笔记

pybind11 学习笔记 0. 一个例子1. 官方文档1.1 Installing the Library1.1.1 Include as A Submodule1.1.2 Include with PyPI1.1.3 Include with Conda-forge 1.2 First Steps1.2.1 Separate Files1.2.2 PYBIND11_MODULE() 宏1.2.3 example.cpython-38-x86_64-linux-gnu.so 的…

轴承表面缺陷检测系统源码分享

轴承表面缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

GUI编程17:下拉框、列表框

视频链接&#xff1a;19、下拉框、列表框_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p19&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.下拉框 代码示例 package com.yundait.lesson06;import javax.swing.*; import java.awt.*;public class Te…

Docker实践——天池篇

参考零基础入门Docker-cuda练习场_学习赛_天池大赛-阿里云天池的赛制 (aliyun.com) ​ 在Docker零基础入门-CSDN博客中我已经安装了docker,现在开始创建自己的镜像仓库。 1. 开通阿里云容器镜像服务(镜像仓库) 进入容器镜像服务 (aliyun.com) 1.1. 创建个人实例 点击“…

Vue | watch监听

Vue | watch监听 在Vue.js的世界里&#xff0c;watch监听器是一个强大且灵活的工具&#xff0c;它允许我们在数据变化时执行特定的逻辑。本文将深入探讨watch的出现背景、使用方法、应用场景、源码原理以及扩展技巧&#xff0c;旨在帮助读者全面掌握这一重要特性。 文章目录 Vu…

JavaEE---Spring IOC(2)

DI之三种注入 属性注入 构造方法注入 Setter注入 当程序中同一个类有多个对象的时候会报错解决方法如下: AutoWired和Resource的区别

C8T6--SPI读FLASH和双通信

C8T6–SPI读取FLASH和双通信 本小节以一种使用 SPI 通讯的串行 FLASH 存储芯片的读写实验为大家讲解 STM32 的 SPI 使用方法。实验中 STM32 的 SPI 外设采用主模式&#xff0c;通过查询事件的方式来确保正常通讯 大纲 SPI读取FLASH双SPI接口进行主从相互通信 具体案例 SPI…

SSC377/D, 5M30 64/128MB, 1Tops1. 支持双摄,甚至三摄;2. 夜视全彩;3. 省内存、省带宽;4. 算力较大,适合新的算法模型;

 High Performance Processor Core  ARM Cortex-A35  Clock rate up to 1.0 GHz  Neon and FPU  Memory Management Unit for Linux support  DMA Engine  Image/Video Processor  Supports 8/10/12-bit parallel interface for raw data inpu…

【算法基础实验】图论-BellmanFord最短路径

理论知识 Bellman-Ford 和 Dijkstra 是两种用于计算加权图中最短路径的算法&#xff0c;它们在多个方面存在不同之处。下面是它们之间的主要区别&#xff1a; 1. 边权重的处理 Bellman-Ford&#xff1a; 能够处理带有负权重边的图&#xff0c;且可以检测负权重环&#xff08…

chapter16-坦克大战【1】——(自定义泛型)——day21

目录 569-坦克大战介绍 570-JAVA坐标体系 571-绘图入门和机制 572-绘图方法 573-绘制坦克游戏区域 574-绘制坦克 575-小球移动案例 576-事件处理机制 569-坦克大战介绍 570-JAVA坐标体系 571-绘图入门和机制 572-绘图方法 573-绘制坦克游戏区域 574-绘制坦克 575-小球移…

硬件工程师笔试面试——保险丝

目录 10、保险丝 10.1 基础 保险丝原理图 保险丝实物图 10.1.1 概念 10.1.2 保险丝的工作原理 10.1.3 保险丝的主要类型 10.1.4 保险丝的选择和使用注意事项 10.2 相关问题 10.2.1 保险丝的额定电流和额定电压是如何确定的? 10.2.2 保险丝的熔断速度对电路保护有何…