想一想数学考试。小明拿到卷子,笔尖飞速移动,三分钟就答完——可惜答案错了一半。小红则不慌不忙,掏出草稿纸,先写“设未知数为 x”,再一步步列式、化简、验算,最后才工整地把答案誊到卷面。虽然慢,却几乎全对。同样的知识点,考试时“打不打草稿”,成绩天差地别。 大模型也有类似的秘密。过去,我们拼命堆训练算力,让模型本身变得更聪明;但最近两年,研究者发现:在“考试”这一刻(推理阶段)多给模型一点时间和算力,让它先把思考过程写下来再作答,准确率也会大幅提升。这个思路被称为推理时间缩放(Inference-Time Scaling),而思维链(Chain-of-Thought,简称 CoT)就是那张“草稿纸”。 本文不堆砌艰深公式,只用“打草稿”这条主线,串起 CoT 的原理、零样本 / 少样本用法、自洽性投票,以及 o1 模型的搜索式推理,让你从直觉上理解大模型如何“越思考越强大”。
掌握推理时间缩放,意味着你不换模型、不重训模型,仅靠巧妙的提示与解码策略就能显著提升回答质量——这是 AI 从业者撬动大模型潜力的核心杠杆。
目录
可视化演示
展示思维链CoT的逐步推理过程、自洽性多路径投票机制,以及推理时间缩放的token消耗与准确率对比。
本节配有交互动效(进入视口后自动加载,约 3KB)。
CoT推理链 问题逐步分解为推理步骤 每步生成token增加计算量 Q→S1→S2→S3→A 更多推理步骤意味着更多前向传播计算
思维链原理:草稿本上的步步为营
回到开头的考场。小红之所以答得准,不是因为她比小明聪明,而是她把一道大问题拆成了一系列小步骤:列方程、移项、合并、验算。每一步都简单可查,错了也能立刻发现。思维链 CoT 的原理完全一致——它要求大模型在输出最终答案之前,先把中间的推理步骤写出来,让模型“先打草稿,再誊答案”。
为什么“多写几步”能提升准确率?因为大模型是逐 token 生成的,每个推理 token 都像一次额外的“思考循环”。中间步骤相当于工作记忆,把长问题的状态显式地保存下来,模型可以基于这些状态继续推演,而不用把一切压力都压在一次跳跃式的预测上。
从概率角度看,CoT 的本质是把“一次性猜答案”的联合概率分解成可验证的条件概率链:
草稿的价值在于:它把“一步登天”的难题,转化成了“步步为营”的阶梯。每一步只要比整体问题简单一点点,最终的准确率就会显著提升——这就是思维链让模型“越思考越强”的数学直觉。
- 左侧目标量 P(y|x)给定问题 x,模型直接输出正确答案 y 的概率。不打草稿时,这个概率往往不高。
- 求和符号 Σ 与路径集合 Z把所有可能的“草稿本”路径都枚举一遍,Z 表示所有可写的推理路线。
- P(z|x)拿到问题 x 后,模型先写出某条推理路径 z 的概率,也就是“打草稿”这个动作本身。
- P(y|x,z)在问题 x 和草稿 z 都齐备后,得到答案 y 的条件概率。中间步骤越充分,这一步越可靠。
推理计算量:草稿纸该写多厚
草稿纸并不是越厚越好。小红写三页草稿能解出难题,但如果每道选择题都写十页,时间就浪费了。推理时间缩放研究的正是“草稿纸厚度”与“准确率”之间的关系。
在语言模型中,推理计算量最直接的度量是生成的 token 数量。直接回答一个数学题可能只需 5 个 token;而 CoT 会让模型输出 200 个推理 token。这些增加的 token 就是推理阶段多花的那几张“草稿纸”。训练阶段的缩放通过更多数据和算力让模型变聪明;推理时间的缩放则让同一个模型在“考试时多思考一会儿”。前者改变大脑,后者改变答题策略。
实验发现,准确率随推理计算量的增长并非直线上升,而是先快后慢,最终逼近一个饱和值。可以用一个简洁的饱和增长模型来描述:
理解了这条曲线,你就掌握了推理时间缩放的“经济学”:把算力花在增长最快的区间最划算,一旦曲线进入饱和区,再多的草稿也只是自我感动——这为后续讨论 o1 的算力预算埋下伏笔。
- A(C)给定推理计算量 C 时的模型准确率,也就是“草稿写到第几张”时的得分。
- a(基线准确率)C=0 时直接作答的准确率,对应完全不打草稿的裸答水平。
- b(最大提升空间)深度推理能给准确率带来的最高增量,对应从“裸答”到“完美草稿”的差距。
- 1-e^{-λC}(饱和增长项)前期计算量增加一点,准确率就快速上升;后期再多写草稿,提升微乎其微。λ 控制增长速率。
- C(推理计算量)近似等于推理阶段生成的 token 数,也就是“草稿纸”的厚度。
零样本CoT:老师的一句提醒
有时候,小红根本不需要例题,只需要监考老师喊一句“都给我一步步来!”,她就会自觉地打草稿。零样本 CoT(Zero-shot CoT)就是这句“老师提醒”。
它的做法简单到令人惊讶:在问题后面加一句“Let's think step by step”(让我们一步步思考),模型就会从“直接给答案”切换到“先写推理”的模式。为什么一句话有这么大威力?因为大模型的训练语料里充满了大量“逐步解题”的文本,触发短语像一把钥匙,激活了模型早已学会、但默认没有开启的推理能力。
用数学语言描述,零样本 CoT 就是在给定问题 x 和触发短语 s 的条件下采样答案:
零样本 CoT 最大的优点就是“零成本启动”——不用准备任何示例,一行提示语即可。但它也像老师只喊一句话,效果全看学生自觉:如果问题过于复杂,或者模型本身没学过类似题型,这句提醒就收效甚微。因此它适合快速验证想法,但对高难度任务往往不够。
- y_cot经过零样本 CoT 后模型最终输出的答案,它是“被打过草稿”的答案。
- arg max_y P(·)在所有候选答案中,找出条件概率最大的那一个作为输出。
- s_trigger(触发词)一段简短的指令文本,比如“Let's think step by step”,相当于老师的一句“一步步来”。
- P(y | x, s_trigger)在同时看到原问题 x 与提醒语 s_trigger 后,模型输出答案 y 的概率。
少样本CoT:例题示范的力量
如果老师光喊“一步步来”还不够,下一招就是亲自在黑板上讲两道例题。少样本 CoT(Few-shot CoT)正是如此:在提示中预先给出几个“问题 → 推理步骤 → 答案”的完整示例,让模型照着示范的格式答题。
示例的作用不只是“给答案”,更是在对齐一种推理格式。模型看到例题里先写“已知条件”,再写“代入公式”,最后“验证结果”,它就会模仿这条推理路径处理新问题。你可以把示例集想象成一本字帖,模型照着字帖练字,写出来的字自然有章法。
假设准备 k 个示范,每个示范包含问题 q、推理链 z、答案 a:
有了示范集,新问题 q_new 到来时,模型会“照葫芦画瓢”地先推理后作答。与零样本相比,少样本 CoT 不仅告诉模型“你要打草稿”,还展示了“草稿到底长什么样”。当然,示例的构造本身是门手艺——选错例题,反而会把模型带偏。
- D_demo(示范集)内置在提示词中的少量示例集合,相当于老师在黑板上留下的例题。
- 三元组 (q_i, z_i, a_i)第 i 个示范的三要素——问题、推理步骤、最终答案。缺了中间的 z_i,示例就退化成普通问答,失去“教打法”的意义。
- 下标 i 与总数 ki 从 1 取到 k,k 通常为 2~8 个示例。太少学不到格式,太多则挤占上下文窗口。
自洽性投票:多同学独立表决
一个人打草稿可能走岔路。那怎么办?让五个同学独立做同一道题,然后看哪个答案得票最多。这就是自洽性(Self-Consistency)的核心思想:不再是“跑一条推理链”,而是“跑 N 条,再投票”。
具体做法是:对同一个问题,用较高的温度参数重复采样多次。温度就像“思维发散度”——温度高时,模型每次生成的推理路径都会有些不同;这些路径有的绕远,有的抄近道,但最终往往会收敛到少数几个答案。由于正确的推理路径通常比错误的更稳健,多数投票就能把零散的错误路径压下去。
用公式表达投票过程:
自洽性相当于把“单兵作战”升级为“小组协同”。每一条路径都像一个独立思考的同学,即使有个别同学犯了错,只要绝大多数同学推理正确,投票结果依然可靠。当然,前提是采样必须足够多样化——如果五个人抄同一份答案,投票就完全没有意义了。
- N(采样路径数)一共让模型独立推理多少次,也就是“同学”的人数。通常取 5~20 条。
- y_i(单条路径的答案)第 i 次采样时,模型沿着某条推理链给出的答案。
- 指示函数 1[·]当条件成立时计 1,否则计 0。遍历所有候选答案 y,统计它被多少条路径选中。
- 外层 arg max(多数投票)在所有候选中,挑出累计票数最多的答案作为最终输出。
o1推理策略:学霸的思路树
普通同学打草稿是一根线:顺着写下去,错了就整页划掉。学霸不一样,他们在脑子里展开的是一棵“思路树”——遇到岔路就分叉探索,发现死胡同就回溯换路,最后不仅选定一条最优路径,还会回头验证每一步。o1 模型把这种“搜索式推理”搬进了语言模型的推理阶段。
o1 会为当前问题生成多条候选推理轨迹,并对每条轨迹的“顺畅度”打分。什么是顺畅度?直观地说,如果一条推理路径每一步都踩在逻辑的必然上,那么每一步的生成概率都会比较高;一旦某一步出现不合理的跳跃,概率就会骤降。因此,对整条轨迹的对数概率求平均,就可以作为路径优劣的评分:
o1 的本质,是把推理时间从“写一条链”扩展为“搜一棵树”。搜索树越深、分支越多,找到正确答案的机会越大,但消耗的算力也越高。因此 o1 内部还有一个“算力预算”机制:简单问题少搜,复杂问题多搜,避免为每一道题都写一整本草稿。
- τ(完整轨迹)一条从问题到答案的完整推理路径,由 T 个步骤组成。
- s_t(第 t 步内容)推理过程中第 t 步写下的文字,可能是列方程,也可能是排除一个错误选项。
- P(s_t | s_1, …, s_{t-1})在已知前 t-1 步的条件下,第 t 步出现的条件概率。逻辑自然的步骤概率高。
- log(对数)把相乘的概率变成相加,避免连乘导致数值下溢;同时让“不太可能”的步骤显式地拉低总分。
- 1/T 求平均归一化步数差异,避免“路径越长分越低”的偏差,让长路径和短路径可以公平比较。
应用与局限:草稿纸的成本账
讲了这么多“打草稿”的好处,我们也得冷静算算账。草稿纸是要花钱的:推理 token 越多,接口延迟越高、费用越贵。数学题用 CoT 是杀鸡焉用牛刀,但让模型回答“今天星期几”也要先写 300 字推理,就纯属浪费了。
因此,是否启用推理时间缩放,本质上是一道“成本收益”题。设准确率提升为 ΔA,计算成本为 C 乘以单位成本系数 α:
此外还有两个必须警惕的风险:一是幻觉风险,模型可能写出一套看似合理实则错误的推理步骤,草稿反而成了“自信的胡说八道”;二是适用边界,CoT 在数学、逻辑、规划、代码等需要多步推演的任务上效果显著,在简单事实问答、低延迟交互场景中则可能南辕北辙。未来,更聪明的推理时间缩放会像一位精明的考生——自动判断每道题的难度,合理分配草稿纸,把算力花在刀刃上。
- ΔA(C)(准确率增量)使用 C 单位的推理计算量后,相比不打草稿提升的准确率。
- A(0)(基线)零额外推理时的准确率,对应裸答水平。
- α(单位成本系数)每生成一个 token 的金钱与延迟代价,它是把“推理时间”换算成“成本”的汇率。
- 净收益(决策判据)净收益大于零才值得增加推理,小于零时再多草稿也是负优化。
AI 应用场景
场景1:数学解题辅导App
阶段:推理阶段(推理时间缩放)
解决的问题:传统聊天机器人直接回答数学题,经常“跳步”甚至算错。用 Few-shot CoT 让模型先输出分步解题过程,再用 Self-Consistency 投票校验最终答案,兼顾“讲过程”与“保正确”。
具体案例:某 K12 教育 App 在提示中预置 3 道带完整推理步骤的例题示范,将温度设为 0.7,采样 5 条推理路径投票。接入后,应用题自动批改准确率从 61% 提升到 88%,学生还能看到每一步推理过程。
场景2:金融研报信息抽取
阶段:推理阶段(推理时间缩放)
解决的问题:从长篇研报中抽取结构化指标时,直接抽取容易张冠李戴。用 CoT 引导模型“先定位证据句,再抽取实体”,最后用自洽性多路径校验,降低抽错率。
具体案例:某量化团队用零样本 CoT 提示“Let's extract step by step”,让模型在抽取前先标出相关句子,再输出指标值。相比直接抽取,字段级准确率从 74% 提高到 91%,人工复核成本减少一半。
场景3:代码缺陷审查
阶段:推理阶段(推理时间缩放)
解决的问题:代码审查需要跨函数追踪变量状态,单次直接判断容易漏掉边界条件。用 o1 风格搜索式推理,让模型先概览结构、再逐函数检查边界、最后综合投票判定缺陷。
具体案例:某研发效能团队在 CI 流水线中接入 CoT 审查提示,对每次提交的代码生成“漏洞假设列表”再逐条验证。试点两个月,误报率比直接提示降低 35%,且能给出可定位到行号的解释。
Python 演示
import random class MiniReasoner: """模拟小模型:同一个模型,用不同推理方式得到不同准确率""" def __init__(self): self.kb = { "1+1=?": "2", "2+3=?": "5", "5+7=?": "12", "12+9=?": "21", } self.wrong = ["3", "4", "8", "13", "20"] def answer(self, question, error_rate): if random.random() < error_rate: return random.choice(self.wrong) return self.kb[question] def direct(self, q): """不带草稿的直接回答:40% 出错率""" return self.answer(q, 0.40) def cot(self, q): """思维链:先写中间步骤再给答案,出错率降到 15%""" return self.answer(q, 0.15) def consistency(self, q, trail_num=5): """自洽性:多条推理路线,多数投票""" votes = {} for _ in range(trail_num): ans = self.cot(q) votes[ans] = votes.get(ans, 0) + 1 return max(votes, key=votes.get) def evaluate(model, call, questions, rounds=20): correct = 0 total = len(questions) * rounds for _ in range(rounds): for q in questions: if call(q) == model.kb[q]: correct += 1 return correct / total def main(): random.seed(42) model = MiniReasoner() questions = list(model.kb.keys()) acc_direct = evaluate(model, model.direct, questions) acc_cot = evaluate(model, model.cot, questions) acc_sc = evaluate(model, model.consistency, questions) print("直接回答准确率: {:.1%}".format(acc_direct)) print("思维链准确率: {:.1%}".format(acc_cot)) print("自洽性准确率: {:.1%}".format(acc_sc)) print("结论: 推理时间越长,正确率越高 -- 推理时间缩放") if __name__ == "__main__": main()
self.answer(question, error_rate)核心采样函数:以一定概率答对,以剩余概率随机给错误答案,模拟不同推理方式下的出错率。def direct(self, q)模拟“不打草稿”的直接回答,设置 40% 的高出错率。def cot(self, q)模拟思维链,推理过程让出错率降到 15%。def consistency(self, q, trail_num=5)模拟自洽性:调用 5 次cot收集答案,再用字典计数选出得票最多的答案。def evaluate(model, call, questions, rounds=20)评估函数:对每个问题重复 20 轮,计算平均准确率,让结果更稳定。max(votes, key=votes.get)多数投票实现:在字典中取出票数最高的答案作为最终输出。
常见误区
误区以为提示词里多加“请认真思考”“请你务必仔细”“一步步详细分析”就能提升效果,结果模型反而输出一堆废话或答错。
正解CoT 的关键在于提供可执行的推理结构,而不是情感化口号。简洁的“Let's think step by step”或两三道格式清晰的示例,远胜于冗长的重复强调。过长的提示会稀释模型注意力,甚至诱导模型为了“凑步骤”而幻觉。
为何常见:零样本 CoT“加一句话就变准”的成功经验,容易让人产生“加越多越有效”的线性外推——但模型不是越催越努力的考生。
误区不管什么任务都套上“逐步思考”,连“北京是哪个国家的首都”这种常识问题也要求模型先推理 200 字。
正解多项研究表明,对简单任务使用 CoT 可能伤害准确率——模型被引导到过度思考,反而把简单问题复杂化。正确做法是根据任务难度动态选择:多步逻辑、数学、规划类任务开 CoT;事实检索、情绪分类、低延迟场景用直接回答。
为何常见:CoT 在数学基准上动辄提升 20 个百分点的亮眼数字,让初学者误以为它是放之四海皆准的万能模板。
误区以为 Self-Consistency 就是机械地重复采样多次再统计频率,于是用温度设为 0 或固定随机种子反复跑 10 遍,发现结果毫无变化。
正解自洽性的数学前提是路径多样性——只有每次采样路径足够独立(通常需要将温度调到 0.4~0.7 甚至更高),投票才有统计意义。如果采样完全确定性,多数投票就退化成单次采样。
为何常见:把“多数投票”误以为是纯粹的后处理技巧,忽略了温度参数在制造多样性中的关键角色。
误区以为 o1 类模型会无止境地搜索推理树,直到耗尽所有算力才停,因而使用时不计成本地等待。
正解o1 内部有推理预算(inference budget)机制,会根据问题难度自动分配 token 预算:简单问题几秒出答案,难题才花几十秒深搜。无限搜索既不经济,也不符合产品对延迟的要求。
为何常见:媒体宣传聚焦于 o1“深度思考”的高光时刻,让人忽略了它在工程实现上对算力的精打细算。
面试题
Q1. 思维链CoT的核心思想是什么?
- A.扩大训练数据规模
- B.增大模型参数量
- C.先输出中间推理步骤← 正确答案
- D.调整学习率策略
答案:C。CoT 的核心是让模型在给出最终答案前先输出一串中间推理步骤,相当于考试打草稿。扩大数据、增大参数量属于训练阶段缩放,调整学习率是训练技巧,都与 CoT 的定义无关。
Q2. 零样本CoT通常使用哪一类触发词?
- A.请直接快速作答
- B.直接给正确答案
- C.不解释只输出
- D.让我们逐步思考← 正确答案
答案:D。零样本 CoT 的经典触发短语是“Let's think step by step”,即“让我们逐步思考”。它能激活模型在训练语料中学到的逐步解题模式;直接作答、不解释等指令恰恰是要求模型跳过推理。
Q3. 自洽性Self-Consistency如何汇总多条推理路径得到最终答案?
- A.取第一条路径的结果
- B.按路径长度加权平均
- C.对所有答案做多数投票← 正确答案
- D.随机选一条路径输出
答案:C。Self-Consistency 的核心是“多数投票”:采样 N 条独立推理路径,统计每个答案出现的次数,得票最高者胜出。取第一条、随机选一条都没有利用路径多样性;按长度加权在算法定义中并不存在。
Q4. 推理时间缩放主要增加哪个阶段的计算量?
- A.推理生成阶段← 正确答案
- B.预训练阶段
- C.模型微调阶段
- D.数据整理阶段
答案:A。推理时间缩放特指在推理(生成)阶段增加计算量,比如让模型多写推理 token、多采样几条路径。预训练和微调发生在模型发布前,数据整理更是离线环节,都不属于“考试时多打草稿”。
Q5. 下列哪些属于推理时间缩放的实现方法?
- A.思维链逐步推理← 正确答案
- B.自洽性多数投票← 正确答案
- C.扩大预训练语料
- D.多路径搜索回溯← 正确答案
答案:ABD。思维链、自洽性投票、多路径搜索回溯都是在推理阶段增加计算量来换取准确率的手段。扩大预训练语料属于训练阶段缩放,与推理时间缩放相对。
Q6. 自洽性采集中温度参数的主要作用是什么?
- A.控制文本长度
- B.固定随机数种子
- C.调节采样多样性← 正确答案
- D.提升显存利用率
答案:C。温度参数控制采样分布的平滑程度,温度越高,每次生成的推理路径差异越大——多样性是自洽性投票有效的前提。控制长度靠 max tokens,种子与多样性无关,显存利用则完全取决于硬件与显存配置。
Q7. 少样本CoT与零样本CoT的主要区别是?
- A.是否更换损失函数
- B.是否提供推理步骤示范← 正确答案
- C.是否内置预训练示例
- D.是否调节模型温度
答案:B。少样本 CoT 在提示中提供若干“问题→推理→答案”的完整示例,零样本 CoT 只加一句触发词。两者的差别是“有没有例题可参考”,而不是损失函数、内置知识或温度设置。
Q8. o1推理策略包含哪些关键环节?
- A.探索多条推理分支← 正确答案
- B.对分支打分并回溯← 正确答案
- C.强制缩短推理路径
- D.验证修正错误步骤← 正确答案
答案:ABD。o1 在推理阶段会构建多条候选推理分支,对每条轨迹打分评估,发现低分路径会回溯修正。它的目标是充分搜索,而不是强制缩短路径——压缩推理长度恰恰是 o1 尽量避免的。
Q9. CoT更适合以下哪类问题?
- A.简单的单词拼写
- B.多步逻辑推理题← 正确答案
- C.单字类型回复
- D.色块分类任务
答案:B。CoT 的优势在于把复杂问题拆解成多步推理,因此最擅长数学题、逻辑推理等需要连续思考的任务。单词拼写是词表检索,单字回复和色块分类属于极简输出,强行 CoT 只会浪费算力。
Q10. 关于推理时间缩放与CoT,下列说法正确的是?
- A.适用于所有任务类型
- B.自洽性依赖多路径投票← 正确答案
- C.准确率随计算量先升后饱和← 正确答案
- D.推理时间与成本成正比← 正确答案
答案:BCD。自洽性正是靠多条独立路径投票提升稳健性;准确率随推理计算量呈现先快后慢的饱和曲线;生成 token 越多,延迟和费用越高。但 CoT 并非万能,在简单问答和低延迟场景下反而可能造成负收益。