LLM的指令微调新发现:不掩蔽指令

最近看到了一篇挺有意思的论文,叫《指令掩蔽下的指令调整》(Instruction Tuning With Loss Over Instructions,https://arxiv.org/abs/2405.14394) 。

这篇论文里,研究者们对一个在指令微调中大家普遍接受的做法提出了疑问,那就是在算损失的时候把指令给遮起来(Instruction Masking During Instruction Finetuning)。不过咱们先别急着聊这个,先来聊聊指令微调是啥。

图片

指令微调(Instruction Tuning,简称IT),它的工作就是让那些已经预训练好的大型语言模型,比如LLM,能更好地理解并执行我们给的指令,比如说“总结一下这篇文章”或者“翻译这句话”啥的。这样做可以帮助缩小模型预测下一个词的目标和我们让它按指令来的目标之间的差距。指令微调其实可以看作是监督式微调(Supervised Fine-Tuning,SFT)的一种特殊情况,不过它们的目标还是有些不同的。

监督式微调,就是拿些标记好的数据来继续训练预训练的模型,让模型能更好地完成特定的任务。而指令微调呢,就是让大型语言模型在包含“指令-输出”对的数据集上再训练一下,这样能提升模型的能力和可控性。指令微调的特别之处在于它的数据集结构,是由人类指令和期望输出组成的一对对的。这种结构让指令微调专注于让模型理解和遵循人类的指令。

总的来说,指令微调是监督式微调的一种特别形式,它专注于通过理解和遵循人类指令来提升大型语言模型的能力和可控性。虽然它们的目标和方法挺像的,但指令微调的特殊数据结构和任务焦点让它成了SFT的一个独特的小分支。

图片

指令微调的数据集示例

在对LLM进行指令微调时,我们通常在计算损失时会掩蔽掉指令本身。

在其他流行的LLM库如Axolotl中,这也是通过config.yaml中的train_on_inputs: false默认设置自动完成的。在Hugging Face中,这不是默认做的,但可以通过DataCollatorForCompletionOnlyLM数据集收集器来实现,详见他们的文档。

图片

输入掩蔽的图,其中突出显示的文本仍然提供给LLM,但在训练期间计算损失时不使用。

就像刚才聊的,把输入提示遮起来这事儿在调教大型语言模型时挺常见的。有些论文里头,研究者们会试试看遮不遮提示,哪个效果更好。比如说,QLoRA这篇论文( "QLoRA: Efficient Finetuning of Quantized LLMs",https://arxiv.org/abs/2305.14314)里头,他们就比了比,发现遮起来效果还挺不错的。

图片

但是得注意,MMLU这个测试主要是看看模型做多选题怎么样,它没去测如果把微调后的模型拿来当聊天机器人用,这对话能力会受啥影响。

在这篇论文里,研究者们就特别认真地研究了,遮不遮指令,对模型性能有啥不一样的影响。

图片

(1)无指令掩蔽,(2)指令掩蔽,和(3)样板文字掩蔽。

上图里头,方法1是咱们用大型语言模型时的常规操作,因为它用起来简单,不需要咱们额外费心去改损失函数啥的。论文里的作者管这招叫“指令建模”。而且哦,他们在论文里还提到,除了指令,那些可能会出现在非Alpaca提示模板里的,像是<|user|><|assistant|><|system|>这样的特殊提示标记,也都会被遮起来。

方法2是目前大家用得最多的,算损失的时候,除了模型的回应,其他啥都被遮起来。论文里的作者把这招叫做“指令调整”,不过这个名字起得有点尴尬,因为我们实际上不是在调整指令,而是在算损失的时候把指令排除在外,跟方法1比起来。

画上图的时候,我突然想到一个论文里没提到的第三种方法:把那些每回都出现的样板文字给遮起来。比如Alpaca风格的提示,每个例子开头都是“Below is an instruction...”。这些文字和真正的指令、输入比起来,其实是固定的,所以可以考虑在算损失的时候不包括它们。

研究结果发现,这种不把指令遮起来的“指令建模”方法,好像效果还挺好的,比那些遮起来的方法要强一点儿,具体的数据图如下所示。

图片

不掩蔽指令比掩蔽指令表现更好。注释来自《指令掩蔽下的指令调整》,( https://arxiv.org/abs/2405.14394)

然而,“指令建模”的性能取决于(a)指令和响应长度的比例和(b)数据集的大小(就训练示例的数量而言)。

图片

不掩蔽指令的好处取决于数据集的长度和大小。注释来自《指令掩蔽下的指令调整》,(https://arxiv.org/abs/2405.14394)

为啥“指令建模”的效果和数据集的大小、长度有关系呢?原因可能是这样的:如果模型要回应的内容很短,而且训练时用的例子又不多,那模型就很容易把那些回应给记住了。这时候,如果我们在计算损失的时候,把指令这些信息也考虑进去,也就是说让模型输出的内容更多地反映在损失计算里,就能帮到模型,让它不那么容易出现过拟合的情况。

简单来说,研究者们发现,有时候回到最基本的方法,也就是不把指令遮起来,反而能提升模型的表现。

而且,有意思的是,简单的不掩蔽指令的方法(当然,除了那些特殊的提示标记,像<|user|><|assistant|><|system|>这些还是得遮的),效果竟然更好。

我自己以前也试过这两种方法,当时没觉得哪个明显更好,所以就没在掩蔽这块儿多下功夫,而是去调整别的设置了。现在想想,可能当时应该多试试不同的掩蔽方法,因为现在看来,这个方法好不好用,可能还真的和数据集的大小、长度有关系。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MMO:道具系统

本篇三部分&#xff1a; 道具分类 道具系统的接口设计&#xff08;C/S&#xff09; 道具系统的组成&#xff08;各种小方法&#xff09; 配置表&#xff0c;协议&#xff0c;数据库 //Array&#xff1a;打开宝箱获得多种道具 tables同目录下&#xff1a;Excel2Json.cmd生成…

【Python报错已解决】 SyntaxError: invalid syntax

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;修复缺失的括号或引号2.…

Redis相关命令详解

目录 一、认识Redis 二、string 1、重要知识 2、基础命令 3、Key值的设置 三、list 1、重要知识 2、存储结构 3、基础命令 4、list的应用场景 四、hash 1、重要知识 2、基础命令 五、set 1、重要知识 2、基础命令 3、具体应用 六、zset 1、重要知识 2、…

【保姆级教程】如何创建一个vitepress项目?

文章目录 安装前的准备工作项目安装创建文件初始化文件安装依赖遇到了 missing peer deps 警告&#xff1f;命令行设置向导 完成 安装前的准备工作 Node.js 18 及以上版本。通过命令行界面 (CLI) 访问 VitePress 的终端。支持 Markdown 语法的编辑器。推荐 VSCode 及其官方 Vu…

gpt plus获取指南

随着AI技术的发展&#xff0c;越来越多的人开始依赖GPT来提高工作效率。市场上有多个平台提供GPT服务&#xff0c;如何选择最适合自己的&#xff1f;本文将详细对比两个热门平台&#xff1a;「银河」和「环球」&#xff0c;帮助你快速决策。 环球链接 银河链接 结论先行&#…

Windows10 如何配置python IDE

Windows10 如何配置python IDE 前言Python直接安装&#xff08;快速上手&#xff09;Step1.找到网址Step2.选择版本&#xff08;非常重要&#xff09;Step3. 安装过程Step4. python测试 Anaconda安装&#xff08;推荐&#xff0c;集成了Spyder和Pycharm的安装&#xff09;Step1…

【人工智能】枢纽:数据驱动洞察引领未来智能系统

目录 第一部分&#xff1a;人工智能概述 1.1 人工智能的定义 1.2 人工智能的历史发展 1.3 未来发展趋势 第二部分&#xff1a;机器学习 2.1 机器学习的概念 2.2 监督学习的算法与应用 2.2.1 线性回归&#xff08;Linear Regression&#xff09; 2.2.2 决策树&#xff…

Bonree ONE 3.0 助力企业加速驶入“全域可观测”新时代

发展新质生产力是我国目前推动高质量发展的内在要求和重要着力点。在这一背景下&#xff0c;基于信息技术及关键生产要素数据&#xff0c;推进企业数智化转型&#xff0c;成为形成新质生产力的关键路径。当前&#xff0c;随着企业业务的不断扩展和复杂化&#xff0c;企业对数据…

服务网关工作原理,如何获取用户真实IP?

文章目录 一、什么是网关二、网关工作原理 (★)三、SpringCloud Gateway3.1 Gateway 简介3.2 Gateway 环境搭建3.3 自定义路由规则 (★)3.4 局部过滤器3.5 全局过滤器&#xff08;案例&#xff1a;获取用户真实IP地址&#xff09; (★) 补充1&#xff1a;不同类型的客户端如何设…

[产品管理-3]:NPDP新产品开发 - 1 - 愿景、使命、价值观,看似很虚,实际上指明正确的方向; 战略、方案、方法,指明正确的方法。

目录 前言&#xff1a;用正确的方法做正确的事 做正确的事&#xff1a;&#xff08;愿景、使命、价值观&#xff09; 用正确的方法&#xff1a;&#xff08;战略、方案、方法&#xff09; 总结 一、什么是战略 1.1 概述 1.2 企业战略的分层 1.3 什么是组织&#xff0c;…

Nginx之日志切割,正反代理,HTTPS配置

1 nginx日志切割 1.1 日志配置 在./configure --prefixpath指定的path中切换进去&#xff0c;找到log文件夹&#xff0c;进去后找到都是对应的日志文件 其中的nginx.pid是当前nginx的进程号&#xff0c;当使用ps -ef | grep nginx获得就是这个nginx.pid的值 在nginx.conf中…

瑞芯微RK3566鸿蒙开发板OpenHarmony标准系统应用兼容性测试指导

本文OpenHarmony标准系统应用兼容性测试指导&#xff0c;适用鸿蒙系统软件开发测试的新手入门学习课程。设备为触觉智能的瑞芯微RK3566开发板&#xff0c;型号Purple Pi OH。是Laval官方社区主荐的一款鸿蒙开发主板。支持Openharmony、安卓Android、Linux的Debian、Ubuntu系统。…

【Flutter】Flutter安装和配置(mac)

1、准备工作 升级Macos系统为最新系统安装最新的Xcode电脑上面需要安装brew https://brew.sh/安装chrome浏览器&#xff08;开发web用&#xff09; 2.、下载flutter https://docs.flutter.dev/release/archive?tabmacos 大家网页后&#xff0c;选择对应的版本【Tips&#x…

【STM32 HAL库】IIC通信与CubeMX配置

【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 应用CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 前言 本文为笔者学习 IIC 通信的总结&#xff0c;基于keysking的视频内容&#xff0c;如有错误&#xff0c;欢迎指正 理论 IIC总…

[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的 本次教程我只会带大叫了解网络的基础知识&#xff0c;了解网络请求的基本原理&#xff0c;为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层&#xff0c;并不涉及协议的具体实现和数据转发的规则。也就是说&#xff0c;这篇教程是…

第四届长城杯部分wp

还是太菜了&#xff0c;要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的&#xff0c;所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目&#xff0c;在登陆页面我用admin和1登陆成功了&#xff0c;但是按照正常的应该是…

Android 语言国际化三步

1.罗列: 可以多罗列几个 不需要全部实现 res下创建这个文件:locale-config <locale-config xmlns:android"http://schemas.android.com/apk/res/android"><locale android:name"zh" /><locale android:name"en" /><lo…

Proteus仿真综合实例(1)

分享一些基于Proteus的仿真实例&#xff0c;供大家学习参考。 1、51单片机230个Proteus仿真实例 包含基于51单片机的230个仿真实例&#xff0c;涉及定时器、中断、LCD显示、DS18B20温度测量、DS1621温度测量、PWM生成等充足电路模型案例。 2、51交通灯 模拟实现基于51单片机…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…

灭火器目标检测数据集 3700张 灭火器 带标注 voc yolo

数据集名称&#xff1a; 灭火器目标检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;3700张标注类型&#xff1a;灭火器检测格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该数据集旨在用于训练和评估计算机视觉模型&#xff0c;特别是针对灭…