自我指导:提升语言模型自我生成指令的能力

人工智能咨询培训老师叶梓 转载标明出处

传统的语言模型,尤其是经过指令微调的大型模型,虽然在零样本(zero-shot)任务泛化上表现出色,但它们高度依赖于人类编写的指令数据。这些数据往往数量有限、多样性不足,且缺乏创造性,限制了模型的泛化能力。为了解决这一问题,由华盛顿大学、德黑兰理工大学、亚利桑那州立大学、约翰霍普金斯大学以及艾伦人工智能研究所的研究人员联合提出了一种名为“SELF-INSTRUCT”的框架,旨在通过自举(bootstrapping)的方式,利用预训练语言模型自身的生成能力,提升其遵循指令的能力。

论文链接:https://arxiv.org/pdf/2212.10560

项目链接:https://github.com/yizhongw/self-instruct 

方法

SELF-INSTRUCT方法是一种自动化流程,用于生成任务指令、过滤数据,并对语言模型进行微调,以提高其遵循指令的能力。旨在生成包含一组指令的数据集,每个指令定义了一个自然语言中的任务。每个任务包含至少一个输入输出实例。例如,指令“写一篇关于学校安全的作文”可以直接作为任务指令,也可以将其分解为“写一篇关于以下主题的作文”和实例输入“学校安全”。

图 2 显示整个过程从一个小的种子任务集开始,这些任务构成了任务池。然后从任务池中随机抽取任务,用作提示(prompt)来引导现成的语言模型(LM)生成新的指令和相应的实例。接下来,通过过滤掉质量较低或相似的生成内容,将剩余的有效任务添加回初始的任务库中。这些经过筛选的数据随后可以用于对语言模型本身进行指令调优,以使其更好地遵循指令。图中展示的任务是由 GPT3 生成的。这个过程是一个迭代的自举算法,通过这种方式,可以不断扩大任务集并提高模型遵循新指令的能力。自动化指令数据生成流程包含四个主要步骤:

  1. 生成任务指令:SELF-INSTRUCT从一组种子人类编写的指令开始,通过自举的方式生成新指令。初始任务池包含175个任务,每个任务包含一条指令和一个实例。

  2. 确定任务类型:为了区分分类任务和非分类任务,使用少量种子任务中的指令来提示语言模型进行判断。

  3. 实例生成:根据指令和任务类型,独立生成每个指令的实例。对于分类任务,采用输出优先方法(Output-first Approach),首先生成可能的类别标签,然后根据每个类别标签生成输入。对于非分类任务,采用输入优先方法(Input-first Approach),首先生成输入字段,然后产生相应的输出。

  4. 过滤和后处理:为了确保多样性,只有当新指令与现有指令的ROUGE-L相似度小于0.7时,才将其添加到任务池中。同时,排除包含特定关键词(如“图像”、“图片”、“图表”)的指令,因为这些通常无法由语言模型处理。

在生成了大规模指令数据后,研究者使用这些数据对原始语言模型进行微调。通过将指令和实例输入串联起来作为提示,并训练模型以标准监督学习的方式生成实例输出。

表1描述了通过将 SELF-INSTRUCT 应用于 GPT3 生成的数据的基本统计信息,包括指令数量、分类指令数量、非分类指令数量、实例数量、平均指令长度、平均非空输入长度和平均输出长度。研究者使用了伯克利神经解析器(Berkeley Neural Parser)来分析指令中的动词-名词结构,并提取了最常见的动词和直接宾语。这些分析结果展示了指令的多样性。

为了评估生成数据的质量,作者随机抽取了200个指令,并请专家注释员对每个实例的正确性进行了评估。评估结果显示,大多数生成的指令是有意义的,尽管有些生成的实例可能包含噪声,但它们仍然在正确的格式或部分正确,这对训练模型遵循指令提供了有用的指导。图3为生成指令中最常见的 20 个动词(内圈)和它们的前 4 个直接宾语(外圈)。这些指令虽然多样,但只占所有生成指令的 14%。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
 

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验 

研究者使用生成的指令数据对GPT3模型本身进行了指令调整。这个过程通过OpenAI的微调API完成,使用了各种模板将指令和输入串联起来,并训练模型生成输出。微调使用了默认的超参数设置,除了将提示损失权重设置为0,并训练了2个周期。通过这种方式微调后的模型被命名为GPT3SELF-INST。

研究者评估了以下基线模型:

  • 现成的语言模型:T5-LM和GPT3作为未经额外微调的基线模型。
  • 公开可用的指令调整模型:T0和T𝑘-INSTRUCT,这两个模型基于T5进行了指令调整,并且公开可用。
  • 指令调整的GPT3模型:InstructGPT,由OpenAI基于GPT3开发,以更好地遵循人类指令。

研究者首先评估了模型在典型NLP任务上遵循指令的零样本能力。使用的是SUPERNI评估集,包含119个任务,每个任务有100个实例。实验主要关注零样本设置,即模型仅根据任务定义进行提示,没有上下文示例。实验结果显示,SELF-INSTRUCT显著提高了GPT3的指令遵循能力。与未经SUPERNI特别训练的其他模型相比,GPT3SELF-INST性能更好,接近InstructGPT001的性能。

尽管SUPERNI在收集现有NLP任务方面非常全面,但这些任务大多偏向于分类任务,并且是为了研究目的而提出的。为了更好地评估指令遵循模型的实际价值,研究者策划了一组新的、以用户为导向的指令集。这组指令涵盖了多种领域,如电子邮件写作、社交媒体、生产力工具、娱乐和编程等。研究者创造了252个指令,每个指令有一个实例。这些指令旨在测试指令模型处理多样化和不熟悉指令的能力。

图6 展示了GPT3模型及其指令调整变体在这些新编写的指令集上的性能,由人类专家进行评估。评估者根据模型的响应是否准确有效完成任务,将输出分为四个等级:正确且满意的响应、可接受但有小错误的响应、回应指令但内容有重大错误的响应、不相关或完全无效的响应。结果显示,GPT3SELF-INST在所有经过公开指令数据集训练的GPT3变体中表现最佳,并且与InstructGPT001的性能非常接近。

研究者还探讨了数据规模和质量对模型性能的影响。通过从生成的数据集中抽取不同数量的指令,对GPT3进行微调,并评估结果模型在252个用户导向指令集上的性能。结果表明,随着数据规模的增加,模型性能持续改善,但在达到16K后几乎趋于平稳。

图 7 展示了使用不同大小指令数据集进行调优的 GPT3SELF-INST 模型的人类评估性能。研究者们还评估了通过从 InstructGPT003 (最好的通用模型)中提取输出来提高数据质量是否能进一步提升性能。结果显示所得到的模型比使用原始数据训练的模型性能提高了10%,这表明通过人类专家或从更好的模型中提取来提高数据质量有很大的空间。

综上所述,SELF-INSTRUCT方法不仅提高了GPT3的指令遵循能力,而且通过实验验证了其在多样化任务上的有效性。这些实验结果为未来在指令调整领域的研究提供了有价值的见解和方向。


http://www.ppmy.cn/news/1522799.html

相关文章

uniapp+vue+ts开发中使用signalR实现客户端和服务器通讯

SignalR SignalR 面向 ES6。 对于不支持 ES6 的浏览器,请将库转译为 ES5。 SignalR 支持以下用于处理实时通信的技术(按正常回退的顺序): WebSocketsServer-Sent Events长轮询SignalR 自动选择服务器和客户端能力范围内的最佳传输…

如何在极狐GitLab中添加 SSH Key?

本文分享如何生成 SSH Key 并添加到极狐GitLab 中,然后用 SSH Key 进行代码拉取。 极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0…

路由器的固定ip地址是啥意思?固定ip地址有什么好处

‌在当今数字化时代,‌路由器作为连接互联网的重要设备,‌扮演着举足轻重的角色。‌其中,‌路由器的固定IP地址是一个常被提及但可能让人困惑的概念。‌下面跟着虎观代理小二一起将深入探讨路由器的固定IP地址的含义,‌揭示其背后…

图文解析保姆级教程:Postman专业接口测试工具的安装和基本使用

文章目录 1. 引入2. 介绍3. 安装4. 使用 此教程摘选自我的笔记:黑马JavaWeb开发笔记16——请求(postman、简单参数、实体参数、RequestParam映射)想要详细了解更多有关请求各种参数介绍的知识可以移步此篇笔记。 1. 引入 在当前最为主流的开…

营养餐共享网站:项目规划Plan1

缘起 一些小众的项目,可能还没有较好的网站服务。一些APP项目,受限于支付宝和微信等的限制,只能很简单的在搜索框查找,不能像网站那样在公开引擎上搜索,那个范围更广,搜索到的结果更多。 所以我们想做一个…

数据结构代码集训day15(适合考研、自学、期末和专升本)

本份题目来自B站up:白话拆解数据结构 今日题目如下; (1)编写算法,实现十进制转十六进制; (2)汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老…

TCP协议多进程多线程并发服务器

TCP多进程多线程并发服务器 1.多进程并发服务器 #include <myhead.h>#define SERPORT 6666 #define SERIP "192.168.0.136" #define BLACKLOG 10void hande(int a) {if(aSIGCHLD){while(waitpid(-1,NULL,WNOHANG)!-1);//回收僵尸进程} }int main(int argc, c…

深度学习(一)-感知机+神经网络+激活函数

深度学习概述 深度学习的特点 优点 性能更好 不需要特征工程 在大数据样本下有更好的性能 能解决某些传统机器学习无法解决的问题 缺点 小数据样本下性能不如机器学习 模型复杂 可解释性弱 深度学习与传统机器学习相同点 深度学习、机器学习是同一问题不同的解决方法 …

Gin自定义校验函数

在Web开发中&#xff0c;数据验证是确保用户输入符合预期格式的关键步骤。Gin框架通过集成go-playground/validator包&#xff0c;提供了强大的数据验证功能。除了内置的验证规则&#xff0c;Gin还支持自定义验证函数&#xff0c;这使得我们可以针对特定的业务需求灵活地定义验…

GitHub每日最火火火项目(9.8)

项目名称&#xff1a;polarsource / polar 项目介绍&#xff1a;polar 是一个开源的项目&#xff0c;它是 Lemon Squeezy 的替代方案&#xff0c;并且具有更优惠的价格。这个项目的目标是让开发者能够在自己热爱的编码工作中获得报酬。它为开发者提供了一种新的选择&#xff0c…

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式&#xff08;Singleton Pattern&#xff09; 确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 示例代码&#xff1a; class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance this;this.data []…

数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树

文章目录 树与二叉树的应用1.哈夫曼树与哈夫曼曼编码1.1 带权路径长度1.2 哈夫曼树1.2.1 哈夫曼树的构造1.3 哈夫曼编码 2.并查集2.1 并查集的三要素2.1.1 并查集的逻辑结构2.1.2 并查集的存储结构 2.2 并查集的优化2.2.1 初步优化&#xff08;并操作优化&#xff09;2.2.2 终极…

mybatis官方仓库-常用的仓库都有哪些作用

在GitHub上&#xff0c;MyBatis组织下的37个仓库主要涵盖了MyBatis框架的各个方面&#xff0c;包括但不限于核心框架、插件、工具、示例以及与其他技术的集成等。以下是对这些仓库功能的大致分类和描述&#xff1a; MyBatis 核心项目 mybatis-3&#xff1a;这是MyBatis的核心…

C语言深度剖析--不定期更新的第五弹

const关键字 来看一段代码&#xff1a; #include <stdio.h> int main() {int a 10;a 20;printf("%d\n", a);return 0; }运行结果如下&#xff1a; 接下来我们在上面的代码做小小的修改&#xff1a; #include <stdio.h> int main() {const int a 1…

2024数学建模国赛ABCDE题选题分析及初步思路

高教社杯全国大学生数学建模竞赛&#xff08;以下简称“国赛”&#xff09;是面向全国大学生的一项重要赛事&#xff0c;旨在培养学生的数学建模能力、团队合作能力和科学研究能力。近年来&#xff0c;国赛的参赛人数和比赛难度不断提升&#xff0c;对参赛者的数学建模能力提出…

C++复习day05

类和对象 1. 面向对象和面向过程的区别是什么&#xff1f;&#xff08;开放性问题&#xff09; 1. **抽象级别**&#xff1a;- **面向对象**&#xff1a;以对象&#xff08;数据和方法的集合&#xff09;为中心&#xff0c;强调的是数据和行为的封装。- **面向过程**&#xf…

探索fastFM:Python中的高效推荐系统库

文章目录 &#x1f680; 探索fastFM&#xff1a;Python中的高效推荐系统库背景&#xff1a;为何选择fastFM&#xff1f;快照&#xff1a;fastFM是什么&#xff1f;安装指南&#xff1a;如何将fastFM加入你的项目&#xff1f;快速入门&#xff1a;五个基础函数的使用实战演练&am…

C语言第二周课

目录 引言: 一、数据类型大小及分类 (1)计算机中常用存储单位 (2)整体介绍一下C语言的数据类型分类。 (3)下面是我们本节课要学的基本内容----常用的数据类型 二、 数据类型的数值范围 三、打印输出类型 数据类型打印示例: 引言: 我们常常在写C语言程序时&#xff0c;总…

滚雪球学MyBatis-Plus(13):测试与部署

前言 在上期内容中&#xff0c;我们深入探讨了 MyBatis Plus 的高级功能&#xff0c;包括自定义 SQL 注解、批量操作以及数据加密与解密。这些功能极大地提高了开发效率&#xff0c;并增强了数据操作的灵活性和安全性。 本期内容将重点介绍 MyBatis Plus 的测试与部署。我们将…

win2003_prepatched_v6b有效期到2021年4月2日,所以编译win2k3会有错误

openssl 查看证书pfx过期时间win2003_prepatched_v6b有效期到2021年4月2日&#xff0c;所以编译win2k3会有错误 要使用OpenSSL查看PFX&#xff08;也称为PKCS#12&#xff09;证书的过期时间&#xff0c;你可以使用以下命令&#xff1a; openssl pkcs12 -in your_certificate.p…