AI模型评估新思路:像迭代模型一样迭代Evals,提升AI系统质量

1

在人工智能(AI)应用项目中,自动评估(evals)的重要性日益凸显。然而,许多团队在项目后期才开始重视 evals 的构建,或者过度依赖人工评估,这往往是因为他们认为构建 evals 是一项巨大的投资,需要投入大量的时间和资源。但实际上,构建 evals 可以被视为一个迭代的过程,从小处着手,逐步完善。

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

在构建客户服务聊天机器人时,由于没有唯一的正确答案,许多团队需要花费大量时间人工评估每次更新后的输出,以判断系统是否有所改进。尽管像 LLM-as-judge 这样的技术有所帮助,但要使其真正发挥作用,需要对提示语、上下文等细节进行精细调整,这无疑增加了构建 evals 的复杂性。

因此,我鼓励大家以不同的方式看待 evals 的构建。即使是快速构建的、不完整的、带有噪音的 evals,只要能够部分衡量系统的性能,也是有价值的。它们可以作为人工评估的补充,随着时间的推移,逐步调整评估方法,缩小 evals 输出与人工判断之间的差距。例如:

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

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

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

  • 迭代系统以使其表现更好,这可以通过自动 evals 和人工判断相结合来衡量;
  • 迭代 evals 以使其更接近人工判断。

就像 AI 中的许多事情一样,我们通常不会第一次就做对。因此,最好快速构建一个初始的端到端系统,然后迭代以改进它。我们已经习惯于采用这种方法来构建 AI 系统。我们可以用同样的方式构建 evals。

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

  • 如果根据熟练的人工判断,A 的效果明显优于 B,则 eval 应为 A 提供明显高于 B 的分数。
  • 如果 A 和 B 的性能相似,则它们的 eval 分数应相似。

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

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

那么,如何才能有效地构建和迭代 Evals 呢?以下是一些建议:

1. 明确 Eval 的目标

在开始构建 Eval 之前,首先要明确 Eval 的目标。Eval 应该评估哪些方面?例如,对于客户服务聊天机器人,Eval 可能需要评估其准确性、相关性、礼貌程度和解决问题的能力。明确 Eval 的目标有助于你选择合适的指标和数据集。

2. 选择合适的指标

选择合适的指标是构建有效 Eval 的关键。指标应该能够准确地反映系统的性能。例如,对于客户服务聊天机器人,可以使用以下指标:

  • 准确率:衡量聊天机器人回答问题的准确程度。
  • 相关性:衡量聊天机器人回答问题的相关程度。
  • 礼貌程度:衡量聊天机器人的语气是否礼貌。
  • 解决问题的能力:衡量聊天机器人解决问题的能力。

3. 构建高质量的数据集

高质量的数据集是构建有效 Eval 的基础。数据集应该包含各种各样的示例,并且应该能够代表系统的实际使用情况。例如,对于客户服务聊天机器人,数据集应该包含各种各样的客户问题,以及这些问题的正确答案。

4. 使用自动化工具

使用自动化工具可以提高 Eval 的效率。例如,可以使用自动化工具来生成测试用例、运行测试和收集结果。以下是一些常用的自动化工具:

  • pytest:一个 Python 测试框架,可以用于编写和运行测试用例。
  • Selenium:一个 Web 自动化测试工具,可以用于模拟用户在浏览器中的操作。
  • Locust:一个性能测试工具,可以用于模拟大量用户同时访问系统。

5. 持续迭代和改进

Eval 不是一蹴而就的,而是一个持续迭代和改进的过程。应该定期评估 Eval 的有效性,并根据评估结果进行调整。例如,如果发现 Eval 无法准确地反映系统的性能,则应该修改指标或数据集。

6. 结合人工评估和自动评估

人工评估和自动评估各有优缺点。人工评估可以提供更全面的评估结果,但成本较高。自动评估效率较高,但可能无法覆盖所有方面。因此,应该结合人工评估和自动评估,以获得更准确的评估结果。

7. 关注 Eval 的可解释性

Eval 的可解释性非常重要。如果 Eval 的结果无法解释,则很难从中获得有用的信息。因此,应该尽量选择可解释的指标和方法。例如,可以使用 SHAP 值来解释机器学习模型的预测结果。

8. 考虑 Eval 的公平性

Eval 的公平性也是一个重要的问题。Eval 应该对所有用户都是公平的,不应该存在任何偏见。例如,如果 Eval 使用的数据集存在偏见,则可能会导致 Eval 结果不公平。

9. 将 Eval 集成到 CI/CD 流程中

将 Eval 集成到 CI/CD 流程中可以确保每次代码提交都经过评估。这有助于及早发现问题,并防止将有缺陷的代码部署到生产环境。

10. 分享 Eval 的经验和最佳实践

分享 Eval 的经验和最佳实践可以帮助其他人更好地构建 Eval。例如,可以撰写博客文章、发表论文或在会议上进行演讲,分享你在 Eval 方面的经验。

通过采用这些方法,你可以更有效地构建和迭代 Evals,从而提高 AI 系统的质量和可靠性。

总之,构建 Evals 是一个迭代的过程。从小处着手,逐步完善,可以帮助团队更早地发现问题,并加速项目的进展。记住,Evals 的目标是帮助我们构建更好的 AI 系统。