AI模型评估新思路:像迭代模型一样迭代评估

1

在人工智能(AI)应用项目中,许多团队在系统输出的自动化评估(evals)方面进展缓慢,过度依赖人工评估。这种现象源于对构建evals的高成本认知,认为需要大量前期投入,例如创建数百甚至数千个示例,并设计和验证指标。然而,我认为构建evals应该被视为一个迭代过程,从快速且简单的实现开始,逐步改进。这种方法能够逐渐将评估负担从人工转移到自动化evals。

我之前曾撰文强调创建evals的重要性和难度。例如,构建一个能够以自由文本回复用户的客户服务聊天机器人,由于没有唯一的正确答案,团队需要花费大量时间审查每次更新后的输出,以判断系统是否有所改进。虽然像LLM-as-judge这样的技术有所帮助,但要使其有效(例如,选择合适的提示、提供适当的上下文等)需要精细的调整。这些因素共同导致了构建evals需要大量前期投入的印象,因此,团队往往选择依赖人工评估,而不是投入精力构建自动化evals。

我鼓励大家以不同的方式看待构建evals。即使初始evals只是对系统性能的部分、不完整和有噪音的衡量,也可以接受,并通过迭代来改进它们。这些evals可以作为人工评估的补充,而不是替代品。随着时间的推移,可以逐步调整评估方法,以缩小evals输出与人工判断之间的差距。例如:

  • Eval集中可以从非常少的示例开始,比如5个,然后随着时间的推移逐渐增加,或者删除那些过于简单或过于困难,对区分系统不同版本性能没有帮助的示例。
  • Eval可以从只衡量你关心的性能维度的一个子集开始,或者衡量你认为与系统性能相关但不完全捕获系统性能的狭窄线索。例如,如果你的客户支持代理在对话的某个时刻应该(i)调用API发出退款,并且(ii)生成适当的消息给用户,你可以首先只衡量它是否正确调用了API,而不必担心消息的内容。或者,如果你的聊天机器人应该在某个时刻推荐一个特定的产品,一个基本的eval可以衡量聊天机器人是否提到了该产品,而不必担心它说了什么。

只要eval的输出与整体性能相关,就可以在开始时只衡量你关心的事情的一个子集。

开发过程因此包含两个迭代循环,你可以并行执行它们:

  • 迭代改进系统,使其性能更好,这可以通过自动化eval和人工判断相结合来衡量;
  • 迭代改进eval,使其更符合人工判断。

正如人工智能领域的许多事物一样,我们通常无法一次性做好。因此,最好快速构建一个初始的端到端系统,然后通过迭代来改进它。我们已经习惯于用这种方法来构建AI系统,我们也可以用同样的方法来构建eval。

对我来说,一个成功的eval需要满足以下标准。假设我们目前有系统A,我们可以对其进行调整以得到系统B:

  • 如果根据一位熟练的人工判断,A明显优于B,那么eval应该给A一个明显高于B的分数。
  • 如果A和B的性能相似,它们的eval分数也应该相似。

每当一对系统A和B违反这些标准时,就表明eval存在“错误”,我们应该调整它,使其能够正确地对A和B进行排序。这与构建机器学习算法中的错误分析类似,只是我们关注的是eval的“错误”,而不是机器学习算法输出的错误(例如,当它输出一个不正确的标签时),例如,当它们错误地对两个系统A和B进行排序时,因此eval在选择它们之间没有帮助。

完全依赖人工判断是启动项目的绝佳方式。但对于许多团队来说,将eval构建为一个快速原型并迭代到更成熟的阶段,可以让你更早地进行eval,并加速你的进展。

精益求精!

安德鲁

Cartoon of two coworkers coding; one struggles with evaluations, the other iterates quickly through model updates and test cases.