老张是一位教了三十年小学数学的老师。期中考试前,他想弄清楚一件困扰已久的事:班上有几个学生是真懂数学,又有几个只是把答案背了下来?于是老张做了一场“实验”:同一张卷子,一班学生只许写最终答案;二班学生必须把每一步演算过程工整地写在旁边。判完卷,老张惊讶地发现:被要求写过程的二班,正确率碾压了只写答案的一班。这个故事,正是大语言模型评测领域的日常。GSM8K 是一张专门出的“小学数学应用卷”,CoT(思维链)是那句“把过程写在旁边”的答题要求,而 CoT 评测,就是老张这场实验从头到尾的全部门道:怎么出卷、怎么要求、怎么判卷、怎么算分。

岗位关联

掌握 CoT 评测,你就掌握了科学衡量 LLM 推理能力的“标准判卷法”——选模型、调提示词、写评估报告时,都能有理有据,不再凭感觉拍脑袋。

目录
  1. 可视化演示
  2. 评测基础认知
  3. GSM8K数据集
  4. CoT机理剖析
  5. CoT评测流程
  6. 指标与对照
  7. 性能规律与优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示链式推理(CoT)在GSM8K数学题上的逐步推理过程,并对比直接回答、CoT和自洽采样三种方法的准确率差异。

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

CoT 链式推理 逐步推理:将问题拆解为中间步骤 CoT显著提升数学推理准确率 CoT>Direct 自洽采样进一步提高稳定性

评测基础认知

老张要做的第一件事,不是印卷子,而是先想清楚:这场考试到底要考什么?是考心算速度,还是考方程运用?方向没定,卷子就是废纸。AI 评测也一样——你得先定义“要衡量什么能力”,评测才有意义。这就是“评测目标”在一整套流程里的地位:它是一切行动的起点。

测评大模型,通常把任务拆成一张张“标准试卷”,每张试卷围绕一种能力出题:知识问答、代码生成、数学推理……这类固定题目、固定答案、固定判分规则的试卷,专业上叫基准测试集(Benchmark)。GSM8K 就是一张专门考察数学推理能力的卷子。而 LLM 评测体系像学校的教务系统,把语言理解、知识记忆、逻辑推理、指令遵循等科目分门别类,每科配对应的试卷。

在 LLM 评测体系中,GSM8K 属于“推理能力”维度。一个完整的评测任务包含三要素:被测模型(学生)、评测数据集(试卷)、评测指标(判分标准)。CoT 评测则是“在固定试卷上,专门考察'分步写过程'这种答题方式的效果”——这是它与普通 GSM8K 跑分的核心区别:普通跑分关心“考了多少分”,CoT 评测关心“换一种答题要求,分数变了多少”。

也就是说,老张必须先定义清楚“考什么、怎么算分”,这场实验才有说服力;否则哪怕判了一百张卷子,也说不清学生到底强在哪。评测的每一步设计,本质上都是在回答“我们到底在衡量什么”。

Score(M,D)=1∣D∣∑i=1∣D∣1[a^i=ai]\text{Score}(\mathcal{M}, \mathcal{D}) = \frac{1}{|\mathcal{D}|} \sum_{i=1}^{|\mathcal{D}|} \mathbb{1}[\hat{a}_i = a_i]
这个式子就是老张的判分公式:答对一题计 1,答错计 0,总分除以题数等于正确率。
  1. 被测对象M 是被测大模型,D 是 GSM8K 测试集,一个“学生”,一张“试卷”。
    M,D\mathcal{M}, \mathcal{D}
  2. 单题判定1[·] 是指示函数——预测答案与标准答案一致计 1 分,否则计 0 分,对应“判一题对错”。
    1[a^i=ai]\mathbb{1}[\hat{a}_i = a_i]
  3. 求平均对所有题目得分求和后除以总数 |D|,得到最终正确率——“总得分除以总题数”。
    1∣D∣∑i=1∣D∣⋯\frac{1}{|\mathcal{D}|} \sum_{i=1}^{|\mathcal{D}|} \cdots

GSM8K数据集

定下目标后,老张开始出卷。他出的卷子有个讲究:全是生活里的小应用题——“小明有 3 个苹果,又买了 5 个,吃了 2 个,还剩几个?”不考偏难怪,但每道题都要算几步才能得到答案。这种“题目简单、过程多步”的设计,恰恰是考察推理能力的关键。

这张“卷子”就是 GSM8K,全称 Grade School Math 8K,由 OpenAI 在 2021 年发布,包含约 8,500 道小学数学应用题。它面向小学到初中水平,涉及加减乘除、比例、利息等常识,不要求专业背景,却天然要求模型具备多步推理能力。题目类型以算术应用题为主,答案全部是自然语言写出的数字,没有选择题,从根本上杜绝了“蒙对”的可能。

数据集的构成很有讲究:约 7,500 道用于训练(学生平时练的题),约 1,000 道留作测试(正式考试),不同发布版本在切分上略有出入。每道题包含三部分信息——题目文本、标准答案、参考解题步骤。难度上从一步运算到八步复合问题递进排列,像试卷一样由易到难,方便研究者按难度分层分析模型的“短板”。

老张把卷子按难度排好序,还准备了“参考答案”方便判卷——这正是 GSM8K 的精妙之处:题目易读但不易算,答案唯一但过程开放,让“会不会做”和“怎么想到的”都能被检验出来。

DGSM8K={(qi,ai,si)}i=18500\mathcal{D}_{GSM8K} = \{(q_i, a_i, s_i)\}_{i=1}^{8500}
GSM8K 的每条样本都自带“题目 + 答案 + 参考解法”三件套,总规模约 8500 条。
  1. 题目三元组每条样本包含 q(题干)、a(标准答案)、s(参考解题步骤),相当于“题目 + 标准答案 + 参考解法”。
    (qi,ai,si)(q_i, a_i, s_i)
  2. 序列规模下标 i 从 1 到 8500,集合规模约 8500,其中约 1000 条不参与训练,留作正式考试。
    {(qi,ai,si)}i=18500\{(q_i, a_i, s_i)\}_{i=1}^{8500}

CoT机理剖析

卷子印好了,老张在考试要求里加了一句话:“请在每题下方工整写出演算过程,只写答案不得分。”就是这句话,把两个班的成绩拉开了一个档次。这句话在 AI 领域,叫思维链提示(Chain-of-Thought,简称 CoT)。

CoT 的核心思想是:不让模型“一口报出答案”,而是先输出一步步的中间推理,再给出最终结论。实现方式有两种:一种是在提示词末尾追加触发词“Let's think step by step“,让模型自动展开思考;另一种是给模型看 2 到 8 个”示例解法”,让模型照葫芦画瓢。前者轻量,后者可控,两者常常组合使用。

从机理上看,语言模型是自回归逐词生成的:每生成一个词,都把前面生成的内容当作输入。直接作答时,所有“理解”必须在内部一步完成,一旦中间某处算错就全盘皆输;CoT 把内部隐式计算“外显”成文本,每一步都有明确的中间结果,模型可以在生成下一个词时“重新看到”之前的计算,从而减少累计误差。这就是步骤显式化的价值:用显式步骤换取推理稳定性。

老张后来总结:学生不是突然变聪明了,而是“必须把想法写下来”这件事,逼着他们慢下来、算清楚。模型也一样——CoT 没有给模型新知识,只是给了它一张草稿纸。

PromptCoT=Instruction+[q~1,s~1]+⋯+[q~k,s~k]+q+"Let’s think step by step"\text{Prompt}_{CoT} = \text{Instruction} + [\tilde{q}_1, \tilde{s}_1] + \cdots + [\tilde{q}_k, \tilde{s}_k] + q + \text{"Let's think step by step"}
提示词构造公式:先给总指令,再给 k 个示例,最后拼上新题与触发词,模型就会按示例格式分步作答。
  1. 考试要求Instruction 是总指令,交代“看题并解题”的整体任务,相当于卷首的答题说明。
    Instruction\text{Instruction}
  2. 示范卷[q̃, s̃] 是 k 个示例,每题带参考解法,相当于老张在黑板前示范的两道例题。
    [q~j,s~j][\tilde{q}_j, \tilde{s}_j]
  3. 新题触发最后拼上真实问题 q 和触发词,指示模型从“思考”开始输出。
    q+"Let’s think step by step"q + \text{"Let's think step by step"}

CoT评测流程

考完试,老张开始判卷。但他没有自己判,而是把判卷规则写成了一本机器手册:什么算对、什么算错、过程写到哪一步才算数——全部提前定好。评测大模型的流程,同样需要这种“标准化监考”。

一次完整的 CoT 评测包含五个环节:搭建环境(固定模型版本与解码参数)→ 构造提示(拼接示例与触发词)→ 执行推理(让模型逐词生成回答)→ 提取答案(从推理链里抽出最终数字)→ 统计得分(与标准答案比对)。任何一个环节不统一,结果就无法复现。这就是评测环境搭建与结果判定标准的意义所在。

其中“提取答案”最容易被忽略却最致命。模型生成的是一整段话,比如“先把 3 和 5 相加得 8,再减 2 得 6,所以答案是 6”。评测框架通常用正则表达式匹配最后一个数字作为预测答案。温度参数也要统一:评测常用温度 0(贪婪解码)保证确定性,而研究采样多样性时会用温度 0.7 并多次采样。生成阶段遵循自回归规则,整条推理链的概率是每个词条件概率的连乘。

老张的“机器判卷手册”,保证了同一张卷子由谁判、判几次,结果都一样。评测流程规范化的意义正在于此:让“模型答得好”不是偶然,而是可复现的事实。

P(chain∣q)=∏t=1TPθ(st∣q,s<t)P(\text{chain} \mid q) = \prod_{t=1}^{T} P_\theta(s_t \mid q, s_{<t})
推理链的生成是逐词进行的,每个词的概率相乘得到整条链的概率,相当于“每一步都走对”才能得到正确答案。
  1. 逐词生成s_t 是第 t 个生成的词,模型在已知问题 q 和前 t-1 个词的条件下预测它。
    Pθ(st∣q,s<t)P_\theta(s_t \mid q, s_{<t})
  2. 连乘得链把每个词的生成概率连乘起来,得到整条推理链的生成概率。
    ∏t=1TPθ(st∣q,s<t)\prod_{t=1}^{T} P_\theta(s_t \mid q, s_{<t})

指标与对照

判完卷,老张手里有两摞成绩单:一班学生只写了答案,二班学生写了过程。他先分别算出两个班的正确率,再一对比,结论就有了:写过程的班级明显更稳。这“一算一对比”,就是评测指标与对照实验的全部精髓。

CoT 评测最核心的实验设计是对照实验:唯一变量是“是否要求模型输出中间推理”,模型、温度、提示词模板等其余部分全部保持一致。用同一模型在相同题目上分别跑“直接作答”和“CoT 作答”,两条准确率相减,得到 CoT 的净提升量 Δ。解码策略也要提前定好——是贪婪解码还是采样解码,都会直接影响分数的可比性。

经典结果来自 PaLM 540B 在 GSM8K 上的评测:直接作答准确率约 17.9%,开启 CoT 后达到约 56.9%,提升近 39 个百分点。这一对照实验是 CoT 论文中最具说服力的证据。同时要注意:准确率是一个点估计,评测报告还应说明采样方式并做显著性分析——用固定种子多次运行、看置信区间,避免把单次运行的抖动当成真实的提升。

老张在期末总结里写:“同样是这帮学生,换一种答题要求,成绩差出三成。”对照实验的魅力就在于此——它把“教学方法的作用”从“学生本身的水平”里剥离出来,单独量化。

Δ=1N∑i=1N1[a^iCoT=ai]−1N∑i=1N1[a^idirect=ai]\Delta = \frac{1}{N}\sum_{i=1}^{N} \mathbb{1}[\hat{a}^{CoT}_i = a_i] - \frac{1}{N}\sum_{i=1}^{N} \mathbb{1}[\hat{a}^{direct}_i = a_i]
Δ 是 CoT 相对直接作答的净提升量,把“教学方法的贡献”从模型自身能力中剥离出来。
  1. CoT 班正确率带 CoT 上标的预测答案与标准答案比对后求平均,得到“写过程”组的得分。
    1N∑i=1N1[a^iCoT=ai]\frac{1}{N}\sum_{i=1}^{N} \mathbb{1}[\hat{a}^{CoT}_i = a_i]
  2. 直接班正确率同样方式计算“只写答案”组的正确率。
    1N∑i=1N1[a^idirect=ai]\frac{1}{N}\sum_{i=1}^{N} \mathbb{1}[\hat{a}^{direct}_i = a_i]
  3. 做差两式相减,Δ 就是“写过程”带来的净提升。
    Δ=AccCoT−Accdirect\Delta = \text{Acc}_{CoT} - \text{Acc}_{direct}

性能规律与优化

实验做多了,老张发现一个规律:让写过程这件事,对班里的学霸(大模型)特别管用,对学渣(小模型)几乎没用甚至帮倒忙。他纳闷:难道“写过程”这种能力还挑学生?这其实是 CoT 评测中最著名的发现之一——规模涌现特性。

CoT 带来的增益随模型参数规模增长而显著增大:参数量约 100B 以下时提升微弱,超过阈值后效果陡增。原因是小模型无法稳定执行多步推理,写出来的过程本身就错误百出;大模型则能把步骤“撑住”。因此 CoT 评测报告必须注明模型规模与版本,否则结论不可横向比较。这一特性也提醒我们:评测结论有边界,不能无脑外推。

为了进一步压榨 CoT 的潜力,研究者提出了自洽性(Self-Consistency)策略:同一道题,用较高温度采样 m 条不同的推理链,每条得出一个候选答案,最后统计出现次数最多的答案作为最终输出。这像极了老张让二班学生“考完再互相验算一遍,取多数人同意的答案”。在 GSM8K 上,自洽性把 PaLM 540B 的准确率从 56.9% 推到 74.4%。除此之外,提示词模板措辞、少样本示例的挑选与排序、错误样例的闭环分析,也都能带来几个点的稳定提升。

老张的期末报告越写越长,但核心结论只有一句:写过程好不好,要看谁来写、怎么写、写几遍。规模对了,提示词对了,再加上“多写几遍取多数”的策略,推理能力就能被稳定地激发出来——这正是 CoT 评测研究最实用的产出。

a^∗=arg⁡max⁡a∑j=1m1[a^(j)=a]\hat{a}^* = \arg\max_{a} \sum_{j=1}^{m} \mathbb{1}[\hat{a}^{(j)} = a]
自洽性把“一个学生的单次演算”变成“多个学生演算后投票”,用集成思想抵消随机性。
  1. 多次采样生成 m 条推理链,得到 m 个候选答案 a^(1) 到 a^(m)。
    a^(1),a^(2),⋯ ,a^(m)\hat{a}^{(1)}, \hat{a}^{(2)}, \cdots, \hat{a}^{(m)}
  2. 统计票数对每个候选答案 a 计数,指示函数统计它在 m 条结果中出现的次数。
    ∑j=1m1[a^(j)=a]\sum_{j=1}^{m} \mathbb{1}[\hat{a}^{(j)} = a]
  3. 取众数argmax 选出票数最高的答案,作为最终输出。
    a^∗=arg⁡max⁡a∑j=1m1[a^(j)=a]\hat{a}^* = \arg\max_a \sum_{j=1}^{m} \mathbb{1}[\hat{a}^{(j)} = a]

AI 应用场景

教育产品的模型选型

阶段:模型评估与选型

解决的问题:一家做 AI 数学辅导的团队要决定:开源 Llama 和闭源 GPT 哪个更适合作答?传统方式靠几个测试样例人工感受,主观且不可复现。团队搭建了一条 GSM8K + CoT 评测流水线:统一提示词模板,让两个模型在 1000 道测试题上分步作答,用准确率加错误类型报告替代“我觉得”,选型立刻有了数据支撑。就像老张不凭印象挑学生,而是看统一考试的数据。

具体案例:团队发现 Llama-70B 的 CoT 准确率为 42%,错误集中在“多位数减法借位”,于是产品侧针对性补充专项训练数据,而非盲目更换模型底座。

Prompt 模板的 A/B 迭代

阶段:提示词工程优化

解决的问题:教育产品要上线“分步讲解”功能,但“请详细解题”和“Let's think step by step“两种模板,哪个效果更好?用 CoT 评测方法做 A/B 实验:同模型、同题目、同解码参数,只替换提示词,跑完整流程提取答案并比对。这正是老张”只改考试要求那一句话”的实验逻辑。

具体案例:评测发现加了少样本示例的模板比纯触发词高 8 个百分点,但会多消耗约 30% 的 token。团队据此为不同付费档位的用户选择不同模板,在效果与成本之间取得平衡。

Agent 规划能力的“过程+结果”双维评测

阶段:评测体系设计(方法迁移)

解决的问题:Agent 产品只评估最终结果,常常“结果对、过程乱”。借鉴 CoT 评测的思路,要求 Agent 先输出规划再执行,评测框架同时审查推理链是否合理,并新增“规划分”指标。这相当于把老张“过程分”的理念推广到更复杂的场景。

具体案例:某客服 Agent 的工单解决率从 61% 提到 74%,但评测显示其规划链频繁跳过“用户身份核验”步骤。团队在提示词中加入强制步骤节点,让过程规范与结果指标双双达标。

Python 演示

python85 行
# -*- coding: utf-8 -*-"""GSM8K style CoT evaluation demo: compare direct answer and CoT answer."""  class ToyLLM:    """Toy model: compute step by step from the expression, like a chain of thought."""     def __init__(self, trigger="Let's think step by step."):        self.trigger = trigger     def generate(self, question):        """Input like '3 + 5 - 2 =', return (chain text, predicted answer)."""        tokens = question.replace("=", "").split()        total = int(tokens[0])        steps = ["start with %d" % total]        idx = 1        while idx < len(tokens):            op = tokens[idx]            num = int(tokens[idx + 1])            before = total            if op == "+":                total += num            elif op == "-":                total -= num            else:                raise ValueError("unsupported operator: %s" % op)            steps.append("%d %s %d => %d" % (before, op, num, total))            idx += 2        chain = self.trigger + " " + " ; ".join(steps) + " answer=%d" % total        return chain, total  class CoTEvaluator:    """Evaluator: manage problems, count accuracy, support majority vote."""     def __init__(self, problems, model):        self.problems = problems        self.model = model        self.results = []        self.acc_count = 0     def run(self):        """Run the full pipeline: generate chain, extract answer, compare."""        self.results = []        self.acc_count = 0        for q, true_ans in self.problems:            chain, pred = self.model.generate(q)            ok = (pred == true_ans)            self.acc_count += 1 if ok else 0            self.results.append((q, chain, pred, true_ans, ok))        return self.acc_count / float(len(self.problems))     def majority_vote(self, n_paths=5):        """Self-consistency: sample several paths, take the most common answer."""        from collections import Counter        hit = 0        for q, true_ans in self.problems:            votes = [self.model.generate(q)[1] for _ in range(n_paths)]            best = Counter(votes).most_common(1)[0][0]            if best == true_ans:                hit += 1        return hit / float(len(self.problems))  def main():    problems = [        ("3 + 5 - 2 =", 6),        ("10 - 4 + 7 =", 13),        ("5 + 5 + 5 - 5 =", 10),        ("20 - 3 - 7 =", 10),        ("2 + 8 - 1 + 4 =", 13),    ]    ev = CoTEvaluator(problems, ToyLLM())    acc = ev.run()    print("CoT accuracy: %.1f%%" % (acc * 100))    for q, chain, pred, true_ans, ok in ev.results:        print("Problem: %s" % q)        print("  chain: %s" % chain)        print("  pred=%d true=%d %s" % (pred, true_ans, "OK" if ok else "FAIL"))    sc = ev.majority_vote(n_paths=5)    print("Self-consistency accuracy: %.1f%%" % (sc * 100))  if __name__ == "__main__":    main()
目的:用一个小型仿真复现 GSM8K 上的 CoT 评测流程——模型生成推理链、提取预测答案、与标准答案比对,并演示自洽性多数投票的提升效果。
  1. chain, pred = self.model.generate(q)核心一步:模型先生成思考链,再返回预测答案,对应评测流程中的“跑推理”。
  2. self.acc_count += 1 if ok else 0统计答对题数,注意属性加了 _count 后缀,避免与方法名冲突。
  3. Counter(votes).most_common(1)[0][0]自洽性的关键:统计 m 次采样中票数最高的候选答案。
  4. return self.acc_count / float(len(self.problems))返回正确率,对应老张“总分除以题数”的判分公式。
  5. if __name__ == "__main__":可执行入口,直接运行即可看到完整评测报告。

常见误区

误区模型在 GSM8K 上考了 90 分,说明它数学已经学得很好了,可以放心让它去解高数题。

正解GSM8K 是小学数学应用题,只覆盖多步算术推理。它衡量的是“读懂生活化题目 + 分步计算 + 提取数字答案”的能力,不涉及几何证明、代数变形、高等数学。就像老张的单元测验只考加减乘除,考得好不代表学生能参加奥赛。要评估数学能力,需要配合 MATH、MMLU 等多个基准交叉验证。

为何常见:GSM8K 名字里的“Grade School“容易被忽略,加上准确率数字直观,人们容易把”一个领域的分数“外推成”全面能力”。

误区我给任何模型加上"Let's think step by step",准确率就能起飞,小模型也一样有效。

正解CoT 增益与模型规模强相关,存在“涌现阈值”。小模型(如 10B 以下)写出的推理链本身就容易出错,触发词不仅没帮助,反而可能因为生成更长文本而拉低分数。评测时若模型规模不同,CoT 的结论不能直接横向比较。老张的实验也只在“有一定基础”的班级上效果显著。

为何常见:论文里展示的都是大模型上的显著提升,读者容易忽略“规模”这个前提条件。

误区评测有啥复杂的?把题目丢给模型,数数答对几道,除以总数就完事了。

正解答案提取、解码温度、提示词模板、随机种子……每个环节的微小差异都会改变分数。同一个模型同一道题,温度不同答案可能不同;正则提取规则不同,分数能差好几个点。评测本质是“受控实验”,必须统一所有非目标变量,否则就像老张给两个班用了不同的监考标准,成绩根本没法比。

为何常见:最终展示的只是一个数字,中间过程被隐藏了,初学者看不到“标准化”的代价。

误区模型用了 CoT 之后变聪明了,应该是学会了解题的新技巧。

正解CoT 只是改变“输出方式”,没有更新任何模型参数,也没有注入新知识。它相当于给了模型一张草稿纸,让已有的推理过程外显出来,减少“内心演算”的累计误差。测试时临时在提示词里加要求即可,无需重新训练。就像老张的二班没有多上任何课,只是被要求写过程。

为何常见:“变聪明了”符合直觉,而“输出格式改变”听起来太平凡,人们下意识地把效果归因于模型进步。

误区CoT 评测涨了 5 个点,结论明确,我直接全量上线。

正解单次评测的点估计有波动性,可能来自随机采样;上线前需要用固定种子多次运行、计算置信区间,并在更多基准(多语言、多题型)上验证。另外,评测环境是“单题一问一答”,线上往往有历史对话、RAG 上下文,需要额外做端到端验证。老张也不会因为一次月考就下结论,总要再看两次大考。

为何常见:评测报告只给一个数字,缺少波动性和迁移性的展示,容易让人忽视稳健性检查。

面试题

Q1. GSM8K 数据集的问题规模大约是?

单选题 · easy

  • A.千位级规模
  • B.万位级规模← 正确答案
  • C.十万位级规模
  • D.百万位级规模

答案:B。GSM8K 全称 Grade School Math 8K,“8K“指约 8500 道小学数学应用题,属于千位级而非万位级规模。老张的”卷子”虽有八千多道题,但正式考试(测试集)只用了其中 1000 道。

Q2. CoT 在提示词工程中的英文全称是?

单选题 · easy

  • A.Chain of Thought← 正确答案
  • B.Circle of Trust
  • C.Chain of Truth
  • D.Class of Thought

答案:A。Chain-of-Thought 意为“思维链”,指让模型在回答前先输出中间推理步骤。Circle、Truth、Class 都是与 CoT 字形相近的干扰项,与“分步写过程”的概念无关。

Q3. GSM8K 标准的训练集与测试集划分是?

单选题 · mid

  • A.训练7500道与测试1000道← 正确答案
  • B.训练7000道与测试1500道
  • C.训练6000道与测试2500道
  • D.训练5000道与测试3500道

答案:A。GSM8K 约 8500 道题,约 7500 道训练、1000 道测试。测试集是“正式考试”,模型训练时绝不能看到,否则评测分数就失去意义,就像老张不会把期末答案提前发给学生。

Q4. CoT 提示的核心目标是让模型?

单选题 · mid

  • A.只输出最终答案口算结果
  • B.写出推理过程再给答案← 正确答案
  • C.完全不输出任何文字
  • D.随机猜测一个候选选项

答案:B。CoT 的核心是先输出一步步中间推理,再给最终答案。直接报答案相当于学生不写过程,中间算错无从检查;写出过程则让每一步都可验证、可追溯,就像老张要求的“演算过程”。

Q5. 提示词中"Let's think step by step"的主要作用是?

单选题 · mid

  • A.约束答案格式的规则
  • B.扩充训练数据的手段
  • C.触发思维链的开关指令← 正确答案
  • D.定义损失函数的公式

答案:C。它是一句“触发词”,指示模型以逐步思考的方式作答。它不改变模型参数,也不约束输出格式,只是像老张在卷首写的那句“请写出演算过程”一样,改变答题方式。

Q6. CoT 增益与模型规模的关系是?

单选题 · hard

  • A.模型规模完全没有影响
  • B.中等规模的模型最优
  • C.模型越小提升越显著
  • D.模型越大提升越显著← 正确答案

答案:D。CoT 存在“规模涌现”:参数规模超过约 100B 后增益才显著,小模型提升微弱甚至下降。原因在于小模型难以稳定执行多步推理,写出来的过程本身就容易出错,好比学渣抄演算过程也抄不对。

Q7. CoT 评测中从推理链提取最终答案通常使用?

单选题 · mid

  • A.人工阅读每一条生成结果
  • B.正则匹配推理链尾部数字← 正确答案
  • C.随机挑选中间某个步骤
  • D.比较隐藏层嵌入向量距离

答案:B。评测框架通常用正则表达式匹配最后一个数字作为预测答案,速度快、规则统一。人工阅读成本太高且标准不一,相当于老张不可能每题亲自精读,必须依赖统一的“判卷手册”。

Q8. 一次完整的 CoT 评测流程包含哪些环节?

多选题 · mid

  • A.构造提示词模板← 正确答案
  • B.执行模型推理生成← 正确答案
  • C.提取并比对答案← 正确答案
  • D.修改训练集标签

答案:ABC。评测四步是“搭环境—造提示—跑推理—判分”,对应 A、B、C。修改训练集标签属于数据污染行为,会破坏评测公平,就像考前偷偷改标准答案,是绝对不能做的事。

Q9. 影响 CoT 评测可复现性的关键因素包括?

多选题 · hard

  • A.采样温度参数设定← 正确答案
  • B.提示词的具体写法← 正确答案
  • C.答案提取判定规则← 正确答案
  • D.显示屏的品牌型号

答案:ABC。温度影响生成的随机性,提示词写法影响模型行为,答案提取规则影响判定结果,三者都必须固定才能复现。显示屏品牌不影响模型输出,属于无关干扰项,就像考场窗帘颜色不影响学生成绩。

Q10. 自洽性(Self-Consistency)策略的组成部分包括?

多选题 · hard

  • A.多次独立随机采样← 正确答案
  • B.对候选答案多数投票← 正确答案
  • C.保留完整推理链条← 正确答案
  • D.固定使用单次贪婪解码

答案:ABC。自洽性用较高温度采样多条推理链,每条得到候选答案,统计出现最多的答案作为最终输出。单次贪婪解码恰恰是自洽性想要替代的确定性解码方式,就好比只让一个学生算一遍,不如让多个学生算完再投票。