打开LLM排行榜:深入挖掘DROP

揭秘LLM排行榜:探索DROP的魅力

最近,在Open LLM排行榜上增加了三个新的基准:Winogrande、GSM8k和DROP,使用EleutherAI Harness中重新复现的原始实现。浏览DROP的分数时,我们发现了一些奇怪的事情,绝大多数模型的f1-score都低于10分!我们深入研究了一下,一起来看看我们发现了什么!

初始观察

DROP(段落的离散推理)是一个评估任务,模型必须从英文段落中提取相关信息,然后对它们执行离散推理步骤(例如,对项进行排序或计数以得出正确答案,具体示例请参见下表)。使用的度量标准是自定义的f1-score和完全匹配分数。

我们在三周前将它添加到Open LLM排行榜上,并观察到预训练模型的f1-score遵循着一个意外的趋势:当我们将DROP分数与排行榜上的原始平均值(ARC、HellaSwag、TruthfulQA和MMLU)绘制在一起时,这个原始平均值在一定程度上可以代表模型的整体性能,我们期望DROP的得分与它有关(性能更好的模型得分更高)。然而,只有少数模型符合这一点,其它绝大多数模型的DROP f1-score非常低,低于10分。

规范化质疑

在我们深入研究这个令人惊讶的行为时,我们观察到规范化步骤可能没有按预期工作:在某些情况下,当正确的数值答案直接后面跟着一个非空格的空白字符(例如换行符)时,规范化步骤会忽略掉这个正确的数值答案。让我们看一个例子,生成的答案是10\n\n段落:2011年人口普查记录了1,001,360人口,黄金答案是10

规范化有几个步骤,包括生成答案和黄金答案:

  1. 用分隔符 |-.进行拆分。生成的开始部分10\n\n段落:中没有这样的分隔符,因此在这个步骤之后它被视为一个单个实体。
  2. 移除标点符号 第一个标记变成10\n\n段落(移除了:
  3. 统一化数字 可以转换为浮点数的任何字符串都被视为数字并转换为浮点数,然后再重新转换为字符串。10\n\n段落保持不变,因为它无法转换为浮点数,而黄金答案10则变成了10.0
  4. 其他步骤 还有很多其他规范化步骤(删除冠词、删除其他空格等),我们的原始例子变成了10 passage 2011.0 census recorded population of 1001360.0

然而,总体得分不是在字符串上计算的,而是在从字符串中提取的词袋(BOW)上计算的,这里是{'recorded', 'population', 'passage', 'census', '2011.0', '1001360.0', '10'},与黄金答案的词袋相比,它也经过了上述方式的规范化,{10.0}。正如你所看到的,它们没有交集,尽管模型预测了正确的输出!

总结一下,如果一个数字后面跟着除了空格以外的任何类型的空格,它就不会经过数字规范化的步骤,因此永远不会与黄金答案匹配,如果黄金答案也是一个数字的话!这个问题很可能导致得分出现较大问题,但显然不是导致DROP得分如此低的唯一因素。我们决定进一步调查一下。

深入研究结果

在我们的调查扩展后,我们的朋友们在Zeno加入了我们,并进行了更彻底的探索,关注了5个代表我们在DROP得分中观察到的问题的模型:falcon-180B和mistral-7B的表现不如预期,Yi-34B和tigerbot-70B在DROP上表现非常出色且与平均得分相关,而facebook/xglm-7.5B则居于中间。

如果你想的话,你可以在这里尝试分析Zeno项目的结果!

Zeno团队发现了两个更令人担忧的特征:

  1. 没有一个模型在浮点数答案上得到正确的结果
  2. 生成长答案的高质量模型实际上具有更低的F1分数

在这一点上,我们认为这两种失败情况实际上是由同一个根本因素引起的:使用作为停止词标记(用于结束生成):

  1. 浮点数答案在生成完整之前被系统性中断
  2. 高质量模型试图匹配少示例提示格式,将生成Answer\n\nPlausible prompt for the next question.,并且仅在第一个后的合理提示继续生成,因此生成了太多的单词并得到了糟糕的F1分数。

我们假设可以通过使用\n而不是作为生成结束词来解决这两个问题。

更改生成结束词

所以我们试试看!我们调查了在现有结果中使用\n作为生成结束词。如果生成的答案中存在\n,我们将其在第一个\n处分割,并重新计算分数。请注意,这仅是正确结果的近似,因为它不会修复引导符太早截断(例如浮点数答案)的问题 – 但它也不会给任何模型带来不公平的优势,因为所有模型都受到了这个问题的影响。但是这是我们能够在不重新运行模型的情况下做到的最好的,因为我们希望尽快向社区发布更新内容。

我们得到的结果如下 – 在\n上进行分割与其他分数非常相关,因此与整体性能相关。

接下来是什么?

一个快速的计算显示,重新运行所有模型的完整评估将非常昂贵(完全更新花费了8年的GPU时间,其中很大一部分是由DROP占用的),我们估计仅重新运行失败案例会花费多少。

在10%的情况下,金标答案是一个浮点数(例如12.25),模型的预测以正确的开头(对于我们的示例是12),但是在.处截断 – 如果生成继续进行,这些预测可能实际上是正确的。我们肯定需要重新运行它们!我们的估计不包括以可能被截断的数字结尾的生成句子(其他生成的40%),也不包括由于规范化而被破坏的任何预测。

为了获得正确的结果,我们因此需要重新运行超过50%的示例,这是巨大的GPU时间!我们需要确保这次运行的实现是正确的。

在与出色的EleutherAI团队(在GitHub和内部)讨论后,他们指导我们的代码并协助我们的调查,非常明确的是,LM Eval Harness的实现严格遵循了“official DROP”代码:因此需要开发该基准的新版本!因此,我们决定从Open LLM排行榜中移除DROP,直到出现新版本。

这个调查带来的一个收获是,在社区的众多眼睛共同调查一个基准以检测以前被忽视的错误的价值。再次展现了开源、社区和公开开发的力量,因为它允许透明地调查一个已经存在了几年的基准的根本原因。

我们希望对DROP评估工作的学术界感兴趣的成员能够与社区合作,修复其评分和规范化的问题。我们希望它能够再次可用,因为数据集本身真的非常有趣和酷。我们鼓励您就如何评估DROP在这个问题上提供反馈意见。

感谢许多社区成员指出DROP分数的问题,以及EleutherAI Harness和Zeno团队在这个问题上的大力帮助。