Aligning LLM as judge with human evaluators

将作为裁判的 LLM 与人类评估者对齐

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

引言

让我们面对现实吧,您的人工智能产品评估很可能存在问题。在这篇博客中,我将解释为什么它有问题,您该如何修复它,以及使解决方案奏效的底层机制。
 

基于LLM的评估者的兴衰

随着像GPT-3.5这样的大语言模型(LLM)问世并在2023年初得到广泛应用,人工智能应用的构建数量达到了前所未有的水平。在这个产品开发过程中的某个时刻每位AI工程师和利益相关者都意识到,他们需要评估来有效地扩展其AI产品。这产生了一个真空地带,其原因在于一个悬而未决的问题:如何评估这样的系统?
 
传统的评估指标,如字符串匹配、BLEU分数等,在面对LLM新发现的生成和推理能力时被证明是无效的。LLM可用作评估者这一概念的引入,试图填补这一真空。早期的研究,如G-Eval GPTScore,从经验上证明了LLM可以被有效地用作评估者来为输出评分。同年晚些时候,随着使用LLM直接评分的一些偏见被发现,像RAGAS(我们的MVP)这样的研究试图通过制定一套不同的评估指标来绕过这些问题。
 
这种情况持续了一段时间,直到像《谁来验证验证者》《LLM替代人类裁判?》这样的研究开始质疑上述所有方法的有效性。挑战使用LLM作为评估者有效性的类似研究发现,LLM与人类评估者在对齐上的差异是失败的主要原因。要理解这一点,我们首先需要了解评估中的“对齐”是什么。
 
 
Mis-alignment between LLM and Human evaluator
LLM与人类评估者之间的不对齐
 
评估中总存在某种形式的主观性,它会根据领域、产品等而变化。从事这项工作的开发人员了解并理解这一点,并从这个角度评估输出,但当任务自动化使用LLM时,它无法达到预期,因为它根本没有开发人员或人类评估者在评估输出时所具备的上下文。上面展示的简单例子就描述了这一点。这就是大多数评估失败的原因。那么,你该如何修复它呢?
 

将LLM评估者与人类评估者对齐

 
在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的指标都包含一个或多个提示。基本思想是首先创建几个候选者(候选者是包含独特提示组合的指标版本),然后使用像变异这样的进化方法来创造更多的变体,接着通过选择(通过评估每个候选者与收集数据的准确性来完成)来产生对给定指标和数据最有效的一组提示。
 
对于优化示例,我们得出的结论是,没有一套示例适用于所有输入。因此,我们对审查和接受的样本进行嵌入,并在推理过程中检索前k个最相似的样本。
 
我们在内部数据集(中位响应长度为100个词元)上评估了其有效性。我简要描述了我们的过程,如果您有一个包含您想评估的任务至少50个或更多样本预期分数的标注评估数据集,您也可以这样做。
 
  • 将数据分为训练集和测试集。
  • 为您的任务选择一个基于LLM的指标。
  • 使用选定的指标对您的训练集和测试集进行评估。
  • 对于测试集,通过比较预测分数与预期分数来量化评估指标的性能。这将是您的基线性能。
  • 对于训练集,将结果上传到 app.ragas.io 以审查和标注评估。
  • 下载这个标注好的数据,然后用它来训练指标。
  • 使用训练好的指标在测试集上重新评估,并再次量化性能。这是优化后指标的性能。
  • 比较基线分数与优化后指标分数,以量化改进程度。
 
我们审查并标注了一组随机的20个样本(12个接受,8个拒绝,4个编辑)作为训练集,然后在一个包含50个样本的测试集上进行了评估。我们在这个实验中使用了aspect critic指标(二元)和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 提示优化器的比较研究
  1. 为 LLM 评估者选择阈值