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)。每个训练阶段都需要不同类型的数据,并且实现不同的目标。本篇介绍,指令微调(Instruction-Tuning) 部分。

指令微调 (Instruction-Tuning)

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

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

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

Instruction Tuning

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

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

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

格式如下:

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=1Nlog p(RiI,R<i;θ)
第一阶段预训练数据与第二阶段的指令微调的 Loss 公式是相同的。

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

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

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

<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分别表示多轮和单轮

相关数据集如下:

Dataset

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

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

  • 提示多样性(Prompt Diversity),已经发现指令的多样性,对于模型性能至关重要,多样化的提示有助于提高模型性能和泛化能力。
  • 任务覆盖范围(Task Coverage),在训练数据涉及的任务方面,发现 视觉推理(Vision Reasoning) 任务,在提升模型性能方面优于描述和问答任务,增强指令的复杂性,可能比增加任务多样性和增加细粒度的空间注释更有效。

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

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

相关文章

获取京东商品详情数据API接口优惠券信息(通过商品id获取商品详情页数据)调用说明文档

在当今数字化时代&#xff0c;应用程序之间的互操作性已成为推动业务创新和技术进步的关键因素。API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;作为这一生态系统中不可或缺的一环&#xff0c;扮演着连接不同软件服务、数据资源和…

AE 让合成重复循环播放

在合成上点右键 > Time > Enable Time Remapping 按住 Alt 键&#xff0c;点秒表图标 输入 loop_out("cycle", 0) 将子合成拖到此合成结束的位置 结束

Ton的编译过程(上)

系列文章目录 FunC编写初始准备 文章目录 系列文章目录预先准备第一个FunC合约深入compileFunc的内部compileFunc初探艾丽卡的疑惑package.json 初览index.js 预先准备 首先请大家跟着艾丽卡一步一步的完成FunC编写初始准备 这里面环境的搭建。 接下来&#xff0c;请做好下面…

通过python提取PDF文件指定页的图片

整体思路 要从 PDF 文件中提取指定页和指定位置的图片&#xff0c;可以分几个步骤来实现&#xff1a; 1.1 准备所需工具与库 在 Python 中处理 PDF 和图像时&#xff0c;需要使用几个库&#xff1a; PyMuPDF (fitz)&#xff1a;用于读取和处理 PDF 文件&#xff0c;可以精确…

Android 测试机

要测手机应用&#xff0c;直接挂电脑上跑虚拟机的话&#xff0c;怀疑电脑都要起火了。 eBay 上买了个新的机器&#xff0c;也才 100 美元多点&#xff0c;机器都没有拆过&#xff0c;电池是完全无电的状态。 操作系统是 Android 12 的版本&#xff0c;升级到 Android 14 后&am…

表格标记<table>

一.表格标记、 1table&#xff1a;表格标记 2.caption:表单标题标记 3.tr:表格行标记 4.td:表格中数据单元格标记 5.th:标题单元格 table标记是表格中最外层标记&#xff0c;tr表示表格中的行标记&#xff0c;一对<tr>表示表格中的一行&#xff0c;在<tr>中可…

Spring Boot集成Akka Stream快速入门Demo

1.什么是Akka Stream&#xff1f; Akka Streams是一个用于处理和传输元素序列的库。它建立在Akka Actors之上&#xff0c;使流的摄入和处理变得简单。由于它是建立在Akka Actors之上的&#xff0c;它为Akka现有的actor模型提供了一个更高层次的抽象。Akka流由3个主要部分组成-…

Linux 入门:简单的基础操作

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言Linux 入门&#xff1a;从基础操作到 WSL2 安装文章有误敬请斧正 不胜感恩&#xff01;1. 什么是 Linux&#xff1f;2. Linux 和其他系统有啥不同&#xff1f;3. Linux 的主要组成4. 常见 Linux 发行版5. 基本…

DNS查询报文分析

目录 1. 用 tcpdump工具监听抓包 2. 用 host 工具获取域名对应的IP地址 3. 分析DNS以太网查询数据帧 3.1 linux下查询DNS服务器IP地址 3.2 DNS以太网查询数据帧 &#xff08;1&#xff09;数据链路层 &#xff08;2&#xff09;网络层 &#xff08;3&#xff09;传输层…

【C++】—— list 的了解与使用

【C】—— list 的了解与使用 1 list 的函数接口2 迭代器2.1 简单使用 list 的迭代器2.2 迭代器的划分2.3 不同迭代器的使用场景2.3.1 sort2.3.2 reverse2.3.3 find 3 emplace_back4 操作函数4.1 sort4.1.1 list中sort介绍4.1.2 list 中 sort 与算法库中 sort 效率比较 4.2 mer…

Web:HTTP包的相关操作

目录 一、请求包修改页面来源 二、Cookie身份认证 三、XXF修改本地访问 四、向页面同时发出GET和POST请求 一、请求包修改页面来源 题目提示要从 http://localhost:8080/flag3cad.php?a1&#xff0c;请求包中没有指定请求来源&#xff0c;需要指定。 而表示页面来源的字段…

华南医电科技集团受邀出席中马建交50周年高级别经贸合作交流活动

左:马来西亚第九任首拿督斯里 伊斯迈尔沙必里雅各布; 右:华南医电董事长陈广元 在庆祝中国和马来西亚建交50周年的辉煌时刻,中马两国间的经贸合作不仅承载着历史的重任,更展望着未来无限的广阔前景。2024年,作为这一重要里程碑的纪念之年,中马两国政府及商界精英携手举办了一…

解决项目启动时报“找不到符号”问题

前言 在Java开发过程中&#xff0c;遇到“找不到符号”的错误是非常常见的现象。这种错误往往意味着编译器无法识别你所引用的某个类、方法或变量。本文旨在提供一套详细的排查和解决思路&#xff0c;帮助开发者快速定位并解决此类问题。 问题描述 “找不到符号”错误通常出…

Ubuntu下安装最新版本Apache2文件服务器

文章目录 1.最新版本Apache2安装2. Apache2配置2.1 端口配置2.2 创建软连接,生成文件服务2.3 隐藏Apache2服务版本号2.4 添加用户&#xff0c;设置Apache2文件服务密码2.5 重启Apache2服务3. 执行后效果 1.最新版本Apache2安装 注意&#xff1a;安装最新版本必须升级Ubuntu为20…

网络药理学:15、草稿暂存区

TCMSP 韦恩图在线网站 https://bioinfogp.cnb.csic.es/tools/venny/index.html String数据库参数详解&#xff1a;https://www.bilibili.com/video/BV1q64y1k7Zf?p16&vd_sourceaed4c634975918b14b7354ec93ce5389 David数据库可以用基因ID或者基因名。 KEGG数据库使用&am…

linux环境下手动安装mysql

没想到兜兜转转这么些年&#xff0c;今天申请个云服务器用来搭建求生2服务器&#xff0c;先用mysql来测试&#xff0c;结果还是花了相当久的时间。 基本所有单节点部署应用到linux环境&#xff0c;都三个流程&#xff1a; 1 下载安装包 2 解压修改配置文件 3 运行启动脚本 我们…

2024年最新软件测试学习路线图(从入门到精通)

六维全息课程注重综合能力培养&#xff0c;从入学到职后一站式服务测试开发人才。2024年最新软件测试学习路线图&#xff0c;从入门到精通一应俱全。 9阶段专业课11大专项测试项目 适应互联网企业测试开发需求。 对于想入行学软件测试的新手来说&#xff0c;首先就需要一个高效…

Qt自定义信号、带参数的信号、lambda表达式和信号的使用

整个部分知识通过一个跳转窗口的项目来体现 第一个页面 #include "test.h" #include <qdebug.h> test::test(QWidget *parent): QDialog(parent) {ui.setupUi(this);/** &s 信号发出者* &subWidget::mySignals 处理的信号&#xff0c; &发送者类…

携手鲲鹏,长亮科技加速银行核心系统升级

新经济周期下&#xff0c;银行净息差持续收窄、盈利压力加大、市场竞争日趋加剧。同时&#xff0c;国家相关政策不断出台&#xff0c;对金融科技的自主创新与安全可控提出了更高要求。 在这样的大背景下&#xff0c;银行业的数字化转型已经步入深水区。其中&#xff0c;核心系统…

Games101学习 - 光栅化

Games101中讲解的光栅化的基础知识&#xff0c;本文就来梳理一下。 在UE中使用UTexture2D可以逐像素绘制纹理&#xff1a; https://blog.csdn.net/grayrail/article/details/142165442 1.绘制三角形 这里可以通过101中讲解的叉积法逐像素绘制三角形&#xff1a; 绘制效果&a…