论文解读仅代表个人观点,才疏学浅,如有错误欢迎指正,未经授权禁止转载。

论文地址:http://arxiv.org/abs/2212.10560

1.动机

由于instruction tuning严重依赖指令数据,而人工编写的指令在数量、多样性和创造力方面受到了很大的限制(人工创造的指令和label往往是常见NLP任务,多样性很差)。因此本文

  • 提出了self instruct可以通过构建一批种子自动的构建instruct数据,在GPT3上达到了接近instructGPT的效果。
  • 证明了self instruct的有效性
  • 开放了52k的instruct以及82k的数据。

2.细节

结构如下图所示:

1.首先人工构造了175个任务种子加入Task Pool中。

eg:Is there anything I can eat for a breakfast that doesn’t include eggs, yet includes protein, and has roughly 700-1000 calories?

2.从Task Pool中抽取8个instruct组成的集合,输入到模型中,让它生成下一个instruct。

其中6个人工seed和2个模型生成的结构。

3.验证该instruct是否为分类任务。

之所以需要区分分类任务和生成任务,是因为模型对于分类任务,会更容易倾向于生成同一个标签的文本。因此让模型先输出label(output),在输出input。可以有效缓解这一问题。而对于其他的NLG任务,可以直接输出output。

4.筛选数据。

使用ROUGE筛选掉高重复的指令、同时筛选掉例如 图片、视频等无法被llm处理的指令。

5.将筛选后的数据放到Task Pool中,执行Step2。

3.数据分析

3.1 数据多样性

生成的指令中,常见的20个动词(内圈)以及它们后面跟的名词(外圈)。(占比14%,其余指令没办法简单建模成 动词+名词形式)。

同时还对ROUGE分数进行了分析,生成的instruct与175个种子中ROUGE分数最高的占比。即如果如下图。

同时也对输入输出的长度进行了分析。

可以发现生成数据具备多样性。

3.2 数据质量

由于很多生成需要有专业能力的人才知道生成的怎么样(比如代码等),因此作者抽取了200条指令和一个随机的实例由作者进行标注。

发现大部分的数据都符合要求。

4.结果分析

作者在T5、GPT3上 分别使用了PROMPTSOURCE[T0]、SUPERNI[Tk-INSTRUCT]进行了实验。(只取了50k个数据,但是包含了所有的instruct)

4.1 zero shot任务

在SUPERNI(一个包含119个任务,每个任务有100个sample的数据集)上进行评估:

4.2 新指令(任务)的泛化能力

由于SUPERNI更倾向于分类任务,因此人工构建了252条指令,并由人工进行打分,分为以下几个档位。

A:效果很满意,

B:response可以让人接受,但是有一点小缺陷。

C:input-output是相关的,但是内容错误。

D:完全不可用。

性能逼近instructGPT。

5.分析

论文中做出了两个极端的思考:

1.人工指令是不可或缺的,因为模型需要继续学习在预训练阶段没有学习到的能力。

2.人工之灵只是一个可选项。模型在预训练阶段已经具备了这个能力,只是需要某种方式的“激活”

论文中认为事实应该更偏向于2。

但是也有一些局限性。

1.语言模型本质上就只会生成头部response,低频上下文表现不好,因此self instruct更倾向于生成预训练预料中存在的任务。

2.对大预言模型的依赖。

3.跟随语言模型的偏见。

分类: 论文

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注