0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大模型如何快速构建指令遵循数据集?

深度学习自然语言处理 来源:NLP PaperWeekly 2023-06-27 16:52 次阅读

一、概述

1 Motivation

构造instruction data非常耗时耗力,常受限于质量,多样性,创造性,阻碍了instruction-tuned模型的发展。

背景:instruction-tuned方法是指利用非常多的指令数据【人类instructions指令和respond回答数据】去finetuned LLM模型,让模型能够理解人类指令,训练后使其对新的任务有非常强的zero-shot能力。

2 Methods

方法概述:本文提出self-instruct框架,通过bootstrapping off方法让原始的LM模型直接生成instruction数据,通过过滤和筛选后,产生大量的insturction指令数据(多样性和效果都不错),进而可以极大降低instruction数据的构建成本。

方法步骤总结:通过少量种子数据 + LM模型本身(未经过tuned模型)=> 生成instruction(指令)+ input(指令提到的输入,可以为空)+ output(响应输出)=> 然后filters过滤无效和相似的样本 => 来构造非常多的instruction指令遵循数据,详细步骤如下:

d4cc32ac-14c1-11ee-962d-dac502259ad0.png

2.1 Defining Instruction Data

Instruction:指令

X:根据instruction,X可能为空或者不为空。例如:输入X为空的Instruction:write an essay about school safety,输入不为空的Instruction:write an essay about the following topic

Y:答案,只根据X或者Instruction理想的response回答

2.2 Automatic Instruction Data Generation

Instruction Generation:使用175个种子数据来生成新的Instruction,每一步采用8-few-shot的策略,其中6个是人类写的,2个是机器生成的。

d50f2d6e-14c1-11ee-962d-dac502259ad0.png

Classification Task Identification:利用LM采用few-shot的方式来预测1中生成的instructions是否为分类任务,采用12个分类任务,19个非分类任务作为few-shot的例子。

d52c46d8-14c1-11ee-962d-dac502259ad0.png

2.3 Instance Generation:采用两种方法来生成实例X和Y

输入优先方法(Input-first Approach),首先根据说明提出输入字段X,然后产生相应的输出Y,这里task就是input X,output就是输出Y,也是通过in-context learning来做的,主要处理非分类的实例生成。

d561ab66-14c1-11ee-962d-dac502259ad0.png

分类任务的输出优先方法(Output-first Approach),先生成可能的类标签,然后生成对应句子【这么做是为了控制正负样本比例】

d576ee0e-14c1-11ee-962d-dac502259ad0.png

2.4Filtering and Postprocessing

过滤相似度比较高的,和已有的样本ROUGE-L小于0.7的才要

过滤image,picture,graph通常LLM无法处理的词

过滤instruction相同但是answer不同的

过滤太长或者太短

2.5FineTuning

采用多个templates模版,来encode instruction和instance进行训练,提升不同格式的鲁棒性。

3 Conclusion

比原始的GPT-3模型,绝对提升了33%,并且达到了差不多追上InstructGPT001的效果。就算利用公开的instruct数据,也有不错的提升。

d5ad3130-14c1-11ee-962d-dac502259ad0.png

总结:

就用了175个原始种子数据,利用GPT3接口finetuned模型,比原始的GPT3高了33个点,并且居然和InstructGPT001效果差不太多了。

有了充分的训练数据,在SUPERNI数据集(其更偏向于研究领域任务,与人类的Instruction的分布还是有差异,后续也针对真实的人类Instruction分布做了实验)上训练,用了本文提出的self-instruct还是有2个点的提升。

self-instruct提供了一个不用大量标注就能让原始的LM(未经过指令学习的模型)学习理解人类指令的解决方案,极大地降低指令数据的生成和标注成本。

本文发布了大规模的synthetic数据集,方便后续大家进行instruction tuning的研究。

4 limitation

长尾效应还比较严重:self-instruct依赖于LMs生成数据,会继承LM的缺陷,偏向于出现频率高的词。在常见的指令上效果可能不错,在长尾样本上可能效果比较差。

依赖大模型:依赖大模型的归纳偏差(inductive biases),可能只在大模型上效果比较好,由于大模型资源要求比较大,这也限制了小模型的使用。

可能会增强LM的偏见:可能会放大social bias,例如模型可能无法产生比较balanced的label。

二、详细内容

1 评估本文self-instruct在用户实际需求的Instructions上是否有效果

d5ca21be-14c1-11ee-962d-dac502259ad0.png

背景:SUPERNI数据更偏向于研究任务,这里通过头脑风暴构造了一些更偏向用户实际需求的Instructions,来检验self-instruct的效果,还是和InstructGPT系列来比较

d6073b76-14c1-11ee-962d-dac502259ad0.png

结论:效果也基本接近InstructGPT001,说明了其有效性,这里只使用了252个种子数据,也可以极大地降低Instruction构建的成本。

2 评估使用本文self-instruct方法扩充的Instruction是否真的有用

方法:从Instruction数量、回复response质量两个角度来进行试验,其中response质量对比是通过蒸馏更好模型的response来做的实验。

d623ea96-14c1-11ee-962d-dac502259ad0.png

实验1:评估扩充的训练数据量级对效果的影响

方法:从最开始的175个种子数据,逐步增加数据量,评估效果。

结论:大概训练数据在16K左右,效果就比较平了,带来的提升没那么大了。

实验2:评估生成的response的质量对效果的影响(从更好的模型InstructGPT蒸馏得到更好的response)

结论:44.4%提升到54.4%,说明更好的回复质量对模型的提升也是巨大的。

3 生成的数据量级

d65ba30a-14c1-11ee-962d-dac502259ad0.png

训练GPT3的数据量级:52k个Instruction数据,82k个实例。

4 生成的数据的多样性

d67029ce-14c1-11ee-962d-dac502259ad0.png

d6a12c5e-14c1-11ee-962d-dac502259ad0.png

评估方法1:挑选top20最常见的动词,然后画出其top4的直接noun object分布,衡量整体的数据分布。

评估方法2:画出与种子数据中,最相近文本的Rouge-L的分布,衡量与种子数据的分布差异。

结论:发现多样性还不错,这也是生成的数据能让模型学会通用的指令遵循的原因之一。

5 生成数据的质量

d6bb8b6c-14c1-11ee-962d-dac502259ad0.png

统计指标:随机挑选200个指令,每个指令随机挑选一个实例来标注

指令有效率:92%

input与指令一致:79%

output正确(能很好地响应Instruction和input的要求):58%

各个场景都有效:54%

总结:尽管生成的数据还是包含误差,但是大多数还是正确的,可以提供有用的指导,让模型能学会遵循人类指令。

三、个人总结

相当于验证了少量种子数据 + 原始预训练模型 => 生成大批量 多样性 + 质量还不错的 指令数据的可行性 => 好处是可以极大降低指令遵循数据集构建的成本

这篇文章解释了为什么大模型能听懂人类指令的困惑,可以看出,原始的GPT-3模型学习了非常多的知识,但是人类指令遵循的能力非常非常差通过self-instruct构造大量的多样、高质量的指令数据和答案,模型就开始能听懂指令,理解这个指令的具体含义,并给出人类期望的respond响应。其中指令的【多样性】和回复的【质量】是非常关键的两个因素。

d6ce9644-14c1-11ee-962d-dac502259ad0.png

对于如何对齐人类的价值观:可以参考复旦moss模型【参考资源1】,也是构造了非常多的对人类无害的种子数据,然后利用模型生成非常多的指令遵循数据,让模型尽可能的生成无害的结果,从另一个角度看,如果不法分子诱导模型去生成暴力倾向等不符合人类期望的答案,那么可能会训练出毒性非常大的模型,这也是非常恐怖的,难怪微软的文章说原始的gpt-3.5系列可能具备更强的能力,说明OpenAI在这方面做了非常强的约束。也难怪OpenAI强烈建议对大模型进行监管。

最近的OpenAI state of GPT的分享【参考资源2】,也提到原始next word predict训练的预训练模型LM擅长构建类似的问题,而不善于遵循人类指令生成回复,这个预训练阶段的任务也是Match的,同时本文利用其擅长构建类似问题的特点来构建更多的指令数据,也比较符合常理。

d6f18a28-14c1-11ee-962d-dac502259ad0.png






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 过滤器
    +关注

    关注

    1

    文章

    407

    浏览量

    18996
  • GPT
    GPT
    +关注

    关注

    0

    文章

    302

    浏览量

    14869
  • OpenAI
    +关注

    关注

    8

    文章

    761

    浏览量

    5915
收藏 人收藏

    评论

    相关推荐

    ARM Thumb Thumb-2 Thumb-2EE指令集区别比较

    指令。 § 说明 在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率非常高。对于存储系统数据总线为16位的应用系统,ARM体
    发表于 10-13 10:21

    请问有STM32 SDIO指令集

    最近在做SD卡,但不是用原子哥的SPI模式,用SDIO模式,但不知道SDIO指令集数据手册上只有寥寥几个指令,网上查了许久没有结果。望哪位兄弟给一份指令集。qq 741060785谢
    发表于 02-19 21:25

    网络中心战构建模型是什么?

    网络中心战理论是人们对历史上信息和战争之间不解之缘深化认识的具体体现。众所周知,空间和时间是军事行动中两个非常重要的要素,而网络可以很好地联系这两个要素,因此随着网络技术的发展,网络中心战构建模型
    发表于 10-23 06:04

    简单介绍ARM的指令集

    处理器架构是处理器厂商为同一个系列的处理器规定的一个规范。ARM架构是一种精简指令集(RISC)架构,具有以下RISC架构特点:较大的通用寄存器堆。load/store体系结构,其中数据处理操作仅对
    发表于 08-18 10:58

    ARM的指令集文章集合

    三、指令集如果你想要集中学习一下关于ARM指令集方面的知识(比如下面几个知识点),可以看下下面的文章1、机器码2、运算指令3、控制指令4、汇编指令
    发表于 09-07 22:06

    高阶API构建模型数据使用

    了TensorFlow2.0Beta版本,同pytorch一样支持动态执行(TensorFlow2.0默认eager模式,无需启动会话执行计算图),同时删除了杂乱低阶API,使用高阶API简单地构建复杂神经网络模型,本文主要分享用高阶API
    发表于 11-04 07:49

    嵌入式系统常用指令集有哪些

    成了表格并对一些指令做了相关的注释,方便自己在以后的学习中可以快速的查阅和记忆,仅供参考,欢迎指正。一、ARM处理器指令集注:箭头所指表示数据读取、传输方向5.协处理器
    发表于 10-27 07:53

    如何构建词向量模型

    如何构建词向量模型
    发表于 11-10 07:43

    ARM指令集的特点有哪些呢

    1、ARM指令集ARM指令集格式ARM指令集(ARM920T的核(core)的指令集)的格式如下图所示,可以看出,无论哪一种指令,长度都是3
    发表于 12-14 07:24

    Thumb指令集是什么意思呢

    了一些变种。Thumb指令集(T变种)Thumb指令集是将ARM指令集的一个子集重新编码形成的指令集。ARM指令长度为32位,Thumb
    发表于 12-14 09:01

    所谓指令集是指什么

    目录正文0.1.2.3.4.5.6.7.8.[参考文献]正文0.所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合
    发表于 12-16 06:26

    精简指令集架构RISC与复杂指令集架构CISC有何区别

    精简指令集架构RISC是什么?复杂指令集架构CISC又是什么?精简指令集架构RISC与复杂指令集架构CISC有何区别?
    发表于 12-23 10:02

    模型如何快速构建指令遵循数据

    :instruction-tuned方法是指利用非常多的指令数据【人类instructions指令和respond回答数据】去finetuned LLM
    的头像 发表于 06-27 16:56 1817次阅读
    大<b class='flag-5'>模型</b>如何<b class='flag-5'>快速</b><b class='flag-5'>构建</b><b class='flag-5'>指令</b><b class='flag-5'>遵循</b><b class='flag-5'>数据</b>集

    如何解决LLMs的规则遵循问题呢?

    传统的计算系统是围绕计算机程序中表达的指令的执行来设计的。相反,语言模型可以遵循用自然语言表达的指令,或者从大量数据中的隐含模式中学习该做什
    的头像 发表于 11-15 09:33 293次阅读
    如何解决LLMs的规则<b class='flag-5'>遵循</b>问题呢?

    模型数据集:构建、挑战与未来趋势

    随着深度学习技术的快速发展,大型预训练模型如GPT-4、BERT等在各个领域取得了显著的成功。这些大模型背后的关键之一是庞大的数据集,为模型
    的头像 发表于 12-06 15:28 636次阅读