设想你是一名经验丰富的阅卷老师,被安排批改全市八千名小学生的数学应用题。每一份卷面上,学生都留下了密密麻麻的演算草稿,而你要做的第一件事,不是判断对错,而是在草稿中找出学生最终圈出的那个答案——它可能写在“答:”后面,可能画了个框,也可能藏在最后一行字里。找到答案后,你还得快速核验:这个答案格式对吗?数值合理吗?和前面的解题过程对得上吗?只有当“找到”和“核验”都完成,你才敢在这份卷子上打勾。GSM8K 评测大模型的方式,和这场阅卷如出一辙:模型输出一大段自由文本的推理过程,评测系统需要“答案抽取器”从中定位最终答案,再用“答案验证器”逐项核验,最后才与标准答案比对评分。这套双重检查机制,是评测结果可靠性的基石。

岗位关联

对 AI 从业者而言,答案抽取与验证是评测闭环中最容易出问题的环节,掌握它,才能让模型分数真正反映模型能力,为技术迭代提供可信的决策信号。

目录
  1. 可视化演示
  2. 评测任务背景:一场八千人参加的数学大考
  3. 答案抽取器:在演算草稿里翻出答案框
  4. 答案验证器:拿着放大镜逐项核验
  5. 双重检查机制:阅卷老师与组长双保险
  6. 评测信号价值:一次公平大考推动集体进步
  7. 技术实现方案:把阅卷经验写成代码
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

交互展示GSM8K评测中答案抽取与验证的协同机制:抽取器定位最终答案,验证器多维度检查格式、范围与推理一致性,确保评测可靠性。

本节配有交互动效(进入视口后自动加载,约 3KB)。

答案抽取流程 抽取器扫描推理链定位最终答案 正则匹配提取数值型答案 ans = extract(reasoning_chain) 从多步推理中精确定位最终数值答案

评测任务背景:一场八千人参加的数学大考

一所城市举办了一场八千名小学生参加的数学统考。考题是应用题,每个学生都自由作答,在草稿纸上写下一长串演算,再圈出最终答案。作为阅卷组长,你面临的第一个难题根本不是“怎么判对错”,而是“怎么在五花八门的卷面上找到要判的东西”。GSM8K 评测面对的正是这个难题。

GSM8K 是由 OpenAI 发布的小学数学应用题基准,包含约 8500 道题目,覆盖加减乘除与多步推理。参与评测的大模型就像那些考生,输出的是自由文本——先是一段推理过程,最后给出答案。计算机无法像人一样一眼扫出“答案框”,必须设计专门的抽取与验证流程,把自由文本变成可比的“标准答案形式”。

一台自动阅卷机的核心能力是“稳定地找到并核验答案”。评分系统先让答题内容经过抽取器,拿到候选答案;再经过验证器,确认答案可信;最后与标准答案比对,得到准确率。这个流程的可靠性,直接决定了评测结果能不能被当作模型能力的真实信号。

就像阅卷组长最终要给出“全校平均分”来评估教学质量,GSM8K 的准确率就是衡量模型数学能力的“全校平均分”。而平均分是否可信,取决于每一份卷子是否被认真找到并核验过答案——这正是抽取与验证存在的意义。

Accuracy=1N∑i=1N1[a^i=ai∗]\displaystyle \text{Accuracy} = \frac{1}{N}\sum_{i=1}^{N}\mathbb{1}[\hat{a}_i = a_i^{*}]
这个公式的意思是:把所有题目里“模型答对”的个数除以总题数,就得到评测准确率。
  1. 累加求和把 N 道题的判断结果逐一加起来,相当于数出一共答对了几道题。
    ∑i=1N\displaystyle \sum_{i=1}^{N}
  2. 指示函数当模型答案与标准答案相等时取值 1,否则取值 0,起到“答对计一分”的作用。
    1[a^i=ai∗]\displaystyle \mathbb{1}[\hat{a}_i = a_i^{*}]
  3. 取平均除以题目总数 N,得到 0 到 1 之间的比率,即正确率。
    1N\displaystyle \frac{1}{N}

答案抽取器:在演算草稿里翻出答案框

阅卷老师批改应用题的第一道工序,不是看算得对不对,而是在演算草稿里翻出学生圈出的那个“最终答案框”。有的学生把答案写在最后一行,有的画了框,有的写了“答:”。老师必须快速判断:哪一处才是真正的最终答案?

答案抽取器扮演的正是这个角色。它的输入是大模型输出的整段推理文本,输出是一个候选答案。抽取器主要依赖三条线索:位置线索——最终答案通常出现在文本末尾;触发词线索——"The answer is"、"Answer:"、\boxed{} 等标记词附近;格式线索——答案往往是单纯的数字,而不是完整句子。

实际抽取器常把这些线索组合成一个打分函数:每个出现在文本中的数字都被视为候选,位置越靠后得分越高,紧跟触发词的数字额外加分,最终选出分数最高的那个作为答案。这种设计让抽取器在推理文本夹杂大量中间数字时,依然能稳住“目标”。

老师的经验是“先找框,再看框里的字”,抽取器同样是“先定位置,再取数值”。有了可靠的抽取器,后面所有核验工作才谈得上有对象。

a^=arg⁡max⁡x∈Nums(T)[wpos(x)+wtrig(x)]\displaystyle \hat{a} = \arg\max_{x \in \text{Nums}(T)} \big[ w_{\text{pos}}(x) + w_{\text{trig}}(x) \big]
公式的含义:把文本里所有数字当作候选,按“位置靠后”和“紧跟触发词”两个维度打分,分数最高的那个就是最终答案。
  1. 候选数字集合先取出文本 T 中出现的所有数字,形成待选池。
    x∈Nums(T)\displaystyle x \in \text{Nums}(T)
  2. 位置权重越靠近文本末尾的数字,w_pos 越大,对应“答案常在结尾”的经验。
    wpos(x)\displaystyle w_{\text{pos}}(x)
  3. 触发词权重紧跟 “answer is“ 等标记的数字获得 w_trig 额外加成,相当于学生写了”答:”二字的位置。
    wtrig(x)\displaystyle w_{\text{trig}}(x)
  4. 取最大值遍历所有候选,选出综合得分最高的数字作为最终答案。
    arg⁡max⁡x(⋅)\displaystyle \arg\max_{x}(\cdot)

答案验证器:拿着放大镜逐项核验

阅卷组长拿到老师递来的“答案框”后,并不会立刻打勾。他会先看一眼:这个答案写的是数字还是乱码?是一千还是八百万?和前面算的过程搭不搭?这些核验动作,就是答案验证器的职责。

验证器对抽取器送来的候选答案做三项检查。第一项是格式合法性——答案必须是数值,而不是“不确定”或“我也不知道”这类文本;第二项是范围合理性——例如问“每人分几个苹果”,答案不可能是 8000;第三项是与推理过程的一致性——如果推理里最后一处关键计算结果是 9,而答案框里写的是 12,这明显有矛盾。

验证器还会做数值归一化,把 "9"、"9.0"、"\$9\$" 等不同写法统一成相同的数值表示,避免因为格式差异造成误判。三项检查用逻辑与组合:只要有一项不过,答案就不能被采信。

就像组长复核时“一把尺子量到底”,验证器用统一的规则把所有候选答案过一遍筛子。经过验证的答案,才真正具备与标准答案比对的资格。

Valid(a)=1[Fmt(a)∧Range(a)∧Consist(a,C)]\displaystyle \text{Valid}(a) = \mathbb{1}\big[ \text{Fmt}(a) \wedge \text{Range}(a) \wedge \text{Consist}(a, C) \big]
公式说:格式合法、范围合理、与推理链 C 一致,三件事同时成立,答案才算通过验证。
  1. 格式检查Fmt(a) 判断候选答案 a 是否为合法的数值形式。
    Fmt(a)\displaystyle \text{Fmt}(a)
  2. 范围检查Range(a) 判断答案数值是否落在题目背景的合理区间内。
    Range(a)\displaystyle \text{Range}(a)
  3. 一致性检查Consist(a, C) 把答案与推理链 C 中的关键结果进行比对。
    Consist(a,C)\displaystyle \text{Consist}(a, C)
  4. 逻辑与三个条件用 $\wedge$ 连接,缺一不可,只要一项不满足验证就失败。
    Fmt∧Range∧Consist\displaystyle \text{Fmt} \wedge \text{Range} \wedge \text{Consist}

双重检查机制:阅卷老师与组长双保险

为什么答案抽取与验证不能合并成一步?阅卷制度的设计者深知:老师翻答案框可能翻错,组长复核也可能看漏。要降低误判,最可靠的办法不是提高某一个人的水平,而是让两个人各守一道关卡,形成双保险。

双重检查机制中,抽取器负责“找对答案”,验证器负责“确认可信”。抽取器找出的候选答案先经过验证器筛选,只有验证通过的答案才进入最终判定。两个环节的错误模式不同:抽取器容易犯“找错位置”的错,验证器容易犯“标准过松或过严”的错,二者互补,能互相兜底。

从概率上看,总体误判率不会超过两环节误差之和。假设抽取器的误判率是 1%,验证器的漏检率也是 1%,双重检查后整体的误判率会被压制在远低于单环节的水平。这正是 GSM8K 评测公信力的来源——权威基准的分数必须经得起推敲。

一场考试的公信力,来自“每个分数都经过两个人核对”的制度。GSM8K 的可靠性保障同样来自这套双重检查——只有当评分流程本身可信,模型的分数才能成为行业公认的能力标尺。

P(err)≤P(eextract)+P(everify)\displaystyle P(\text{err}) \leq P(e_{\text{extract}}) + P(e_{\text{verify}})
这个不等式说明:总误判率的上界是抽取误差与验证误差之和,两环节各自的错误会被双重检查机制有效约束。
  1. 抽取误差抽取器定位到错误答案的概率。
    P(eextract)\displaystyle P(e_{\text{extract}})
  2. 验证误差验证器漏过错误答案或误杀正确答案的概率。
    P(everify)\displaystyle P(e_{\text{verify}})
  3. 总误判率上界两环节误差之和构成了整体误判率的上限,体现了双保险的约束效果。
    P(err)≤(⋅)\displaystyle P(\text{err}) \leq (\cdot)

评测信号价值:一次公平大考推动集体进步

考试的价值不止于给学生排名。一次公平、可靠的统考之后,学校可以对比各班的平均分,发现教学短板,调整教学方法。GSM8K 的评测信号对于大模型研发,就像是这场统考的成绩单——它回答了一个关键问题:哪个模型更强,以及新方法到底有没有用。

研究者把新模型提交到 GSM8K 上评测,得到的准确率可以直接与其他模型横向对比,形成公开的排行榜。模型准确率从 60% 提到 70%,说明数学推理能力确实增强了;如果原地踏步,说明改进方向可能错了。这种量化信号把“感觉上变强了”变成“数据上变强了”。

正因如此,GSM8K 在 LLM 能力评估领域具有重要地位,几乎所有主流大模型发布时都会报告自己的 GSM8K 分数。它就像行业通用的“体检报告”,为模型性能对比和技术进步提供被广泛认可的参考基准。可靠信号驱动正确决策,这是评测体系存在的根本意义。

就像学校用统考成绩评估教学改革的效果,AI 研究者用 GSM8K 分数衡量每次技术迭代的成色。而这一切的前提,是那张成绩单本身准确可靠——这正是答案抽取与验证默默守护的价值。

Δgain=Accnew−Accbaseline\displaystyle \Delta_{\text{gain}} = \text{Acc}_{\text{new}} - \text{Acc}_{\text{baseline}}
用新模型的准确率减去基线模型的准确率,得到本次迭代的提升量,作为改进是否有效的量化依据。
  1. 新模型准确率改进后的模型在同一评测集上的得分。
    Accnew\displaystyle \text{Acc}_{\text{new}}
  2. 基线准确率改进前模型在相同条件下的得分。
    Accbaseline\displaystyle \text{Acc}_{\text{baseline}}
  3. 提升量两者相减,正数表示进步,负数或零表示未达到预期。
    Δgain\displaystyle \Delta_{\text{gain}}

技术实现方案:把阅卷经验写成代码

阅卷老师的经验要变成自动阅卷机,必须写成一套可执行的规则。实现答案抽取与验证的技术方案,本质上就是把“找答案框”“核验答案”的手感,翻译成正则表达式、字符串解析和流程管线。

抽取端最常用的工具是正则表达式。一个经典的触发词模板同时匹配 “answer is“ 和其后的数字,再用捕获组把数字取出来。解析端则负责清洗:去掉货币符号、百分比、单位,把 ”1,000” 中的逗号移除,把分数转成小数。验证端把格式、范围、一致性三项检查封装成独立函数,任何一项失败就返回拒绝。

工程实现还必须处理大量边界情况:模型没有输出任何数字、推理中出现多个候选答案、答案以科学计数法呈现、数字区间与题目无关等。一个健壮的管线会把抽取、验证、判定、统计四步串成流水线,并允许为每个环节配置独立规则,从而在保持灵活性的同时保证输出稳定。

一套好的“评分手册”,既要覆盖常见写法,也要为奇怪写法留退路。把阅卷经验写成代码之后,双重检查机制就能在大规模评测中稳定运转,让每一份“答卷”都得到公正的对待。

\displaystyle \texttt{Pattern} = r"\text{answer}\s*is\s*([+-]?\d+(\.\d+)?)"
这是抽取器中最常见的一类正则模板:在 "answer is" 之后捕获一个带可选正负号和整数/小数部分的数字。
  1. 触发词部分\texttt{answer} 与 \texttt{is} 之间存在若干空白字符,用 \s* 匹配。
    \displaystyle \text{answer}\s*is
  2. 捕获组括号内的 [+-]?\d+(\.\d+)? 匹配可选的符号、整数与小数部分。
    \displaystyle ([+-]?\d+(\.\d+)?)
  3. 返回数字正则引擎把捕获组中的数字文本交给后续解析环节处理。
    r"..."\displaystyle r"\text{...}"

AI 应用场景

大模型评测平台中的自动判分

阶段:模型评估与基准测试阶段

解决的问题:批量评测时,模型输出是自由文本,无法与标准答案直接做字符串比对。传统做法靠人工逐条核对,几千条样本成本极高且容易疲劳出错。AI 评测平台内置答案抽取器与验证器,自动完成“定位答案—格式检查—一致性核验—与标准答案比对”全流程,数分钟即可输出准确率报告。

具体案例:工程师在 OpenCompass 或 lm-evaluation-harness 上跑 GSM8K 评测,配置好抽取正则和验证规则后,模型输出的 500 条推理文本被自动处理:抽取器挑出每个输出末尾 "answer is" 后的数字,验证器检查数值范围与推理一致性,最终与标准答案比对,生成排行榜分数。

教育领域的自动判卷与学情诊断

阶段:AI 应用落地部署阶段

解决的问题:智能数学辅导系统需要判断学生或模型给出的解答是否正确。传统的“关键字匹配”会把“答案写着 8,但过程完全用错方法”判为正确;AI 双检查管线先抽取学生写下的答案,再验证其与题目条件、演算过程的一致性,把“碰巧猜对”和“真正会做”区分开。

具体案例:某在线教育平台的自动批改系统收到“小明有 6 个苹果,给小红 2 个,又买 4 个,答案是 8”这类回答,抽取器定位到 8,验证器核对与题目数据的运算关系,输出带诊断信息的评分反馈,帮助老师定位学生的理解盲区。

基于可验证奖励的强化学习(RLVR)

阶段:模型训练与对齐阶段

解决的问题:训练推理模型时,需要为每个推理结果打分。人工标注奖励昂贵且慢,而答案验证器可以给出自动化的“对/错”信号,作为奖励函数的输入,把验证机制直接嵌入训练循环,大幅降低 RLHF 的人力成本。

具体案例:某团队训练数学推理大模型,使用 GSM8K 答案验证器作为奖励模型:模型生成推理 → 抽取答案 → 验证通过得正奖励、失败得负奖励,强化学习算法据此更新策略,让模型逐步学会稳定输出正确结果。

Python 演示

python83 行
import re  class AnswerExtractor:    """答案抽取器: 按模板优先级从推理文本中定位最终答案"""     TRIGGERS = {        r"the\s+answer\s+is\s*[:=]?\s*([+-]?\d+(?:\.\d+)?)": 1.0,        r"answer\s*[:=]\s*([+-]?\d+(?:\.\d+)?)": 0.9,        r"boxed\{([+-]?\d+(?:\.\d+)?)\}": 1.0,        r"\b(\d+(?:\.\d+)?)\b": 0.1,    }     def __init__(self):        self._templates = [(re.compile(p, re.I), w) for p, w in self.TRIGGERS.items()]     def extract(self, text):        """按模板优先级寻找数字, 返回 (数值, 置信度)"""        for pattern, weight in self._templates:            matches = pattern.findall(text)            if matches:                return float(matches[-1]), weight        return None, 0.0  class AnswerVerifier:    """答案验证器: 检查格式, 范围与推理一致性"""     def __init__(self, lo=-1e9, hi=1e9):        self.lo = lo        self.hi = hi     def verify(self, value, reasoning):        if value is None:            return False, "no_answer"        if not (self.lo <= value <= self.hi):            return False, "out_of_range"        nums = [float(x) for x in re.findall(r"[+-]?\d+(?:\.\d+)?", reasoning)]        if nums and abs(nums[-1] - value) > 1e-6:            return False, "inconsistent"        return True, "pass"  class EvalPipeline:    """双重检查流程: 抽取 -> 验证 -> 判定"""     def __init__(self):        self.extractor = AnswerExtractor()        self.verifier = AnswerVerifier(0, 1e6)     def judge(self, model_text, gold_answer):        value, confidence = self.extractor.extract(model_text)        ok, reason = self.verifier.verify(value, model_text)        matched = ok and value is not None and abs(value - gold_answer) < 1e-6        return {            "extracted": value,            "confidence": confidence,            "verified": ok,            "verify_reason": reason,            "correct": matched,        }  def main():    samples = [        ("There are 12 eggs. Cook uses 5. The answer is 7.", 7),        ("Each pack has 8 pens, 3 packs. So total is 24 pens.", 24),        ("I think the result might be 42, but not sure.", 42),        ("Train travels 60 km/h for 2 hours. Answer: 120", 120),        ("No idea, maybe 10 or maybe 100.", 10),    ]    pipeline = EvalPipeline()    total = 0    for text, gold in samples:        result = pipeline.judge(text, gold)        total += int(result["correct"])        print(f"gold={gold:>6} extracted={result['extracted']} "              f"verified={result['verified']} correct={result['correct']}")    print(f"accuracy={total / len(samples):.2f}")  if __name__ == "__main__":    main()
目的:实现一个完整的“抽取 → 验证 → 判定”评测管线,对模型输出文本自动定位答案、核验可信度,并统计准确率。
  1. pattern.findall(text)在推理文本中查找所有匹配触发词的数字,返回候选列表。
  2. float(matches[-1])取最后一个匹配数字并转成浮点数,对应“答案常在结尾”的经验。
  3. self.lo <= value <= self.hi验证器检查答案是否落在合理数值范围内。
  4. abs(nums[-1] - value) > 1e-6比对推理末尾数字与答案,不一致则判定为"inconsistent"。
  5. abs(value - gold_answer) < 1e-6归一化后的数值与标准答案比较,容差内视为答对。
  6. total += int(result["correct"])累加正确样本数,最后除以总数得到准确率。

常见误区

误区答案抽取不就是正则找最后一个数字吗?模型的输出结尾肯定就是最终答案,直接取文本最后一个数字就行,哪需要什么复杂设计。

正解现实远没这么简单。模型的推理文本可能以感叹、解释、单位或重复结论结尾,也可能在尾部又写一遍过程。仅取末尾数字,会把“所以每个人分 3 个,还剩 2 个”里的 2 当成答案。抽取器要结合触发词、位置权重和格式规则综合判断,就像阅卷老师先找“答案框”,再确认框里写的是什么,而不是把草稿最后一个数字抄上去。

为何常见:因为很多模型输出确实以答案结尾,人眼看到的“典型样本”给了这种错觉,忽视了真实推理文本的多样性。

误区验证器不就是检查一下答案是数字还是字符串吗?只要是数字,就说明模型答对了,格式检查过了就放心了。

正解格式只是第一关。格式合法的数值,可能完全不合理——题目问“每人分几个苹果”答案是 8000,格式毫无问题但明显离谱。验证器还要查范围合理性、与推理过程的一致性、数值归一化后的等价性。就像阅卷老师看到“分苹果得 8000”也会皱眉,会回到演算过程找矛盾,而不是只看有没有写数字。

为何常见:因为格式检查实现最简单,初学者容易把“最容易实现”当成“最重要”,忽略了验证环节的多层设计。

误区反正最后都要判对错,把抽取和验证写在一个函数里不就行了?少一次调用,代码还更短。

正解两环节职责不同:抽取解决“答案是哪个”,验证解决“答案靠不靠谱”。合并后,抽取器的错误会直接带进验证结果,失去纠错机会。分阶段设计像阅卷分组——先由一组老师找出答案框,再由组长复核。任何一步出错,另一步都可能兜住,这正是“双保险”的意义所在。

为何常见:工程上追求“少写代码”的直觉,容易忽视职责分离带来的鲁棒性收益,而评测系统恰恰最需要鲁棒性。

误区8500 道题里抽错几道、验证漏掉几道,误差才不到 1%,不影响大局吧?排名的结论应该还是稳的。

正解评测结果用于对比模型性能和驱动迭代,几个百分点的误判在模型能力差距接近时会彻底颠倒排名。何况在大规模评测中,同类错误会系统性重复出现,误差会被放大而不是随机抵消。这也是为什么 GSM8K 的自动化管线要设计双重检查——像考试评分,一道题的误判可能改变一个考生的命运。

为何常见:因为单体样本的错误看起来微不足道,缺乏统计思维的人容易忽略系统性误差在整体上的累积效应。

面试题

Q1. GSM8K 基准的主要内容是?

单选题 · easy

  • A.千道图像分类样本
  • B.小学数学应用题集← 正确答案
  • C.长文本阅读理解集
  • D.代码漏洞修复题目

答案:B。GSM8K 包含约 8500 道小学程度的数学应用题,专门用来测试模型的数学推理能力。图像分类、代码修复、阅读理解都不是它的定位。只要记住“8500 道应用题”这个核心特征,就能排除其他选项。

Q2. 答案抽取器最核心的任务?

单选题 · easy

  • A.提升模型解题能力
  • B.定位文本最终答案← 正确答案
  • C.生成更多训练样本
  • D.压缩模型推理长度

答案:B。答案抽取器的输入是模型输出的自由文本,输出是候选答案。它的核心职责是从推理文本中定位最终答案的位置并取出数值,而不是提升解题能力、生成样本或压缩推理长度。这正是阅卷老师“找答案框”的那道工序。

Q3. 下列哪项属于验证器检查范畴?

单选题 · easy

  • A.模型参数量大小
  • B.答案格式与范围← 正确答案
  • C.训练数据来源
  • D.推理速度优化

答案:B。验证器关注的是候选答案本身的可信度:格式是否合法、范围是否合理、与推理是否一致。模型参数量、训练数据来源、推理速度都属于模型或工程层面的属性,不属于答案验证器的检查范畴。

Q4. "The answer is 8" 这类句子在抽取中的作用?

单选题 · mid

  • A.增强模型记忆能力
  • B.标记答案所在位置← 正确答案
  • C.降低数值运算误差
  • D.替代全部人工标注

答案:B。"The answer is" 是典型的答案触发词,它的作用是帮助抽取器标记最终答案所在的位置。它不会增强模型记忆、降低运算误差,也不是用来替代人工标注的。触发词线索与位置线索一起,让抽取器快速锁定答案框。

Q5. 双重检查机制包括哪些环节?

多选题 · mid

  • A.抽取器定位最终答案← 正确答案
  • B.验证器核验答案合法性← 正确答案
  • C.人工逐条复核全部样本
  • D.两环节协同降低误判← 正确答案

答案:ABD。双重检查机制由抽取器和验证器两个环节构成:抽取器负责定位,验证器负责核验,协同降低误判率。人工逐条复核全部样本成本过高,不属于自动化评测的双检查机制。所以正确选项是 A、B、D。

Q6. 模型输出以“3 packs, total is 24“结尾,仅用”取末尾数字”策略抽取会得到?

单选题 · mid

  • A.会取到数字 3
  • B.会取到数字 24← 正确答案
  • C.不会有任何输出
  • D.输出随机猜测

答案:B。在这句输出里,末尾的数字是 24。如果抽取器只用“取文本末尾数字”的朴素策略,会拿 24 当答案,不会取到中间位置的 3,也不会解析失败或随机。这正说明位置线索需要与触发词线索结合才能更稳健。

Q7. 抽取器需要处理的边界情况有哪些?

多选题 · hard

  • A.答案为分数或小数形式← 正确答案
  • B.输出末尾不含数字← 正确答案
  • C.推理出现多个候选值← 正确答案
  • D.答案携带单位后缀← 正确答案

答案:ABCD。边界情况是抽取器工程实现的关键:分数或小数形式、末尾无数字、推理中出现多个候选值、答案带单位,都会让朴素规则失效。健壮的抽取器需要为这四类情况都设计兜底策略,因此四个选项都应选。

Q8. 验证器发现推理中数字杂乱时应优先做什么?

单选题 · mid

  • A.直接判定答案错误
  • B.归一化后检查一致性← 正确答案
  • C.跳过该条评测样本
  • D.直接修改标准答案

答案:B。推理中数字杂乱时,正确做法是先做数值归一化,统一千分位、小数位等写法,再检查答案与推理关键结果的一致性。直接判错可能误杀正确答案,跳过样本会损失数据,修改标准答案更是不可接受的作弊行为。

Q9. 抽取与验证两环节误差对总体误判的影响?

单选题 · hard

  • A.验证可完全消除抽取误差
  • B.总体误判受两环节误差共同影响← 正确答案
  • C.抽取误差不影响最终结果
  • D.误判率与两环节误差无关

答案:B。双重检查把“抽取”与“验证”串联起来,总体误判受两环节误差共同影响,上界近似为两者之和。验证环节并不能完全消除抽取误差——它只能拦截一部分;如果抽取器定位错了位置,验证器也无从核验真实答案。所以 B 正确。

Q10. 关于 GSM8K 基准的评测价值,正确的是?

多选题 · hard

  • A.用于横向对比模型能力← 正确答案
  • B.为模型迭代提供信号← 正确答案
  • C.被认为是数学评测参考← 正确答案
  • D.可直接替代人工评测

答案:ABC。GSM8K 分数可用于模型横向对比、为迭代提供量化信号,也是行业公认的数学能力参考基准。但自动化评测无法完全替代人工评测的全部场景,D“可直接替代人工评测”夸大了它的作用,不应选。