LLM - 理解 多模态大语言模型(MLLM) 的 指令微调(Instruction-Tuning) 与相关技术 (四)

欢迎关注我的CSDN:https://spike.blog.csdn.net/

本文地址:https://spike.blog.csdn.net/article/details/142237871

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


完备(Full-Fledged) 的 多模态大语言模型(MLLM) 经历 3 个阶段的训练,即 预训练(Pre-training)、指令微调(Instruction-Tuning) 和 对齐调优(Alignment Tuning)。每个训练阶段都需要不同类型的数据,并且实现不同的目标。本篇介绍,指令微调(Instruction-Tuning) 部分。

指令微调 (Instruction-Tuning)

预训练(Pre-Training) 是 对齐不同模态和学习多模态的世界知识。指令(Instruction) 就是对于任务的描述,指令微调,教会模型更好地,理解用户的指令,并且完成所需的任务。通过这种方式调优,大语言模型(LLM) 可以通过跟随新的指令,泛化到未见过的任务,从而提高 零样本(Zero-Shot) 性能。

指令微调类似于多任务提示工程,包括:指令样本格式训练目标构建指令数据的方法常用数据集

预训练微调(有监督微调)、提示词工程、指令微调的差别,如图:

指令样本格式简化的模板,构建多模态 指令(Instruction) 数据。

  • <instruction> 是任务的文本描述。
  • {<image>, <text>}<output> 是数据样本的输入和输出。

请注意,输入中的<text>在某些数据集中可能缺失,例如,仅包含<image>的图片描述数据集。

格式如下:

bash 复制代码
Instruction: <instruction> 
Input: {<image>, <text>} 
Response: <output>

指令模板可以推广到多轮对话的方式。

训练目标 的 Loss 函数, R i R_{i} Ri 是 回答(Response), I I I 是 指令(Instruction), θ \theta θ 是参数,即:
L ( θ ) = − ∑ i = 1 N l o g p ( R i ∣ I , R < i ; θ ) L(\theta)=-\sum_{i=1}^{N}log\ p(R_{i}|I,R_{<i};\theta) L(θ)=−i=1∑Nlog p(Ri∣I,R<i;θ)

第一阶段预训练数据与第二阶段的指令微调的 Loss 公式是相同的。

指令数据的格式非常灵活,任务描述也是多样化,因此收集数据样本,通常更加困难且成本更高,其中 3 种典型的大规模收集指令数据的方法,即数据调整(Data Adaptation)自指令(Self-Instruction)数据混合(Data Mixture)

数据调整 (Data Adaptation) :将已有的 VQA 数据集中,图像保持不变,Query 通过 GPT 扩写,作为新的 <instruction> ,Answer 也通过 GPT 扩写,作为新的 <output>,扩写保存内容正确不变,更符合人类的语言习惯。

参考视觉问答(VQA)数据集的指令模板,<Image>{Question}分别是原始 VQA 数据集中的图片和问题,即:

bash 复制代码
<Image> {Question}
<Image> Question: {Question}
<Image> {Question} A short answer to the question is
<Image> Q: {Question} A:
<Image> Question: {Question} Short answer:
<Image> Given the image, answer the following question with no more than three words. {Question}
<Image> Based on the image, respond to this question with a short answer: {Question}. Answer:
<Image> Use the provided image to answer the question: {Question} Provide your answer as short as possible:
<Image> What is the answer to the following question? "{Question}"
<Image> The question "{Question}" can be answered using the image. A short answer is

自指令(Self-Instruction):解决 多轮(Multiple Rounds) 对话场景,使用 大语言模型(LLM),通过少量手工标注的样本,生成文本 指令遵循(Instruction-Following) 数据。具体来说,少量指令遵循的样本被手工制作成 示例(Demonstrations),之后 ChatGPT 被提示使用这些示例,作为指导,来生成更多的指令样本。LLaVA 扩展至多模态领域,通过将图像转换成描述文本和边界框,并且,提示 GPT-4 使用要求和示例,指导和生成新的数据。通过这种方式,构建多模态指令数据集,称为 LLaVA-Instruct-150k。

通过 自指令(Self-Instruction) 生成的数据集:

  • 输入/输出模态: I I I:图像, T T T:文本, V V V:视频, A A A:音频
  • 数据组成:M-TS-T分别表示多轮和单轮

相关数据集如下:

数据混合(Data Mixture):不是很常用的方式。除了多模态指令数据之外,仅语言的 用户-助手(User-Assistant) 对话数据,也可以用来提高对话能力和指令遵循能力。LaVIN 通过从仅语言和多模态数据中,随机抽样直接构建一个小批量。MultiInstruct 探索了不同的训练策略,这些策略涉及单一模态和多模态数据的融合,包括 混合指令调整(结合这两种类型的数据并随机打乱) 和 顺序指令调整(先文本数据,然后是多模态数据)。

指令微调样本的数据质量与数量同等重要。预先在 大规模且嘈杂 的图文对上训练的模型,表现并不如在 较小且干净 的数据集上预训练的模型。较少且质量更高的指令微调数据,可以实现更好的性能。对于数据过滤,构建评估数据质量的指标,以及自动过滤劣质视觉-语言数据的方法。数据质量的 2 个标准:

  • 提示多样性(Prompt Diversity),已经发现指令的多样性,对于模型性能至关重要,多样化的提示有助于提高模型性能和泛化能力。
  • 任务覆盖范围(Task Coverage) ,在训练数据涉及的任务方面,发现 视觉推理(Vision Reasoning) 任务,在提升模型性能方面优于描述和问答任务,增强指令的复杂性,可能比增加任务多样性和增加细粒度的空间注释更有效。
相关推荐
IT古董28 分钟前
【漫话机器学习系列】261.工具变量(Instrumental Variables)
人工智能·机器学习
小王格子32 分钟前
AI 编程革命:腾讯云 CodeBuddy 如何重塑开发效率?
人工智能·云计算·腾讯云·codebuddy·craft
MonkeyKing_sunyuhua43 分钟前
VSCode + Cline AI辅助编程完全指南
ide·人工智能·vscode
Leinwin1 小时前
Microsoft Azure 服务4月更新告示
人工智能·azure
胡耀超1 小时前
霍夫圆变换全面解析(OpenCV)
人工智能·python·opencv·算法·计算机视觉·数据挖掘·数据安全
jndingxin1 小时前
OpenCV CUDA 模块中用于在 GPU 上计算两个数组对应元素差值的绝对值函数absdiff(
人工智能·opencv·计算机视觉
jerry6091 小时前
LLM笔记(五)概率论
人工智能·笔记·学习·概率论
硅谷秋水1 小时前
学习以任务为中心的潜动作,随地采取行动
人工智能·深度学习·计算机视觉·语言模型·机器人
Tiny番茄2 小时前
Multimodal models —— CLIP,LLava,QWen
人工智能