新智元报道,随着LLM不断迭代,人工标注成为模型扩展的显著障碍之一。MetaFAIR团队提出了一种使用迭代式方法「自学成才」的评估模型训练方法,该方法让Llama-3-Instruct模型分数超过了Llama 3.1-405B。该方法构建评估模型完全依赖合成数据,无需人工标注,通过迭代自我训练提升模型准确率。实验结果显示,该方法在RewardBench上的准确率从75.4提升至88.7,超过了使用人类标注数据的方法。
随着大型语言模型(LLM)的不断迭代和改进,人工标注数据成为模型扩展的瓶颈。为了解决这个问题,MetaFAIR团队提出了一种新的评估模型训练方法。
该方法使用合成数据来解决人工标注的问题。通过收集人类编写的用户指令和初始种子LLM,经过指令选择、响应对构建、迭代训练等步骤,训练出自评估模型。在训练过程中,完全依赖合成数据,无需人工标注。
实验结果显示,该方法在RewardBench上的准确率从75.4%提升至88.7%,超过了使用人类标注数据的方法。此外,该方法还超越了GPT-4和Gemini 1.5 Pro等模型。
该研究还存在一些问题,如第一轮训练迭代时模型的假设验证、对较小模型的适用性、模型判断模式的研究以及推理成本的考虑等。
【新智元导读】
随着LLM不断迭代,偏好和评估数据中大量的人工标注逐渐成为模型扩展的显著障碍之一。
Meta FAIR的团队最近提出了一种使用迭代式方法「自学成才」的评估模型训练方法,让70B参数的Llama-3-Instruct模型分数超过了Llama 3.1-405B。
LLM在开发周期的每个阶段都依赖强大的评估模型,比如训练阶段用于对齐人类偏好或迭代自我改进的奖励模型,以及推理阶段作为人类评估的替代方案。
构建评估模型往往依赖大量的高质量人类偏好数据,不仅耗时长、成本高,而且在模型扩展到新任务或评估标准时造成了阻碍。
此外,随着新模型不断迭代改进时,现有的标注数据往往会过时,因为其中的评估是基于旧有的、性能较差的模型相应。这意味着需要不断重复上述的数据标注和收集流程。
最近,Meta FAIR发表的一篇研究就尝试使用合成数据的方法来解决这个问题。他们提出了一种迭代的自我训练方法,在训练循环中完全不使用人类标注的偏好数据,而是纯粹依赖合成数据。
论文地址:https://arxiv.org/abs/2408.02666
实验中,这种方法将Llama-3-70B-Instruct在RewardBench上的准确率从75.4提升至88.7,超过了使用人类标注数据的方法。
arXiv页面显示,这篇论文最后修订于8月8日,目前作者还没有公开相关代码。
整个pipeline的流程大致如下(图1):
- 初始化:收集大量人类编写的用户指令,这在生产系统中较为常见,以及初始的种子LLM
- 指令选择:用LLM从数据集中选择出具有挑战性的、平衡的用户指令分布
- 响应对构建:对每个用户指令,通过提示创建LLM模型响应偏好对,让其中一个的质量(被拒绝响应)略低于另一个(被选择响应)
- 迭代训练:每次迭代包括两个步骤,判断标注和模型微调。
(i) 对每条数据采样N个LLM-as-a-Judge生成的推理链和判断结果。如果其中包含正确判断,则将该数据加入训练集,否则丢弃这条数据。
(ii) 在本次迭代构建的训练集上微调模型
值得注意的是,每次训练迭代中,训练集大小取决于当前模型的质量。预计随着模型能力的提升,能够生成更多正确的判断,训练集大小也会逐步增加,从而构成了一个自学过程。
指令选择
之所以要进行指令选择,是因为生产系统中收集的用户数据可能存在大量噪音,模型响应的主题、多样性、难度和能力都有很大程度的不平衡。
因此,这一步骤的目标是筛选出特定分布的指令子集,用于生成高质量的响应和判断结果。
如图7所示,先给出精确的提示让LLM对每个输入进行分类,构建数据集时就可以在这些类别中「按需取用」。
响应对构建
经过前两步我们得到了一个精心构建的训练数据池。这一步骤就是要对其中每个输入x
i
,生成涉及到两个响应y
i
w
、y
i
l
的偏好数据,其中前者y
w
(winning)的质量预计会优于后者y
l
(losing)。
但这一步完全使用合成数据而非依赖人工标注,那么如何保证
y
w
和
y
l
的响应质量差异?
论文提出了一种比较巧妙的方法,即先让LLM根据指令x
i
生成基线响应
y
i
w
;然后指示模型生成一个「嘈杂」版本的指令
x
i
′=ϕ(
x
i
) 。
x
i
'与
x
i
语义高度相关但不完全相同,之后生成对应x
i
'的模型高质量响应
y
i
l
。
对于同一个指令
x
i
而言,
y
i
l
的质量预计会低于
y
i
w
。由此,我们构建出了一条完整的训练数据:
e
i
:=
x
i
, y
i
A
, y
i
B
其中,w=A或w=B是随机分布的,且在最后的训练集构建中保证两种情况出现次数均衡,这对消除LLM-as-a-Judge的位置偏见非常重要。
判断标注
对于每条训练数据e
i
,LLM-as-a-Judge模型都会生成N个多样化的评价 𝒥:={j
i
1
, …, j
i
N
},然后应用拒绝采样过滤掉𝒥中与事实标签不一致的判断结果。实验中,N被设置为15。
若𝒥过滤后为空,该条数据在本次迭代中直接被丢弃。
若𝒥不为空,则从正确判决中随机选择一个,构建最终用于微调的训练数据:
(x
i
, y
i
A
, y
i
B
, j
i
)
实验中还尝试使用多数投票机制代替单个模型进行LLM-as-a-Judge判断,根据之前的研究结论,这可以带来性能改进。
初始模型M
0
从Llama-3-70B-Instruct进行初始化,每轮迭代i=1,…T中,使用M
i-1
生成偏好数据并作为LLM-as-a-Judge模型进行判断,然后再次微调M
0
模型(即Llama-3-70B-Instruct)。
其中,指令微调利用了fairseq2库,并使用vLLM进行推理。
大量人类编写的指令数据{x
i
}来自WildChat数据集,指令选择步骤中使用Mixtral 22B×8进行分类,共筛选出了20,582个有挑战性的指令。响应生成步骤同样使用Mixtral 22B×8模型。
评估结果
在RewardBench上的分数如表1所示。与种子模型相比,总分从75.4显著提升至88.7,超过了GPT-4和Gemini 1.5 Pro,甚至也超过了405B参数的Llama模型,而且好于使用人类标注数据集HelpSteer2的85.6分。
4个类别分别来看,Chat Hard和Safety的分数随着每轮迭代都有稳步上升,但Reasoing和Chat类别较为波动。Chat类别在训练后的分数甚至低于种子模型,作者推测,这是由于筛选的合成数据过于偏重困难任务。
此外可以发现,在LLM-as-a-Judge模型生成判断时使用32个样本进行多数投票的确可以提升整体性能。
HelpSteer2由英伟达和ScaleAI合作创建,是一个帮助模型响应变得更加事实正确且连贯的开源数据集。
仓库地址:https://huggingface.co/datasets/nvidia/HelpSteer2