Self-Instruct:使语言模型与自己生成的指令对齐

Self-Instruct: Aligning Language Model with Self Generated Instructions

Dec 2022

Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A. Smith, Daniel Khashabi, Hannaneh Hajishirzi

[University of Washington, Tehran Polytechnic, Arizona State University, Johns Hopkins University, Allen Institute for AI]

https://arxiv.org/abs/2212.10560

https://github.com/yizhongw/self-instruct

延伸:

https://github.com/tatsu-lab/stanford_alpaca

https://github.com/tatsu-lab/stanford_alpaca/blob/main/generate_instruction.py

https://github.com/wptoux/self-instruct-zh

摘要:大型“指令微调”语言模型(经过微调以响应指令)已经证明了零样本地推广到新任务的非凡能力。然而,它们在很大程度上依赖于数量、多样性和创造性有限的人工写的指令数据,因此阻碍了调优模型的通用性。我们引入了Self instruction,这是一个框架,用于通过自举(bootstrapping off)自己的生成来提高预训练语言模型的指令遵循能力。我们的流水线从语言模型中生成指令、输入和输出样本,然后对它们进行修剪,接着再用它们来微调原始模型。将我们的方法应用于原始GPT3,我们在Super Natural Instructions上比原始模型有33%的绝对改进,与使用私人用户数据和人工注释训练的InstructGPT_001的性能不相上下(注释)。为了进一步评估,我们为新任务策划了一组专家写的指令,并通过人工评估表明,使用Self instruction微调GPT3的性能大大优于使用现有公共指令数据集,仅与InstructionGPT_001相差5%的绝对差距。Self instruction提供了一种几乎无注释的方法,用于将预训练的语言模型与指令对齐,我们发布了大型合成数据集,以促进未来对指令调优的研究。

(注释:除非另有说明,我们将与text-davinci-001引擎进行比较。我们专注于这个引擎,因为它最接近我们的实验设置:通过人类演示进行监督微调。更新的引擎更强大,但是它们使用了更多难以比较的数据(例如,代码完成或最新的用户查询)或算法(例如,PPO)。

1    引言

最近的NLP文献见证了在构建能够遵循自然语言指令的模型方面的大量活动(Mishra等人,2022;Wei等人,2020;Sanh等人,2022年;Wang et al.,2022;Ouyang等人,2022,Chung等人,2022)。这些发展由两个关键组成部分推动:大型预训练语言模型(LM)和人类写的指令数据。PROMPT SOURCE(Bach et al.,2022)和SUPER NATURAL INSTRUCTIONS(Wang et al.,2021)是最近两个值得注意的数据集,它们使用大量的手动注释来收集构建{\text{T0}}(Bach等人,2022;Sanh等人,2021)和{\text{T$k$-Instruct}}(Wang等人,2022)。然而,考虑到大多数人工标注的往往是流行的NLP任务,无法涵盖真正的各种任务和描述它们的不同方式,这一过程成本高昂,而且往往多样性有限。鉴于这些局限性,继续提高指令调优模型的质量需要开发替代方法来监督指令调优模型。

在这项工作中,我们介绍了Self-Instruct,这是一个半自动化的过程,用于使用来自模型本身的指令信号来微调预训练的LM。整个过程是一个迭代自举(bootstrapping)算法(见图1),它从一个有限的(例如,在我们的研究中为175)种子集手动编写的指令开始,这些指令用于指导整个生成。在第一阶段,模型被提示以生成新任务的指令。将提示模型为新任务生成指令。此步骤利用现有的指令集来创建覆盖更广的定义(通常是新的)任务的指令。给定新生成的指令集,框架还为它们创建输入输出实例,这些实例稍后可用于监督指令微调。最后,将指令添加到任务池之前,使用一些度量来剪掉低质量和重复的指令。这个过程可以重复多次迭代,直到完成大量任务。

(In this work, we introduce SELF-INSTRUCT, a semi-automated process for instruction-tuning a pretrained LM using instructional signals from the model itself. The overall process is an iterative bootstrapping algorithm (see Figure 1), which starts off with a limited (e.g., 175 in our study) seed set of manually-written instructions that are used to guide the overall generation. In the first phase, the model is prompted to generate instructions for new tasks. This step leverages the existing collection of instructions to create more broad-coverage instructions that define (often new) tasks. Given the newlygenerated set of instructions, the framework also creates input-output instances for them, which can be later used for supervising the instruction tuning. Finally, various measures are used to prune lowquality and repeated instructions, before adding them to the task pool. This process can be repeated for many interactions until reaching a large number of tasks.)

图1:SELF-INSTRUCT的高级概述。该过程从一个小的任务种子集(每个任务有一条指令和一个输入输出实例)作为任务池开始。从任务池中随机采样一些任务,用来提示现成的LM生成新指令和相应的实例 ,然后过滤低质量或相似的生成结果,接着添加回任务的初始存储库。所得到的数据可以用于稍后语言模型本身的指令微调,以便更好地遵循指令。图中所示的任务由GPT3生成。更多创意示例见表10。

为了从经验上评估自我指导,我们在GPT3(Brown et al.,2020)上运行了这个框架,这是一个vanilla LM(§4)。该模型上的迭代Self-Instruct过程导致大约52k条指令,并配有82K个输入和目标输出对(paired with about 82K instance inputs and target outputs)。我们观察到,结果数据提供了各种各样的创造性任务,其中超过50%与种子指令的ROUGEL重叠小于0.3(§4.2)。在这些结果数据上,我们通过微调GPT3(即用于生成指令数据的相同模型)来构建GPT3-SELF-INST。我们在SUPER NATURAL INSTRUCTIONS(Wang et al.,2022)中包括的典型NLP任务和为指令遵循模型的新用法创建的一组新指令(§5)上,与各种其他模型进行比较,评估GPT3-SELF-INST。SUPER NI结果表明,GPT3-SELF-INST的性能大大优于GPT3(原始模型)(+33.1%),几乎与InstructGPT001的性能相匹配。此外,我们对新创建的指令集的人工评估表明,GPT3-SELF-INST表现出广泛的指令遵循能力,优于在其他公开可用的指令数据集上训练的模型,仅与InstructGPT001相差5%。

总之,我们的贡献是:(1)Self-Instruct,一种用最少的人类标记数据导出指令遵循能力的方法;(2) 我们通过大量的指令微调实验证明了它的有效性;(3) 我们发布了一个由52K指令组成的大型合成数据集和一组手动编写的新任务,用于构建和评估未来的指令遵循模型。

2    相关工作

指令遵循的语言模型    一系列工作发现,有证据表明,如果使用注释的“指令”数据(包含语言描述的指示性的命令,及其基于人类判断的期望结果的数据集)进行微调,香草语言模型可以有效地遵循一般语言指令(datasets containing language instructional commands and their desired outcome based on human judgement)(Weller等人,2020;Mishra等人,2022年;Wang等人,2022;Wei等人,2021;Sanh等人,2022,Ouyang等人,2022);Parmar等人,2022、Scialom等人,2022和Chung等人,2022。此外,他们还显示了“指令”数据的大小和多样性与所得模型对未见任务的可推广性之间的直接相关性。由于这些发展依赖于人类注释的“指令”数据,这对更具普遍性的模型的进展构成了瓶颈(例如,参见Wang等人的图5a,2022)。我们的工作旨在通过减少对人工注释的依赖来解决这个瓶颈。

此外,尽管像InstructGPT这样的模型具有显著的性能(Ouyang et al.,2022),但它们的构建过程仍然相当不透明。特别是,由于这些关键模型背后的主要公司实体发布的数据和透明度有限,数据的作用仍然研究不足。应对这些挑战需要创建一个涵盖广泛任务的大规模公共数据集。

多模态学习文献中也对指令遵循模型感兴趣(Fried等人,2018;Shridhar等人,2020;Min等人,2022;Weir等人,2022)。Self-Instruct作为一种扩展数据的通用方法,在这些设置中也可能有所帮助;然而,这超出了这项工作的范围。

用于数据生成和扩充的语言模型。    许多工作都依赖于生成性LM来生成数据(Schick和Schütze,2021;Wang等人,2021;Liu等人,2022;Meng等人,2020)或增强(Feng等人,2021;Yang等人,2020;Mekala等人,2022.)。例如,Schick和Schütze(2021)建议,对于给定任务,将人工注释替换为提示大型LM,并在SuperGLUE任务的背景下使用结果数据微调(通常较小)模型(Wang等人,2019)。虽然我们的工作可以被视为一种“扩充”形式,但我们的工作与这些工作的不同之处在于,它不是特定于某些具体任务(例如QA或NLI)。相比之下,Self-Instruct的一个明显动机是引导(bootstrap)新的任务定义,这些定义以前可能没有被任何NLP从业者定义过(尽管对下游用户来说可能仍然很重要)。

自训练。    一个典型的自训练框架(He等人,2019年;Xie等人,2020年;Du等人,2021;Amini等人,2022年;Huang等人,2020)使用经过训练的模型为未标记的数据分配标签,然后利用新标记的数据改进模型。在类似的情况下,Zhou等人(2022a)使用多个提示来指定单个任务,并建议通过提示一致性进行正则化,鼓励对不同提示进行一致的预测。这允许使用额外的未标记训练数据来微调模型,或者在推理时直接应用。虽然Self-Instruct与自训练文献有一些相似之处,但大多数自我训练方法都假设了特定的目标任务及其下的未标记示例;相比之下,Self-Instruct从零开始生成各种任务。

知识蒸馏。    知识蒸馏(Hinton等人,2015;Sanh等人,2019;West等人,2021;Magister等人,2022)通常涉及将知识从较大模型迁移到较小模型。Self-Instruct也可以被视为“知识蒸馏”的一种形式,但它与知识蒸馏的不同之处在于:(1)蒸馏的来源和目标是相同的,即模型的知识被提炼给自己;(2)提炼的内容是以指令任务的形式(即定义任务的指令、实例化任务的一组示例)。

(Knowledge distillation (Hinton et al., 2015; Sanh et al., 2019; West et al., 2021; Magister et al., 2022) often involves the transfer of knowledge from larger models to smaller ones. SELF-INSTRUCT can also be viewed as a form of “knowledge distillation", however, it differs from this line in the following ways: (1) the source and target of distillation are the same, i.e., a model’s knowledge is distilled to itself; (2) the content of distillation is in the form of an instruction task (i.e., instructions that define a task, and a set of examples that instantiate it))

利用有限的资源进行引导(Bootstrapping with limited resources)。    最近的一系列工作使用语言模型,使用专门的方法引导一些推断(bootstrap some inferences)。NPPrompt(Zhao et al.,2022)提供了一种在没有任何微调的情况下生成语义标签预测的方法。它使用模型自己的嵌入来自动查找与数据样本标签相关的单词,从而减少了从模型预测到标签(动词化器,verbalizers)对手动映射的依赖。STAR(Zelikman et al.,2022)迭代地利用少量的rationale示例和没有rationales的大型数据集,来引导模型执行推理的能力。Self-Correction(Welleck et al.,2022)将不完美的基础生成器(模型)与独立的校正器解耦,该校正器学习迭代校正不完美的生成,并证明了对基础生成器的改进。相反,我们的工作重点是在指令范式中引导新任务。(Our work instead focuses on bootstrapping new tasks in the instruction paradigm.)

指令生成。    最近的一系列工作(Zhou et al.,2022b;Ye等人,2022;Singh et al.,2022;Honovich等人,2022)通过几个例子生成了任务的指令。虽然Self-Instruct也涉及指令生成,但在我们的情况下,一个主要区别是它是task-agnostic;我们从头开始生成新的任务(指令和实例)。

3    方法

注释大规模的指令数据对人类来说可能是一项挑战,因为它需要1)创造性来提出新的任务,2)为每个任务编写标记实例的专业知识。在本节中,我们详细介绍了我们的Self-Instruct过程,它指的是用普通的预训练语言模型本身生成任务,然后用生成的数据进行指令微调,以使语言模型更好地遵循指令。该管道如图1所示。

3.1    定义指令数据

我们要生成的指令数据包含一组指令\{I_t\}, 每个用自然语言定义了一个任务t。每个任务都有一个或多个输入输出实例(X_t, Y_t)。 一个模型M,给定任务指令I_t和实例输入x,被期望产生输出yM(I_t, x) = y, \;  \mbox{for} \ (x,y)\in (X_t, Y_t)

 给定任务指令 和实例输入: ( , ) = , 对于(, ) ∈ ( ,  ). 请注意,在许多情况下,指令和实例输入没有严格的边界。例如,“写一篇关于学校安全的文章”可以是一个有效的指令,我们希望模型直接响应,同时它也可以被公式化为“写一份关于以下主题的文章”作为指令,“学校安全”作为实例输入。为了鼓励数据格式的多样性,我们允许这种不需要额外输入的指令(即。, 为空)。

3.2指令数据自动生成

我们用于生成指令数据的流水线由四个步骤组成:1)指令生成,2)识别指令是否代表分类任务,3)使用输入优先或输出优先的方法生成实例,以及4)过滤低质量数据。

指令生成。

SELF-instruction基于这样一个发现,即当在上下文中与一些现有指令一起呈现时,可以提示大型预训练语言模型生成新的和新颖的指令。这为我们提供了一种从一小组种子人工编写的指令中增长指令数据的方法。我们建议以自举的方式生成一组不同的指令。我们用作者编写的175个任务(每个任务1条指令和1个实例)启动任务池。对于每个步骤,我们从这个池中抽取8条任务指令作为上下文示例。在8条指令中,6条来自人工编写的任务,2条来自之前步骤中模型生成的任务,以促进多样性。提示模板如表6所示。

分类任务标识。

因为我们需要两种不同的方法来处理分类和非分类任务,所以我们接下来要确定生成的指令是否代表分类任务。3我们使用种子任务中的12条分类指令和19条非分类指令,提示普通GPT3少数镜头来确定这一点。提示模板如表7所示。

实例生成。

给定指令及其任务类型,我们为每条指令独立生成实例。这很有挑战性,因为它需要模型根据指令理解目标任务是什么,找出需要哪些额外的输入字段并生成它们,最后通过生成输出来完成任务。我们发现,当在其他任务的上下文示例中提示指令输入输出时,预训练的语言模型可以在很大程度上实现这一点。一种自然的方法是输入优先方法,在这种方法中,我们可以要求语言模型首先根据指令提出输入字段,然后产生相应的输出。这种生成顺序类似于如何使用模型来响应指令和输入,但这里有来自其他任务的上下文示例。提示模板如表8所示。

然而,我们发现这种方法可以生成偏向一个标签的输入,特别是对于分类任务(例如,对于语法错误检测,它通常生成语法输入)。因此,我们还提出了一种用于分类任务的输出优先方法,其中我们首先生成可能的类标签,然后对每个类标签的输入生成进行调节。提示模板如表9所示。4我们将输出优先方法应用于前一步骤中确定的分类任务,将输入优先方法应用到剩余的非分类任务。

过滤和后处理。

为了鼓励多样性,只有当新指令的ROUGE-L与任何现有指令的重叠小于0.7时,才会将其添加到任务池中。我们还排除了包含一些特定关键字(例如,图像、图片、图表)的指令,这些关键字通常无法由语言模型处理。当为每条指令生成新实例时,我们过滤掉完全相同的实例或具有相同输入但不同输出的实例

3.3按照说明对LM进行微调

在创建大规模指令数据之后,我们使用这些数据来微调原始语言模型(即SELF-instruction)。为此,我们将指令和实例输入连接起来作为提示,并训练模型以标准监督的方式生成实例输出。为了使模型对不同的格式具有鲁棒性,我们使用多个模板将指令和实例输入编码在一起。例如,指令可以加“Task:”或不加前缀,输入可以加“input:”或不加前缀,提示符末尾可以加“Output:。

4来自GPT3的自学数据

在本节中,我们将我们的方法引入GPT3作为案例研究。我们使用通过OpenAI API5访问的最大GPT3语言模型(“davinci”引擎)。进行查询的参数如附录A.1所述。在这里,我们对生成的数据进行了概述。

4.1统计

表1描述了生成数据的基本统计信息。我们总共生成了超过52K条指令,经过筛选,这些指令对应的实例超过82K

4.2多样性

为了研究生成了哪些类型的指令以及它们的多样性,我们确定了生成的指令中的动名词结构。我们使用Berkeley Neural Parser6(Kitaev和Klein,2018;Kitaev等人,2019)来解析指令,然后提取最接近解析树根的动词及其第一个直接名词对象。52445条指令中有26559条包含这样的结构;其他说明通常包含更复杂的条款(例如,“分类这条推文是否包含政治内容。”)或被框定为问题(例如:“这些陈述中哪些是真的?”)。我们在图2中绘制了前20个最常见的词根动词及其前4个直接名词宾语,它们占整个集合的14%。总的来说,我们在这些说明中看到了相当多样化的意图和文本格式。

我们进一步研究生成的指令与用于提示生成的种子指令有何不同。对于每个生成的指令,我们计算其与175个种子指令的最高ROUGE-L重叠。我们在图3中绘制了这些ROUGE-L分数的分布图,表明有相当数量的新指令与种子没有太多重叠。我们还在图4中展示了指令长度、实例输入和实例输出的多样性。

4.3质量

到目前为止,我们已经展示了生成数据的数量和多样性,但其质量仍不确定。为了研究这一点,我们随机抽取200条指令,每个指令随机选择一个实例。我们请一位专家注释者(这项工作的合著者)从指令、实例输入和实例输出的角度来标记每个实例是否正确。表2中的评估结果表明,大多数生成的指令都是有意义的,而生成的实例可能包含更多的噪声(在合理的程度上)。然而,我们发现,即使生成可能包含错误,但大多数错误仍然是正确的格式,甚至是部分正确的,这可以为训练模型遵循指令提供有用的指导。我们分别在表10和表11中列出了一些好生成和坏生成。

5实验结果

我们进行实验来测量和比较在各种指令微调设置下的模型质量。我们首先描述我们的模型和其他基线,然后是我们的实验

5.1 GPT3SELF-INST:对GPT3自己的指令数据进行微调

使用指令生成的指令数据,我们对GPT3模型本身(“davinci”引擎)进行指令调优。正如我们在§3.3中所描述的,我们使用各种模板来连接指令和输入,并训练模型以生成输出。此微调是通过OpenAI微调API7完成的。我们使用默认的超参数,只是我们将即时损失权重设置为0,并为2个时期训练模型。我们请读者参阅附录A.2,了解更多微调细节。所得到的模型表示为GPT3SELF-INST。

5.2基线

现成的语言模型。

我们评估T5-LM(Lester等人,2021;Raffel等人,2020)和GPT3(Brown等人,2020年)为一般LM基线(仅预培训,无额外微调)。这些基线将表明现成的LMs在预训练后能够立即自然地遵循指令的程度。

公开提供的指令调优模型。

T0和T푘-instruction是Sanh等人提出的两个指令调优模型。(2022)和Wang等人(2022)分别被证明能够在许多NLP任务中遵循指令。这两个模型都是从T5(Raffel et al.,2020)检查点进行微调的,并且是公开的89。对于这两种型号,我们都使用了它们最大的11B参数版本。

指令调优的GPT3模型。

我们评估了InstructGPT(Ouyang等人,2022年),它是由OpenAI基于GPT3开发的,用于更好地遵循人类指令,并且社区发现它具有令人印象深刻的零样本能力。这些模型有不同的一代,新的一代使用了更广泛的数据或算法创新10。对于我们在§5.3中的SUPERNI实验,我们只与他们的text-davinci-001引擎进行比较,因为他们的新引擎是用最新的用户数据训练的,并且可能已经看到了SUPERNI评估集。为了根据新编写的说明对这些模型进行人工评估,我们包括了它们的001、002和003引擎以确保完整性。

此外,为了将SELF-instruction训练与其他公开可用的指令微调数据进行比较,我们使用PROMPSTOURCE和SUPERNI的数据进一步微调了GPT3模型,这两个数据用于训练T0和T푘-说明型号。我们分别简称它们为T0训练和SUPERNI训练。为了节省训练预算,我们为每个数据集采样了5万个实例(但涵盖了它们的所有指令),其大小与我们生成的指令数据相当。基于Wang等人的发现。(2022)和我们的早期实验,减少每个任务的实例数量不会降低模型对看不见任务的泛化性能。

5.3实验1:SUPERNI基准上的零样本推广

我们首先评估模型在典型NLP任务中以零样本方式遵循指令的能力。我们使用SUPERNI的评估集(Wang et al.,2022),该评估集由119个任务组成,每个任务中有100个实例。在这项工作中,我们主要关注的是零样本设置,即,模型只提示任务的定义,没有incontext演示示例。对于我们对GPT3变体的所有请求,我们使用没有特定停止序列的确定性生成模式(温度为0,无细胞核采样)。

后果

我们根据表3中的结果得出以下观察结果。自我指导大大提高了GPT3的指令遵循能力。普通的GPT3模型基本上根本无法遵循人类的指令。经过人工分析,我们发现它通常会生成不相关和重复的文本,并且不知道何时停止生成。与其他没有专门针对SUPERNI训练的模型相比,GPT3SELF-INST比T0或在T0训练集上微调的GPT3实现了更好的性能,这需要付出巨大的人为标记努力。值得注意的是,GPT3SELF-INST的性能也几乎与InstructGPT001相匹配,后者是用私人用户数据和人工注释标签训练的。

在SUPERNI训练集上训练的模型在其评估集上仍然取得了更好的性能,我们将其归因于相似的指令风格和格式。然而,我们表明,当与SUPERNI训练集相结合时,SELFINSTRUCT仍然带来了额外的增益,证明了其作为补充数据的价值。

5.4实验2:新任务面向用户指令的泛化

尽管SUPERNI在收集现有的NLP任务方面很全面,但这些NLP任务大多是出于研究目的提出的,并倾向于分类。为了更好地获得指令遵循模型的实际价值,作者的一个子集策划了一组受面向用户的应用程序驱动的新指令。我们首先对大型LM可能有用的不同领域进行头脑风暴(例如,电子邮件写作、社交媒体、生产力工具、娱乐、编程),然后制定与每个领域相关的指令以及输入输出实例(同样,输入是可选的)。我们的目标是使这些任务的风格和格式多样化(例如,指令可以是长的或短的;输入/输出可以采用要点、表格、代码、方程等形式)。我们总共创建了252条指令,每条指令有一个实例。我们相信它可以作为评估基于指令的模型如何处理不同和不熟悉的指令的试验台。表4列出了252项任务中的一小部分。整个测试套件将根据要求提供。

人工评估设置。

由于不同的任务需要不同的专业知识,因此评估模型在这组不同任务上的性能极具挑战性。事实上,这些任务中的许多不能通过自动度量来衡量,甚至不能由普通的众包工作者来判断(例如,编写程序,或将一阶逻辑转换为自然语言)。为了获得更可靠的评估,我们请说明书的作者来判断模型预测。评估人员被要求根据产出是否准确有效地完成任务来对产出进行评分。我们实施了一个四级评级系统,用于对模型输出的质量进行分类,定义如下:

•评级-A:回复有效且令人满意。

B级:响应是可以接受的,但有可以改进的小错误或缺陷。

•评级-C:响应是相关的,并对说明做出响应,但内容存在重大错误。例如,GPT3可能首先生成一个有效的输出,但继续生成其他不相关的东西。

•额定D:响应不相关或无效,包括输入的重复、完全不相关的输出等。

后果

图5提供了GPT3模型及其在这个新编写的指令集上的指令调优对应物的性能。正如预期的那样,普通的GPT3语言模型在很大程度上无法响应指令,并且所有的指令调优模型都表现出相对较高的性能。尽管如此,GPT3SELF-INST(即,用SELF-instruction微调的GPT3模型)在很大程度上将优于在T0或SUPERNI上训练的对应模型,证明了生成的数据的价值,尽管存在噪声。与InstructGPT001(见脚注1)相比,如果我们将具有轻微缺陷的可接受响应(评级-3)视为有效,则GPT3SELF-INST的性能相当接近,GPT3SELF-INST仅落后于InstructGPU 001 5%。最后,我们的评估证实了InstructionGPT002和InstructionGPT1003模型令人印象深刻的指令遵循能力。尽管这一成功背后有许多因素,但我们推测,未来的工作可以在很大程度上受益于通过使用人类注释器或训练奖励模型来选择更好的生成来提高我们生成的数据的质量,类似于Ouyang等人使用的算法。(2022)。

5.5 GPT3SELF-INST的示例预测我们在表4中提供了一系列面向用户的任务,相应的GPT3SELF INST产生的响应和注释器评级。我们看到,即使对于评级为2级的响应,该模型也展示了解决任务的大量步骤,即使其最终输出是不正确的。

6讨论和限制

6.1为什么自我指导有效?

值得反思的是,高质量的人类反馈在实现最近在指令微调LMs方面的成功方面所起的作用(Mishra等人,2022;Wang等人,2022年;Wei et al.,2022;Sanh等人,2022)。以下是两个极端的假设:

(퐻1)人的反馈是指令微调的一个必要和不可或缺的方面,因为LMs需要了解在预培训期间没有学到的问题。(퐻2)人的反馈是指令微调的一个可选方面,因为LMs已经非常熟悉他们预训练中的指令。观察人的反馈只是一个轻量级的过程,用于微调他们的预训练分布/目标,这可能可以用不同的过程来替代。虽然现实可能介于这两个极端之间,但我们推测它更接近퐻2,特别是对于较大的型号。LMs已经对语言指令有了很多了解,这种直觉是SELFINSTRUCT的关键动机,也得到了其经验成功的支持。

6.2更广泛的影响

除了本文的直接重点之外,我们相信,自我指导可能有助于为广泛使用的指令调优模型(如InstructionGPT)的“幕后”发生的事情带来更多的透明度。不幸的是,由于这些工业模型的数据集尚未发布,因此它们仍处于API墙后,因此人们对它们的结构以及为什么它们表现出令人印象深刻的功能知之甚少。现在,学术界肩负着更好地理解这些模型的成功来源,并努力建立更好但开放的模型的责任。我们相信,我们在本文中的发现证明了多样化指令数据的重要性,我们的大型合成数据集可以成为迈向更高质量数据的第一步,以建立更好的指令跟踪模型。

6.3自我指导的局限性

在这里,我们讨论了这项工作的一些局限性,以启发未来在这个方向上的研究。

尾部现象。

自我指导依赖于LMs,它将继承LMs的所有限制。正如最近的研究所表明的那样(Razeghi等人,2022;Kandpal等人,2022),尾部现象对LMs的成功构成了严重挑战。换句话说,LMs的最大增益对应于语言的频繁使用(语言使用分布的头部),而在低频上下文中的增益最小。同样,在这项工作的背景下,如果自我指导的大部分收益都偏向于在预训练语料库中更频繁出现的任务或指令,也就不足为奇了。因此,对于不常见的和创造性的指令,该方法可能会显示出脆弱性。

对大型模型的依赖。

由于SELFINSTRUCT依赖于从LMs中提取的归纳偏差,它可能最适用于更大的模型。如果这是真的,那么对于那些可能没有大量计算资源的人来说,这可能会造成访问障碍。我们希望未来的研究将仔细研究作为模型大小或各种其他参数的函数的增益。值得注意的是,带有人工注释的指令调优也受到类似的限制:对于较大的模型,指令调优的增益更高(Wei et al.,2022)。

强化LM偏差。

作者关注的一点是这种迭代算法的意外后果,例如放大有问题的社会偏见(对性别、种族等的刻板印象或诋毁)。与此相关,在这个过程中观察到的一个挑战是算法难以产生平衡的标签,这反映了模型先前的偏见。我们希望未来的工作能够解决这些细节,以更好地了解这种方法的利弊。

7结论

我们引入了SELF-instruction,这是一种任务不可知的方法,通过自己生成指令数据(指令、输入和输出样本)并使用它进行自举,来提高语言模型的指令遵循能力。我们的方法在生成样本的修剪子集上对原始模型进行指令微调。在用香草GPT3进行实验时,我们观察到在SUPER-NATURALINSTRUMENTS上比原始模型有33%的绝对改进。此性能与InstructGPT001不相上下,后者使用私有用户数据和昂贵的人工注释进行训练。此外,我们还为新颖的任务策划了一套专业的写的说明。对这一集合的人工评估表明,使用SELF instruction调优GPT3的性能大大优于使用现有公共指令数据集,仅与InstructionGPT001相差5%的绝对差距。我们希望SELF-instruction可以作为第一步,使预先训练的语言模型与人类指令相一致,未来的工作可以在这些数据的基础上改进指令遵循模型。

A实施细节

A.1查询GPT3 API

在出于不同目的查询GPT3 API时,我们使用了不同的超参数集。发现这些超参数与GPT3模型(“davinci”引擎)和其他指令调优的GPT3变体配合良好。我们在表5中列出了它们

A.2微调GPT3

GPT3SELF-INST和我们的一些基线是从GPT3模型(具有175B参数的“davinci”引擎)进行微调的。我们通过OpenAI的微调API11进行此微调。虽然目前还没有关于如何使用此API对模型进行微调的详细信息(例如,更新了哪些参数,或者优化器是什么),但我们使用此API的默认超参数对所有模型进行了微调,以便结果具有可比性。我们只将“prompt_loss_weight”设置为0,因为我们发现这在我们的情况下效果更好,并且每个微调实验都经过两个时期的训练,以避免过度拟合训练任务。微调是根据训练文件中的令牌数量进行收费的。从GPT3模型中微调GPT3SELF-INST花费了338美元。

B数据生成提示模板

自我指导依赖于许多提示模板,以便从语言模型中引出生成。在这里,我们提供了四个模板,用于生成指令(表6)、分类指令是否代表分类任务(表7)、使用输入优先方法生成非分类实例(表8)和使用输出优先方法生成分类实例(图9)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容