乐趣区

关于算法:SelfInstruct-论文解读利用大模型自己给自己生成指令数据指令数据自动生成

总览

大规模“指令调整”的语言模型,即 指令微调的 LLM,曾经体现出不凡的 零样本能力 ,尤其是推广 新工作上。然而,这些模型重大依赖于人类编写的指令数据,而这些数据通常在数量、多样性和创造力方面受到限制,因而妨碍了调整模型的通用性。

基于上述背景,作者提出了 Self-instruct 框架,一个 通过预训练语言模型本人疏导本人来进步的指令遵循能力的框架

大白话点讲,就是

  1. 大模型本人遵循一套流程来生成数据
  2. 再用这些生成的数据来指令微调训本人
  3. 从而进步模型本人的能力。

因而核心思想就是生成 指令遵循数据

数据生成

指令数据由指令、输出、输入组成。如下图,作者的数据生成 piple 蕴含四个步骤:1)生成工作指令,2)确定指令是否代表分类工作,3)应用输出优先或输入优先方法生成实例,4)过滤低质量的数据。

1 指令生成

首先生成丰盛的指令,初始化 175 个工作,每个工作 1 个指令和 1 个实例;

  1. 每一个迭代都选 8 个工作的指令作为该工作的提醒样本,其中 6 个是人写的,2 个是生成的。
  2. 而后组成输出送入模型进行输入疏导,直到达到 token 限度或者够 16 个工作

2 分类工作辨认

作者对于分类工作和非分类工作的后续解决是不同的 ,所以须要先区别是否为分类工作,这里同样应用 LLM 对生成的指令进行区别。如下图(只显示了局部),作者为列举 12 个分类指令和 19 个非分类指令作为 prompt 提醒, 以少样本学习提醒的形式让 LLM 判断是否工作为分类。

3 实例生成

针对每一工作类型,作者独立的生成实例,即整个指令数据。

指令微调个别三局部:指令、输出和输入,大模型须要对这 3 局部都进行生成。

这部分比拟难的是让 大模型了解模板工作是什么 ,并 依据指令 (下面曾经生成了), 失去输出 ,再进一步 补充出输入

作者发现大模型对 指令 - 输出 - 输入 提醒的上下文学习有成果,于是:

输出优先形式(Input-first Approach)

以下图为例,给大模型一堆例子,指令领导它进行参考生成:如果须要 input,就学生成 input,如果没有 input,就间接生成 output

输入优先形式(Output-first Approach)

下面这种输出优先的形式不适宜局部工作生成,尤其是分类工作 ,生成的输出会偏差于某个标签(label),比方是语法错误检测工作,他会生成 语法性的输出。于是作者提出 输入优先形式,将输入放在后面进行上下文学习

4 过滤和后处理

  1. 为了保障指令多样性,新指令中只有与已有指令 ROUGE- L 类似度(掂量自然语言类似度的指标)小于 0.7 的才会被保留;
  2. 蕴含特定关键词的指令也剔除(image, picture, graph 等 LM 原本也无奈解决的);
  3. 去除 输入输出 完全相同 的实例;或者 输出雷同输入不同 的实例;
  4. 还有一些启发式办法(比方指令太长 / 短,输入是输出的反复等等)进行剔除;
退出移动版