← 全部极客知识库

大模型通识 / 大模型理论基础

7. 推理模型:为什么多花一些计算,可能解出更难的问题

原文备份 · 第 8 / 20 篇 · 查看极客时间原知识库 ↗

本篇目录 · 15 节

来源:大模型理论基础

你的个人复习助手已经能把笔记改成问答卡。现在,你给它一个稍微复杂的任务:安排今晚的学习时间。

可用时间:19:00—20:30,共 90 分钟。
任务 A:复习概念,25 分钟。
任务 B:完成练习,35 分钟,必须在 A 完成后开始。
任务 C:整理错题,20 分钟,可以放在任何位置。

所有任务都要完成,而且不能拆开。
中间恰好休息一次,休息 10 分钟。
任意一段连续学习不能超过 45 分钟。

直接按 A、B、C 排下来,看起来很自然。但 A 加 B 已经是 60 分钟,违反连续学习的上限。如果在 A 后休息,B 加 C 又有 55 分钟。

问题不在于能否写出一张漂亮的时间表,而在于能否同时满足多个条件。模型需要比较安排、保留约束、排除不合格方案,再检查结果。这正是理解推理模型的一个入口。

上一篇介绍了后训练如何塑造助手行为。本篇进一步讨论:训练怎样改善多步解题能力,以及模型参数不变时,怎样通过增加本次任务的计算提高成功机会。 所有日程、概率与预算算例均为教学构造,不是模型实测。

一、先分清“推理”的两种意思

机器学习里的 Inference,通常也译作“推理”,指使用训练好的模型计算输出。哪怕只是给笔记贴一个标签,也属于这个意义上的推理。

而“推理模型”里的 Reasoning,更强调处理多步关系、约束、计算、论证或搜索。二者有关,但不等同:

说法 这里指什么
执行一次模型推理 用模型参数处理输入并得到输出
模型具有推理能力 能在某些任务上正确处理多步关系与约束
增加推理时计算 回答当前任务时多投入计算,不一定更新参数

“推理模型”也不是一套统一认证的架构名称。这里用它指针对复杂解题进行过专门训练、并能使用相应解题过程的模型。普通语言模型同样可能完成推理任务;模型名称中有“推理”二字,也不能代替评测。

二、把中间结果留下来,为什么可能有帮助

先由我们手工解开篇的日程题。

学习总时长是 25+35+20=80 分钟,加休息正好 90 分钟。休息把学习分成前后两段,每段最多 45 分钟。由于 B 已经占 35 分钟,再加 A 或 C 都超限,所以 B 必须单独占一段;A 与 C 合起来恰好是 45 分钟。

又因为 A 必须在 B 前面,可以这样安排:

时段 安排 时长
19:00—19:25 A:复习概念 25 分钟
19:25—19:45 C:整理错题 20 分钟
19:45—19:55 休息 10 分钟
19:55—20:30 B:完成练习 35 分钟

检查时不看文风,而看四件事:任务各出现一次且未拆分;B 在 A 之后;总用时 90 分钟;连续学习分别为 45 和 35 分钟。C、A、休息、B 也是有效安排,因此这道题没有唯一时间表。

对于自回归语言模型,生成出的中间 Token 会成为后续生成的上下文。把“B 必须单独成段”“A 与 C 合计 45 分钟”等中间结果保留下来,可以为后续选择提供条件。后续步骤无需只从最初长问题直接跳到最终答案。

这类中间推导通常称为 CoT,Chain of Thought,思维链。原始 CoT 提示研究通过在提示中给出带中间步骤的示例,在所测模型的算术、常识和符号任务上观察到改善。《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》

不过,多生成 Token 本身没有赋予每一步正确性。模型也可能先错误地写下“A 和 B 只需 40 分钟”,然后围绕这个错误继续生成流畅解释。中间步骤提供了计算与检查的机会,也可能传播错误。

写一句“认真思考”,不等于完成推理训练

提示可以引导模型使用已有能力,但不会因为多了一句要求,就把一个模型训练成另一种模型。

同样,让模型把一个简单回答扩写成两千字,并不等于增加了两千字有效解题。对日程题有价值的是约束检查、候选比较和算术核对;重复题目或表态“我将仔细考虑”,未必产生相同收益。

三、推理能力怎样通过训练改善

可以从两类训练信号理解,而不必先学习完整算法推导。

用解题示范进行监督训练

训练材料可以包含问题、中间解法和答案。模型学习在类似输入下生成这些步骤;若示范包含识别约束、比较分支、纠正错误,相关行为就成为训练目标的一部分。

示范仍要有质量。仅仅收集很长的文字,或者只保留最后答案对、过程却错误的样本,不能保证教会可靠推导。训练目标和数据覆盖决定了哪些行为得到强化。

用可以检查的结果提供奖励

有些任务允许程序判定结果。例如,检查一个时间表是否满足所有约束,或运行代码的测试用例。这样的反馈不只是在比较“哪段话更让人喜欢”,而是检查明确条件。

用开篇题目构造四个候选,每个候选都只休息一次:

候选 核查结果 教学奖励
A、B、休息、C 第一段连续学习 60 分钟 0
A、C、休息、B 满足全部条件 1
C、A、休息、B 满足全部条件 1
B、休息、A、C B 在 A 之前 0

训练程序可以利用这类差异更新模型,让通过检查的生成行为获得更有利的学习信号。这里关键的一步是参数更新;只是在应用里生成四份计划并选一份,不等于已经做了强化学习。

DeepSeek-R1 原始报告是一个具体案例:R1-Zero 从预训练基础模型开始,在没有前置 SFT 的情况下进行强化学习;报告使用数学答案检查和代码测试等规则奖励,并采用 GRPO,以一组输出的分数构造相对反馈。R1 则加入冷启动示范及多阶段训练,以处理可读性等问题。DeepSeek-R1 原始技术报告

这不意味着 R1-Zero “没有训练数据”,也不意味着普通应用必须复制这条路线。它已经有预训练基础,强化学习阶段仍需任务和反馈。上面的 0/1 表只解释奖励差异,不是 GRPO 的完整算法实现。

最后答对,与每一步合理,是两种监督粒度

结果监督主要评价最终产物;过程监督还评价中间步骤。例如,最终时间表合格是一种结果检查,“B 与任何另一任务放在同一段都会超限”则是一条可以独立检查的推导。

《Let's Verify Step by Step》研究比较了结果监督与过程监督,并在其数学任务实验中观察到过程监督的优势。原始论文 但过程标注更细,评价器也可能误判;不能推出每个任务都必须逐步标注,或逐步打分一定最好。

无论采用哪种反馈,检查器覆盖什么,训练才直接获得什么信号。代码通过有限测试,并不证明没有其他缺陷;日程满足给定时长,也不证明它符合没有写出的个人习惯。

四、参数不变,也可以给当前问题更多计算

完成训练后,模型参数通常在一次普通调用中保持不变。我们仍可通过不同方式增加本次解题的计算,称为 Test-time Compute / Inference-time Compute,推理时计算。

方式 额外计算用在哪里 主要局限
一条解题路径走得更深入 分解、计算、检查、修订 可能在错误前提上越走越远
生成多个候选 尝试不同路径或方案 候选可能重复犯同一种错
搜索并验证候选 给分支评分、淘汰违规方案 取决于验证器是否准确、完整

这些方式可以组合。一条较长路径也可能在内部尝试多个方案;产品里的“思考等级”更不是对所有模型通用的固定步骤数。具体服务如何控制预算、怎样计费,需要查看对应文档,本篇不假定统一参数名或固定倍率。

相关研究发现,不同推理时计算方法的收益会随问题难度变化;在一定实验条件下,按问题分配计算比一律使用同一种候选数量更有效。《Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters》

因此,训练计算和推理时计算解决的是不同问题:前者改变模型以后怎样处理一类问题,后者为眼前这道题增加尝试与检查。二者可以互补,不能无限互相替代。模型若完全缺少必要知识,重复计算并不会自动补入那份知识。

五、多试几次,为什么不等于最终正确率相应提高

这是理解推理预算时最容易混淆的一点。

“至少出现一次正确答案”的概率

假设针对某一道固定问题,每次尝试成功概率都是 40%,各次尝试独立。这是便于手算的假设,不是对真实模型的测量。

一次失败概率是 60%。四次全部失败的概率是:

0.6 × 0.6 × 0.6 × 0.6 = 0.1296

因此四次中至少一次成功的概率是:

1 - 0.1296 = 0.8704,也就是 87.04%

一般写作 1-(1-p)^n,其中 p 是每次成功概率,n 是尝试次数。

但 87.04% 说的是候选集合里至少有一个正确答案。如果系统不知道哪一个正确,随机挑一个交付,并没有自动得到 87.04% 的最终正确率。只有在能可靠识别并选中正确候选等条件下,候选覆盖率才可能转化为交付成功率。

也不能把模型在一百道不同难度问题上的平均正确率,直接当成每一道题都固定为 40%。题目差异、系统性错误与候选之间的依赖,都会使简单公式失去对应的现实含义。

多数投票也不是天然正确

Self-consistency,自一致性,研究了采样多条推理路径、汇总最终答案的方法,并在所测任务中获得改善。《Self-Consistency Improves Chain of Thought Reasoning in Language Models》

它利用的是不同路径对结论的支持,但共同出现不等于共同正确。

再构造一个只有“正确”和“同一个错误答案”两种结果的例子,每次独立,正确概率仍是 40%。三次投票要至少两次正确才选对:

恰好两次正确:3 × 0.4² × 0.6 = 0.288
三次全正确:0.4³ = 0.064
多数正确:0.288 + 0.064 = 0.352,即 35.2%

此处比一次的 40% 还低。这个反例不否定自一致性的实验收益,而是说明收益需要条件;正确答案与错误答案如何分布,会改变结果。尤其对日程题,多个不同时间表都可能正确,逐字投票还可能把正确方案拆散。

有明确约束时,检查候选比数票更直接

对开篇任务,可以检查任务顺序、时长、休息和连续学习,而不是统计哪张表出现次数最多。

flowchart LR
    A[任务与明确约束] --> B[生成一个或多个候选]
    B --> C[检查顺序 时长 休息 连续学习]
    C --> D{存在合格候选吗}
    D -->|是| E[选择合格方案并交付]
    D -->|否且仍有预算| F[带上失败原因继续尝试]
    F --> B
    D -->|否且预算耗尽| G[说明未找到合格方案]

这仍不等于检查器能证明一切。在开放式分析里,很多标准无法被几条程序规则完全覆盖。模型评分器能扩大检查范围,却也引入新的误差来源。

六、长解释、慢响应和正确推理之间没有等号

看到模型写出长段分析,很容易把它当作内部计算的完整实录。但模型生成的说明、用户可见的推理摘要与实际决定输出的计算过程,不能简单画等号。

关于思维链忠实性的研究发现,模型的解释可能没有准确反映影响其判断的因素。解释看起来合理,不足以证明它完整呈现了判断原因。《Language Models Don't Always Say What They Think》

对应用开发者,更有用的要求是让最终结果可核对。例如,让日程助手给出时间表和每段连续学习时长;让算术助手给出必要等式;让代码助手提供可以运行的修改与测试结果。你需要的是可检查的依据,而非尽可能长的自述。

响应慢也不一定表示进行了更多有效推导:排队、网络、工具调用和输出长度都可能影响等待时间。反过来,最终答案很短,也不表示之前没有投入额外计算。

因此,预算检查至少要看两件事:任务表现是否改善,以及代价是否在可接受范围。单独观察文字长度或等待时间,都无法回答这个问题。

七、给复习助手分配预算,而不是每次都开到最大

“把笔记标题改得简短”与“在多项约束下排一周日程”,需要的处理深度通常不同。可以先在自己的样本上比较几种计算预算,再决定是否值得升级。

一个实际可用的检查设计是:保持模型版本、输入材料和判定规则一致,改变计算预算或候选生成策略;记录合格率、遗漏类型、端到端耗时和实际费用。涉及随机采样时,每种设置应多次运行,不用某次幸运结果代替稳定收益。

下面只演示预算分配的算术:假设有 20 个任务,18 个简单、2 个复杂;低预算每个消耗 10 个虚构成本单位,高预算每个消耗 100 个。

分配方法 教学成本
全部高预算 20 × 100 = 2000
简单任务低预算,复杂任务高预算 18 × 10 + 2 × 100 = 380

差额是 1620,约节省 81%。但这没有证明第二种方式保持了同样质量。现实中,你未必能事先完美判断难度,初次尝试和升级重试也有成本,必须把它们纳入实际记录。

可以先把明显的格式转换留在较低预算,把复杂约束问题交给更充分的计算;如果检查失败,再在成本上限内升级。对于题目本身矛盾、资料缺失、工具报错等情况,升级思考预算未必有效,应分别修正输入、补充资料或处理工具问题。

还要记住,Token 数只是某些场景下的成本线索。一条长路径与多条短路径可能重复处理不同数量的输入,也可能使用验证器和缓存;Token 总数相近,不代表运算量、延迟和费用完全相同。

八、理解检查

1. 一次生成八份计划、检查后选出一份,是否说明模型完成了强化学习?

不一定。若没有训练损失、梯度和参数更新,只是在使用阶段进行候选生成与选择,属于推理时计算。

2. 开篇任务能按 A、休息、B、C 排吗?为什么?

不能。B 与 C 连续学习 55 分钟,超过 45 分钟。总时间合格不能代替逐条约束检查。

3. “A、C、休息、B”和“C、A、休息、B”为什么都合格?

前一学习段均为 45 分钟,后一段 B 为 35 分钟;休息 10 分钟,总计 90 分钟;两种情况下 A 均在 B 前。C 没有顺序限制。

4. 独立尝试成功概率为 50%,三次中至少一次成功的概率是多少?是否等于任意选择一个候选的成功率?

前者是 1-0.5³=87.5%。任意选择没有保证;若不看结果、随机选一个,则仍是 50%。要交付正确候选,还需要可靠的选择过程。

5. 为什么模型多次给出同一答案,也不能直接当成事实依据?

多次输出可能共享错误前提;固定偏差不一定因采样而消失。应结合原始材料、计算或独立检查。对多解问题,还不能只数逐字相同的答案。

6. 提高计算预算后,答案更长但任务合格率没有提高,该怎样判断?

额外计算尚未显示出该任务上的收益。检查任务是否缺资料、标准是否明确、失败是否能由程序处理,再比较成本与效果;不把长度增加当作能力改善。


推理训练影响模型怎样利用解题机会,推理时预算影响眼前任务可以尝试和检查多少。两者的价值最终都要落到可核对的任务结果上。

下一篇《上下文窗口、缓存与记忆:模型这一次到底看到了什么》,我们将回到输入:模型即使愿意花更多计算,也必须先得到完成任务所需的信息。

上一篇:后训练与对齐 · 返回第二部分大纲