Aligning LLM as judge with human evaluators

将 LLM 评委与人工评估员对齐

标签
评估
LLM
发布日期
2024年12月11日
作者
Shahul Es
 

引言

坦白地说,您的 AI 产品评估很可能出了问题。在这篇博客中,我将解释原因、如何修复以及使解决方案奏效的底层机制。
 

基于 LLM 的评估器的兴起与衰落

随着 GPT3.5 等 LLM 在 2023 年初发布并得到广泛采用,前所未有的 AI 应用被构建出来。在这个产品开发过程中的某个时刻,每一位 AI 工程师和利益相关者都意识到,他们需要评估来有效地进一步扩展他们的 AI 产品。这产生了一个空白,原因在于如何评估此类系统的未解决问题。e每一位AI工程师和利益相关者都意识到,为了高效地进一步扩展其AI产品,他们需要进行评估。这造成了一个空白,而这个空白的原因在于一个悬而未决的问题:如何评估此类系统?
 
传统的评估指标集,如字符串匹配、BLEU 分数等,在 LLM 新出现的生成和推理能力面前被证明是无效的。引入 LLM 可以用作评估器的概念试图填补这一空白。早期的工作,如 G-Eval GPTScore,通过实证证明 LLM 可以有效地用作评估器来对输出评分。同年晚些时候,随着人们发现直接使用 LLM 对输出评分存在一些偏见,RAGAS(我们的 MVP)等工作试图通过制定不同的评估指标集来绕过这些偏见。
 
这种情况持续了一段时间,直到像《谁来验证验证者》《使用 LLM 而非人工评委?》这样的工作开始质疑上述所有方法的有效性。类似质疑使用 LLM 作为评估器有效性的工作发现,LLM 与人工评估员在对齐性上的差异是导致失败的主要原因。要理解这一点,我们首先需要理解评估中的对齐性是什么。方法s. 类似的研究挑战了使用LLM作为评估者的有效性,并发现LLMs与人类评估者在对齐性上的差异是主要失败原因。为了理解这一点,我们首先需要理解评估中的“对齐性”是什么。
 
 
Mis-alignment between LLM and Human evaluator
LLM 与人工评估员之间的未对齐
 
评估总是存在一定程度的主观性,这取决于领域、产品等因素。负责开发的工程师了解并理解这一点,并从这个角度评估输出,但当使用 LLM 自动化该任务时,它无法达到预期,因为它不具备开发者或人工评估员在评估输出时所拥有的上下文。上图所示的简单示例就说明了这一点。这就是大多数评估失败的原因。那么,如何修复呢?
 

将 LLM 评估器与人工评估员对齐

 
在开发 Ragas 的过程中,我们遇到了用户日常都会遇到的这个问题。现在的问题是如何解决它?从模型研究的角度来看,这是一个经典的对齐问题。现在要对齐模型(即让模型按照您偏好的方式进行推理),有基于梯度的(微调、DPO 等)和无梯度的(提示、少样本优化)方法。我们采用了后者,因为它成本低、所需数据少得多且效果惊人。让我们了解如何使用 Ragas 对齐指标。基于梯度 (微调, DPO等) 和无梯度(提示, 少样本优化) 方法。我们采用了后一种方法,因为它成本低廉,需要的数据少得多,而且效果非常好。让我们了解如何使用ragas对齐指标。
 
步骤 1:选择所需的基于 LLM 的指标并运行评估
critic = AspectCritic(name="answer_correctness",definition="Given the user_input, reference and response. Is the response correct compared with the reference",llm=llm) results = evaluate(eval_dataset,metrics=[critic])
步骤 2:在 app.ragas.io 中查看您的评估结果并提供反馈(至少 15-20 条)
results.upload()
                                       Reviewing and annotating evaluation results
查看和标注评估结果
步骤 3:使用收集到的数据自动训练和对齐您的评估器
critic.train(path="feedback_data.json")
 
一旦您的评估器通过 Ragas 自动对齐,您就可以在更大的评估数据集上再次使用它。这样做时,您会发现您的评估器现在与您的判断更加一致。您可以继续这个“评估→审查→对齐”的工作流程,您的评估器每次都会变得更好。要开始,请查看这份文档
 
这就是如何修复您的评估!
 

它是如何工作的?

由于 Ragas 是开源的,您可以实际查看所有这些是如何工作的。在这里,我将尝试简要解释我们在这一领域的一些研究、实验和结果。从根本上说,其底层是提示优化(当我提到提示时,它意味着指令和示例)。在我们的案例中,基于 LLM 的指标可能包含一个或多个提示,形成一个 LLM 链。
 
DSPyTextgradzenbase 等开源项目对推动这一领域做出了巨大贡献。我们还参考了包括 PhaseEvo 在内的其他几篇研究论文,这启发我们采用基于遗传算法的方法来解决这个问题。特别是考虑到与优化神经网络不同,优化 LLM 链不涉及梯度或反向传播。
 
我们使用基于遗传算法的方法来优化和对齐指标。Ragas 中的每个基于 LLM 的指标都包含一个或多个提示。基本思想是首先创建几个候选者(候选者是包含独特提示组合的指标版本),然后使用变异等演化方法创建更多变体,接着进行选择(通过评估每个候选者与收集数据的准确性)以产生最适合给定指标和数据的提示集。
 
对于优化示例(demonstrations),我们得出的结论是没有一套示例适合所有输入。因此,我们对审查和接受的样本进行嵌入,并在推理时检索最相似的前 k 个样本。
 
我们在内部数据集(中位数响应长度 100 个 token)上评估了有效性。我已经简要描述了我们的过程,如果您有一个标注的评估数据集,其中包含您想要评估的任务的至少 50 个或更多样本的预期分数,您也可以这样做。
 
  • 将数据分成训练集和测试集。
  • 为您的任务选择一个基于 LLM 的指标。
  • 使用选定的指标在您的训练集和测试集上运行评估。
  • 对于测试集,通过比较预测分数与预期分数来量化评估指标的性能。这将是您的基线性能。
  • 对于训练集,将结果上传到 app.ragas.io 以查看和标注评估。
  • 下载此标注数据,然后使用它训练指标。
  • 使用训练后的指标重新评估测试集,并再次量化性能。这是优化后指标的性能。
  • 比较基线分数与优化后指标分数,以量化改进程度。
 
我们审查并标注了随机抽取的 20 个样本(12 个接受,8 个拒绝,4 个编辑)作为训练集,然后用它来评估 50 个测试样本。本次实验中,我们使用了方面评论指标(二元)结合 GPT-4o 模型。
notion image
从结果来看,我们能够观察到评估指标与人工评估员的对齐性有明显改善。
 

结论

 
如果您觉得这有用,请亲自试用并告诉我们您的反馈。要支持我们,请在 Github 上给我们加星,并在 X 上关注我们,以获取我们在改进评估方面所做精彩工作的更新。
 
如果您觉得本文有用,请引用本文如下:
@article{ragas2024alignmetric, title = {Aligning LLM as judge with human evaluator}, author = {Shahul}, journal = {blog.ragas.io}, year = {2024}, month = {Dec}, url = {https://blog.ragas.org.cn/aligning-llm-as-judge-with-human-evaluators} }
 

引用文献

  1. DSPy
  1. TextGrad
  1. PhaseEvo
  1. DSPy Teleprompter 的比较研究
  1. LLM 评估器的阈值选择