EvalPlanner:一个 Thinking-LLM-as-a-Judge 模型,通过规划和推理来学习思考以进行评估

📖阅读时长:25分钟

🕙发布时间:2025-02-05

LLM-as-a-Judge模型致力于生成思维链(CoT)序列,其目的是完整地捕捉在最终评估响应时所依赖的逐步推理过程。然而,当前面临的一大难题是缺乏人工注释的CoT,这给此类模型的训练带来了极大的阻碍。此外,如果只是简单地使用预定义的评估提示,会降低评估的准确性。考虑到LLM-as-a-Judge模型所应用的任务广泛,既任意又复杂,手动调整评估指令的方式不仅难以大规模推广,在实际操作中也不现实。

为了解决上述问题,本文介绍了EvalPlanner,这是一种用于Thinking-LLM-as-a-Judge的偏好优化算法。它的运作流程是先生成无约束的评估计划,接着执行该计划,最后得出最终判断。

方法概述

组件

如下图展示了一个突出这三个组件的示例。EvalPlanner假定一个高效的评估思维链应由以下三个部分构成:

  • 评估计划z:对于给定的输入指令x,评估计划详细规定了如何评估针对该指令给出的响应。
  • 计划的执行:这部分负责按照计划逐步开展实际评估工作,具体就是分析输入的响应a和b这一对数据,进而生成最终判断y。
  • 最终裁决y:假设一个作为LLM-as-a-Judge运行的大语言模型由θ参数化,其中计划z和执行e被视作潜在变量,那么最终裁决y的生成过程可以写成如下形式:

工作流程

如下图提供了整体流程的概述,具体步骤如下:

  1. 给定一个指令和一个种子模型,首先从多个计划z ∈ P中进行采样。
  2. 然后,针对给定的计划、指令以及一对响应,对计划的多次执行e ∈ E进行采样,这些执行结果可能会得出正确的最终裁决,也可能不会。
  3. 利用这些数据,开发一个自训练循环。在这个循环中,通过对计划和执行进行优化来训练LLM-as-a-Judge模型,从而使模型能够做出更优的判断。
  4. 在测试阶段,模型生成形式为 $\tilde{y} = (\tilde{z}, \tilde{e}, \tilde{y})$ 的CoT,其结构包含计划、执行过程以及最终裁决。

合成训练数据生成

提示选择和生成响应对

选择涵盖一般指令遵循和数学推理的提示。

  • 对于一般指令遵循的提示,先将原始指令转化为 “有干扰的” 指令,然后针对这个 “有干扰的” 指令生成响应。之后,把对原始指令的响应作为选定响应,而对 “有干扰的” 指令的响应则当作被拒绝响应。
  • 对于数学推理类提示,对多个响应进行采样。其中,能得出正确解决方案的响应被选定,而那些解决方案错误的响应则被视为被拒绝响应。

制定评估计划

设计一个通用且无约束的计划生成提示(如下提示模板),利用这个提示向种子模型(例如经过指令调整的大语言模型)查询仅基于输入指令的初始计划。

我们想要评估人工智能助手针对以下用户问题所提供响应的质量。为此,您的任务是协助我们制定一个评估计划,该计划后续将用于评估响应质量。在合适的情况下,您可以选择将逐步参考回答作为评估计划的一部分。请将您的评估计划包含在“[Start of Evaluation Plan]”和“[End of Evaluation Plan]”标签之间。

[User Question]
{instruction}

这些计划随后会通过自训练进行优化。

生成计划执行

使用下面的提示模板,利用指令和响应对来促使同一个种子模型对上一步生成的计划进行推理,并根据响应对得出裁决:

请担任公正的评委,评估以下两位人工智能助手针对用户问题所提供响应的质量。您应选择更符合用户指令且回答问题更优的助手。评估时应综合考虑响应的实用性、相关性、准确性、深度、创造性以及细节程度等因素。在开始评估时,请先对比两个响应并给出简要解释。避免任何位置偏差,确保响应的展示顺序不会影响您的判断。不要让响应的长度影响评估,也不要偏向特定助手的名字。请尽可能保持客观。在给出解释后,请严格按照以下格式输出最终裁决:如果助手A更优,输出“[[A]]”;如果助手B更优,输出“[[B]]”。

[[User Question]]
{instruction}
[The Start of Assistant A’s Answer]
{response A}
[The End of Assistant A’s Answer]
[The Start of Assistant B’s Answer]
{response B}
[The End of Assistant B’s Answer]

将规划和执行阶段分开有两个好处:一是确保推理和执行过程遵循计划;二是通过对同一计划进行多个计划和多次执行的采样,可以在规划和执行都存在差异的多样化评估数据上训练模型。

建立计划和执行的偏好对

对于每个输入指令,采样|P|个计划,并且针对每个计划,采样|E|次执行。为了消除位置偏差,根据响应对的两种顺序((a, b)和(b, a))生成计划执行,这样对于每个输入指令,总共会生成$2×|P|×|E|$个CoT。如果对应的(计划、执行、判断)三元组能得出正确裁决,则认为该思维正确,否则为错误。利用这个正确性标准,构建偏好调整数据集$D = D(a,b) ∪ D(b,a)$,其中$D(a,b)$和$D(b,a)$的定义如下:对于每个计划,生成多个执行,并构建所有可能的正确和错误执行对,分别对应正确和错误的判断,这样就能构建出执行情况不同的 “选定”(c)和 “拒绝”(r)对。

计划和执行的偏好优化

整个流程包含一个自训练循环,从种子模型M0(例如经过指令调整的大语言模型)开始,在 “选定” 的CoT的一个子集上进行监督微调(SFT),得到模型$M_1^{SFT}$。接着,在CoT的偏好对上进行两次直接偏好优化(DPO)迭代,分别得到模型$M_1^{DPO}$和$M_2^{DPO}$。

  • $M_1^{SFT}$:在$D_1^c$上进行SFT,从M₀初始化:从种子模型M0和输入指令及响应对的一个子集出发,生成思维的偏好对,将这个数据集记为D1。为了让模型学会正确遵循我们的CoT模式(计划 + 执行 + 裁决),首先在$D_1^c$(D1中仅包含 “选定” 思维的子集)上对M0进行微调。具体来说,对于每条指令,随机抽取一个能得出正确裁决的正确思维,并基于该数据执行SFT,从而得到模型$M_1^{SFT}$。
  • $M_1^{DPO}$:在D1上进行DPO,从$M_1^{SFT}$初始化:接下来,从$M_1^{SFT}$开始,在包含选定和拒绝思维的数据集D1上执行DPO。由于思维中计划和执行的标记明显不同,这一步能让模型学会对比正确和错误的思维,这些思维在评估计划和执行方面都存在差异,进而得到模型$M_1^{DPO}$。
  • $M_2^{DPO}$:在D2上进行DPO,从$M_1^{DPO}$初始化:EvalPlanner还包含DPO的第二次迭代。在这一步中,选择指令和响应对的新子集,使用相同的方法但基于上一次迭代得到的模型$M_1^{DPO}$来生成CoT。具体操作是,首先从$M_1^{DPO}$为每个训练数据点采样|P|个CoT,将计划从思维中分离出来,然后使用同一个$M_1^{DPO}$模型为每个计划采样|E|次执行。

实验装置

培训

  • WildChat数据集:直接使用自学评估者生成的合成响应。
  • MATH数据集:通过促使Mixtral 22Bx8 Instruct模型生成多个候选解决方案来产生合成响应。能得出正确最终答案的响应被选定,最终答案错误的响应则被视为被拒绝响应。利用合成响应对生成的方法,分别从WildChat和MATH收集到了17,588个和4,141个唯一的(指令、选定、拒绝)三元组作为训练数据,采用了两种不同的收集方式。从中随机选取5K条指令(包括来自WildChat的2.5K条和来自MATH的2.5K条)用于SFT和DPO的第一次迭代,其余数据保留用于DPO的第二次迭代。在每次迭代中,采样5个计划,对于每个计划,使用温度为0.8和top_p为0.95的参数采样8次执行(每个响应对顺序各4次)。使用Llama-3.1–70B-Instruct或Llama-3.3–70B-Instruct作为种子模型来开发EvalPlanner,以此展示该方法在多个种子模型上的泛化能力。使用fairseq2库进行模型训练,vLLM进行推理。

基线

将EvalPlanner与一系列模型进行对比,其中包括以零样本方式作为评委的强大开源和闭源大语言模型、能够生成标量分数和批评意见的带有评论的奖励模型,以及RewardBench排行榜上列出的最先进的生成奖励模型。

结果

  • EvalPlanner性能超越所有基线:EvalPlanner在性能上优于所有基线模型,而且它是在数量更少的合成生成偏好对上进行训练的。训练了两个以不同Llama版本为种子模型(Llama-3.1–70B-Instruct和Llama-3.3–70B-Instruct)的EvalPlanner模型,这两个模型均超越了所有基线,在RewardBench上实现了生成奖励模型的最先进水平。EvalPlanner的训练方法在两个Llama种子模型上表现相当,证明了初始训练数据的有效性以及该方法的可推广性。
  • 计划量身定制:EvalPlanner的计划是根据正在评估的特定指令专门制定的。这一成果是通过将规划与推理过程分离,并让模型直接优化思维,且无需进行任何特定领域的调整来实现的。以下是EvalPlanner针对不同指令生成的计划示例。
  • 数据高效且受益于迭代优化:在RewardBench上的实验结果显示,EvalPlanner仅使用5K个偏好对就获得了92.3分,与该平台上的最佳模型相当。同时,也证明了迭代DPO的有效性,第二次DPO迭代使分数从92.3显著提升到93.9。相比之下,在单次DPO迭代中使用相同数量的数据,仅能带来微小的提升(92.3 → 92.5)。EvalPlanner的迭代改进得益于使用更新模型的CoT对新数据点进行训练。
  • 在FollowBenchEval中评估多级约束的泛化能力:在FollowBenchEval中评估具有多级约束的复杂提示时,EvalPlanner相较于没有明确规划或推理的基线模型具有明显优势,比Skywork-Critic-Llama-3.1–70B(RewardBench上的先进模型)得分高出13%。

  • 在RM-Bench和JudgeBench中的泛化能力:在RM-Bench评估模型对细微内容变化和风格偏差的稳健性时,EvalPlanner在所有子集中都展现出卓越的稳健性,相比其他方法,它更不容易受到细微变化的影响,尤其是在响应详细且格式良好的Hard子集中表现突出。在JudgeBench评估模型处理跨多个类别的挑战性问题的能力时,带有Llama-3.3–70B-Instruct的EvalPlanner与Skywork-Critic-Llama-3.1-70B性能相当,并且超越了所有其他基线模型。

结论

本文介绍了EvalPlanner,这是一种全新的构建强大且数据高效的Thinking-LLM-as-a-Judge模型的方法。通过在四个基准测试中的全面实验,证明了该方法的有效性。EvalPlanner仅使用显著更少的合成训练数据,就实现了新的最先进水平。

论文链接:https://arxiv.org/abs/2501.18099

近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企
公众号【柏企科技说】【柏企阅文

本文由mdnice多平台发布


柏企科技圈
1 声望0 粉丝

时间差不多了,快上车!~