评估基准在人工智能研究中的重要性

580 阅读9分钟

评估基准在人工智能研究中的重要性

人工智能研究中,评估基准(evaluation benchmarks,简称"evals")是一个常用但却常被忽视的工具。

Evals实际上是AI研究社区的激励因素,许多突破性进展往往与某个eval上的巨大性能提升密切相关。

事实上,我认为团队负责人的一项关键工作就是决定优化哪个eval。

那么,什么样的eval算是成功的呢: 我认为,如果一个eval被突破性论文所采用,并在社区内获得信任,那它显然就是成功的。

过去五年中一些成功的evals包括:

  • GLUE/SuperGLUE:大语言模型(LLM)出现前,几乎所有NLP论文都使用它(如BERT、T5等)。
  • MMLU:几乎所有LLM论文都使用。它是DeepMind和Google的最爱。
  • GSM8K:激发了用于推理的LLM,每篇关于思维链(chain-of-thought)的论文都用它。
  • MATH:大多数LLM论文也使用它。
  • HumanEval:它是评估编程能力LLM的经典eval。

当然这不是一个全面的列表,还有其他不错的evals如HellaSwag、SQuAD等。

我自己也做了两个比较流行的eval。MGSM被OpenAI的SimpleEvals、Claude和Gemini采用。BBH被Claude、Gemini和Llama使用。我觉得它们还不错,但还达不到最佳水平。

成功evals的一个共同点是,有重要论文使用该eval宣称取得了某种胜利。GLUE是BERT推广的。MMLU是Gopher、Chinchilla和Flan-PaLM推广的。思维链提示声称在GSM8K上取得突破。Minerva在MATH上展示了强大实力。Codex等尝试了HumanEval。

再深入一点,在eval上取得好成绩必须意味着某些重大而易于理解的东西。例如,实现超人表现是非常容易理解的。解决小学水平的数学问题也是人们很容易理解其意义的。

搞砸一个eval比做一个好的eval要容易得多。大多数不成功的evals至少犯了一个错误。

1、如果一个eval的样本数不够多,它会很嘈杂,给研究人员带来糟糕的使用体验。比如有人可能在模型训练过程中运行eval,发现从一个checkpoint到另一个checkpoint波动很大。这会让研究人员很痛苦,他们不会喜欢使用它。最好给你的eval准备至少1000个样本;如果是多选题的话,可能需要更多。虽然GPQA是一个不错的eval,但事实上它会根据提示波动,这使得它很难使用。

2、Evals应该是高质量的。如果你的eval中有很多错误,人们就不会信任它。例如,我曾长期使用Natural Questions(NQ)。但GPT-4达到了一个阈值,如果GPT-4在一个测试样本上答错了,更可能是eval提供的ground truth答案错了。所以我不再使用NQ了。

3、如果你的eval太复杂,人们就很难理解它,它的使用率也会降低。我认为HELM的第一个版本是一次很棒的尝试,但它的指标和子集实在太多了。拥有一个单一数值的指标至关重要——我想不出任何一个好的eval没有单一数值指标。

4、如果你的eval运行起来需要太多工作,即使其他方面都很好,它也不会获得关注。BIG-Bench是我最喜欢的evals之一,但运行起来非常痛苦。它既有对数概率型evals,也有生成型evals,需要不同的基础设施。它有太多子集,其中一些有太多样本,所以运行起来需要很长时间。我相信这就是为什么尽管BIG-Bench提供了大量信号,但没有获得太多关注。

5、如果一个eval不是在一个有意义的任务上,AI研究人员不会深切关心它。例如,在BIG-Bench Hard中,我们有推荐电影或正确关闭括号这样的任务。这些任务很有挑战性,而且随着模型规模的增长而变化良好,但在这些任务上表现出色并不能让人对模型的智能做出实质性的结论。成功的evals通常衡量智能的核心内容,如语言理解、考试题或数学。

6、你的eval中的评分应该非常正确。如果有人在调试他们的模型为什么被错误地评分,而他们不同意这个评分,那就是一个快速让他们放弃你的eval的方法。花时间最小化解析错误或拥有最佳的自动评分提示是值得的。

7、为了经得起时间考验,eval的性能不能太快饱和。例如,GLUE/SuperGLUE太快饱和了,很难再显示出大的进步,人们就不再使用它们了。语言模型在总结、翻译等任务上的进步速度也快于我们为这些任务开发好的evals,所以我们不再衡量这些任务了。

有趣的是,似乎大多数好的evals都有很糟糕的名字。GSM8K不需要"8K",HumanEval实际上并不使用人类进行评估(之所以叫HumanEval是因为这些问题是由人类创建的)。MATH太过通用,所以人们开始称之为"Hendrycks-math",我想这是让人们以你的名字命名一个eval的聪明办法。

如果你想让你的eval获得成功,你应该帮助人们使用它。例如,当我做一个eval时,我通常会主动为其他人在他们的模型上运行它。如果他们的模型表现良好,他们就会喜欢这个eval并推广它。HELM在尝试为其他人的模型进行评估并公布结果方面做得很好。

创造激励措施让人们使用你的eval也有帮助。对人们来说最好的激励之一是他们的经理看重什么。所以让你实验室或公司内的经理们认可你的eval,让他们要求下属运行它,可能会有回报。当我在Google创建MGSM时,我与不同团队的Dipanjan Das合作。我和他合作是因为他是个有趣的人(不是为了推广eval),但我想他喜欢它,它在他的团队中获得了一些人气。

LLM让评估变得更加困难。LLM是大规模的多任务模型,会给出很长的回答。目前还没有一个单一的eval可以充分评估LLM。当前流行的evals仍然使用非常简单的评分方式(要么是多项选择题,要么是检查一个数字,要么是运行单元测试)。即便如此,它们也存在问题,比如决定提示或解析答案。如果我们能围绕单一提示达成共识就好了,比如零样本思维链。我知道出于许多原因这不是一个完美的解决方案,但我认为为了让大家达成一致,付出这个代价是合理的。

一个新的方向是对模型进行人工成对评分,如LMSYS。这类evals的通用性是把双刃剑。它们很强大,因为你可以在一组通用提示上获得衡量语言模型优劣的单一数值指标,而且样本级别的噪声可以通过大量样本平均化。成对evals的危险之处在于,你不确定你在衡量什么——例如,感受和风格相比正确性的权重并不完全清楚。

使用模型生成的evals也变得有点流行。虽然我倾向于认为模型生成的evals很难搞,但如果做得好,它们可以用于快速实验和观察性能的大幅提升。但创建一个经得起时间考验的优秀eval需要花很多心思,我不想冒任何风险使用合成的evals。

一个显而易见的说法是,eval的主题决定了有多少人会关心这个eval。有可能创建一个非常高质量的特定领域eval(如法律、医学等),在这些情况下,最重要的是根据该领域专家的价值观来定制eval。然而,对自己的期望值设定很重要,要对eval会有多流行有个概念。我曾经做过一个组织病理学图像的基准测试,不出所料,它在医学图像分析领域之外没有获得任何关注,只获得了40次引用。话虽如此,也有可能随着越来越多的人意识到你创建的特定领域eval的重要性,它会获得更多关注。例如,OpenAI在编写代码的LLM上投入巨大,我相信在Codex和Github CoPilot等取得成功后,更多人对编程LLM产生了兴趣。

Evals面临的一个日益重要的问题是测试集污染。在创建了一个好的eval之后,eval的样本往往会传播到互联网上的各个地方,如arxiv论文、ChatGPT样本或reddit。一种解决方案是保密测试集,但这种方法会带来很多阻力。Chris Manning提出了一个好建议,一个eval应该同时拥有公开测试集和私有测试集,并监测模型在这两个测试集上是否有明显偏差。这种方法在公开测试集上测试的低摩擦和私有测试集的高可信度之间取得了平衡。

我注意到的最后一点是,你关心的eval反映了很多你的身份。一屋子博士可能会对语言模型在数学、编程和物理方面推理的能力感兴趣。相反,我看到像LMSYS这样面向用户的evals被那些有软件或产品背景的工程师视为黄金标准。虽然我两者都关心,但我个人更倾向于智能,因为我相信智能是AI与人类互动方式的根本驱动力。

尽管做evals可能很痛苦,通常也没有模型工作得到那么多奖励,但作为一个社区,我们应该多投资一点evals。归根结底,好的evals(在适当的认可下)是AI研究人员的目标函数,它们是影响该领域的有力方式。