论文笔记:Self

导语
本文介绍了如何使用LLM来大规模自动生成 。实验结果表明,这种数据增强方式非常有效,接下来就让我们看看具体是怎么做的吧 。
1 简介
近期NLP文献中有大量研究构建可以遵循自然语言指令的模型,这得益于大型预训练语言模型和人工编写的指令数据 。但是,由于人工编写指令的昂贵和有限性,需要开发替代方法来监督模型的指令调整 。
本研究提出了一种半自动的self-过程,用于使用来自模型本身的指示信号对预训练的LM进行指令调整 。整个过程是一个迭代的自引导( )算法(见图1),它从一个有限的人工编写的指令种子集开始,用于指导整个生成 。在第一个阶段,提示模型为新任务生成指令 。此步骤利用现有的指令集合来创建更广泛的指令,这些指令定义(通常是新的)任务 。对于新生成的指令集,框架还为它们创建输入-输出实例,这些实例可在以后用于监督指令调优 。最后,在将低质量和重复的指令添加到任务池之前,使用各种措施来修剪它们 。这个过程可以在许多交互中重复,直到达到大量的任务 。
通过在GPT3上运行该方法并微调,验证了其有效性 。研究还发布了一个包含52K指令的数据集和一组手动编写的新任务,用于构建和评估未来的指令遵循模型 。本文贡献如下:
【论文笔记:Self】,一种用最少的人工标记数据诱导指令跟随能力的方法;通过大量的指令调优实验证明了其有效性;发布了一个包含52K指令的大型合成数据集和一组手动编写的新任务,用于构建和评估未来的指令遵循模型 。2 相关工作

3 方法
大规模指令数据注释对人类来说是一项挑战,因为它需要1)提出新颖任务的创造力和2)为每个任务编写标记实例的专业知识 。本节将详细介绍Self-的过程,它指的是使用普通的预训练语言模型本身生成任务的,然后使用生成的数据进行指令调优,以便使语言模型更好地遵循指令 。这个如图1所示 。
3.1 指令数据的定义
指令数据包含一组指令{??}{It?},每条指令用自然语言定义一个任务t 。每个任务有一个或多个输入输出实例(??,??)(Xt?,Yt?) 。给定任务指令??It?和实例输入x,期望模型M产生输出
?:?(??,?)=?,???(?,?)∈(??,??)y:M(It?,x)=y,for(x,y)∈(xt?,yt?)
注意,指令和实例输入在许多情况下没有严格的边界 。例如,“写一篇关于学校安全的文章”可以是期望模型直接响应的有效指令,而它也可以被表述为“写一篇关于以下主题的文章”作为指令,“学校安全”作为实例输入 。为了鼓励数据格式的多样性,允许不需要额外输入的指令(即,x为空) 。
3.2 自动指令数据生成
我们生成指令数据的管道包括四个步骤:
指令生成,识别指令是否代表分类任务,使用输入优先或输出优先的方法生成实例,以及过滤低质量数据 。
指令生成 。Self-是基于一个发现,即当在上下文中呈现一些现有指令时,大型预训练语言模型可以被提示生成新的和新颖的指令 。本文用人类编写的175个任务(每个任务一个指令和一个实例)启动任务池 。对于每一步,从这个池中抽取8个任务指令作为上下文示例 。在8条指令中,6条来自人工编写,2条来自之前步骤中模型生成的任务,以促进多样性 。提示模板如表6所示 。
分类任务识别 。因为需要两种不同的方法来处理分类和非分类任务,所以接下来要确定生成的指令是否代表分类任务 。使用来自种子任务的12个分类指令和19个非分类指令提示 GPT3 few-shot来确定这一点 。提示模板如表7所示 。
实例生成 。给定指令及其任务类型,需要为每个指令独立生成实例 。这是具有挑战性的,因为它要求模型根据指令理解目标任务是什么,找出需要哪些额外的输入字段并生成它们,最后通过生成输出来完成任务 。有两种方式的生成: