为什么大模型需要“思考模式”?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
思考模式在生产环境是否有效?自 deepseek-r1 问世之后的所有模型,思考模式是所有模型的标配。 chatgpt 有四档思考模式:low medium high xhigh。high xhigh 的思考模式的思维链更长,写出的代码也很明显优于 low medium。deepseek v4 也推出了两档思考模式。 其实在以前没有“思考模式”之前,我们也会在 prompt 添加上:Let's Verify Step by Step。让模型一步步想清楚逻辑,答案往往也会更准确。(不过这种方式会将思考过程和答案混在一起,给人类阅读答案时带来额外的阅读负担,用户并不关心模型的思考过程) 目前已经有大量实践证明,开启思考模式理论上答案会更准确。 思考模式是如何被训练出来的?预训练学习资料有:网页、书籍代码、论文、数学题、对话等等。预训练训练目标很简单:给定前文,预测下一个词。 例如: 模型会逐渐学会:
在训练过程中,模型不仅仅记住答案,还会隐式学习文本里的“结构” 。比如逻辑链、数学证明、程序执行顺序、因果关系、人类推理格式等等。于是模型内部会形成一种 “生成中间状态”的能力。这是 reasoning 的最原始来源。 Chain-of-Thought研究者后来发现,如果让模型直接输出答案: 效果一般。但如果训练数据变成:
模型推理能力会明显提升。这就叫做 CoT——把中间推导过程显式写出来。 “思考模型”的能力,其实是学会了“生成推理轨迹”,而不仅是“预测答案”。 其中,数学和代码是最典型的具备逻辑的数据。通过多掺入点数学和代码数据,可以泛化到其他领域(可泛化的“世界结构表示”)。 RLHFRLHF(Reinforcement Learning from Human Feedback)并不仅仅是为了“让模型更礼貌”,同时也让模型拥有更清晰的推导、更可靠的步骤、更少逻辑跳跃、更符合人类偏好的解释。 在训练思考模式的时候,也会检查模型是否输出了特殊 token ,用来“结构约束”——让模型和人类区分思考过程和真正的回答结果。 最终模型输出的效果类似这样:
针对数学和代码这类“可验证任务”(verifiable tasks),核心奖励基本是 结果导向(outcome reward) ,不是人工逐步检查 CoT 推理过程。也就是说,不关心过程是否正确,只关心答案是否正确。比如数学题:
用伪代码表示奖励函数: 虽然主要奖励来自最终答案,但训练过程中会出现一种“隐式过程优化”: “好的过程”因为更容易得到正确结果,思考过程被间接强化了。 不过在正式版 R1 中,又额外进行了冷启动 SFT,再 RL,再 alignment。避免输出混乱,中文混杂,重复输出等问题。
如果人工去标注“正确推理过程”,模型可能会模仿固定模板、过拟合人类写、缺乏探索。 通过以结果为导向,让模型自己发现更高效的推理、非人类风格策略(人类的思考方式不一定最适合模型)、自我验证机制 思考模式为什么有效?大模型的 “思考”本质上是基于海量数据训练的统计概率预测,它并不是像人类那样真正理解逻辑,而是通过数学计算不断推测“下一个 token 是什么”。 这里从 Test-time Compute、scratchpad、attention、概率论角度分析。 Test-time Compute“Test-time Compute”是目前大模型领域从“快思考”转向“慢思考”的关键技术突破。直译是推理时计算,是指:大模型在接收用户输入后、生成最终输出之前,主动消耗额外的计算资源来“思考”的过程。 对于一个模型所需要投入的资源,粗略分为两个方向:
也就是模型在“回答问题的时候”额外花多少算力,让模型在回答时“多想一会” 。现实中的复杂问题,往往需要“试错、回溯、验证”才能解决,而 Test-time Compute 让你在推理阶段(输出最终答案前)低成本地完成这些试错。 普通模型更像这样: 带 Test-Time Compute 的系统更像这样:
通常通过以下一种或几种技术实现:
现在你在跟大模型聊天的时候,打开思考模式看看思考过程,看看是不是有以上说的这些行为? 不过需要注意的是,思考模式推理的 token 肯定不是越多越好,需要避免模型为了思考而思考。思考需要点到为止。 scratchpad我们做计算题 57*67=?,绝大部分人是没法一眼就看出答案。而是在草稿写个列式计算,一步步算完后才得到 3819。从结果来看,我们在试卷的填空题填入了 3819,但如果没有中间打草稿的过程,如果我们能直接一眼得到答案,要么之前背过答案(比如模型 SFT 时出现过),要么就是靠猜(模型 zero-shot 预测下一个 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 原生的计算格式。
答案是肯定的,大模型的本质是预测下一个 token,跟具体什么语言无关。 具体可以看 IBM 的这篇《Unnatural Languages Are Not Bugs but Features for LLMs》 这项研究探讨的问题是:对人类而言像“天书”一样的语言,是否对 大模型 来说反而是个“宝藏”? 研究团队发现,大语言模型不仅能处理,还能从“非自然语言”中学习。“非自然语言”指的是那些对人类来说毫无意义、像乱码一样的文本序列。 不过非人类语言的数据还要自己构造(目前模型无法自发自己创造出,更适合它自己思考的语言),而人类语言数据到处都是。使用非人类语言没有收益,甚至对性能是负提升,对思考模式的调试也带来不便(人类不可读) 什么时候思考模式反而没用?对于极简单的问题(如“1+1=?”),直接预测已经接近 100% 准确(因为 SFT 已经背过答案了),加入思考步骤只是浪费计算资源。 对于纯记忆类问题(如“法国的首都是?”),思考步骤不会提供额外好处,因为不需要推理。 对于模型根本不具备相关知识的问题(如“我昨天穿的袜子颜色”),思考步骤也无法变出正确答案。 总结
阅读原文 该文章在 2026/6/3 17:37:41 编辑过 |
关键字查询
相关文章
正在查询... |