MetaAI最近发布的Humpback,论文链接:https://arxiv.org/abs/2308.06259
解决什么问题?
大量高质量的指令微调数据集的生成。
思路
在这项工作中,我们通过开发迭代自训练算法来利用大量未标记的数据来创建高质量的指令调优数据集。该方法使用模型本身来增强和管理高质量的训练样例,以提高其自身的性能。我们的方法名为指令反翻译(instruction backtranslation),其灵感来自机器翻译的经典反翻译方法,即用模型生成的另一种语言的源句子自动注释人类编写的目标句子。
就是最初我们有大语言模型
M
0
M_0
M0、无标注的数据和人工生成的少量初始问答对(seed data),用seed data对
M
0
M_0
M0进行微调,微调后的
M
0
M_0
M0 predict出一些能在seed data中找到合适答案的问题(QA对),通过prompt让
M
0
M_0
M0自己筛选出其中较高质量的QA对,并入seed data中,迭代。
最终是可以得到一个能产生高质量问答数据的大模型
M
k
M_k
Mk,从而可以得到一系列高质量问答对。
每个迭代的大模型会执行两个步骤:
-
自增强(self-augment):为未标记数据(即web语料库)生成指令,以生成(指令,输出)对的候选训练数据,用于指令调优。
-
自我管理 (self-curate):自我选择高质量的演示示例作为训练数据,以微调基本模型。这种方法是迭代完成的…
过程
- 初始数据生成:从一组人工注释的(指令,输出)示例开始,这些示例将用于微调语言模型,以在两个方向上给出初始预测:预测给定指令的输出,以及给定输出的指令。
- 无标签数据收集,同时清洗(重复消除,长度过滤,启发式方法删除潜在低质量):使用web语料库作为未标记数据的来源
- 微调以得到能生成高质量问题的模型
- 让模型对自己生成的问题进行评分
- 掐尖,加入seed data中(通过后缀进行区分),迭代