一、引言
$\quad$随着大规模语言模型(LLM)的能力范围越来越广,其中有两个关键的组成部分: 大型预训练语言模型(LM) 和人类书写的指令数据。然而,①现有指令微调严重依赖于人编写的指令数据,这些数据在规模、多样性和创造性等方面都受限,阻碍了调优模型的通用性;②涉及到的人工标注需求量快速增长,标注成本也不断提高。因此,一些研究人员尝试提出一种能够让模型自己引导自己生成过程的方法,以解决人工成本对模型能力增强的瓶颈。
$\quad$近期,华盛顿大学等机构联合发表一篇论文SELF-INSTRUCT,提出的新框架SELF-INSTRUCT通过引导模型自己的生成过程,提高了预训练语言模型的指令遵循能力。SELF-INSTRUCT是使用预训练语言模型自身的指令信号进行指令调整的半自动化过程。具体而言,通过让模型自己生成指令信号来指导模型对指令进行微调,从而提高其性能和效果。是一种迭代的自助重采样算法。
1.1 背景知识
$\quad$ $\quad$ Bootstrap:一种统计学方法,可以通过从样本数据集中随机抽样的方式来生成大量新的数据集,然后利用这些数据集进行统计分析。具体而言,Bootstrap通过对原始数据进行自助重采样来生成新的数据集,然后利用这些新数据集进行参数估计、假设检验等统计分析,从而能够更好地评估统计指标的置信区间、偏差等性质。
1.2 基本步骤
$\quad$ $\quad$ 首先整体说明一下该方法的流程,大致有如下几个步骤:
- 1.人工设计了175个表示不同任务的指令,并且给每条数据都编写了(指令, 输入, 输出)/(指令, 输出),将这175条数据作为种子池。
- 2.使用模型生成新的指令;
- 3.对该模型生成的指令判断是否分类任务;
- 4.使用模型生成实例;
- 5.对上述模型生成的数据进行过滤和后处理;
- 6.将经过过滤和后处理的数据添加到种子池中;
- 7.一直重复上述2到6步直到种子池有足够多的数据;
1.3 本文贡献
- 本文提出了一种Self-Instruct框架,该框架可以使用最少的人工标注,生成大量的用于Instruct-tuning的数据;
- 本文中通过多个实验验证了上述方法的有效性;
- 本文发布了52K的使用上述方法获取的用于Instruct-tuning的数据集,以及一份人工手动编写的新任务的数据集;
二、相关工作
- 基于指令遵循的语言模型
$\quad$ 基于指令遵循的语言模型(Instruction-following language models)工作研究发现,如果使用带注释的“Instruction”数据(包含语言教学命令及其基于人类判断的预期结果的数据集)进行调优,基于指令遵循的语言模型可以有效地遵循一般语言指令。
$\quad$ 然而“Instruction”数据的大小和多样性直接影响模型对未见任务的泛化性能,导致基于指令遵循的语言模型依赖于人工注释的“Instruction”数据,这就为更一般化的模型的进展带来了瓶颈(报告来自Wang et al., 2022)。本文工作旨在通过减少对人工标注的依赖来解决这一瓶颈。
- 用于数据生成和增强的语言模型
$\quad$ 用于数据生成和增强的语言模型(Language models for data generation and augmentation),许多工作都依赖于生成式LMs来生成数据或增强数据,更多是通过特定提示针对特定的任务进行数据增强。
$\quad$ 相比之下,Self-instruction的一个明显动机是引导新的任务定义,这些任务可能是任何NLP从业者以前都没有定义过的(尽管对下游用户可能仍很重要)。
- 自训练
$\quad$自训练(self-training)。一个典型的自训练框架He et al., 2019,通过使用已训练的模型为未标记的数据进行标注,然后利用新标注的伪数据优化模型。在类似的思路中,Zhou et al. 2022a使用多个提示来指定单个任务,并建议通过提示一致性进行正则化,鼓励对提示进行一致的预测。这允许使用额外的未标记训练数据对模型进行微调,或在推理时直接应用。
$\quad$ 虽然SELF-INSTRUCT与Self-Training相关工作有一些相似之处,但大多数Self-Training方法都假设了一个特定的目标任务以及它下面未标记的例子;与此形成鲜明对比的是SELF-INSTRUCT可以从零开始完成各种任务。
- 知识蒸馏
$\quad$ 知识蒸馏(Knowledge distillation)。知识蒸馏通常涉及从较大模型到较小模型的知识转移。SELF-INSTRUCT也可以被认为一种“知识蒸馏”的形式。
$\quad$ 然而,与此不同的是①蒸馏的来源和目标是相同的,即模型的知识被蒸馏到自身;②蒸馏的内容以指令任务的形式出现(即,定义任务的指令和实例化任务的一组示例)。
- 用有限资源进行自助重采样
$\quad$用有限资源进行自助重采样(Bootstrapping with limited resources)。最近的一系列工作使用语言模型使用专门的方法引导一些推断。NPPrompt提供了一种无需任何微调就可以生成语义标签预测的方法。它使用模型自己的嵌入来自动查找与数据样本标签相关的单词,从而减少了对从模型预测到标签(语言分析器)的手动映射的依赖。STAR迭代利用少量基本原理示例和没有基本原理的大型数据集,引导模型执行推理的能力。Self-Correction将一个不完整的基本生成器(模型)与一个独立的校正器解耦,该校正器学习迭代地纠正不完美的基本生成器,并扮演了对基本生成器的改进。相反,SELF-INSTRUCT侧重于引导指令范例中的新任务。
- 指令生成
$\quad$指令生成(Instruction generation),最近有不少指令生成相关工作,例如Large Language Models Are Human-Level Prompt Engineers;Guess the Instruction!Flipped Learning Makes Language Models Stronger Zero-Shot Learners;Explaining Patterns in Data with Language Models via Interpretable Autoprompting;Instruction Induction: From Few Examples to Natural Language Task Descriptions。虽然SELFINSTRUCT也涉及指令生成,但在我们的案例中主要的区别是它是任务不可知的;我们从头开始生成新的任务(指令和实例)。
三、Self-Instruct方法
3.1 指令数据集的定义
$\quad$ 一个任务$t$对应一个指令$I_t$,每个任务有一个或多个输入-输出实例$(X_t,Y_t)$。在给定任务指令$I_t$和实例输入$x$的情况下,模型$M$期望产生输出$y$。即$M(I_t,x)=y$。一般的,指令数据集中的一条数据包含(指令, 输入, 输出)这三部分,例如如下所示:
指令:写一篇关于以下主题的文章
输入:校园安全
输出:校园安全是学校必须高度重视的问题,涉及到师生的生命财产安全。建立安全意识,制定严格的规章制度,加强安全巡查和应急预案,是确保校园安全的关键。
$\quad$ 不过很多时候对于上述三部分中的”指令”和”输入”划分的不是那么清晰,比如下面这条数据基本可以认为和上述例子是相同的:
指令:写一篇以校园安全为主题的文章
输出:校园安全是学校必须高度重视的问题,涉及到师生的生命财产安全。建立安全意识,制定严格的规章制度,加强安全巡查和应急预案,是确保校园安全的关键。
$\quad$ 所以在本文的后续部分,指令数据集中的一条数据可能包含三部分(指令, 输入, 输出),也可能只有两部分(指令, 输出)。例如如下所示:
指令:将下述中文翻译为英文
输入:中国的首都是北京。
输出:China's capital city is Beijing.
3.2 自动生成指令数据
$\quad$ 生成指令数据的由四个步骤构成:①指令生成;②识别指令是否代表分类任务;③使用输入优先或输出优先方法生成实例;④过滤低质量数据
- 指令生成程序
$\quad$ Self-instruction基于这样一个发现:当上下文中出现一些现有指令时,预训练语言模型可以被提示生成新的指令。这为我们提供了一种从一小组人类编写的种子指令增长指令数据的方法。本文建议以自举方式生成一组不同的指令。通过作者编写的175个任务(每个任务有一条指令和一个实例)启动任务池。
$\quad$生成指令时,先从种子池中随机抽取6个人工编写的指令,再随机抽取2个之前步骤中模型生成的指令,总共8个指令。以如下表6的模版格式组织之后,输入给模型,让模型输出一个新的指令。生成指令时使用的prompt模版如下所示:
Come up with a series of tasks:
Task 1: {instruction for existing task 1}
Task 2: {instruction for existing task 2}
Task 3: {instruction for existing task 3}
Task 4: {instruction for existing task 4}
Task 5: {instruction for existing task 5}
Task 6: {instruction for existing task 6}
Task 7: {instruction for existing task 7}
Task 8: {instruction for existing task 8}
Task 9:
- 分类任务识别
$\quad$ 这里之所以需要判断指令是否属于分类任务,主要是因为在给该指令生成实例时,分类任务与非分类任务使用的prompt模版是不同的。
$\quad$ 判断指令是否属于分类任务的操作如下:在种子池中随机挑选12条分类指令和19条非分类指令,然后加上新生成的指令,以下表7的模版格式组织之后,输入给模型,让模型输出新生成的指令是否分类任务。判断指令是否分类任务的prompt模版如下所示:
Can the following task be regarded as a classification task with finite output labels?
Task: Given my personality and the job, tell me if I would be suitable.
Is it classification? Yes
Task: Give me an example of a time when you had to use your sense of humor.
Is it classification? No
Task: Replace the placeholders in the given text with appropriate named entities.
Is it classification? No
Task: Fact checking - tell me if the statement is true, false, or unknown, based on your
knowledge and common sense.
Is it classification? Yes
Task: Return the SSN number for the person.
Is it classification? No
Task: Detect if the Reddit thread contains hate speech.
Is it classification? Yes
Task: Analyze the sentences below to identify biases.
Is it classification? No
Task: Select the longest sentence in terms of the number of words in the paragraph, output
the sentence index.
Is it classification? Yes
Task: Find out the toxic word or phrase in the sentence.
Is it classification? No
Task: Rank these countries by their population.
Is it classification? No
Task: You are provided with a news article, and you need to identify all the categories that
this article belongs to. Possible categories include: Music, Sports, Politics, Tech, Finance,
Basketball, Soccer, Tennis, Entertainment, Digital Game, World News. Output its categories one
by one, seperated by comma.
Is it classification? Yes
Task: Given the name of an exercise, explain how to do it.
Is it classification? No
Task: Select the oldest person from the list.
Is it classification? Yes
Task: Find the four smallest perfect numbers.
Is it classification? No
Task: Does the information in the document supports the claim? You can answer "Support" or
"Unsupport".
Is it classification? Yes
Task: Create a detailed budget for the given hypothetical trip.
Is it classification? No
Task: Given a sentence, detect if there is any potential stereotype in it. If so, you should
explain the stereotype. Else, output no.
Is it classification? No
⋯
Task: To make the pairs have the same analogy, write the fourth word.
Is it classification? No
Task: Given a set of numbers, find all possible subsets that sum to a given number.
Is it classification? No
Task: {instruction for the target task}
- 示例生成
$\quad$ 在给定了指令之后,生成实例的过程对LLM 模型的效果要求是比较高的,所以最好选取效果比较好的LLM。然后在给定指令之后,生成(输入, 输出)这个实例对时还有两种策略。一种是先生成输入,后生成输出,即输入优先策略;另一种是先生成输出,后生成输入,即输出优先策略。之所以会有输出优先的方式,是因为输入优先的方式在生成输入时,偏向于只生成一个标签,尤其是指令对应着分类任务时,其输入里面偏向于只生成一个类别。输出优先就是为了一定程度上缓解该问题。
- 输入优先
$\quad$ 前面已经说过一条数据的样式可能是(指令, 输入, 输出),也可能是(指令, 输出)。另外,指令数据集的丰富度我们是希望越丰富越好,所以还允许出现一个指令,多个输入的数据,举例如下。在这个例子中,Task 对应的就是指令,然后这个指令有2对(输入, 输出)。
$\quad$ 然后具体生成实例的操作步骤为:在种子池中随机抽取 k 条数据,以如下的prompt模版的形式组合之后,输入给模型,让模型为最后的指令生成相应的实例,输入优先生成实例的prompt模版如下所示:
Come up with examples for the following tasks. Try to generate multiple examples when possible.
If the task doesn’t require additional input, you can generate the output directly.
Task: Which exercises are best for reducing belly fat at home?
Output:
- Lying Leg Raises
- Leg In And Out
- Plank
- Side Plank
- Sit-ups
Task: Extract all the country names in the paragraph, list them separated by commas.
Example 1
Paragraph: Dr. No is the sixth novel by the English author Ian Fleming to feature his British
Secret Service agent James Bond. Written at Fleming’s Goldeneye estate in Jamaica, it was
first published in the United Kingdom by Jonathan Cape in 1958. In the novel Bond looks into
the disappearance in Jamaica of two fellow MI6 operatives who had been investigating Doctor
No. Bond travels to No’s Caribbean island and meets Honeychile Rider, who is there to collect
shells. They are captured and taken to a luxurious facility carved into a mountain. The
character of Doctor No, the son of a German missionary and a Chinese woman, was influenced by
Sax Rohmer’s Fu Manchu stories. Dr. No was the first of Fleming’s novels to face widespread
negative reviews in Britain, but it was received more favourably in the United States.
Output: English, British, Jamaica, the United Kingdom, German, Chinese, Britain, the United
States.
Task: Converting 85 F to Celsius.
Output: 85°F = 29.44°C
Task: Sort the given list ascendingly.
Example 1
List: [10, 92, 2, 5, -4, 92, 5, 101]
Output: [-4, 2, 5, 5, 10, 92, 92, 101]
Example 2
Input 2 - List: [9.99, 10, -5, -1000, 5e6, 999]
Output: [-1000, -5, 9.99, 10, 999, 5e6]
Task: Suggest a better and more professional rephrasing of the following sentence.
Example 1
Sentence: This house is surprisingly not constructed very well, and you probably need more
money to fix it after you buy it. If you ask me, I would suggest you to consider other
candidates.
Output: This house does not seem to be constructed well, so you may need to spend more money
to fix it after you purchase it. I would suggest that you look at other properties.
Example 2
Sentence: Just so you know, we did an experiment last week and found really surprising results
- language model can improve itself!
Output: Our experiments last week demonstrated surprising results, proving that the language
model can improve itself.
⋯
Task: Turn down a job offer by sending an email to a recruiter explaining the reason.
Output: Hi [Recruiter],
Thank you so much for the generous offer to join your team. As we discussed, I’ve admired the
company for a number of years, and am a proud endorser of its products. However, after further
consideration of where I currently am in my career, I’ve decided to accept an offer at another
company.
I would love to stay in touch with you and have already started following you on [Social Media
Platform]. Again, thank you so much for your time and consideration.
Thanks again,
[Your Name]
Task: {Instruction for the target task}
- 输出优先
$\quad$ 对于分类任务,如果先生成文本,后生成标签,模型会偏向于生成比较单一的结果。所以对于分类任务,是先生成随机的标签,然后再生成该标签对应的文本。
$\quad$ 具体的步骤和输入优先基本相同:在种子池中随机抽取k条在之前的步骤中已经标记为分类的数据,以如下的prompt模版的形式组合之后,输入给模型,让模型为最后的指令生成相应的实例。如下表9所示。可以看出都是先生成分类标签,再生成待分类的文本。输出优先生成实例的prompt模版如下所示:
Given the classification task definition and the class labels, generate an input that
corresponds to each of the class labels. If the task doesn’t require input, just generate the
correct class label.
Task: Classify the sentiment of the sentence into positive, negative, or mixed.
Class label: mixed
Sentence: I enjoy the flavor of the restaurant but their service is too slow.
Class label: Positive
Sentence: I had a great day today. The weather was beautiful and I spent time with friends.
Class label: Negative
Sentence: I was really disappointed by the latest superhero movie. I would not recommend it.
Task: Given a dialogue, classify whether the user is satisfied with the service. You should
respond with "Satisfied" or "Unsatisfied".
Class label: Satisfied
Dialogue:
- Agent: Thank you for your feedback. We will work to improve our service in the future.
- Customer: I am happy with the service you provided. Thank you for your help.
Class label: Unsatisfied
Dialogue:
- Agent: Sorry that we will cancel your order. You will get a refund within 7 business days.
- Customer: oh that takes too long. I want you to take quicker action on this.
Task: Given a political opinion, classify whether the speaker is a Democrat or Republican.
Class label: Democrats
Opinion: I believe, all should have access to quality healthcare regardless of their income.
Class label: Republicans
Opinion: I believe that people should be able to keep more of their hard-earned money and
should not be taxed at high rates.
Task: Tell me if the following email is a promotion email or not.
Class label: Promotion
Email: Check out our amazing new sale! We’ve got discounts on all of your favorite products.
Class label: Not Promotion
Email: We hope you are doing well. Let us know if you need any help.
Task: Detect if the Reddit thread contains hate speech.
Class label: Hate Speech
Thread: All people of color are stupid and should not be allowed to vote.
Class label: Not Hate Speech
Thread: The best way to cook a steak on the grill.
Task: Does the document supports the claim? Answer with "Support" or "Unsupport".
Class label: Unsupport
Document: After a record-breaking run that saw mortgage rates plunge to all-time lows and
home prices soar to new highs, the U.S. housing market finally is slowing. While demand and
price gains are cooling, any correction is likely to be a modest one, housing economists and
analysts say. No one expects price drops on the scale of the declines experienced during the
Great Recession.
Claim: The US housing market is going to crash soon.
Class label: Support
Document: The U.S. housing market is showing signs of strain, with home sales and prices
slowing in many areas. Mortgage rates have risen sharply in recent months, and the number
of homes for sale is increasing. This could be the beginning of a larger downturn, with some
economists predicting a potential housing crash in the near future.
Claim: The US housing market is going to crash soon.
⋯
Task: Tell me the first number of the given list.
Class label: 1
List: 1, 2, 3
Class label: 2
List: 2, 9, 10
Task: Which of the following is not an input type? (a) number (b) date (c) phone number (d)
email address (e) all of these are valid inputs.
Class label: (e)
Task: {instruction for the target task}
- 过滤和后处理
$\quad$ 为了数据的多样性,新生成的指令只有与种子池中的指令的 ROUGE-L 小于0.7时才会添加进入种子池;排除一些无法被语言模型处理的指令,比如涉及图像、图片、图形的指令;在给指令生成实例时,会过滤掉输入相同但是输出不同的实例。
3.3 微调LM以遵循指令
$\quad$ 在创建大规模指令数据后,本文使用这些数据对原始语言模型(即self-Instruction)进行微调。为此,本文将指令和实例输入拼接起来作为提示符,并训练模型以标准的监督方式生成实例输出。为了使模型对不同格式具有健壮性,本文使用多个模板将指令和实例一起输入进行编码。例如,指令可以加前缀“Task:”或不加前缀,输入可以加前缀“input:”或不加前缀,提示符末尾可以加“Output:”,中间可以加不同数量的换行符等等。
四、来自GPT3的SELF-INSTRUCT数据集
本文调用LLM GPT3的“davinci”模型,其OpenAI API。
4.1 统计数据集
$\quad$如下表描述了生成数据的基本统计信息。总共生成了超过52K条指令,过滤后这些指令对应的实例超过82K个:
指令格式 | 统计数据 |
---|---|
# of instructions | 52,445 |
- # of classification instructions | 11,584 |
- # of non-classification instructions | 40,861 |
# of instances | 82,439 |
- # of instances with empty input | 35,878 |
ave. instruction length (in words) | 15.9 |
ave. non-empty input length (in words) | 12.7 |
ave. output length (in words) | 18.9 |
4.2 多样性
$\quad$ 为了研究生成的指令类型以及它们的多样性,本文识别生成指令中的动词-名词结构。具体使用Neural Parser工具进行分析,然后提取最接近解析树根的动词及其第一个直接名词对象。在52,445条指令中,有26,559条包含这种结构;其他指示通常包含更复杂的从句(例如,“分类这条推文是否包含政治内容。”)或被框定为问题(例如,“这些陈述中哪一个是真的?”)。在如下图中绘制了前20个最常见的词根动词及其前4个直接名词宾语,占整个组的14%。总而言之,本文在这些指令中看到了相当不同的意图和文本格式。
$\quad$ 本文进一步研究生成的指令与用于提示生成的种子指令有何不同。对于每条生成的指令,本文计算它与175条种子指令的最高ROUGE-L重叠。本文在如下图3中绘制了这些ROUGE-L分数的分布:表明有相当数量的新指令与种子没有太多重叠。
另外还在图4中演示了指令、实例输入和实例输出长度的多样性。
4.3 质量
$\quad$ 数据质量的评估方式:随机抽取200条指令,并给每个指令随机抽取一个实例,然后人工对该指令和实例进行标注评估。对生成数据的指令、输入和输出进行数据质量检查,评估结果。
Quality Review Question | Yes % |
---|---|
Does the instruction;describe a valid task? | 92% |
Is the input appropriate;for the instruction? | 79% |
Is the output a correct and acceptable;response to the instruction and input? | 58% |
All fields are valid | 54% |
- 生成的指令有含义,能表示一个任务的占比为92%;
- 给每个指令生成合适的输入的占比为79%;
- 生成的输出是指令和输入的正确结果的占比为58%;
- 指令、输入、输出,这三个字段全对的占比为54%;
$\quad$可以看出使用Self-Instruct生成的数据集还是有一些噪音的,即使可能包含错误,但大多数仍然是正确的格式,甚至部分正确,这可以为训练模型遵循指令提供有用的指导。如下分别展示生成有效指令和无效指令:
- 有效的指令:GPT3生成的代表性有效任务。这些生成的任务涵盖了广泛的格式、文本类型和基础专业知识,同时在所有生成的任务中有一半以上是正确的。
- 无效的指令:GPT3生成的代表性无效任务。有问题的字段显示在有效性列中。尽管这些任务包含错误,但它们仍然为监督模型遵循指令提供了许多有用的信号。
五、实验结果
5.1 $GPT3_{SELF-INST}$:使用Self-Instruct生成的数据集对GPT3进行微调
$\quad$ 使用Self-Instruct生成的数据集对基于175B 的GPT3模型(“davinci”)进行微调,本文使用默认的超参数,除了将提示损失权重设置为0之外,训练2个epoch,得到$GPT3_{SELF-INST}$模型。
5.2 基线模型
- 现成的语言模型
$\quad$ 原始的T5模型,参数量为11B;原始的GPT3模型,参数量为175B;以上两个基线只有预训练,没有额外的微调。这些基线将表明现成的lm在预训练后能够立即自然地遵循指令的程度。
- 公开可用的指令调优模型
$\quad$ T0是指在指令数据集PROMPTSOURCE上做了基于11B参数量的T5模型进行了微调之后得到的模型;$T_k$-INSTRUCT在指令数据集SUPERNI上做了基于11B参数量的T5模型进行了微调之后得到的模型;并且可以公开使用。
- 指令调优的GPT3模型
$\quad$ InstructGPT模型,具备zero-shot能力。选取text-davinci-001
模型进行对比,称其为$InstructGPT_{001}$。因为防止最最新模型导致泄露答案。本文调用构建SELF-INSTRUCT时调用了001, 002 和 003
$\quad$ 此外,为了将self-instruction与其他公开可用的指令调优数据进行比较,我们使用来自PROMPTSOURCE和SUPERNI的数据进一步微调GPT3模型。GPT3+T0 Train
: 基于175B的GPT3模型,在指令数据集PROMPTSOURCE上做了微调之后得到的模型;GPT3+SUPERNI Train
: 基于175B的GPT3模型,在指令数据集SUPERNI上做了微调之后得到的模型;$GPT3_{SELF-INST}$+SUPERNI Train
:基于175B的GPT3模型,采用本文的Self-Instruct方法获取指令数据集,在加上SUPERNI这个指令数据集,在合并这两份数据集之后的总的数据集上微调之后的模型。为了节省训练预算,本文为每个数据集采样了50K个实例(涵盖了所有的指令),其大小与本文生成的指令数据相当。根据Wang等人(2022)的发现和我们早期的实验,减少每个任务的实例数量并不会降低模型对未见任务的泛化性能。
5.3 实验一: 在测评数据SUPERNI上的Zero-Shot效果
$\quad$ 首先评估模型以Zero-Shot方式执行典型NLP任务的指令的能力。我们使用SUPERNI的评估集,它由119个任务组成,每个任务有100个实例。在这项工作中,我们主要关注Zero-Shot的设置,即只提示任务的定义,而没有上下文的演示示例。对于我们对GPT3变体的所有请求,我们使用确定性生成模式(temperature为0且无核采样),没有特定的停止序列。
- Self-Instruct能够给GPT3模型带来巨大的提升,大概33.1%;
- 经过Self-Instruct之后的GPT3的效果接近$InstructGPT_{001}$;
- 从下表的最后两行的对比来看,即使已经在同源的测评数据集 SUPERNI 上经过了微调之后(将其归因于相似的指令风格和格式),再使用 Self-Instruct 依然能够有提升(证明其作为补充数据的价值);
实验二: 在面向用户的新任务上的效果
$\quad$ 测评数据 SUPERNI 还是有点偏向于研究性质,为了更好的测试本文中提出的方法训练出的模型在给用户使用时的效果。本文设计了一份新的更贴近普通用户的数据集,在该数据集上测试Self-Instruct的效果。在设计这个数据集时考虑到的有:
- 不同的领域:邮件写作、社交媒体、生产力工具、娱乐、编程等;
- 形式上:可以是(指令, 输入, 输出),也可以是(指令, 输出);
- 指令有的长、有的短,输入/输出中包含项目符号、表格、代码、方程等;
$\quad$ 该数据集总共252条指令,每个指令一个实例。该数据集中的一些例子如下表所示:
- 人工评估方法
$\quad$ 有些数据无法自动评估,所以专门通过专业人员进行衡量数据,采用四级评级系统,用于分类模型输出的质量,定义如下:
$\quad$ 首先,$GPT3_{SELF-INST}$(即用SELF-INSTRUCT微调的GPT3模型)在很大程度上超过了那些在T0或SUPERNI上训练的对应模型,证明了尽管有噪音,但生成的数据还是有价值的。A:回答是有效和令人满意的 B:响应是可以接受的,但有一些小错误或缺陷可以改进 C:响应是相关的,并响应指令,但它在内容中有重大错误。 D:响应不相关或无效,包括重复输入,完全不相关的输出等。
$\quad$ 其次,与$InstructGPT_{001}$相比,$GPT3_{SELF-INST}$的表现相当接近–如果把有轻微缺陷的可接受的反应(RATING-3)算作有效,$GPT3_{SELF-INST}$只比$InstructGPT_{001}$低5%。
5.4 对比对象
- 原始的GPT3几乎无法响应用户的指令,所有微调过之后的模型都有明显的提升;
- 即使策略Self-Instruct生成的数据在第 4.3 节中分析是有噪音的,但是模型$GPT3_{SELF-INST}$的效果明显优于模型 GPT3+T0 Training 和模型 GPT3 + SuperNI Training
- 模型$GPT3_{SELF-INST}$的效果与模型$InstructGPT_{001}$的效果已经非常接近了;
- 最后,模型$InstructGPT_{002}$和$InstructGPT_{003}$效果的确很强。
六、瓶颈和讨论
6.1 为什么Self-Instruct有效
$\quad$ 高质量的人类反馈在最近指令微调LMs的成功中所起的作用,有两个假设
- H1:人类反馈是指令微调的一个必要方面,因为LM需要了解在预训练期间没有完全了解的问题。
- H2:人类反馈是指令调优的一个可选方面,因为LM已经非常熟悉他们预训练中的指令。观察人类反馈只是一个轻量级的过程,用于调整他们的预训练分布/目标,这可能会被不同的过程所取代。
$\quad$ 虽然实际情况可能介于这两个极端之间,但我们推测它更接近H2,特别是对于较大的模型。LMs已经知道很多关于语言指令的知识,这种直觉是Self-Instruct的一个关键动机,也是它的经验成功所支持的。
6.2 Self-Instruct的限制
- 尾部现象
$\quad$ Self-Instruct依赖于LM,它将继承LM的所有限制。最近的研究表明尾部现象对LM的成功构成了严重的挑战。换句话说,LM的最大收益对应于语言的频繁使用(语言使用分布的头部),而在低频上下文中收益最小。类似地,在这项工作的背景下,如果Self-Instruct的大部分收益偏向于在预训练语料库中更频繁出现的任务或指令,也就不足为奇了。因此,对于不常见的和创造性的指令,这种方法可能会表现出脆弱性。
- 依赖于大型模型
$\quad$由于Self-Instruct依赖于从LM中提取的归纳偏差,因此它可能最适合LLM。如果这是真的,那么对于那些没有大量计算资源的人来说,这可能会造成访问障碍。我们希望未来的研究将仔细研究增益作为模型大小或各种其他参数的函数。值得注意的是,使用人工注释的指令调优也受到类似的限制:对于更大的模型,指令调优的增益更高。
- 强化LM偏差
$\quad$ 作者关注的一点是这种迭代算法的意外后果,例如有问题的社会偏见的放大(关于性别、种族等的刻板印象或诋毁)。与此相关,在这个过程中观察到的一个挑战是算法难以产生平衡的标签,这反映了模型的先验偏见。我们希望未来的工作将讨论这些细节,以更好地了解这种方法的利弊。
七、结论
- 提出Self-Instruct,一种任务不可知的方法,通过它自己生成指令数据(指令、输入和输出样本)并使用它进行引导来提高LM的指令跟踪能力。
在生成样本的修剪子集上对原始模型进行指令调优; - 在vanilla GPT3的实验中,我们观察到在Super-NaturalInstruction的原始模型有33%的绝对改进。这种性能与InstructGPT001(用私人用户数据和昂贵的人工标注进行训练)相当。
- 策划了一套由专家撰写的针对新任务的说明。使用Self-Instruct调优GPT3的性能大大优于使用现有的公共指令数据集,与InstructGPT001的绝对差距仅为5%。
- 希望Self-Instruct可以作为调整PLM以遵循人类指令的第一步,未来的工作可以建立在这些数据的基础上,以改进指令遵循模型。