有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

AI 11个月前 admin
276 0 0

今天是8月20日,星期日,北京中午突降大雨。

对于指令收集的工作而言,人工标注方法很难扩展,因为收集各种任务的注释既昂贵又耗时,而且需要不同领域的专业知识,所以如何快速高效地生成一些微调数据,显得尤为重要。

实际上,在之前的文章当中,我们已经总结了多个关于使用LLM生成指令的工作,包括self-instructbaizeattrpromptwizartlmexpert-prompt等,图示如下,其核心思想大体可以分为提升输入指令的质量(包括复杂度和多样性)以及输出指令的质量(包括更为可信、更为可控)。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

例如,Self-instruct使用大模型进行自行泛化的方法生成指令以及这些指令的输出,为了提升质量,进一步执行人工设计的过滤规则,以去除低质量的指令-输出对,通过创建发送到ChatGPT的用户指令的变体来生成更复杂的指令。

但是这种方式都是先增强生成instruction,然后再得到答案,从而生成问答对。那么,能否反过来增强?

最近看到一个工作,《Self-Alignment with Instruction Backtranslation》地址:https://arxiv.org/abs/2308.06259,提出了命名为”指令反译”(instructionbacktranslation)的数据生成方法,其灵感来源于机器翻译中的经典反译方法,即用模型生成的另一种语言源句自动标注人写的目标句。

该工作针对人类编写的网络文本质量参差不齐,而且生成的指令中也存在噪音的问题,认为相同的种子模型可以通过预测新创建的增强数据的质量来对其进行自我校准,然后只对最高质量的(指令、输出)对进行自我训练。然后重复这一过程,使用改进后的模型更好地整理指令数据,并重新训练以生成更好的模型。

其大致思想在于:首先在少量种子数据和给定网络语料库的基础上对语言模型进行微调。种子模型通过生成网络文档的指令提示(自我增强)来构建训练示例,然后从这些候选示例中选择高质量的示例(自我固化),然后利用生成的数据对更强大的模型进行微调。

本文对该工作进行介绍,供大家一起参考并思考。

一、Instruction Backtranslation方法的基本原理

指令反向翻译方法假定可以访问一个基础语言模型、少量种子数据和一个无标签示例集合,例如网络语料库。

该方案从一个基础语言模型(如LLaMa)、少量(指令、输出)对的种子示例和未标记的文档集合开始,这些文档被视为未知指令的候选输出。

未标注数据是人工编写的大量不同文档,其中包括人类感兴趣的各种主题,但最重要的是没有与指令配对。

其有两个重要假设,一个是在这个人工构造文本集合中,有一些子集适合作为某些问题instruction来源,另一个是可以预测这些instruction的答案,并将其作为高质量的示例对来进行微调。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

因此,指令反向翻译的整个过程需要执行两个核心步骤三个阶段,如图所示:

1、初始化阶段

对于种子数据,采用人类标注的(指令、输出)示例的种子集合。

无标签数据使用网络语料库作为无标签数据的来源,对每篇文档进行预处理,以提取自含片段{yi},即HTML标题之后的文本部分,随后进行重复数据删除、长度过滤,并利用几种启发式方法(如标题中大写字母的比例)去除潜在的低质量片段。

2、自我增强(self-augmentation)阶段

为无标签数据(即网络语料库)生成指令,为指令调整生成(指令、输出)对的候选训练数据。

具体地,使用来自种子示例的(输出、指令)对作为指令预测模型Myx,对基础模型进行微调,用于从未标注的数据中生成输出的候选指令,即使用种子数据中的{(yi,xi)}(输出、指令)对对基础语言模型进行微调,以获得后向模型Myx:{(yi,xi)},在此基础上对于每个未标记的示例yi,在后向模型上运行推理生成一个候选指令xˆ,并从中导出候选i,得到增强配对数据A:={(xˆ,y)}


3、自我修正(self-curation)阶段

自我选择高质量的示例作为训练数据,以微调基础模型,使其遵循指令。这种方法以迭代的方式进行,在下一次迭代中,一个更好的微调模型可以改进用于微调的数据选择。

具体地,从M0开始,从上一步的k个候选指令中选择高质量的(指令、输出)对A(1),并从种子示例中对其进行微调,其中的核心在于如何使用语言模型本身来选择高质量示例。

其在具体实现上,首先建立一个种子指令模型M0,该模型只对(指令、输出)种子示例进行微调。然后,使用M0对每个增强示例{(xˆi,yi)}进行评分,得出质量分数ai。

这需要使用提示prompt,用来指引大模型按5分制对候选配对的质量进行评分。表1给出了使用的精确提示,如下:

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

然后,可以从得分ai≥k的增强示例中选择一个子集,形成编辑集A(1)。

对A(1),并将其作为下一个中间模型M1的微调数据,再由M1选择训练数据,从而得到M2,这就涉及到一种迭代训练方法,以产生更高质量的预测。具体地,在第t次迭代中,使用上一次迭代中策划的增强数据A(t-1)和种子数据作为训练数据,对改进模型Mt进行微调,用于对增强示例的质量重新评分,从而得到增强集A(t),在进行两次数据选择和微调迭代之后,最终模型M2。

值得注意的是,为了做到数据隔离,该方法在结合种子数据和增强数据进行微调时,使用标记来区分这两个数据源,即在示例中附加一句话(称为”系统提示”):对于种子数据,使用Sa:=”以人工智能助手的风格进行回答”;对于增强数据,使用Sw:=”利用网络搜索知识进行回答”。

二、具体实验设置与数据生成效果及多样性分析

1、实验设置

在具体实验上,

在种子数据选择方面,该工作使用开放助手数据集中的3200个例子作为人类标注的种子数据进行训练。每个示例都是从对话树的第一轮中选择的(指令、输出)对{(xi,yi)},并只采样基于人工标注等级(等级0)的高质量英语回复。

在基础模型和微调选择方面,使用预训练的LLaMA模型(参数分别为7B、33B和65B)作为微调的基础模型。在训练过程中,只优化输出标记的损失,而不优化输入标记的损失,我们将训练有素的基于Llama的指令反翻译模型称为Humpback1。

在无标签数据选择方面,使用Clueweb语料库的英语部分作为无标签数据的来源,在这些数据中抽取了502k个片段。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

在对比模型方面,以text-davinci-003、LIMA模型、Guanaco模型作为对比。

其中:

LIMA模型利用从社区问答(如StackOverflow、WikiHow等)和人类专家撰写的指令及回复中混合挑选的1000个人工指令示例,对LLaMA模型进行微调。

Guanaco使用OpenAssistant数据集中的9000个示例对LLaMA模型进行了微调。与该工作使用的3200个种子实例不同的是,Guanaco包含了所有回合的(指令、输出)对,该工作只使用了对话的第一回合。

在模型性能评估方面,对多个来源的测试提示进行了评估:Vicuna(80个提示)、Self-instruct(252个提示)、OpenAssistant(188个提示)、Koala(156个提示)、HH_RLHF(129个提示)、LIMA(300个提示)、作者众包(64个提示)。总共有1130个独特的提示,涵盖了各种任务类别,如写作、编码、数学推理、信息搜索、建议、角色扮演、安全等。

在生成质量评估方面,从中抽取了250个提示作为开发集,不包括AlpacaEval测试集中的提示,另外抽取了250个提示进行生成质量评估,评估方法使用AlpacaEval进行自动评估,该评估基于GPT-4判断计算基准模型的胜率。

2、种子和增强数据统计分析

表2展示了提供了种子数据以及不同版本的增强数据的统计数据。 

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

可以看到:

在增强数据方面,与种子数据相比,增强数据往往具有更长的输出,而在所有增强数据中,自我修正的高质量训练数据(A(2)和A(2))具有更短的指令和输出,在所有增强数据中,指令和输出都更短,更接近原始种子指令数据的长度。

在生成多样性方面,图2展示了种子数据和增强数据中指令的动名词结构在种子数据和增强数据(A(2)类别)中的分布情况。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

可以看到,与种子数据类似,尽管无标记数据中的内容类型(文章、食谱、描述等)与种子数据中的内容类型(论文、脚本、代码、故事等)互补,但仍有一些与写作、信息搜索和建议相关的头部任务。此外,增强数据增加了任务的多样性,尤其是在长尾任务中

在数据质量与数据数量方面,为了了解数据质量与数据数量在学习遵从指令中的重要性,对不同质量的增强数据进行了微调比较,即在不进行基于质量的选择的情况下对增强数据进行的微调(w/ocuration)、A(2)(得分≥4)和A(2)(得分≥4.5)数据的微调,如图3所示。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

可以发现,尽管扩大了数据量,但在没有自我修正的增强数据上进行训练并不能提高指令遵循的性能。但是,对增强数据的高质量部分进行训练会提高指令遵循性能,而且随着增强数据量的不断增加,性能也会稳步提高。

这里有个比较有趣的观点:之前的研究《Lima: Less is more for alignment》提出了”肤浅对齐假说”(superficial alignment hypothesis),即只需要几千个高质量的指令跟踪示例才足以使预先训练好的基础模型对齐指令跟踪,该工作研究结果提供了一个相反的观察结果,即增加高质量数据的数量会带来进一步的收益(而增加低质量数据的数量则不会),实际上, 这不是相反的结果,而且是个很废话的结论。

在数据扩展效率方面,该工作比较了各种指令跟随模型在改变其使用的指令跟随微调数据量时的性能,在使用给定的微调数据集对7BLLaMa进行微调时,测量每个模型与text-davinci-003的胜率,通过使用数据缩放系数α对这一效率的估计值,该系数是通过拟合经验数据w=αlogN+C计算得出的,其中w是衡量模型在N个示例上进行微调后生成质量的胜率,从图3中可以看出数据扩展效率也较高。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

3、迭代过程中的数据质量评估

为了评估迭代过程中的数据质量,使用AlpacaEval的自动评估(使用GPT-4)来评估来自AlpacaLeaderboard的805条提示,AlpacaEval将成对胜率与参考模型text-davinci-003进行比较。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

如表7所示,在选择高质量数据(精度/召回率)方面,第二次迭代(使用M1与M0相比)的自我修正性能有所提高。

4、自我评估数据集质量评估:联合训练带来的增益

如图7所示,如果只在自增数据(无种子数据)上进行训练,且不进行自我校准,则指令跟踪的质量不会提高,甚至会随着数据量的增加而下降。然而,随着训练集规模的增加,在更高质量的自我修正数据上进行训练会带来改善。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

虽然这种自增数据的效果并不优于种子训练数据的单独缩放,但当同时使用种子数据和自增数据进行联合训练时,可以观察到很大的改进。这表明种子数据和增强数据是相辅相成的,其中种子数据与目标领域(人工智能助手的回复)具有相同的分布,而来自网络语料库的数据可以扩大指令和输出的多样性。

5、添加系统提示也有性能增益

表8区分了系统提示在联合微调和推理过程中的效果,可以发现,添加系统提示来区分增强数据和种子数据很有帮助。有趣的是,在推理时使用组合系统提示{Sa,Sw}(将种子数据的提示与增强数据的提示合并在一起)比不使用系统提示或使用种子数据提示效果更好。

有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

总结

本文主要介绍了《Self-Alignment with Instruction Backtranslation》这一工作,这种方法与我们之前所看到的,先增强生成instruction,然后再得到答案的方式正好相反,指令反向翻译的迭代自我训练算法,采用答案来增强生成对应的instruction,这在一定程度上可以增强prompt输入的多样性。

值得借鉴的是,该方案利利用模型本身来增强和策划高质量的训练示例,其过滤微调数据的方法值得关注,此外,该工作中所提及到的关于微调数据分析、筛选的方法,也很有趣。

不过,该工作并未开源,等后面我们再来看看其中的源码,增进理解。

参考文献

1、https://arxiv.org/abs/2308.06259

关于我们

老刘,刘焕勇,NLP 开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说 NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型 AIGC 实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

       

原文始发于微信公众号(老刘说NLP):有趣的大模型微调指令数据反向增强方法:Instruction Backtranslation原理解读及其在数据分析上的思考

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...