亲爱的朋友们,
我注意到许多通用人工智能(GenAI)应用项目在系统输出的自动化评估(evals)方面投入的时间可能较晚,而且相比之下,他们依赖人工手动检查和判断输出的时间也更长。这是因为构建评估被视为一项巨大的投资(例如,创建100或1000个示例,以及设计和验证指标),而且永远没有方便的时刻来进行这种前期成本投入。因此,我鼓励团队将构建评估视为一个迭代过程。从快速而粗略的实现开始(比如,5个带有未优化指标的示例),然后随着时间的推移进行迭代和改进是可以接受的。这使您能够逐渐将评估的负担从人类转移到自动化评估。
我之前写过关于创建评估的重要性和难度。假设您正在构建一个客户服务聊天机器人,以自由文本回复用户。没有唯一的正确答案,因此许多团队最终都会让人工详细阅读每次更新的数十个示例输出,以判断系统是否有所改进。虽然像LLM-as-judge这样的技术很有帮助,但要使此技术有效(例如,使用什么提示,向评委提供什么上下文等等)的细节非常繁琐。所有这些都加剧了这样一种印象,即构建评估需要大量的前期投资,因此在任何一天,团队都可以通过依靠人工判断而不是弄清楚如何构建自动化评估来取得更大的进展。
我鼓励您以不同的方式进行构建评估。构建仅是系统性能的部分、不完整和嘈杂度量的快速评估是可以接受的,并且可以迭代地改进它们。它们可以作为手动评估的补充,而不是替代。随着时间的推移,您可以逐渐调整评估方法,以缩小评估输出与人工判断之间的差距。例如:
- 在评估集中从很少的示例开始是可以的,例如5个,并随着时间的推移逐渐添加它们 - 或者如果您发现某些示例太容易或太难,并且对于区分系统不同版本的性能没有用,则可以减去它们。
- 从仅衡量您关心的性能维度的子集或衡量您认为与系统性能相关但不能完全捕获系统性能的狭窄线索的评估开始是可以的。例如,如果在对话中的某个时刻,您的客户支持代理应该(i)调用API来发放退款,并且(ii)生成适当的消息给用户,您可以首先仅测量它是否正确调用了API,而不必担心消息。或者,如果在某个时刻,您的聊天机器人应该推荐特定产品,则基本评估可以衡量聊天机器人是否提及该产品,而不必担心它说了什么。
只要评估的输出与整体性能相关,就可以在开始时仅测量您关心的事物的一个子集。
因此,开发过程包括两个迭代循环,您可以并行执行它们:
- 迭代系统以使其性能更好,通过自动化评估和人工判断的组合来衡量;
- 迭代评估以使其更紧密地对应于人工判断。
与人工智能中的许多事物一样,我们通常不会第一次就做对。因此,最好快速构建一个初始的端到端系统,然后迭代以改进它。我们习惯于采用这种方法来构建人工智能系统。我们可以以相同的方式构建评估。
对我来说,成功的评估满足以下标准。假设,我们目前有系统A,我们可以调整它以获得系统B:
- 如果根据熟练的人工判断,A比B好得多,则评估应给A的分数明显高于B。
- 如果A和B具有相似的性能,则它们的评估分数应相似。
每当系统A和B的对与这些标准相矛盾时,就表明评估存在“错误”,我们应该调整它以使其正确地对A和B进行排名。这与构建机器学习算法中的错误分析类似,只是我们不关注机器学习算法输出的错误(例如,当它输出不正确的标签时),而是关注评估的“错误”(例如,当它们错误地对两个系统A和B进行排名时),因此评估无助于在它们之间进行选择。
纯粹依靠人工判断是开始一个项目的好方法。但是对于许多团队来说,将评估构建为一个快速原型并迭代到更成熟的东西可以让您更早地进行评估并加速您的进度。
继续建设!
安德鲁
总之,构建AI应用并非一蹴而就,评估环节同样需要拥抱迭代精神。从小处着手,逐步完善,让人工智能系统在不断试错中成长。