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,即:

bash 复制代码
 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 模型,再进行更大规模的标注。

参考论文:

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) 模块,第一阶段额外增加训练视觉编码器,第二阶段是全部训练,第三阶段额外增加训练大语言模型。

如图:

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,概念描述,数据处理流程:

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

数据样例如下:

CC-12M 数据集:即使 替换文字(alt-texts) 不完全精确地描述网络图像,这些数据仍然增加,例如相扑、山竹和水母,这样的长尾视觉概念,提供丰富的资源。通过放宽概念描述 (Conceptual Captions) 中过于严格的过滤器,将视觉和语言预训练数据,扩展至 12M (1200万)。通过,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 个结果标题。

即:

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

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

如图:

样本示例:

相关推荐
Point__Nemo21 分钟前
深度学习Day-33:Semi-Supervised GAN理论与实战
人工智能·深度学习
魔力之心25 分钟前
人工智能与机器学习原理精解【20】
人工智能·机器学习
SEU-WYL3 小时前
基于深度学习的因果发现算法
人工智能·深度学习·算法
Tunny_yyy4 小时前
李宏毅2023机器学习HW15-Few-shot Classification
人工智能·机器学习
Francek Chen4 小时前
【机器学习-监督学习】朴素贝叶斯
人工智能·机器学习·分类·数据挖掘·scikit-learn·朴素贝叶斯·naive bayes
jndingxin6 小时前
OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用
人工智能·opencv·目标跟踪
文艺倾年6 小时前
【大模型专栏—进阶篇】语言模型创新大总结——“后起之秀”
人工智能·pytorch·语言模型·自然语言处理·大模型
DA树聚6 小时前
大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors
人工智能·学习·程序人生·ai·语言模型·自然语言处理·easyui
一支王同学6 小时前
论文解读《LaMP: When Large Language Models Meet Personalization》
人工智能·语言模型·自然语言处理
水花花花花花7 小时前
卷积神经网络
人工智能·神经网络·cnn