【AI学习】对指令微调(instruction tuning)的理解

前面对微调(Fine-tuning)的学习中,提到指令微调。当时,不清楚何为指令微调,也一直没来得及仔细学习。

什么是指令微调?LLM经过预训练后,通过指令微调提升模型的指令遵循能力。所谓指令,就是针对具体下游任务,有明确的要求和目的,一般有相应的模板来让指令更加明确。基于指令数据微调语言模型,就是指令微调。

当然,在谷歌的FLAN(https://ar5iv.labs.arxiv.org/html/2109.01652)系列论文中,有一点意外的效果,在针对某些任务进行指令微调后,语言模型在其他未经过微调的任务上的性能也提升了。就是说,人家大模型,是具备举一反三的能力的!

在FLAN系列的论文中,谷歌提出了指令微调的概念,通过自然语言指令描述的任务数据集对预训练后的语言模型进行微调,用于提高语言模型的零样本学习能力。

FLAN(Finetuned Language Net)的论文中展示了指令微调——在通过指令描述的多个数据集上微调语言模型——显著提高了在未见任务上的零样本性能。文章采用了一个137B参数的预训练语言模型,并在超过60个通过自然语言指令模板描述的NLP数据集上进行了指令微调,然后评估在未见任务类型上的性能。FLAN显著提高了其未修改版本的性能,在评估的25个数据集中的20个上超越了零样本175B GPT-3,甚至在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上大幅度超越了GPT-3的少量样本性能。

来看一下FLAN这篇文章的几张图,快速理解FLAN模型的潜力和指令微调方法。

在这里插入图片描述

图1展示FLAN模型如何通过指令微调在未见任务上实现出色的零样本性能,并与GPT-3模型的性能进行了直观的比较。图的上半部分展示了指令微调的流程,其中预训练的语言模型在多种任务上进行微调,这些任务以指令的形式表述。在推理时,即使在指令微调期间未见过自然语言推理(NLI)任务,模型也会被评估在NLI任务上的性能。图的下半部分展示零样本FLAN模型对比零样本和少量样本GPT-3模型在三个未见任务类型(自然语言推理、阅读理解和闭卷问答)上的性能提升。

在这里插入图片描述

图2对比了指令微调(Instruction Tuning)与预训练-微调(Pretrain-Finetune)和提示(Prompting)两种方法。

√ 预训练-微调(Pretrain-Finetune):这种方法通常需要许多特定任务的示例,并且为每个任务训练一个专门的模型。这通常涉及到在特定任务A上进行微调,并在任务A上进行推理。

√ 提示(Prompting):这种方法通过少量样本提示或提示工程来提高模型的性能。在这种方法中,预训练的语言模型(LM)在推理时通过提示来改善任务A的性能。

√ 指令微调(Instruction Tuning):这种方法结合了预训练-微调和提示的优点,通过使用微调期间的监督来改进语言模型对推理时文本交互的响应。在指令微调中,模型在多个任务上进行微调,这些任务通过自然语言指令来描述,然后在未见的任务上进行推理。

指令微调的核心思想是利用自然语言指令来教授模型执行任务,这样即使在未见任务上,模型也能够遵循指令来执行任务。

在这里插入图片描述

图3描述了用于研究的各个数据集以及它们所属的任务簇。具体来说,图3展示了62个文本数据集,这些数据集被聚合成一个单一的集合,并且根据它们的任务类型被分类到12个不同的任务簇中。每个簇内的数据集具有相同的任务类型。图中的两种颜色标识两类不同的任务, “NLU” 代表 “Natural Language Understanding”(自然语言理解),而 “NLG” 代表 “Natural Language Generation”(自然语言生成)。

在这里插入图片描述

图4展示了用于自然语言推理(Natural Language Inference, NLI)任务的多个指令模板(instruction templates)。

从头开始创建一个包含许多任务的指令调整数据集将非常耗费资源,所以,文章将社区现有的数据集转换为为指令格式。汇总的62个文本数据集,这些数据集在TensorFlow Datasets上公开可用。

对于每个数据集,手动编写了十个独特的模板,这些模板使用自然语言指令来描述该数据集的任务。这十个模板中的大多数描述了原始任务,但为了增加多样性,对于每个数据集,还包括了多达三个“反转任务”的模板(例如,对于情感分类,包括了要求生成电影评论的模板)。然后,在所有数据集的混合体上对预训练的语言模型进行指令调整,每个数据集中的例子都通过为该数据集随机选择的指令模板进行格式化。

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

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

相关文章

车载GPT爆红前夜:一场巨头竞逐的游戏

在基于GPT-3.5的ChatGPT问世之前,OpenAI作为深度学习领域并不大为人所看好的技术分支玩家,已经在GPT这个赛道默默耕耘了七八年的时间。 好几年的时间里,GPT始终没有跨越从“不能用”到“能用”的奇点。转折点发生在2020年6月份发布的GPT-3&a…

【STM32】状态机实现定时器按键消抖,处理单击、双击、三击、长按事件

目录 一、简单介绍 二、模块与接线 三、cubemx配置 四、驱动编写 状态图 按键类型定义 参数初始化/复位 按键扫描 串口重定向 主函数 五、效果展示 六、驱动附录 key.c key.h 一、简单介绍 众所周知,普通的机械按键会产生抖动,可以采取硬件…

注意力机制篇 | YOLOv8改进之在C2f模块引入反向残差注意力模块iRMB | CVPR 2023

前言:Hello大家好,我是小哥谈。反向残差注意力模块iRMB是一种用于图像分类和目标检测的深度学习模块。它结合了反向残差和注意力机制的优点,能够有效地提高模型的性能。在iRMB中,反向残差指的是将原始的残差块进行反转,即将卷积操作和批量归一化操作放在了后面。这样做的好…

软件工程期末复习(6)需求分析的任务

需求分析 需求分析的任务 “建造一个软件系统的最困难的部分是决定要建造什么……没有别的工作在做错时会如此影响最终系统,没有别的工作比以后矫正更困难。” —— Fred Brooks 需求难以建立的原因&#x…

矩阵相关运算1

矩阵运算是线性代数中的一个核心部分,它包含了许多不同类型的操作,可以应用于各种科学和工程问题中。 矩阵加法和减法 矩阵加法和减法需要两个矩阵具有相同的维度。操作是逐元素进行的: CAB or CA−B其中 A,B 和 C 是矩阵,且 C…

7nm项目之模块实现——02 Placeopt分析

一、Log需要看什么 1.log最后的error 注意:warnning暂时可以不用过于关注,如果特别的warning出现问题,在其他方面也会体现 2.run time 在大型项目实际开发中,周期一般较长,可能几天过这几周,所以这就需要…

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction

(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…

vs2019中__cplusplus一直显示199711

vs2019中__cplusplus一直显示199711,如何修改? 打开属性->C/C->命令行,其他选项,输入:/Zc:__cplusplus

aws s3

列出关键点 创建s3 设置s3策略,所有人访问 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", …

C#窗体程序设计笔记:如何调出控件工具箱,并设置控件的属性

文章目录 调出控件工具箱设置控件属性 调出控件工具箱 使用Visual Studio打开C#解决方案后,初始界面如下图所示: 接着,在上方的菜单栏依次选择“视图”“工具箱”,即可打开工具箱,如下图所示: 设置控件属…

Android开发,日志级别

5个日志级别 Verbose (VERBOSE): 这是最低的日志级别,用于输出最为详尽的信息,包括开发和调试过程中的各种细节。在Log类中对应的方法是Log.v()。Debug (DEBUG): 此级别用于输出调试信息,帮助开发者理解程序运行流程或状态。通过Log.d()方法…

产品品牌CRUD

文章目录 1.renren-generator生成CRUD1.数据库表设计1.数据表设计2.分析 2.代码生成器生成crud1.查看generator.properties(不需要修改)2.修改application.yml 连接的数据库修改为云数据库3.启动renren-generator模块4.浏览器访问 http://localhost:81/5…

解决使用Vue.js前端与Flask后端API交互时跨源资源共享问题

我在使用flask以及Vue做一个项目时遇到了Vue前端与Flask后端API交互的问题就是前端获取不到后端返回的数据,报错: 上网查说是跨域问题,于是找了一些解决办法,就是可以通过设置响应头的 Access-Control-Allow-Origin 字段来允许所有…

易货模式:引领交易新潮流,实现资源高效利用

随着全球经济的繁荣和科技的日新月异,传统的交易模式正面临革新。在追求高效、便捷与环保的当下,易货模式作为一种新兴的交易方式,逐渐崭露头角,受到越来越多人的青睐。 易货模式,简而言之,就是通过平台或在…

知乎广告推广投放流程以及价格?

知乎作为一个拥有庞大高质量用户群体的知识分享平台,成为了众多品牌不可忽视的广告投放渠道。知乎不仅汇聚了各行各业的专业人士,其独特的社区氛围也为品牌提供了精准触达目标受众的机会。知乎广告推广的投放流程、费用标准,云衔科技提供的专…

刷代码随想录有感(65):回溯算法——组合问题

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<vector<int>> res;vector<int> tmp;void backtracking(int n, int k, int start){if(tmp.size() k){res.push_back(tmp);return;}for(int i start; i < n; i){tmp.push_back(i);bac…

全栈开发之路——前端篇(9)插槽、常用api和全局api

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

Transformers中加载预训练模型的过程剖析(一)

使用HuggingFace的Transformers库加载预训练模型来处理下游深度学习任务很是方便,然而加载预训练模型的方法多种多样且过程比较隐蔽,这在一定程度上会给人带来困惑。因此,本篇文章主要讲一下使用不同方法加载本地预训练模型的区别、加载预训练模型及其配置的过程,藉此做个记…

计算机组成原理(超详解!!) 第八节 总线系统

1.总线的概念和结构形态 1.总线&#xff08;BUS&#xff09;的基本概念 是构成计算机系统的互联机构&#xff0c;是多个系统功能部件&#xff08;运算器、控制器、存储器、输入/输出设备&#xff09;之间进行数据传送的公共通路。 由传输信息的电路和管理信息传输的协议组成…