一道小学数学题难在哪里
小学数学应用题通常是一小段文字:描述一个情境,给几个数字,最后问一个问题,解答需要两三步算术。它不涉及高深数学,难的是同时做几件事——读懂文字、判断哪些数量有用、决定先算什么后算什么、再把每一步算对。正因为如此,这类题适合用来检验一个语言模型是真的在推理,还是只在套用表面模式。
2021 年 10 月 27 日,Karl Cobbe、Vineet Kosaraju、Mohammad Bavarian、Mark Chen 以及另外 8 位 OpenAI 作者在 arXiv 上提交了论文,把这类题做成了一个基准数据集,并提出了一种提升成绩的办法。[1]
GSM8K 数据集
论文发布的 GSM8K 包含 8.5K 道高质量、语言多样的小学数学应用题。[1]「语言多样」意味着题目不是照同一个模板改写出来的,措辞和叙述方式各不相同,模型很难靠背下某一种句式来取巧。
最大的模型也做不好
作者发现,即便是规模最大的 Transformer 模型,在这个数据集上的测试表现也不高,尽管这类题的思路本身很简单。[1] 这个反差是整篇论文的出发点:题目对人容易,对当时的模型却不容易,说明缺的不是数学知识,而是把一段自然语言稳定地转成多步计算的能力。
验证器:多生成,再挑一个
作者提出的办法是训练验证器(verifier)。生成答案的模型负责给出解答;验证器则是另外训练的模型,任务是看一道题和一份候选解答,判断这份解答对不对。[1] 测试时,系统对同一道题生成许多份候选解答,再选出验证器打分最高的那一份作为最终答案。[1]
这个思路把压力从「一次就答对」转移到「在一堆候选里认出对的」。生成模型不必每次都正确,只要正确的解法出现在候选里,并且验证器有能力把它挑出来。也正因为如此,方法的效果取决于验证器的判断力:如果它分不清对错,在候选中挑选就帮不上忙。
结果
作者报告,验证显著提升了模型在 GSM8K 上的表现。[1] 与微调(finetuning)基线相比,验证的做法在数据量增加时扩展得更好——换句话说,给出更多数据,验证方案的成绩提升比直接微调更明显。[1]
实验以 GPT-3 系列模型为起点,主要关注 175B 和 6B 两个规模。[2] 作者估计,175B 模型很可能还需要至少两个数量级(约一百倍)的训练数据,才能达到 80% 的解题率。[2] 这个估计本身就是一条结论:差距不是靠多加一点数据就能补上的。
为什么重要
这篇论文留下了两样东西。一样是一个基准:一组题面清楚、贴近常识的数学应用题,把「模型会不会多步推理」变成一个可以测量的分数。[1] 另一样是一个方法论上的提醒:提升模型能力不只可以靠更大的模型和更多的训练数据,也可以靠在测试时多花算力——生成多个候选,再用一个验证器从中挑选。[1] 论文对数据需求的估计说明,单靠堆训练数据走到 80% 解题率,代价可能非常大;而验证这条路线在同样的数据增量下走得更快。[1][2]
注释与来源
- Training Verifiers to Solve Math Word Problemshttps://arxiv.org/abs/2110.14168
- 2110.14168 (full text, HTML)https://ar5iv.labs.arxiv.org/html/2110.14168
引用本页: 《训练验证器求解数学应用题》(GSM8K). TellWorld, https://www.tellworld.net/zh/papers/gsm8k. 更新于 2026-11-08