老张是一位教了三十年小学数学的老师。期中考试前,他想弄清楚一件困扰已久的事:班上有几个学生是真懂数学,又有几个只是把答案背了下来?于是老张做了一场“实验”:同一张卷子,一班学生只许写最终答案;二班学生必须把每一步演算过程工整地写在旁边。判完卷,老张惊讶地发现:被要求写过程的二班,正确率碾压了只写答案的一班。这个故事,正是大语言模型评测领域的日常。GSM8K 是一张专门出的“小学数学应用卷”,CoT(思维链)是那句“把过程写在旁边”的答题要求,而 CoT 评测,就是老张这场实验从头到尾的全部门道:怎么出卷、怎么要求、怎么判卷、怎么算分。
掌握 CoT 评测,你就掌握了科学衡量 LLM 推理能力的“标准判卷法”——选模型、调提示词、写评估报告时,都能有理有据,不再凭感觉拍脑袋。
可视化演示
演示链式推理(CoT)在GSM8K数学题上的逐步推理过程,并对比直接回答、CoT和自洽采样三种方法的准确率差异。
本节配有交互动效(进入视口后自动加载,约 3KB)。
CoT 链式推理 逐步推理:将问题拆解为中间步骤 CoT显著提升数学推理准确率 CoT>Direct 自洽采样进一步提高稳定性
评测基础认知
老张要做的第一件事,不是印卷子,而是先想清楚:这场考试到底要考什么?是考心算速度,还是考方程运用?方向没定,卷子就是废纸。AI 评测也一样——你得先定义“要衡量什么能力”,评测才有意义。这就是“评测目标”在一整套流程里的地位:它是一切行动的起点。
测评大模型,通常把任务拆成一张张“标准试卷”,每张试卷围绕一种能力出题:知识问答、代码生成、数学推理……这类固定题目、固定答案、固定判分规则的试卷,专业上叫基准测试集(Benchmark)。GSM8K 就是一张专门考察数学推理能力的卷子。而 LLM 评测体系像学校的教务系统,把语言理解、知识记忆、逻辑推理、指令遵循等科目分门别类,每科配对应的试卷。
在 LLM 评测体系中,GSM8K 属于“推理能力”维度。一个完整的评测任务包含三要素:被测模型(学生)、评测数据集(试卷)、评测指标(判分标准)。CoT 评测则是“在固定试卷上,专门考察'分步写过程'这种答题方式的效果”——这是它与普通 GSM8K 跑分的核心区别:普通跑分关心“考了多少分”,CoT 评测关心“换一种答题要求,分数变了多少”。
也就是说,老张必须先定义清楚“考什么、怎么算分”,这场实验才有说服力;否则哪怕判了一百张卷子,也说不清学生到底强在哪。评测的每一步设计,本质上都是在回答“我们到底在衡量什么”。
- 被测对象M 是被测大模型,D 是 GSM8K 测试集,一个“学生”,一张“试卷”。
- 单题判定1[·] 是指示函数——预测答案与标准答案一致计 1 分,否则计 0 分,对应“判一题对错”。
- 求平均对所有题目得分求和后除以总数 |D|,得到最终正确率——“总得分除以总题数”。
GSM8K数据集
定下目标后,老张开始出卷。他出的卷子有个讲究:全是生活里的小应用题——“小明有 3 个苹果,又买了 5 个,吃了 2 个,还剩几个?”不考偏难怪,但每道题都要算几步才能得到答案。这种“题目简单、过程多步”的设计,恰恰是考察推理能力的关键。
这张“卷子”就是 GSM8K,全称 Grade School Math 8K,由 OpenAI 在 2021 年发布,包含约 8,500 道小学数学应用题。它面向小学到初中水平,涉及加减乘除、比例、利息等常识,不要求专业背景,却天然要求模型具备多步推理能力。题目类型以算术应用题为主,答案全部是自然语言写出的数字,没有选择题,从根本上杜绝了“蒙对”的可能。
数据集的构成很有讲究:约 7,500 道用于训练(学生平时练的题),约 1,000 道留作测试(正式考试),不同发布版本在切分上略有出入。每道题包含三部分信息——题目文本、标准答案、参考解题步骤。难度上从一步运算到八步复合问题递进排列,像试卷一样由易到难,方便研究者按难度分层分析模型的“短板”。
老张把卷子按难度排好序,还准备了“参考答案”方便判卷——这正是 GSM8K 的精妙之处:题目易读但不易算,答案唯一但过程开放,让“会不会做”和“怎么想到的”都能被检验出来。
- 题目三元组每条样本包含 q(题干)、a(标准答案)、s(参考解题步骤),相当于“题目 + 标准答案 + 参考解法”。
- 序列规模下标 i 从 1 到 8500,集合规模约 8500,其中约 1000 条不参与训练,留作正式考试。
CoT机理剖析
卷子印好了,老张在考试要求里加了一句话:“请在每题下方工整写出演算过程,只写答案不得分。”就是这句话,把两个班的成绩拉开了一个档次。这句话在 AI 领域,叫思维链提示(Chain-of-Thought,简称 CoT)。
CoT 的核心思想是:不让模型“一口报出答案”,而是先输出一步步的中间推理,再给出最终结论。实现方式有两种:一种是在提示词末尾追加触发词“Let's think step by step“,让模型自动展开思考;另一种是给模型看 2 到 8 个”示例解法”,让模型照葫芦画瓢。前者轻量,后者可控,两者常常组合使用。
从机理上看,语言模型是自回归逐词生成的:每生成一个词,都把前面生成的内容当作输入。直接作答时,所有“理解”必须在内部一步完成,一旦中间某处算错就全盘皆输;CoT 把内部隐式计算“外显”成文本,每一步都有明确的中间结果,模型可以在生成下一个词时“重新看到”之前的计算,从而减少累计误差。这就是步骤显式化的价值:用显式步骤换取推理稳定性。
老张后来总结:学生不是突然变聪明了,而是“必须把想法写下来”这件事,逼着他们慢下来、算清楚。模型也一样——CoT 没有给模型新知识,只是给了它一张草稿纸。
- 考试要求Instruction 是总指令,交代“看题并解题”的整体任务,相当于卷首的答题说明。
- 示范卷[q̃, s̃] 是 k 个示例,每题带参考解法,相当于老张在黑板前示范的两道例题。
- 新题触发最后拼上真实问题 q 和触发词,指示模型从“思考”开始输出。
CoT评测流程
考完试,老张开始判卷。但他没有自己判,而是把判卷规则写成了一本机器手册:什么算对、什么算错、过程写到哪一步才算数——全部提前定好。评测大模型的流程,同样需要这种“标准化监考”。
一次完整的 CoT 评测包含五个环节:搭建环境(固定模型版本与解码参数)→ 构造提示(拼接示例与触发词)→ 执行推理(让模型逐词生成回答)→ 提取答案(从推理链里抽出最终数字)→ 统计得分(与标准答案比对)。任何一个环节不统一,结果就无法复现。这就是评测环境搭建与结果判定标准的意义所在。
其中“提取答案”最容易被忽略却最致命。模型生成的是一整段话,比如“先把 3 和 5 相加得 8,再减 2 得 6,所以答案是 6”。评测框架通常用正则表达式匹配最后一个数字作为预测答案。温度参数也要统一:评测常用温度 0(贪婪解码)保证确定性,而研究采样多样性时会用温度 0.7 并多次采样。生成阶段遵循自回归规则,整条推理链的概率是每个词条件概率的连乘。
老张的“机器判卷手册”,保证了同一张卷子由谁判、判几次,结果都一样。评测流程规范化的意义正在于此:让“模型答得好”不是偶然,而是可复现的事实。
- 逐词生成s_t 是第 t 个生成的词,模型在已知问题 q 和前 t-1 个词的条件下预测它。
- 连乘得链把每个词的生成概率连乘起来,得到整条推理链的生成概率。
指标与对照
判完卷,老张手里有两摞成绩单:一班学生只写了答案,二班学生写了过程。他先分别算出两个班的正确率,再一对比,结论就有了:写过程的班级明显更稳。这“一算一对比”,就是评测指标与对照实验的全部精髓。
CoT 评测最核心的实验设计是对照实验:唯一变量是“是否要求模型输出中间推理”,模型、温度、提示词模板等其余部分全部保持一致。用同一模型在相同题目上分别跑“直接作答”和“CoT 作答”,两条准确率相减,得到 CoT 的净提升量 Δ。解码策略也要提前定好——是贪婪解码还是采样解码,都会直接影响分数的可比性。
经典结果来自 PaLM 540B 在 GSM8K 上的评测:直接作答准确率约 17.9%,开启 CoT 后达到约 56.9%,提升近 39 个百分点。这一对照实验是 CoT 论文中最具说服力的证据。同时要注意:准确率是一个点估计,评测报告还应说明采样方式并做显著性分析——用固定种子多次运行、看置信区间,避免把单次运行的抖动当成真实的提升。
老张在期末总结里写:“同样是这帮学生,换一种答题要求,成绩差出三成。”对照实验的魅力就在于此——它把“教学方法的作用”从“学生本身的水平”里剥离出来,单独量化。
- CoT 班正确率带 CoT 上标的预测答案与标准答案比对后求平均,得到“写过程”组的得分。
- 直接班正确率同样方式计算“只写答案”组的正确率。
- 做差两式相减,Δ 就是“写过程”带来的净提升。
性能规律与优化
实验做多了,老张发现一个规律:让写过程这件事,对班里的学霸(大模型)特别管用,对学渣(小模型)几乎没用甚至帮倒忙。他纳闷:难道“写过程”这种能力还挑学生?这其实是 CoT 评测中最著名的发现之一——规模涌现特性。
CoT 带来的增益随模型参数规模增长而显著增大:参数量约 100B 以下时提升微弱,超过阈值后效果陡增。原因是小模型无法稳定执行多步推理,写出来的过程本身就错误百出;大模型则能把步骤“撑住”。因此 CoT 评测报告必须注明模型规模与版本,否则结论不可横向比较。这一特性也提醒我们:评测结论有边界,不能无脑外推。
为了进一步压榨 CoT 的潜力,研究者提出了自洽性(Self-Consistency)策略:同一道题,用较高温度采样 m 条不同的推理链,每条得出一个候选答案,最后统计出现次数最多的答案作为最终输出。这像极了老张让二班学生“考完再互相验算一遍,取多数人同意的答案”。在 GSM8K 上,自洽性把 PaLM 540B 的准确率从 56.9% 推到 74.4%。除此之外,提示词模板措辞、少样本示例的挑选与排序、错误样例的闭环分析,也都能带来几个点的稳定提升。
老张的期末报告越写越长,但核心结论只有一句:写过程好不好,要看谁来写、怎么写、写几遍。规模对了,提示词对了,再加上“多写几遍取多数”的策略,推理能力就能被稳定地激发出来——这正是 CoT 评测研究最实用的产出。
- 多次采样生成 m 条推理链,得到 m 个候选答案 a^(1) 到 a^(m)。
- 统计票数对每个候选答案 a 计数,指示函数统计它在 m 条结果中出现的次数。
- 取众数argmax 选出票数最高的答案,作为最终输出。
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 演示
# -*- 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()
chain, pred = self.model.generate(q)核心一步:模型先生成思考链,再返回预测答案,对应评测流程中的“跑推理”。self.acc_count += 1 if ok else 0统计答对题数,注意属性加了 _count 后缀,避免与方法名冲突。Counter(votes).most_common(1)[0][0]自洽性的关键:统计 m 次采样中票数最高的候选答案。return self.acc_count / float(len(self.problems))返回正确率,对应老张“总分除以题数”的判分公式。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 数据集的问题规模大约是?
- A.千位级规模
- B.万位级规模← 正确答案
- C.十万位级规模
- D.百万位级规模
答案:B。GSM8K 全称 Grade School Math 8K,“8K“指约 8500 道小学数学应用题,属于千位级而非万位级规模。老张的”卷子”虽有八千多道题,但正式考试(测试集)只用了其中 1000 道。
Q2. CoT 在提示词工程中的英文全称是?
- 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 标准的训练集与测试集划分是?
- A.训练7500道与测试1000道← 正确答案
- B.训练7000道与测试1500道
- C.训练6000道与测试2500道
- D.训练5000道与测试3500道
答案:A。GSM8K 约 8500 道题,约 7500 道训练、1000 道测试。测试集是“正式考试”,模型训练时绝不能看到,否则评测分数就失去意义,就像老张不会把期末答案提前发给学生。
Q4. CoT 提示的核心目标是让模型?
- A.只输出最终答案口算结果
- B.写出推理过程再给答案← 正确答案
- C.完全不输出任何文字
- D.随机猜测一个候选选项
答案:B。CoT 的核心是先输出一步步中间推理,再给最终答案。直接报答案相当于学生不写过程,中间算错无从检查;写出过程则让每一步都可验证、可追溯,就像老张要求的“演算过程”。
Q5. 提示词中"Let's think step by step"的主要作用是?
- A.约束答案格式的规则
- B.扩充训练数据的手段
- C.触发思维链的开关指令← 正确答案
- D.定义损失函数的公式
答案:C。它是一句“触发词”,指示模型以逐步思考的方式作答。它不改变模型参数,也不约束输出格式,只是像老张在卷首写的那句“请写出演算过程”一样,改变答题方式。
Q6. CoT 增益与模型规模的关系是?
- A.模型规模完全没有影响
- B.中等规模的模型最优
- C.模型越小提升越显著
- D.模型越大提升越显著← 正确答案
答案:D。CoT 存在“规模涌现”:参数规模超过约 100B 后增益才显著,小模型提升微弱甚至下降。原因在于小模型难以稳定执行多步推理,写出来的过程本身就容易出错,好比学渣抄演算过程也抄不对。
Q7. CoT 评测中从推理链提取最终答案通常使用?
- A.人工阅读每一条生成结果
- B.正则匹配推理链尾部数字← 正确答案
- C.随机挑选中间某个步骤
- D.比较隐藏层嵌入向量距离
答案:B。评测框架通常用正则表达式匹配最后一个数字作为预测答案,速度快、规则统一。人工阅读成本太高且标准不一,相当于老张不可能每题亲自精读,必须依赖统一的“判卷手册”。
Q8. 一次完整的 CoT 评测流程包含哪些环节?
- A.构造提示词模板← 正确答案
- B.执行模型推理生成← 正确答案
- C.提取并比对答案← 正确答案
- D.修改训练集标签
答案:ABC。评测四步是“搭环境—造提示—跑推理—判分”,对应 A、B、C。修改训练集标签属于数据污染行为,会破坏评测公平,就像考前偷偷改标准答案,是绝对不能做的事。
Q9. 影响 CoT 评测可复现性的关键因素包括?
- A.采样温度参数设定← 正确答案
- B.提示词的具体写法← 正确答案
- C.答案提取判定规则← 正确答案
- D.显示屏的品牌型号
答案:ABC。温度影响生成的随机性,提示词写法影响模型行为,答案提取规则影响判定结果,三者都必须固定才能复现。显示屏品牌不影响模型输出,属于无关干扰项,就像考场窗帘颜色不影响学生成绩。
Q10. 自洽性(Self-Consistency)策略的组成部分包括?
- A.多次独立随机采样← 正确答案
- B.对候选答案多数投票← 正确答案
- C.保留完整推理链条← 正确答案
- D.固定使用单次贪婪解码
答案:ABC。自洽性用较高温度采样多条推理链,每条得到候选答案,统计出现最多的答案作为最终输出。单次贪婪解码恰恰是自洽性想要替代的确定性解码方式,就好比只让一个学生算一遍,不如让多个学生算完再投票。