GSM8K基准测试

Grade School Math 8K Benchmark

概述

GSM8K是OpenAI于2021年发布的数学推理基准数据集,包含8,500道小学水平的数学应用题。 旨在评估语言模型的数学推理能力,特别是多步骤问题求解能力。

核心特点:小学数学题、多步骤推理、需要计算能力、链式思维评估。

数据集结构

子集题目数量用途
训练集7,473训练/微调
测试集1,319评估

题目示例

问题:
A robe takes 2 bolts of blue fiber and half that much white fiber.
How many bolts in total does it take to make 2 robes?

解答:
Blue fiber per robe: 2 bolts
White fiber per robe: 2 / 2 = 1 bolt
Total fiber per robe: 2 + 1 = 3 bolts
Total fiber for 2 robes: 3 × 2 = 6 bolts

答案:6

每道题包含问题描述和逐步解答过程,最终答案是一个整数。

评估方式

直接回答

模型直接输出答案,计算准确率:

Accuracy = 正确答案数 / 总题数

链式思维(Chain-of-Thought)

鼓励模型输出推理步骤,提高解题正确率:

  • 提供推理步骤的few-shot示例
  • 引导模型逐步思考
  • 显著提高复杂问题的正确率

模型表现

模型准确率发布时间
Claude 3.5 Sonnet96.4%2024.06
GPT-4o95.3%2024.05
Gemini 1.5 Pro91.7%2024.02
Claude 3 Opus95.0%2024.03
GPT-492.0%2023.03
Llama 3 70B93.0%2024.04

使用方法

from datasets import load_dataset

# 加载数据集
dataset = load_dataset("gsm8k", "main")

# 评估示例
for example in dataset["test"]:
    question = example["question"]
    answer = example["answer"]
    
    # 提取最终答案(#### 后的数字)
    final_answer = answer.split("#### ")[1]
    
    # 使用模型生成答案
    prediction = model.generate(question)
    
    # 比较
    if extract_number(prediction) == float(final_answer):
        correct += 1

难度分析

  • 问题类型:算术运算、单位换算、比例问题等
  • 平均步骤:约2-8步推理
  • 数值范围:整数和小数运算
  • 语言特点:自然语言描述,需要理解题意

相关基准

MATH

竞赛级数学题目,难度更高,涵盖代数、几何、概率等。

SVAMP

简单数学文字题,GSM8K的补充数据集。

ASDiv

多样化的数学问题数据集。

GSM8K-Hard

GSM8K的困难子集。

局限性

  • 仅覆盖小学数学难度
  • 答案都是整数
  • 可能存在数据污染
  • 不测试更高级的数学概念

参考资料

  • Training Verifiers to Solve Math Word Problems (Cobbe et al., 2021)
  • Chain-of-Thought Prompting Elicits Reasoning (Wei et al., 2022)
  • GSM8K Dataset on Hugging Face
----