LLM论文:SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions

0 Abstract

大型“指令微调”语言模型(即微调以响应指令的模型)已经展示了在零样本情况下泛化到新任务的卓越能力。然而,它们严重依赖于人类编写的指令数据,这些数据通常在数量、多样性和创造性上都是有限的,因此限制了微调模型的通用性。

我们引入了SELF-INSTRUCT,一个通过利用它们自己的生成来提升预训练语言模型遵循指令能力的框架。我们的流程从一个语言模型生成指令、输入和输出样本,然后在使用这些样本来微调原始模型前,过滤掉无效或相似的样本。

将我们的方法应用于原始的GPT3,我们展示了在SUPER-NATURAL INSTRUCTIONS上相对于原始模型33%的绝对改进,与使用私有用户数据和人类注释训练的InstructGPT001的性能相当。为了进一步评估,我们策划了一套专家编写的指令,用于新任务,并通过人类评估显示,使用SELF-INSTRUCT微调GPT3的表现,比使用现有的公共指令数据集要好很多,仅在InstructGPT001后面留下了5%的绝对差距。

SELF-INSTRUCT提供了一种几乎无需注释的方法,以使预训练语言模型与指令对齐,并且我们发布了我们的大型合成数据集,以促进未来关于指令微调的研究。

1 Introduction

最近的自然语言处理(NLP)文献见证了在构建能够遵循自然语言指令的模型方面的巨大活动量。这些发展由两个关键组成部分推动:大型预训练语言模型(LM)和人类编写的指令数据,(e.g., PROMPTSOURCE (Bach et al., 2022) and SUPER-NATURALINSTRUCTIONS (Wang et al., 2022, SU- PERNI for short))。然而,收集这样的指令数据成本高昂,且鉴于大多数人类生成倾向于流行的NLP任务,其多样性往往有限,不能真正覆盖各种任务及其描述方式的真实多样性。继续提高指令调整模型的质量和覆盖范围,需要开发替代方法来指导指令调整过程。

在这项工作中,我们引入了SELF-INSTRUCT,一个半自动化的过程,用于使用模型本身的指令信号对预训练的LM进行指令调整。

整个过程是一个迭代的引导算法(见图2),它从一个有限的(例如,在我们的研究中是175个)手动编写的任务种子集开始,这些任务用于指导整体生成。在第一阶段,模型被提示生成新任务的指令。这一步利用现有的指令集创建更广泛覆盖的指令,这些指令定义了(通常是新的)任务。鉴于新生成的指令集,框架还为它们创建了输入输出实例,这些实例随后可用于指导指令调整。最后,使用各种启发式方法自动过滤低质量或重复的指令,然后将剩余的有效任务添加到任务池中。这个过程可以重复多次,直到达到大量的任务。

这幅图提供了SELF-INSTRUCT方法的高层次概述。整个过程从一小部分任务的种子集作为任务池开始。从任务池中随机采样任务,用来提示现成的语言模型生成新的指令和相应的实例,然后过滤掉低质量或类似的生成物,并将剩余的有效任务添加回初始任务库。所得数据可用于语言模型的指令调整,以便更好地遵循指令。图中显示的任务是由GPT-3生成的。

  1. 指令生成(Step 1: Instruction Generation)

    • 语言模型(LM)接收到任务,生成新任务的指令。例如:“给我关于这个话题的一个名人名言。”
  2. 分类任务识别(Step 2: Classification Task Identification)

    • 确定生成的任务是否有效。如果是,以输出为先(Output-first)方式生成实例;如果不是,以输入为先(Input-first)方式生成。
  3. 实例生成(Step 3: Instance Generation)

    • 根据指令生成输入和输出的实例。例如,对于“找出给定文本是支持还是反对堕胎”这一任务,生成类标签(Class Label)、输入文本(Input Text)以及该任务的输出。
  4. 过滤(Step 4: Filtering)

    • 使用各种启发式方法自动过滤掉质量低下或重复的指令,只保留高质量的任务。

“任务池(Task Pool)是一组任务的集合,可以理解为一个任务库。在SELF-INSTRUCT框架下,这个任务池包含了种子任务集,也就是在开始时人工编写的一系列任务,每个任务都配有指令和至少一个示例(实例)。

在迭代过程的第一步中,语言模型(LM)会从这个任务池中随机选取一个任务。这个选取的任务包含了已经存在的指令,LM使用这些指令作为启发,以生成新的任务指令。换句话说,LM查看任务池中的现有任务,并在此基础上创造新的任务指令,这可能会定义新的任务类型。

例如,如果任务池中有一个任务是“写一个关于诚实重要性的短文”,LM可能会在这个指令的启发下生成一个新的指令,如“给我关于这个话题的一个名人名言”。然后,LM将会根据这个新生成的指令创造相应的输入和输出实例,如指令生成阶段所示的例子。

所以,“任务池”是整个迭代过程的出发点,它提供了一组初始指令,这些指令引导LM生成新的、更多样化的任务和指令,这些新生成的任务随后又经过筛选和质量控制,可能会被添加回任务池,从而丰富了任务池的内容,使其能够在未来的迭代中继续引导新的指令生成。”

为了从实证上评估SELF-INSTRUCT,我们在GPT3(Brown等,2020年)上运行了这个框架,这是一个原版的LM(§3)。在这个模型上进行的迭代SELF-INSTRUCT过程产生了大约52k条指令,配有大约82K个实例输入和目标输出。我们观察到,所得数据提供了一系列创造性的任务,如图1中的示例所示。

这些生成的任务偏离了典型NLP任务的分布,并且与种子任务的重叠相当小(§3.2)。我们将GPT3SELF-INST与其他各种模型进行了比较,这些模型既包括在SUPERNI(Wang等,2022年)中包含的典型NLP任务,也包括为指令遵循模型的新用途创建的一套新指令(§4)。结果表明,GPT3SELF-INST比GPT3(原始模型)有很大的提升(+33.1%),几乎达到了InstructGPT001的性能。此外,我们对新创建的指令集进行的人类评估显示,GPT3SELF-INST展现了广泛的指令遵循能力,超过了在其他公开可用指令数据集上训练的模型,并且仅在InstructGPT001后面留下了5%的差距。

总结而言,我们的贡献包括:(1)我们提出了SELF-INSTRUCT,这是一种用最少的人工标注数据引入指令遵循能力的方法;(2)我们通过广泛的指令调整实验证明了其有效性;(3)我们发布了一个包含52K条指令的大型合成数据集和一套手工编写的新任务集,用于构建和评估未来的指令遵循模型。

[

  1. (2) 通过指令调整实验验证效果:​​​​​​​研究者们不仅提出了这个方法,还进行了广泛的实验来证明这种新方法的有效性。他们展示了在使用SELF-INSTRUCT方法后,模型在遵循指令方面的能力有了显著提升。这是通过将微调后的模型与原始模型以及其他基准进行比较实现的。他们的实验结果显示,使用自己生成的指令数据集进行微调的模型,在执行新任务时,性能得到了大幅改善。

  2. (3) 发布大规模合成数据集和手工编写的新任务集:

      他们创建并公开了一个大型的合成数据集,这个数据集包含了52,000条由语言模型生成的指令和任务实例。此外,他们还提供了一套手工编写的新任务,这些任务是为了进一步的研究和评估未来模型的能力而设计的。这意味着其他研究者和开发者可以使用这些资源来构建和测试自己的指令遵循模型,促进整个领域的进步。

]

2 Method

为大规模指令数据做标注对于人类来说可能具有挑战性,因为它需要1)创造性地构想出新任务,以及2)专业知识来编写每个任务的解决方案。在这里,我们详细说明了我们的SELF-INSTRUCT过程,它指的是使用原始预训练的语言模型本身生成任务的流程,过滤生成的数据,然后用这些生成的数据进行指令调整,以便让语言模型更好地遵循指令。这个流程在图2中描述了出来。

2.1 Defining Instruction Data 定义instruction数据

注意指令和实例输入之间并没有严格的界限,在许多情况下。例如,“写一篇关于校园安全的文章”可以是一个有效的指令,我们期望模型能够直接响应,而它也可以被表述为“写一篇关于以下话题的文章”作为指令,“校园安全”作为实例输入。为了鼓励数据格式的多样性,我们允许这样不需要额外输入的指令(即X input为空)。

2.2 Automatic Instruction Data Generation 自动指令数据生成

我们数据生成的流程包含四个步骤:1)生成任务指令,2)确定指令是否代表一个分类任务,3)通过输入优先或输出优先的方法生成实例,4)过滤低质量数据。

指令生成。在第一步中,SELF-INSTRUCT从一小批种子人工编写的指令中生成新指令,采用自举方式。我们用175个任务(每个任务1个指令和1个实例)启动任务池。在每一步中,我们从这个池中抽样8个任务指令作为上下文例子。在这8个指令中,有6个来自人工编写的任务,2个来自模型在前几步生成的任务,以此促进多样性。提示模板显示在表5中。

当模型开始生成新任务指令时,它会继续生成,直到满足以下条件之一:自行停止生成,到达长度限制,或者生成了“Task 16”这样的标记。这意味着模型可能连续生成多个任务指令,直到它触发了停止条件。

分类任务识别。因为我们需要为分类和非分类任务采取不同的方法,所以我们接下来确定生成的指令是否代表一个分类任务。为此,我们采用少量示例提示语言模型,使用12个分类指令和19个非分类指令从种子任务中确定这一点。提示模板显示在表6中。

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

[比如说,如果任务指令是“为一篇关于海洋保护的文章提供概要”,在输入优先方法中,模型首先需要确定它需要哪些信息来构建这个概要。这可能包括文章的主要观点、关键事实、作者的论点等。一旦这些“输入字段”确定下来,模型接着生成一个输出,即概要本身。​​​​​​​​​​​​​​]

然而,我们发现这种方法可能会生成倾向于某一标签的输入,特别是对于分类任务(例如,对于语法错误检测,它通常会生成语法正确的输入)。因此,我们额外提出了一个输出优先方法用于分类任务,在此方法中,我们首先生成可能的类标签,然后基于每个类标签条件生成输入。提示模板显示在表8中。我们将输出优先方法应用于前一步骤中识别的分类任务,将输入优先方法应用于剩余的非分类任务。

输出优先。例如,如果我们有一个分类任务,诸如“判断一句话是正面的、负面的还是中性的”,输出优先方法会首先生成所有可能的类别标签,即“正面”、“负面”和“中性”。接下来,为了生成训练数据,我们会为每个类别创建或选择一个匹配的句子(输入)。这样,我们就会得到一个包含各种类别及其对应句子的数据集。​​​​​​​

分类:“积极”,输入示例:“这款手机的使用体验太棒了!”

分类:“消极”,输入示例:“这款手机经常死机,让我很失望。”

分类:“中性”,输入示例:“这款手机的颜色是蓝色。]

过滤和后处理。

  • 多样性过滤:为了确保任务池中指令的多样性,只有当新生成的指令与任务池中任何现有指令的ROUGE-L相似度低于0.7时,该新指令才会被添加到任务池中。ROUGE-L是一个用于评估自然语言生成内容的相似度的度量标准,特别是用来评价摘要和其他文本生成任务的性能。

  • 关键词排除:如果指令包含某些特定关键词(例如图像、图片、图表),这些指令会被排除,因为通常这些内容不能被语言模型处理。

  • 实例的唯一性过滤:在为每个指令生成新的实例时,如果生成的实例完全相同,或者输入相同但输出不同的实例,这些实例将被过滤掉。这可以防止数据集中出现重复或矛盾的实例,从而提高模型训练的质量。

  • 无效生成的识别和过滤:基于启发式规则(例如,指令太长或太短,实例输出是输入的重复等),识别并过滤掉无效的生成内容。这是为了确保生成的数据集符合一定的质量标准,不包含对模型训练无帮助或有害的数据。

2.3 Finetuning the LM to Follow Instructions 微调语言模型以遵循指令

在创建了大规模的指令数据后,我们使用它来微调原始的语言模型(即,SELF-INSTRUCT)。为此,我们将指令和实例输入串联成一个提示,并以标准的监督方式训练模型生成实例输出。为了使模型对不同的格式鲁棒,我们使用多个模板来编码指令和实例输入。例如,指令可以以“任务:”为前缀,也可以不以它为前缀,输入可以以“输入:”为前缀,也可以不以它为前缀,“输出:”可以在提示的末尾附加,也可以不附加,中间可以插入不同数量的换行符等等。

3 SELF-INSTRUCT Data from GPT3 从GPT3得到的self-instruct数据

在本节中,我们将我们的方法应用于GPT3,作为一个案例研究。我们使用通过OpenAI API访问的最大的GPT3语言模型(“davinci”引擎)。制作查询的参数在附录A.2中有描述。这里我们展示了生成数据的概览。

3.1 statistics 统计数据

表1描述了生成数据的基本统计信息。我们总共生成了超过52K条指令和在过滤后与这些指令对应的超过82K个实例。

统计数据:

  • 指令数量:52,445
  • 分类指令数量:11,584
  • 非分类指令数量:40,861
  • 实例数量:82,439
  • 空输入实例数量:35,878
  • 平均非空输入长度(以词为单位):12.7
  • 平均输出长度(以词为单位):18.9

3.2 Diversity 多样性

为了研究生成了哪些类型的指令以及它们的多样性如何,我们识别了生成指令中的动词-名词结构。我们使用伯克利神经解析器(Berkeley Neural Parser)对指令进行解析,然后提取最接近根部的动词及其第一个直接名词宾语。在52,445条指令中,有26,559条包含这种结构;其他指令通常包含更复杂的从句(例如,“判断这条推文是否包含政治内容。”)或者是以问题形式构建的(例如,“哪些陈述是真的?”)。我们在图3中绘制了最常见的20个根动词及其前4个直接名词宾语,这占了整个集合的14%。总的来看,这些指令中有相当多样化的意图和文本格式。

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

3.3 Quality 质量

到目前为止,我们已经展示了生成数据的数量和多样性,但其质量仍然不确定。为了调查这一点,我们随机抽样了200条指令,并随机选择每条指令的1个实例。我们请一位专家注释者(本文的作者)标记每个实例是否正确,包括指令、实例输入和实例输出方面。表2中的评估结果显示,大多数生成的指令是有意义的,而生成的实例可能包含更多的噪声(在合理程度上)。然而,我们发现,尽管生成的内容可能包含错误,但大多数仍然是格式正确或部分正确的,这可以为训练模型遵循指令提供有用的指导。我们分别在表10和表11中列出了一些好的例子和坏的例子。

4 Experimental Results 实验结果

我们进行实验来衡量和比较在不同指令调整设置下模型的性能。我们首先描述我们的模型和其他基线模型,然后是我们的实验。

4.1 GPT3SELF-INST: finetuning GPT3 on its own instruction data 在自己的指令数据上微调GPT3

考虑到通过指令生成的指令数据,我们用GPT3模型本身(“davinci”引擎)进行指令调整。如§2.3节所述,我们使用各种模板将指令和实例输入结合在一起,并训练模型以标准的监督方式生成实例输出。这种微调是通过OpenAI微调API进行的。我们使用默认的超参数,除了将提示损失权重设置为0,并训练模型两个周期。我们将读者引到附录A.3中以获取更多微调细节。结果模型被标记为GPT3^SELF-INST。

4.2 Baseline 基线

现成的off-the-line LMs。我们评估T5-LM(Lester et al., 2021; Raffel et al., 2020)和GPT3(Brown et al., 2020)作为vanilla LM基线(只预训练,无额外微调)。这些基线将指示现成的LM在自然地立即遵循预训练后的指令的能力。

公开可用的指令调整模型。T0和Tk-INSTRUCT是两种指令调整模型,分别由Sanh et al.(2022)和Wang et al.(2022)提出,它们已被证明能够遵循许多NLP任务的指令。这两个模型都是从T5(Raffel et al., 2020)检查点微调而来,并且是公开可用的。对于这两个模型,我们使用它们最大的版本,有11B个参数。

指令调整的GPT3模型。我们评估了OpenAI基于GPT3开发的InstructGPT(Ouyang等,2022),它旨在更好地遵循人类指令,并且被社区发现具有令人印象深刻的零样本(zero-shot)能力。这些模型有几代,新一代的模型使用了更广泛的数据或算法新颖性。在§4.3的SUPERNI实验中,我们只与它们的text-davinci-001引擎进行比较,因为它们的更新引擎是用最新的用户数据训练的,很可能已经看到了SUPERNI测试集。在我们对新编写的指令进行人类评估时,为了完整性,我们包括了它们的001、002和003引擎。

另外,为了将SELF-INSTRUCT训练与其他公开可用的指令调整数据进行比较,我们进一步使用来自PROMPTSOURCE和SUPERNI的数据对GPT3模型进行微调,这些数据用于训练T0和Tk-INSTRUCT模型。我们简称它们分别为T0训练和SUPERNI训练。为了节省训练预算,我们为每个数据集抽样了50K个实例(但覆盖了所有的指令),其规模与我们生成的指令数据相当。根据Wang等人(2022)的发现和我们早期的实验,减少每个训练任务的实例数量并不会降低模型对未见任务的泛化性能。

4.3 Experiment 1: Zero-Shot Generalization on SUPERNI benchmark 实验1: 在SUPERNI基准上的零样本泛化

我们首先评估模型在典型NLP任务上遵循指令的能力,在零样本(zero-shot)方式下进行。我们使用SUPERNI(Wang et al., 2022)的评估集,它包含了119个任务,每个任务有100个实例。在这项工作中,我们主要关注零样本设置,即模型仅根据任务定义被提示,而没有上下文示例。对于所有的GPT3变体请求,我们使用确定性生成模式(temperature设为0且没有核(nucleus)采样)而不特定停止序列。

[在进行自然语言生成时,GPT-3提供了多种控制生成文本行为的参数。这句话中提到的“确定性生成模式”和特定的参数设置,是用来指导模型如何生成文本的。

  1. Temperature: 这是一个控制生成文本随机性的参数。当temperature设为0时,模型生成文本的行为是完全确定性的,这意味着给定相同的输入,它将始终生成相同的输出。较高的temperature值会使生成过程更随机,产生更多样化的文本。

  2. 核采样(Nucleus Sampling): 核采样是一种用于生成文本的技术,它在每一步选择下一个单词时仅从概率质量函数(probability mass function)的一个子集(例如,累计概率质量最高的一部分)中采样。没有核采样意味着不使用这种技术,而是使用其他方法(如temperature为0时的确定性选择)来生成文本。

  3. 不特定停止序列: 在生成文本时,我们通常可以指定一个或多个“停止序列”,模型在检测到这些序列时将停止生成。这里没有使用特定的停止序列意味着模型不会在遇到特定词或短语时停止生成,它会继续生成直到达到其他停止条件(如最大长度限制)。]

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

[从表3的结果中,我们观察到SELF-INSTRUCT显著提升了GPT3遵循指令能力的表现(+33.1%),并且几乎达到了InstructGPT001的性能。此外,它在大量标记的指令数据存在时,还可以进一步提升性能。我们发现虽然生成可能包含错误,但大部分仍处于正确格式或部分正确,这为训练模型遵循指令提供了有用的指导。我们分别在表10和表11中列出了一些好的例子和坏的例子。

ROUGE-L 是一种用于评估自然语言生成或文本摘要的性能指标。ROUGE 是 Recall-Oriented Understudy for Gisting Evaluation 的缩写,而 L 表示使用最长公共子序列(Longest Common Subsequence,LCS)来计算这个指标。

ROUGE-L 主要关注生成文本和参考文本之间的最长公共子序列。最长公共子序列是指在不考虑它们在序列中的位置(即不需要连续)的情况下,两个序列中都出现的最长子序列。ROUGE-L 使用这个最长公共子序列的长度来计算生成文本与参考文本之间的相似度。

ROUGE-L 的计算分为两部分:

  1. 召回率(Recall): 参考文本中的LCS占参考文本总长度的比例,这反映了参考文本的覆盖程度。

  2. 精确率(Precision): 参考文本中的LCS占生成文本总长度的比例,这反映了生成文本的准确程度。

ROUGE-L 得分是这两者的调和平均数,通常用于摘要或翻译任务,可以衡量生成文本保留了多少参考文本的关键内容。在评估语言模型的指令遵循能力时,ROUGE-L 可以帮助量化模型生成的输出与给定指令的对应程度]

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

4.4 Experiment 2: Generalization to User-oriented Instructions on Novel Tasks 实验2: 泛化到面向用户的新任务指令

尽管SUPERNI在收集现有NLP任务方面非常全面,但这些NLP任务大多数是出于研究目的提出的,并且倾向于分类。为了更好地评估指令遵循模型的实际价值,一部分作者策划了一套新的指令集,这些指令是由用户导向的应用激发的。我们首先大脑风暴出大型语言模型可能有用的各种领域(例如电子邮件写作、社交媒体、生产力工具、娱乐、编程等),然后为每个领域制定相关的指令和输入输出实例(再次强调,输入是可选的)。我们的目标是使这些任务的风格和格式多样化(例如,指令可能长或短;输入/输出可能采取项目符号列表、表格、代码、方程式等形式)。总共,我们创建了252个指令,每个指令有一个实例。我们认为它可以作为一个测试平台,用来评估基于指令的模型如何处理多样化和不熟悉的指令。表9展示了其中的一小部分。整套数据集在我们的GitHub仓库中可用。我们在附录A.1中分析了这组数据集和种子指令之间的重叠情况。

人类评估设置。

评估模型在这个多样化任务的评估集上的表现是极其具有挑战性的,因为不同的任务需要不同的专业知识。实际上,许多任务不能仅通过自动化指标来衡量,甚至普通的众包工作者也无法判断(例如,编写程序或将一阶逻辑转换为自然语言)。为了得到更可靠的评估,我们请编写指令的作者来评判模型的预测。评估员被要求基于输出是否准确有效地完成任务来进行评分。我们实施了一个四级评分系统来分类模型输出的质量:

  • RATING-A:回应有效且令人满意。
  • RATING-B:回应可接受,但有轻微的错误或不完美。
  • RATING-C:回应相关且响应指令,但在内容上有重大错误。例如,GPT3可能首先生成一个有效的输出,但继续生成其他不相关的内容。
  • RATING-D:回应无关或完全无效。

结果。图6显示了GPT3模型及其经过指令调整的对应模型在这套新编写的指令集上的表现(具有中等的评价者间一致性𝜅 = 0.57,在四类分类标准上,请参阅附录B了解详细信息)。

正如预期的那样,纯GPT3语言模型在响应指令上基本无能为力,而所有经过指令调整的模型则表现出相对更高的性能。然而,用SELF-INSTRUCT微调过的GPT3模型(即GPT3^SELF-INST)的表现大幅超越了在T0或SUPERNI数据上训练的对应模型,这证明了尽管存在噪声,生成的数据的价值依然显著。

与InstructGPT001相比,GPT3^SELF-INST的表现非常接近——如果我们将有轻微瑕疵但可接受的响应(RATING-B)视为有效,GPT3^SELF-INST仅比InstructGPT001落后5%。最后,我们的评估确认了InstructGPT002和InstructGPT003惊人的指令遵循能力。虽然这背后有许多因素,但我们推测未来的工作可以从通过使用人类注释者或训练一个奖励模型来选择更好的生成物,类似于Ouyang等人(2022)使用的算法,以此来提高我们生成数据的质量中大有裨益。

4.5 Effect of Data Size and Quality 数据量和质量的影响

数据量。SELF-INSTRUCT提供了一种以低成本扩展指令数据的方式,几乎不需要人工标注;那么,生成更多的数据是否能带来更好的指令遵循能力呢?

我们通过从生成的数据集中随机抽样不同数量的指令,对GPT3进行微调,并评估结果模型在252个面向用户的指令集上的表现来分析生成数据的大小。我们进行了与4.4节相同的人类评估。图7展示了与不同数据量微调的GPT3^SELF-INST模型的性能。总体而言,随着数据量的增加,我们看到了一致的改进。然而,这种改善在16K之后几乎趋于平稳。这与Wang等人(2022年,图5)的数据规模实验是一致的。

有趣的是,当在SUPERNI上评估时,我们发现模型性能的提升在数百条指令左右更早地达到平稳期。这可能是因为新生成的数据与SUPERNI中的典型NLP任务不同,这表明未来的研究可能会从使用不同的指令数据组合中获益,以便在各种类型的任务上获得更好的性能。[也就是说,融合多样化的数据集可能有助于模型更好地泛化到各种任务,而不是仅仅依赖单一数据集的训练。]

数据质量。另一个提高模型性能的方向是取我们生成的数据,并获得更好的监督(噪声更少)。我们通过使用InstructGPT003(目前最好的通用模型)重新生成我们所有实例的输出字段,给定指令和输入来探索这个想法。然后我们使用这个改进版本的数据对GPT3进行微调。这可以被看作是用我们的数据对InstructGPT003进行的一种蒸馏。如图7所示,结果模型的表现比用原始数据训练的对应模型高出10%,这表明在未来工作中使用我们的生成管道获取初始数据,然后通过人类专家或从更好的模型蒸馏来提高数据质量有很大的空间。

5 Related Work 相关工作

指令遵循型语言模型(LMs)。 一系列研究发现,如果使用带注释的“指令性”数据进行微调,原始的语言模型(LMs)在遵循通用语言指令方面可以很有效。这些数据集包含基于人工注释的语言指令命令及其期望结果(Weller et al., 2020; Mishra et al., 2022; Wei et al., 2022; Sanh et al., 2022等)。

此外,这些研究还表明,“指令性”数据的规模和多样性与模型对未见任务的泛化能力之间存在直接相关性(Wang et al., 2022; Chung et al., 2022)。然而,由于这些发展主要集中在现有的NLP任务上,并且依赖于人工注释的指令,这限制了朝更具泛化能力的模型发展的进程(例如,参见Wang et al., 2022中的图5a)。我们的工作旨在超越经典的NLP任务,并应对使用预训练LMs创建多样化指令数据的挑战。InstructGPT(Ouyang et al., 2022)与我们有着相似的目标,即构建更通用的LMs,并已在遵循多样化用户指令方面展示了卓越的性能。然而,作为商业系统,他们的构建过程仍然相当不透明。特别是,由于透明度有限和他们研究中使用的私人用户数据,数据的作用一直没有被充分研究。解决这类挑战需要创建一个大规模的、公开的、覆盖广泛任务范围的数据集。

语言模型用于数据生成和增强。许多研究提出使用语言模型(LMs)进行数据生成(如Schick and Schütze, 2021; Wang et al., 2021; Liu et al., 2022; Meng et al., 2023)或数据增强(如Feng et al., 2021; Yang et al., 2020; Mekala et al., 2022)。我们的工作与这些研究不同,因为它不是针对特定任务的(比如问答QA或自然语言推理NLI)。相反,SELF-INSTRUCT的一个独特动机是自举新的任务定义,这些任务可能之前没有被NLP从业者定义(尽管对真实用户来说可能仍然很重要)。与我们的工作并行,Honovich et al. (2022a) 也提出使用GPT-3模型生成大规模的指令数据(所谓的非自然指令Unnatural Instructions)。主要区别在于:1) 他们使用SUPERNI(Wang et al., 2022)中的任务作为种子任务,导致生成任务的分布不同;2) 他们使用InstructGPT002来生成数据,在这个意义上,他们是从已经进行了指令调整的模型中提炼知识,而我们仅仅依赖于原始的语言模型;3) 详细的生成流程和模板不同。尽管如此,我们相信两种扩展指令数据的努力是互补的,社区将从这些多样化的数据集中受益。

指令生成。最近的一系列研究(Zhou et al., 2022b; Ye et al., 2022; Singh et al., 2022; Honovich et al., 2022b)在给定少量示例的情况下生成任务指令。尽管SELF-INSTRUCT也涉及到指令生成,但我们的一个主要区别是它是任务不可知的;我们从零开始生成新任务(指令以及相应的实例)。

[这里的“任务不可知”(task-agnostic)是指SELF-INSTRUCT方法在生成新任务和指令时,不是针对特定领域或特定类型的任务进行优化或设计的。虽然在生成过程开始时,确实使用了一小部分种子任务(比如8个任务)作为启发,以引导模型学习如何生成指令,但这些种子任务仅仅是为了让模型开始生成过程,它们并不限定了模型之后生成任务的范围或类型。

换句话说,“任务不可知”的意思是,一旦模型通过种子任务获得了如何生成指令的基本理解,它就能自主地生成全新的、多样化的任务指令和相应的实例,这些新生成的任务可能与种子任务大相径庭,涵盖了更宽泛的领域和任务类型。这种方法的目标是创造出一系列广泛的、多样化的任务指令和实例,而不仅仅是复制或稍作修改种子任务的变体。]

模型自训练。典型的自训练框架(He et al., 2019; Xie et al., 2020; Du et al., 2021; Amini et al., 2022; Huang et al., 2022)使用训练过的模型给未标记的数据分配标签,然后利用新标记的数据来提高模型的性能。在类似的领域中,Zhou et al. (2022a) 使用多个提示来指定单一任务,并提出通过提示一致性来规范化,鼓励模型对于不同提示有一致的预测。这允许使用额外的未标记训练数据进行模型微调,或者在推理时直接应用。虽然SELF-INSTRUCT与自训练文献有相似之处,但大多数自训练方法假设有特定的目标任务以及在此任务下的未标记示例;与之相反,SELF-INSTRUCT从零开始生成多种任务。

知识蒸馏。知识蒸馏(Hinton et al., 2015; Sanh et al., 2019; West et al., 2021; Magister et al., 2022)通常涉及将知识从较大的模型转移到较小的模型。然而,SELF-INSTRUCT也可以被视为一种“知识蒸馏”的形式,但它与传统的知识蒸馏在以下几个方面不同:(1)蒸馏的源和目标是相同的,即模型的知识被蒸馏给它自己;(2)蒸馏的内容是指令任务的形式(即定义任务的指令,以及实例化该任务的一组示例)。

[蒸馏的源和目标是相同的:在SELF-INSTRUCT中,不是两个不同的模型(一个大型教师模型和一个小型学生模型)之间的知识传递,而是模型自己生成的数据再被自己用于学习。也就是说,模型首先生成一些新的任务指令和对应的实例,然后使用这些自生成的数据来对自己进行进一步的训练或微调。这个过程可以被看作是模型将自己之前的“知识”(通过生成任务和实例表现出来)进一步内化和优化。

蒸馏的内容是指令任务的形式:与传统知识蒸馏主要关注模型输出的精确匹配不同,SELF-INSTRUCT的蒸馏内容是以指令任务的形式存在的,包括定义了特定任务的指令以及实例化这些任务的示例。这意味着模型不仅需要学习如何预测或生成特定的输出,而且还需要理解这些输出是如何与给定的任务指令相关联的。]

利用有限资源的自助法。最近一系列的工作使用语言模型通过专门的方法自助推断。NPPrompt(Zhao et al., 2022)提供了一种方法,可以在没有任何微调的情况下为语义标签生成预测。它使用模型自身的嵌入来自动找到与数据样本的标签相关的词,从而减少了从模型预测到标签(verbalizers)的手动映射依赖。STAR(Zelikman et al., 2022)迭代地利用少量的理由示例和大量没有理由的数据集,来自助模型执行推理的能力。自我纠正(Self-Correction, Welleck et al., 2023)将一个不完美的基础生成器(模型)与一个单独的校正器分开,后者学习迭代地纠正不完美的生成,并证明了其相对于基础生成器的改进。我们的工作则专注于在指令范式中自助新任务。

多模态指令遵循。指令遵循模型也在多模态学习文献中引起了兴趣(Fried et al., 2018; Shridhar et al., 2020; Min et al., 2022; Weir et al., 2022)。SELF-INSTRUCT作为扩展数据的一般方法,也可能在这些设置中有所帮助,我们将这部分工作留待未来研究。

6 Conclusion

我们引入了SELF-INSTRUCT,一种通过利用语言模型自己生成的指令数据来提升其遵循指令能力的方法。

在对原版GPT3进行实验时,我们自动构建了一个大规模的包含52K条指令的数据集,用于多样化的任务,而在这些数据上微调GPT3可以使其在SUPERNI上相比原版GPT3有33%的绝对改进。

此外,我们策划了一套专家编写的用于新任务的指令。对这套指令进行人类评估显示,使用SELF-INSTRUCT微调GPT3的表现比使用现有的公共指令数据集有大幅度提升,并且与InstructGPT001的表现接近。我们希望SELF-INSTRUCT能成为使预训练的语言模型遵循人类指令的第一步,未来的工作可以在这些数据的基础上构建,以改进遵循指令的模型。

[这里提到的两个数据集是不同的。首先,SELF-INSTRUCT通过自动化的方法,从语言模型自身的生成中构建了一个大规模的52K条指令的数据集,这个数据集用于多样化的任务。这意味着通过让GPT3等模型自己“想象”或生成可能的任务指令,再利用这些自动生成的指令数据来进一步微调模型,从而提高其理解和执行新指令的能力。

然后,为了进一步验证这种方法的有效性,研究者们另外策划了一套由专家编写的指令,这套指令是为了测试模型在一些全新、特定任务上的表现。这些专家编写的指令是用来进行人类评估的,以比较SELF-INSTRUCT微调后的GPT3模型与其他方法(如仅使用现有公开指令数据集进行微调的模型)的性能。

简而言之,52K条自动生成的指令数据集主要用于模型的微调和提升其遵循指令的能力,而专家编写的指令集则用于评估和验证这种微调方法的效果。这两者共同工作,展示了使用自动生成的指令数据进行微调可以显著提升语言模型的指令遵循能力。]

Broader Impact 更宽泛的影响

除了本文的直接重点外,我们相信SELF-INSTRUCT可能有助于增加像InstructGPT或ChatGPT这样广泛使用的指令调整模型“幕后”发生什么的透明度。不幸的是,这些工业模型由于其数据集未被发布,仍然隐藏在API背后,因此外界对它们的构建过程以及它们为什么能展示出令人印象深刻的能力了解甚少。现在的任务落在了学术界,需要更好地理解这些模型成功的源泉,并努力打造更好、更开放的模型。我们认为本文的发现突显了多样化指令数据的重要性,我们的大型合成数据集可以作为构建更好的指令遵循模型的高质量数据的第一步。在撰写本文时,本文的中心思想已在几项后续工作中被采纳,以支持此类努力(Taori et al., 2023; Xu et al., 2023; Sun et al., 2023等)。

[中文解释

SELF-INSTRUCT项目不仅着眼于提升语言模型遵循指令的能力,还试图为如何构建这类模型提供更多的透明度。在当前的情况下,许多强大的指令遵循模型,如InstructGPT和ChatGPT,它们由商业公司开发并以API服务的形式提供,外界对它们是如何构建的,以及它们的数据来源和训练过程知之甚少。这种不透明性限制了外界对这些模型性能背后原因的理解。

SELF-INSTRUCT通过从零开始生成多样化的任务和指令,以及相应的实例数据,展示了一种更开放和可复现的构建指令遵循模型的方法。这种方法的采用,不仅有助于学术界深入理解这类模型成功的关键因素,也为未来构建更高质量、更透明且性能更强的模型奠定了基础。通过发布大型合成数据集,SELF-INSTRUCT鼓励更多的研究和探索,以期望通过更多元化的指令数据进一步提升模型的泛化能力和应用范围。]

8 Limitations 限制

在这里,我们讨论了这项工作的一些限制,以激励未来在这个方向上的研究。

尾部现象。SELF-INSTRUCT依赖于语言模型(LMs),因此会继承语言模型所带来的所有限制。正如近期研究所示(Razeghi et al., 2022; Kandpal et al., 2022),尾部现象对语言模型的成功构成了严峻挑战。换句话说,语言模型最大的增益对应于语言的频繁使用场景(语言使用分布的头部),而在低频上下文中可能只有最小的增益。同样,在本工作的背景下,如果SELF-INSTRUCT的主要增益倾向于在预训练语料库中更频繁出现的任务或指令,也就不足为奇了。因此,这种方法可能对不常见和创造性的指令表现出脆弱性。

[SELF-INSTRUCT和其他基于大型语言模型的方法,在扩展模型的指令遵循能力时,可能会更多地增强模型在常见任务或指令上的表现(即“头部”任务),而对于那些不常见或更具创造性的任务(“尾部”任务),则可能不会取得同样显著的进步。这种偏向常见任务的现象,就是所谓的尾部现象带来的挑战。]

依赖大型模型。由于SELF-INSTRUCT依赖于从语言模型中提取的归纳偏差,它可能最适合更大的模型。如果这是真的,这可能为那些没有大量计算资源的人设置了障碍。我们希望未来的研究将仔细研究模型大小或各种其他参数的增益函数。值得注意的是,人工注释的指令调整也有类似的限制:对于更大的模型,指令调整的增益更高(Wei et al., 2022)。

[归纳偏差(Inductive Bias)在机器学习和人工智能领域,指的是一个学习算法在学习过程中对某种假设的偏好。这种偏好决定了模型在面对未见数据时的推广(泛化)能力,也就是模型如何利用学习到的信息去解决新的、未见过的任务。归纳偏差是学习算法的固有特性,对于让算法能够从有限的训练数据中学习规律并做出准确预测非常重要。

在自然语言处理(NLP)的上下文中,当我们说一个模型或方法“依赖于从语言模型中提取的归纳偏差”时,意味着该模型或方法在设计上倾向于利用语言模型已经学习到的、内在的假设或规律。这些假设可能包括语言的语法规则、单词的共现模式、句子的结构特征等,它们是语言模型在大规模文本数据训练过程中自然形成的。

对于SELF-INSTRUCT来说,这意味着它利用了语言模型(如GPT-3)内部的归纳偏差来生成新的任务指令和实例。这里的“归纳偏差”体现在语言模型对特定类型的语言用法、结构和内容的内在理解上。因此,SELF-INSTRUCT生成的任务和指令的质量和多样性,在很大程度上依赖于底层语言模型所具有的归纳偏差。

这种依赖关系可能意味着,对于较大的模型,由于它们在更广泛、更复杂的数据上进行了训练,因此具有更丰富的归纳偏差,可能更适合用于SELF-INSTRUCT方法。较大模型可能能够更好地捕捉到语言的细微差别和复杂结构,从而在生成新任务和指令时能提供更准确和多样化的输出。然而,这也意味着对计算资源的需求更高,可能会限制那些没有足够计算能力的研究者或实践者使用这种方法。]

强化语言模型偏见。对于作者来说,一个关注点是这个迭代算法可能带来的意外后果,例如问题性社会偏见(关于性别、种族等的刻板印象或侮辱)的放大。相关地,这个过程中观察到的一个挑战是算法在产生平衡标签方面的困难,这反映了模型之前的偏见。我们希望未来的工作将带来对这种方法优缺点更好的理解

  • 31
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GPT (Generative Pre-trained Transformer)是由OpenAI公司开发的一系列自然语言处理模型。它采用多层Transformer结构来预测下一个单词的概率分布,通过在大型文本语料库中学习到的语言模式来生成自然语言文本。GPT系列模型包括多个版本,如GPT-2和GPT-3等。\[2\]这些模型在不同任务中展现了出色的性能,包括零样本学习和少样本学习等。GPT使用Transformer的Decoder结构,并对其进行了一些改动,保留了Mask Multi-Head Attention。\[3\]通过这些改进,GPT模型在自然语言处理领域取得了显著的成果。 #### 引用[.reference_title] - *1* [深入理解深度学习——GPT(Generative Pre-Trained Transformer):基础知识](https://blog.csdn.net/hy592070616/article/details/131341012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【LLM系列之GPT】GPT(Generative Pre-trained Transformer)生成式预训练模型](https://blog.csdn.net/yanqianglifei/article/details/130756814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值