本文是 Andrew Ng 在 Deeplearning.AI 官方网站发布的一篇文章。Andrew Ng 指出,在开发生成式 AI ( GenAI
)应用时,许多团队过晚引入自动化评估( evals
),并过度依赖人工评估,因为他们将构建 evals
视为一项庞大的前期投资。作者提倡采用迭代方法来构建 evals
,即从简单、快速的版本开始,然后逐步改进,从而更早地利用自动化评估加速项目进展。
- 延迟原因:构建
evals
被视为需要大量前期工作(如创建数百甚至上千示例、设计和验证指标),且LLM-as-judge
等现有技术实施细节复杂,让人觉得不如暂时依赖人工评估。 - 迭代构建
evals
的方法:- 从小规模开始:可以从极少数示例(例如
5
个)开始,并根据需要逐步增加或删减。 - 评估部分维度:初期可以只关注部分核心性能指标,或那些与整体性能相关的、易于测量的指标,无需追求一开始就全面覆盖。
- 具体示例:
- 对于客服机器人,初期可只评估是否正确调用了退款
API
,暂不评估回复消息的质量。 - 对于产品推荐机器人,初期可只检查是否提及了正确的产品,而不必关心具体描述方式。
- 对于客服机器人,初期可只评估是否正确调用了退款
- 从小规模开始:可以从极少数示例(例如
- 双重迭代循环:开发过程包含两个并行的迭代:
- 迭代改进
AI
系统本身(依据自动化evals
和人工判断)。 - 迭代改进
evals
本身,使其评估结果更贴近人工判断。
- 迭代改进
- 成功
evals
的标准:- 如果人工判断系统
A
显著优于B
,则evals
应给予A
显著更高的分数。 - 如果
A
和B
性能相似,则evals
分数也应相近。
- 如果人工判断系统
Evals
的“错误分析”:当evals
对系统A
和B
的排序与人工判断不符时,应视其为evals
本身的“错误”,并对其进行调整优化,使其能正确反映系统间的相对性能。- 最终建议:尽管项目初期依赖人工判断是可行的,但尽早引入简单的自动化
evals
并持续迭代,能更有效地加速GenAI
应用的开发进程。
原文
Dear friends,
我注意到许多生成式 AI (Generative AI) 应用项目,在自动化评估 (evaluations) 方面,启动时间往往滞后于应有时间;而且,相较于及早采用自动化评估,他们花费了过多的时间依赖人工进行手动检查和判断。这主要是因为构建评估体系被视为一项巨大的投资 —— 例如,需要创建 100 甚至 1,000 个示例,并设计和验证各项指标。 此外,团队总是很难找到一个合适的时间点来投入这笔前期成本。因此,我鼓励大家将构建评估体系视为一个迭代过程。即使从一个快速且粗糙的实现方案开始也是完全可行的 (例如,仅使用 5 个示例和未经优化的指标),然后随着时间的推移逐步改进。 这样,你就可以逐渐地将评估的重心从人工评估转移到自动化评估上来。
我之前曾撰文 [20] 探讨过创建评估体系的重要性和难度。 假设你正在构建一个客户服务聊天机器人,它需要以自由文本的形式回复用户。 由于答案不唯一,许多团队最终不得不安排人工,仔细审查每次更新后产生的数十个示例输出,以此来判断系统性能是否得到了提升。 尽管使用大语言模型 (LLM) 作为评判这样的技术有所帮助,但要使其良好运行,需要对诸多细节进行调整 (例如,使用什么提示语、为评判者提供什么样的上下文等),而这些细节很难精确把握。 凡此种种,都给人一种印象:构建一套有效的评估体系需要大量的前期投资。 因此,在实际工作中,团队可能会觉得依赖人工评判,比费尽心思构建自动化评估体系更能加快项目进展。
因此,我建议大家以不同的思路来构建评估体系。 可以先构建一个快速评估体系,即使它只能对系统性能进行部分、不完整和有噪音的衡量,也没有关系, 关键在于通过不断迭代来完善它。 这种快速评估体系可以作为人工评估的补充手段,而不是完全替代人工评估。 随着时间的推移,你可以逐步调整评估方法,从而缩小评估输出与人工判断之间的差距。 例如:
- 在评估集合中,即使一开始只有极少的示例也是可以接受的,比如 5 个。 之后,可以随着时间的推移逐步添加示例。 当然,如果发现某些示例过于简单或过于困难,对区分系统不同版本的性能没有帮助,也可以将其删除。
- 从仅评估你关心的性能指标的一个子集开始,也是可以的。 或者,也可以先评估一些你认为与系统性能相关、但不能完全反映系统性能的指标。 比如,如果你的客户支持智能体需要在对话的某个时刻,(i) 调用应用程序接口 (API) 来处理退款事宜,并且 (ii) 向用户发送一条合适的消息。 那么,你可以先只评估它是否正确调用了 API,而暂时不关注发送的消息内容。 再比如,如果你的聊天机器人应该在某个时刻推荐一款特定的产品,那么一个基础的评估方法可以是只检查聊天机器人是否提到了该产品,而无需关注它对该产品做了什么样的描述。
总而言之,只要评估体系的输出结果与整体性能存在相关性,那么在初期阶段,只评估你所关心的部分指标也是完全可行的。

因此,开发过程包含两个可以并行执行的迭代循环:
- 迭代优化系统,以提高其性能。 这可以通过结合自动化评估和人工判断来实现。
- 迭代优化评估体系,使其结果与人工判断更加吻合。
与人工智能领域的许多事情一样,我们通常无法一蹴而就。 因此,最好的方法是快速构建一个初步的端到端系统,然后通过不断迭代来改进它。 我们已经习惯于使用这种方法来构建 AI 系统, 同样,我们也可以用类似的方法来构建评估体系。
在我看来,一个成功的评估体系应满足以下标准。 假设我们目前有一个系统 A,并且我们对其进行调整后得到了系统 B:
- 如果一位经验丰富的人工评估员认为系统 A 明显优于系统 B,那么评估体系应该给 A 赋予明显高于 B 的评分。
- 如果系统 A 和系统 B 的性能相近,那么它们的评估分数也应该相近。
每当系统 A 和 B 的评估结果与上述标准相悖时,就表明评估体系存在“误差”, 我们应该对其进行调整,以确保它能够正确地对 A 和 B 进行排序。 这种理念与构建机器学习算法时所采用的误差分析 [21] 类似。 唯一的区别在于,我们关注的不是机器学习算法输出的错误 (例如,输出不正确的标签),而是评估体系的“误差” —— 比如,当评估体系错误地对系统 A 和 B 进行排序时,那么这样的评估体系就无法帮助我们在这两者之间做出选择。
完全依赖人工判断是启动项目的好方法。 但对许多团队来说,将评估体系构建为一个快速原型,并通过迭代使其更加成熟,能够帮助你更早地应用评估,并加速项目的进展。
继续努力!
Andrew