排行榜文档
分数归一化
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
分数归一化
此页面解释了 Open LLM 排行榜上六个展示的基准的分数是如何归一化的。我们可以将所有任务分为有子任务的任务、没有子任务的任务和生成式评估。
注意: 点击上面的按钮,在交互式笔记本中探索分数归一化过程(制作副本进行编辑)。
什么是归一化?
归一化是将不同尺度上测量的数值调整到共同尺度的过程,从而可以比较不同任务之间的分数。对于 Open 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 上更新