为什么大模型需要“思考模式”?

本人并不是 AI 行业工作者,仅作为业余爱好者分析,欢迎纠错~

思考模式在生产环境是否有效?

自 deepseek-r1 问世之后的所有模型,思考模式是所有模型的标配

chatgpt 有四档思考模式:low medium high xhigh。high xhigh 的思考模式的思维链更长,写出的代码也很明显优于 low medium。deepseek v4 也推出了两档思考模式。

其实在以前没有"思考模式"之前,我们也会在 prompt 添加上:Let's Verify Step by Step。让模型一步步想清楚逻辑,答案往往也会更准确。(不过这种方式会将思考过程和答案混在一起,给人类阅读答案时带来额外的阅读负担,用户并不关心模型的思考过程)

目前已经有大量实践证明,开启思考模式理论上答案会更准确

思考模式是如何被训练出来的?

预训练

学习资料有:网页、书籍代码、论文、数学题、对话等等。预训练训练目标很简单:给定前文,预测下一个词。

例如:

css 复制代码
如果 A>B,B>C,那么 A ?

模型会逐渐学会:

css 复制代码
A>C

在训练过程中,模型不仅仅记住答案,还会隐式学习文本里的"结构" 。比如逻辑链、数学证明、程序执行顺序、因果关系、人类推理格式等等。于是模型内部会形成一种 "生成中间状态"的能力这是 reasoning 的最原始来源

Chain-of-Thought

研究者后来发现,如果让模型直接输出答案:

ini 复制代码
Q: 17×24=?
A: 408

效果一般。但如果训练数据变成:

ini 复制代码
17×24
=17×20 + 17×4
=340 + 68
=408

模型推理能力会明显提升。这就叫做 CoT------把中间推导过程显式写出来。

"思考模型"的能力,其实是学会了"生成推理轨迹",而不仅是"预测答案"。

其中,数学和代码是最典型的具备逻辑的数据。通过多掺入点数学和代码数据,可以泛化到其他领域(可泛化的"世界结构表示")。

RLHF

RLHF(Reinforcement Learning from Human Feedback)并不仅仅是为了"让模型更礼貌",同时也让模型拥有更清晰的推导、更可靠的步骤、更少逻辑跳跃、更符合人类偏好的解释

在训练思考模式的时候,也会检查模型是否输出了特殊 token ,用来"结构约束"------让模型和人类区分思考过程和真正的回答结果

最终模型输出的效果类似这样:

xml 复制代码
<think>
推理
</think>

<answer>
最终答案
</answer>

deepseek-r1 是怎么通过 RL 提高数学能力的?

针对数学和代码这类"可验证任务"(verifiable tasks),核心奖励基本是 结果导向(outcome reward) ,不是人工逐步检查 CoT 推理过程。也就是说,不关心过程是否正确,只关心答案是否正确。比如数学题:

  • 模型的最终答案和标准答案一致,+1 分
  • 不一致,0 分
  • 具体推理过程是不是正确的?并不关心

用伪代码表示奖励函数:

csharp 复制代码
def reward(problem, model_output, gt_answer):
    reward = 0

    # 1. 是否有<think>格式
    if has_think_tags(model_output):
        reward += format_reward

    # 2. 提取最终答案
    pred_answer = extract_answer(model_output)

    # 3. 判定答案是否正确
    if is_correct(pred_answer, gt_answer):
        reward += accuracy_reward

    return reward

虽然主要奖励来自最终答案,但训练过程中会出现一种"隐式过程优化": "好的过程"因为更容易得到正确结果,思考过程被间接强化了

不过在正式版 R1 中,又额外进行了冷启动 SFT,再 RL,再 alignment。避免输出混乱,中文混杂,重复输出等问题。

为什么数学题"不检查过程"?

如果人工去标注"正确推理过程",模型可能会模仿固定模板、过拟合人类写、缺乏探索。

通过以结果为导向,让模型自己发现更高效的推理、非人类风格策略(人类的思考方式不一定最适合模型)、自我验证机制

思考模式为什么有效?

大模型的 "思考"本质上是基于海量数据训练的统计概率预测 ,它并不是像人类那样真正理解逻辑,而是通过数学计算不断推测"下一个 token 是什么"。

这里从 Test-time Compute、scratchpad、attention、概率论角度分析。

Test-time Compute

"Test-time Compute"是目前大模型领域从"快思考"转向"慢思考"的关键技术突破。直译是推理时计算 ,是指:大模型在接收用户输入后、生成最终输出之前,主动消耗额外的计算资源来"思考"的过程

对于一个模型所需要投入的资源,粗略分为两个方向:

  • 训练期投入:更大模型 + 更多训练数据 + 更久训练
  • 推理期投入:模型已经训练好了,但回答时给它更多计算资源

也就是模型在"回答问题的时候"额外花多少算力,让模型在回答时"多想一会" 。现实中的复杂问题,往往需要"试错、回溯、验证"才能解决,而 Test-time Compute 让你在推理阶段(输出最终答案前)低成本地完成这些试错。

普通模型更像这样:

复制代码
问题 → 直接生成答案

带 Test-Time Compute 的系统更像这样:

复制代码
问题
→ 先拆题
→ 算一遍
→ 检查有没有错
→ 必要时换一种方法再算
→ 最后输出答案

以炒菜为例

  • 没有 Test-time Compute(快炒模式):你凭"经验"直接放一勺盐,炒两下就出锅。结果要么淡了,要么咸了。因为你没有在"放盐到出锅"之间投入任何验证步骤。

  • 有 Test-time Compute(边炒边尝):你放半勺盐 → 尝一口(验证)→ 觉得淡 → 再加四分之一勺 → 再尝(再次验证)→ 合适了 → 出锅。

    • 这里的 "尝"和"微调" 就是 Test-time Compute。它消耗了额外的时间(延迟)和一点精力(计算资源),但换来了确定的结果。

Test-time Compute 具体如何在思考模式中体现?

通常通过以下一种或几种技术实现:

  • 思维链(Chain-of-Thought, CoT):把大问题拆成一步一步的小推理。

    • 拼装一套复杂乐高。你不会直接拿一堆零件乱拼。而是看说明书,一步步来:"第一步:找到红色 2×4 砖块 → 第二步:将其固定在底板左下角 → 第三步:在它右边放蓝色 1×2 砖块 ......"
  • 自洽性(Self-Consistency):同一问题,用多种不同思路各算一遍,看哪个答案出现次数最多。

    • 三个同学各自独立做一遍:同学 A 用代数法 → 得出答案 42;同学 B 画图求解 → 也得出 42;同学 C 用特殊值代入 → 得出 42。三个人方法不同但答案一致,你就能非常确信答案是 42。
  • 搜索与回溯(Search & Backtrack):探索一条路走几步,感觉不对就退回上一个岔路口,换条路再试。

    • 走一个陌生的植物迷宫。你走到一个三岔口,先选左边那条路。走了 20 米发现是死胡同,于是退回那个三岔口(回溯),改选中间的路。又走 30 米发现一个分叉,先试右边......最终找到出口。
  • 自我纠正(Self-Correction / Self-Refinement):先做一个初步答案,然后换自己当"考官"挑错,再根据错误修改。

    • 写一封重要的投诉邮件。你先快速写出初稿。然后你换一个身份(像一位严格的编辑)逐句检查:"这里语气太冲 → 改柔和一点"、"这个事实写错了 → 纠正日期"。修改完再检查一遍,最后才点发送。
  • 使用外部验证器或工具:在思考的过程中调用代码解释器、计算器、搜索引擎等外部工具。

    • 解数学方程时,模型可以写 Python 代码并运行来计算结果。
    • 对于时事新闻,思考过程会调用网络搜索去调研最新信息。

现在你在跟大模型聊天的时候,打开思考模式看看思考过程,看看是不是有以上说的这些行为?

不过需要注意的是,思考模式推理的 token 肯定不是越多越好,需要避免模型为了思考而思考。思考需要点到为止。

scratchpad

我们做计算题 57*67=?,绝大部分人是没法一眼就看出答案。而是在草稿写个列式计算,一步步算完后才得到 3819。从结果来看,我们在试卷的填空题填入了 3819,但如果没有中间打草稿的过程,如果我们能直接一眼得到答案,要么之前背过答案(比如模型 SFT 时出现过),要么就是靠猜(模型 zero-shot 预测下一个 token)。

思考模式的过程,其实就是模型自己的"草稿本":把中间想法写成文字,模型可以通过注意力机制回头读取,可被注意力反复读写。

为什么模型也需要打草稿?

  • 减少 工作记忆 负担:模型在生成最终答案时,如果没有中间步骤,就像让你心算"57*67",需要把大量中间结果记在脑子里,很容易出错。而草稿本(即模型生成的中间 token)允许它把中间结果写下来,然后像看题一样"看"到这些中间结果,再基于它们继续计算。这相当于扩展了模型非常有限的有效工作记忆。

  • 把一步大跳变成多步小走:复杂的逻辑推理往往需要多个推理步骤。直接猜答案相当于要模型从输入直接跳到输出,概率很低。但有了"草稿本",模型先写"第一步:......",再写"第二步:......",每一步都是在前一步基础上的微小概率预测,成功率高得多。

  • 错误可追溯、可修正:草稿本上写错了,你可以划掉重来。在"思维树"这类技术中,模型会生成多个不同的"草稿分支",自我评估哪个分支更合理,然后沿着合理分支继续写。比如我们可以看到模型思考的过程中,看到类似这样:"等等,这里好像不对","让我再确认一下这个事实"。模型会在推理的过程中自我反思。

attention

模型凭什么知道"首都是"后面应该接"北京"而不是"烤鸭"?这归功于注意力机制(Attention Mechanism)。

当模型处理一个词时,它会评估输入序列中所有其他词与当前词的相关性,并给这些词分配不同的"权重"(注意力分数) 。相关性高的词,贡献更大。

举个例子

处理"首都是"这个词时,模型会高度关注前面的"中国",而忽略其他无关信息。在处理长句子时,它能"记住"很远地方的"关键信息",比如"我的曾祖父的堂兄的小学同学说......他其实是",模型能通过注意力把"他"和"我的曾祖父的堂兄的"关联起来。

概率论角度

假设直接一步从 A 到 X 的成功概率是 P(A→X)。这要求模型同时做对多个子任务,每个子任务有小概率出错,导致 P 往往较低。

而在思维链中,模型分解为多个简单步骤:A→B, B→C, C→D, D→E, E→X。每个简单步骤的成功概率很高,比如 0.95。那么整个链成功的概率大约是 0.95^5 ≈ 0.77。

虽然单看 0.77 低于 0.95,但关键在于:直接一步 A→X 的实际成功概率往往远低于 0.77,因为模型很难在一个"跳步"中完美地隐式执行所有子任务

也可以看作是贝叶斯定理。在推理中,我们不断获得新证据,每次都将当前的后验作为下一步的先验,再与新证据结合,得到更新的后验

为什么思考模式使用的是"人类语言"?

  • 训练数据决定:模型从海量数学题、代码、人类推理文本中,学会了用语言作为推理介质。

  • 语言是天然计算格式:离散、可组合、可序列化、完美适配 Transformer 的注意力机制。

  • 给模型自己用:模型并没有"记住"自己想过什么,每次生成只依赖当前输入序列。显式写出 = 让模型看到过去的自己,提供稳定可复用的上下文。

  • 给人看:可解释性、调试。

思考模式是在模拟人类思考吗?

副产品,而非本质。

之所以像人类一样思考,是因为训练数据来自人类,且语言刚好是 Transformer 原生的计算格式。

大模型是否可以使用"非人类语言"进行思考?

答案是肯定的,大模型的本质是预测下一个 token,跟具体什么语言无关。

具体可以看 IBM 的这篇《Unnatural Languages Are Not Bugs but Features for LLMs》

这项研究探讨的问题是:对人类而言像"天书"一样的语言,是否对 大模型 来说反而是个"宝藏"?

研究团队发现,大语言模型不仅能处理,还能从"非自然语言"中学习。"非自然语言"指的是那些对人类来说毫无意义、像乱码一样的文本序列。

不过非人类语言的数据还要自己构造(目前模型无法自发自己创造出,更适合它自己思考的语言),而人类语言数据到处都是。使用非人类语言没有收益,甚至对性能是负提升,对思考模式的调试也带来不便(人类不可读)

什么时候思考模式反而没用?

对于极简单的问题(如"1+1=?"),直接预测已经接近 100% 准确(因为 SFT 已经背过答案了),加入思考步骤只是浪费计算资源。

对于纯记忆类问题(如"法国的首都是?"),思考步骤不会提供额外好处,因为不需要推理。

对于模型根本不具备相关知识的问题(如"我昨天穿的袜子颜色"),思考步骤也无法变出正确答案。

总结

  • 大模型 并不像人类那样真正地"思考" 。它没有意识、情感或目标,它的"思考"本质上是基于数学和统计学的模式匹配与概率计算
  • 预训练阶段从海量文本(含数学、代码)隐式学习推理结构,涌现能力使大模型自发产生思维链;RLHF 进一步强化有效推理路径。
  • 思考模式通过让模型在生成答案前"多想一会儿" (如 CoT、自洽性、回溯等),能显著提升复杂问题的准确率,尤其在数学、代码等逻辑性强的任务上。
  • 思考的过程使用的是人类语言。因为 训练数据 以自然语言为主,且语言便于注意力读写、可解释、易调试;虽然理论上可用"非人类语言"思考,但实际无收益且难以调试。
相关推荐
xianrenli3812 小时前
【探讨“LLM作为评判者”的伦理】
学习·llm·ai编程
AI导出鸭PC端12 小时前
智谱清言怎样生成word文档——AI导出鸭助您一键转文档
人工智能·ai·word·豆包·deepseek·ai导出鸭
曾瑞铭Raymond13 小时前
【侄女零基础升级打怪】Vibe Coding氛围编程 AI编程之MySQL 新手学习指引
mysql·ai编程·零基础学ai·瑞铭进阶升级练习稿·ai氛围编程思维
李广坤13 小时前
简单通用的“普通话” vs 严谨灵活的“结构化”:OpenAI 与 Claude API 选型指南
ai编程
沉默王二13 小时前
不用 GPT-Image2,DeepSeek V4/GLM-5.1 + draw.io 就很顶!
gpt·ai编程·deepseek
坚果派·白晓明13 小时前
[鸿蒙PC三方库移植适配] 使用 AtomCode + Skills 自动完成spdlog鸿蒙化适配
c++·华为·ai编程·harmonyos·skills·atomcode
Sirius Wu13 小时前
Agent模型冷启动问题
开发语言·javascript·人工智能·机器学习·ecmascript·aigc
Carson带你学Android13 小时前
让多个 AI Agent 同时写代码?JetBrains 新工具 Air 来了
agent·ai编程·jetbrains
DS随心转插件13 小时前
DeepSeek 代码手机端导出与 AI 辅助方案实测
android·人工智能·chatgpt·智能手机·deepseek·ai导出鸭
用户51914958484514 小时前
Nortek Linear eMerge E3 预认证远程代码执行漏洞利用工具
人工智能·aigc