分数标准化
本页面解释了开放 LLM 排行榜上如何对六个展示的基准测试中的分数进行标准化。我们可以将所有任务分类为具有子任务的任务、没有子任务的任务和生成式评估。
注意:点击上面的按钮以在交互式笔记本中探索分数标准化过程(复制以编辑)。
什么是标准化?
标准化是将不同尺度上测量的值调整到一个共同尺度的过程,从而可以比较不同任务之间的分数。对于开放 LLM 排行榜,我们对分数进行标准化以
- 考虑不同任务的难度和随机猜测基线差异。
- 为所有任务提供一致的尺度(0-100),实现公平比较。
- 确保随机猜测上的改进在分数中得到适当体现。
通用标准化过程
基本的标准化过程包括两个步骤
- 减去随机基线分数(下限)。
- 将结果缩放到 0-100 的范围。
我们使用以下标准化函数
def normalize_within_range(value, lower_bound, higher_bound):
return (value - lower_bound) / (higher_bound - lower_bound)
标准化无子任务的任务
对于没有子任务的任务(例如,GPQA、MMLU-PRO),标准化过程很简单
- 确定下限(随机猜测基线)。
- 应用标准化函数。
- 缩放到百分比。
示例:标准化 GPQA 分数
GPQA 有 4 个 num_choices
,所以下限是 0.25(1/num_choices
= 1/4 = 0.25)。
raw_score = 0.6 # Example raw score
lower_bound = 0.25
higher_bound = 1.0
if raw_score < lower_bound:
normalized_score = 0
else:
normalized_score = normalize_within_range(raw_score, lower_bound, higher_bound) * 100
print(f"Normalized GPQA score: {normalized_score:.2f}")
# Output: Normalized GPQA score: 46.67
标准化具有子任务的任务
对于具有子任务的任务(例如,MUSR、BBH),我们遵循以下步骤
- 计算每个子任务的下限。
- 标准化每个子任务分数。
- 平均标准化的子任务分数。
示例:标准化 MUSR 分数
MUSR 有三个具有不同选择数量的子任务
- MUSR 谋杀之谜,num_choices = 2,下限 = 0.5
- MUSR 物体放置,num_choices = 5,下限 = 0.2
- MUSR 团队分配,num_choices = 3,下限 = 0.33
subtasks = [
{"name": "murder_mysteries", "raw_score": 0.7, "lower_bound": 0.5},
{"name": "object_placement", "raw_score": 0.4, "lower_bound": 0.2},
{"name": "team_allocation", "raw_score": 0.6, "lower_bound": 0.333}
]
normalized_scores = []
for subtask in subtasks:
if subtask["raw_score"] < subtask["lower_bound"]:
normalized_score = 0
else:
normalized_score = normalize_within_range(
subtask["raw_score"],
subtask["lower_bound"],
1.0
) * 100
normalized_scores.append(normalized_score)
print(f"{subtask['name']} normalized score: {normalized_score:.2f}")
overall_normalized_score = sum(normalized_scores) / len(normalized_scores)
print(f"Overall normalized MUSR score: {overall_normalized_score:.2f}")
# Output:
# murder_mysteries normalized score: 40.00
# object_placement normalized score: 25.00
# team_allocation normalized score: 40.00
# Overall normalized MUSR score: 35.00
生成式评估
像 MATH 和 IFEval 这样的生成式评估需要不同的方法
- MATH:使用精确匹配准确率。下限实际上是 0,因为随机猜测不太可能产生正确的答案。
- IFEval
- 对于实例级评估 (
ifeval_inst
),我们使用严格准确率。 - 对于提示级评估 (
ifeval_prompt
),我们也使用严格准确率。 - 两者的下限都是 0,因为随机生成不太可能产生正确的答案。
- 对于实例级评估 (
这种方法确保即使对于生成式任务,我们也可以提供可比较不同评估的标准化分数。
更多信息
有关更详细的信息和示例,请参阅我们关于分数标准化的博文。
如果您有任何疑问或需要澄清,请在排行榜页面上发起新的讨论。
< > 在 GitHub 上更新