还在担心没有大模型没有指令遵循数据吗?
快来看看meta的Humpback吧!
今天分享的文章来自Meta AI,self-Alignment with Instruction Backtranslation[1]:通过指令反向翻译进行自对准。
这篇文章是一种从互联网大量无标签数据中挖掘高质量的指令遵循数据集的方案,它利用少量种子数据,从大量互联网上无标签的数据,挖掘出大量高质量的、多样性也不错的训练数据,成功将llama(美洲驼)进化成Humpback(座头鲸)。
一、概述
Title:
Self-Alignment with Instruction Backt
ranslation
论文地址:
https://arxiv.org/pdf/2308.06259.pdf
1 Motivation
-
现状:高质量指令数据太少,互联网上human-written text倒是比较多,但是大量的无标签数据缺乏对应的指令。
-
目标:研究如何利用互联网上大量的无标签的数据,生成高质量的指令集,进而提升模型的表现。
-
大白话:无标签文本 -> 对应的指令是什么?
2 Methods
主要依赖于两个假设:
1. 在互联网上大量的无标签数据中,有些是可以作为user instructions的标准回复gold answer的。
2.根据gold answers生成的指令,可以作为一个高质量的样本去训练指令遵循模型。
指令回译具体内容:
-
self-augmentation
:利用种子数据训练模型并从无标签数据生成指令。1. 指令预测模型(Myx)训练:先利用少量的instruction,output数据对,训练LLama模型让其学习
根据output
生成对应instruction
的能力
。2. 利用指令预测模型Myx +
大量无标签数据 => 生成候选指令A
。
-
self-curation
: 从候选指令A中选择部分高质量的(instruction,output)数据对,然后
迭代训练指令预测模型v2版本
,通过这种方式迭代2轮,
提升生成的指令集的质量
。
步骤1 Initialization(初始化设置):收集少量种子数据和大量无标注的文本
Seed Data训练:
收集少量的种子instruction,output数据,从两个方向来训练模型,第一种是根据指令生成回复。
第二种种是根据回复生成指令。
Unlabelled data数据处理:
对于每个文档,提取HTML标题后面的文本部分。并进行重复数据删除、长度过滤,并使用几种启发式方法删除潜在的低质量段,例如标题中大写字母的比例。
步骤2 Self-Augmentation (generating instructions指令生成):训练指令预测模型并根据无标签数据生成指令
指令预测模型训练,利用(output,instruction)训练
指令预测
模型,用于根据无标签的数据生成指令。注意:并不是所有的候选指令对都是高质量的,如果将它们全部用于训练不一定会有益。
步骤3 Self-Curation (selecting high-quality examples指令挑选):利用大模型本身筛选高质量的数据构建新的数据集
筛选打分步骤:
-
仅根据seed(指令、输出)种子示数据训练模型M0。
-
使用M0为每个增强示例{(xˆi, yi)}评分,以得出质量评分ai。使用提示对生成的候选指令进行评级打分(5个纬度)。
-
选择分数为ai ≥ k的增强示例的子集来形成高质量数据集。
筛选评分的prompt:
Iterative self-curation:
迭代方法产生更高质量的预测结果。
其他注意事项:
当合并seed data和augmented data来训练模型时,
利用不同的标签来区别不同sources的数据
。
3 Conclusion
-
在Alpaca leaderboard排行榜上,在使用少量的人类标注数据的情况下,比所有其他non-distilled instruction-following(非其他大模型蒸馏数据训练的大模型)都要好【
3k的种子数据+50万无标注数据 + LLaMA大大超过了其它同类型的模型
】。
-
后续可以继续利用更多的无标签语料来生成更多的数据,理论上会得到更大的收益。
4 limitation
safety和bias:由于利用网上的数据来增强样本,不可避免可能会存在bias,另外也没有red teaming等策略来提升安全性,可能也会有一些风险。
二、详细内容
1 实验设置
seed data:
从Open Assistant dataset挑选
3200个样本
作为seed data,只挑选了英文的数据,同时挑选人类标注的rank指标中最高的。
Base model&finetuning:
1.LLaMA系列7B,33B,65B的模型。2.只对输出计算loss。3.利用SFT方法来微调。4.生成阶段,利用
nucleus sampling
(T=0.7,p=0.9)来生成结果。
Unlabelled Data
:Clueweb corpus中sampled
502k个segments
。
Nucleus Sampling是什么?【多样性和效果都不错的解码方案】
"
Nucleus Sampling
" 是一种生成文本的采样策略,主要用于语言模型生成任务,例如文本生成、对话生成等。这种采样方法的
目标是在保持生成文本多样性的同时,减少一些低概率、不太可能的生成结果,从而提高生成文本的质量和可读性
。
在 Nucleus Sampling 中,首先计算出每个可能的生成词的概率分布。然后,将这些概率值按照大小排序,从高到低排列。接下来,
从排好序的概率分布中选择一部分概率最高的词,这部分概率总和达到一个预先设定的阈值
。换句话说,
从整个词汇中选取了一部分核心词(nucleus),这些词的累积概率超过了设定的阈值
。
Nucleus Sampling 的一个主要
优势在于它能够在一定程度上平衡生成文本的多样性和可控性
。与传统的贪婪解码相比,
Nucleus Sampling 能够避免过于保守的生成,同时又能够避免太多的不合理或不相关的生成。
这种方法尤其在生成较长文本或需要一定上下文逻辑的任务中表现出色。
总之,Nucleus Sampling 是一种有效的生成文本的采样方法,能够在生成结果的多样性和可控性之间取得一种平衡。它在语言模型的研究和应用中具有一定的重要性。
2 数据量级和分布