同一个问题,AI 给你的答案可能来自三种完全不同的地方:它「记得」、它「算得出来」、或者它「出去查了一下」。三种来源撑起了今天绝大多数 AI 产品的能力边界。还有第四种出口——三条路都不通时,它不一定会说「不知道」,而可能编一个听起来很对的答案。
这篇文章想把这几条路拆开看。不是为了讲模型内部有一套判断流程——它从头到尾只在做一件事:续写概率最高的下一个词。所谓三种机制,只是在影响「哪个续写的概率最高」。把这一点放在心里,后面会好懂很多。
模型并没有一个「我到底知不知道」的开关可以先查一下。三种机制只是在影响哪个续写的概率最高。这也正是第四条路(编造)存在的原因:它不是流程走到尽头之后的兜底选项,而是同一套生成逻辑在缺少支撑时的默认输出。
一个问题,三条路
训练时压缩进权重的关联,提问时再解压出来。
用已学会的运算套路,把中间过程展开来算。
把答不出的问题外包给搜索、API、代码执行器。
问「地球到月球多远」,走的是参数;问「出生率 2.1%、死亡率 0.7%,净增长率是多少」,走的是推理;问「今天上证指数收盘多少」,走的是联网。问一篇不存在的论文,三条路都走不通,它就可能编一篇出来。
flowchart LR Q["问题"] --> P["参数机制"] Q --> R["推理机制"] Q --> T["联网机制"] P -->|"命中"| A["生成答案"] R -->|"推出"| A T -->|"查到了"| A T -.->|"工具也不可用"| H["编造"] classDef param fill:#fbf6ee,stroke:#e0c48a,color:#333 classDef reason fill:#f1f7f4,stroke:#9fcbb3,color:#333 classDef tool fill:#faf2f2,stroke:#e0a8a8,color:#333 classDef fake fill:#eef0f2,stroke:#c5c9ce,color:#333 class P param class R reason class T tool class H fake
01 参数机制:知识被压缩进权重
训练的本质,是把海量文本压缩进几千亿个参数里,让模型学会「某个词后面接哪个词的可能性最大」。你提问时,它并不是去翻书,而是把问题也变成词,沿着这些权重算一遍,一个词一个词地生成下去。所以这套机制常被称为「压缩-生成」:知识在训练时被压缩,在回答时被解压。
举例:地球到月球的平均距离约为 ___
这个事实在训练语料里出现过很多次,参数已经把「月球」和「38.4 万公里」这类词之间的强关联记下来了。提问时它不是在回忆,而是在算:给定前面的词,接下来写出「38.4 万公里」的概率,明显高于「很远」或「一光年」。
| 候选续写 | 概率(示意) |
|---|---|
| 38.4 万公里 | 0.82 |
| 40 万公里 | 0.08 |
| 一光年 | 0.03 |
| 很远 | 0.02 |
参数机制不是查表,是给每个候选续写算一个概率,取最可能的那个。
参数越多,能压进去的知识关联就越精细,答案自然更准。但参数不能无限堆——训练和推理的算力成本会跟着涨,而且很多知识根本不需要死记,比如下一节要说的推理。
02 推理机制:不是另一个模块,是参数在展开计算
容易产生的一个误解,是把「参数」和「推理」想成两套独立的东西:一个管记忆,一个管逻辑,像外挂了一个推理引擎。实际上,模型学到的不只是孤立的事实,还包括各种运算的套路——加减乘除、类比、多步推导,这些同样被编码在参数里。所谓推理,是模型用更多步骤、更长的中间过程去调用这些已经学会的套路,而不是从参数之外凭空变出新知识。
某市出生率 2.1%,死亡率 0.7%,人口净增长率是多少?
参数里大概率没有直接存过「这座城市的净增长率是 1.4%」这个事实,但模型学过「净增长率 = 出生率 − 死亡率」这个套路,于是把数字代进去,一步步算出来。这是展开的计算,不是提取的记忆。
这个说法成立,但它只说了「是什么」。接下来把它拆开:这种能力是怎么训出来的、运行时到底发生了什么、以及屏幕前那段「思考中」到底是什么。
如何训练:没人教它该怎么想,只教它答对有奖
「会推理」不是某一次训练加进去的功能,而是三层训练叠出来的结果。每一层解决的问题都不一样。
-
预训练:推导过程本来就躺在语料里。 互联网上大量文本天然就是带步骤的——数学题解、带注释的代码、论文的推导、法律意见书。模型学的是「这种文本接下来该怎么写」,于是顺带学会了:当问题看起来像一道题,接下来该写的是「设 x 为…」,而不是直接蹦出一个数字。这一层给了它「会一步步写」的底子,但很不稳定——同一道题换个问法,它可能就跳过过程直接猜答案。
-
监督微调(SFT)与蒸馏:把「先展开、再结论」变成默认格式。 用人工标注、或用更强的模型生成一批带完整思考过程的样本,让模型模仿这种输出结构。DeepSeek-R1 蒸馏到一堆小模型上的那批版本,走的就是这条路。这一层解决的是「稳定触发」和「格式规范」——但它教的是长什么样,不是想得对不对。
-
可验证奖励的强化学习(RLVR):只给最终答案打分,中间过程一个字都不管。 这是「会写步骤」变成「真能解题」的分水岭,也是 o1、R1 这类模型真正不一样的地方。做法是挑一批对错能被机器自动判定的任务——数学题有标准答案、代码能跑单元测试——让模型自己生成完整的思考过程和答案,然后只根据最终答案对不对给一个奖励信号,中间那一长串推演完全不监督。
反直觉的地方在这里:没有人示范「该怎么想」,但为了把答对的概率提上去,模型自己演化出了一整套行为——思考变长、中途停下来验算、写出「等等,这里不对」然后回退换一条路、把大问题拆成子问题。R1 的论文把这个现象叫 aha moment。这些习惯之所以留下来,不是因为它们看起来聪明,而是因为它们在统计上确实提高了答对率,于是被奖励信号一点点固化进权重。
思考长度是可以被训练调节的。训练时给过长的思考加一点惩罚,模型就学会看题下菜——简单题少想、难题多想。今天各家产品里的「思考预算 / thinking budget / effort 档位」,源头就在这里。
收束一下:整个训练过程没有任何一步引入过「逻辑引擎」。从头到尾都是同一件事——调整权重,让某些续写方式的概率变高。所谓推理能力,是在「答对有奖」这个压力下,从语言建模里长出来的行为习惯。
如何实现:词元就是草稿纸
架构上什么都没加。同一个 Transformer、同一套权重、同一个「预测下一个词」的循环。推理模型和普通模型的差别几乎全在训练数据和奖励函数里,而不在模型结构里。运行时唯一多出来的东西,是用一对特殊标记把输出切成两段:前一段是思考过程(思维链 / CoT),产品层通常折叠或摘要展示;后一段才是给你看的答案。
那为什么写出来就更准?因为这里有个硬约束:模型每生成一个词,只做一次前向传播,而一次前向传播的计算深度是固定的——层数就那么多。任何必须在「一个词之内」完成的推理,深度上限是写死的,超过了就只能靠模式匹配硬猜。
把中间结果写成词,等于绕开了这个上限。每多写一步,就多一次完整的前向传播;写出来的中间结果又进了上下文,下一步可以直接读它,而不必在一次前向里同时把所有中间量都记在脑子里。50 步思考大约就是 50 倍的计算次数,外加一块可以随时回看的草稿纸。这就是所谓的测试时计算(test-time compute):不加参数、不重新训练,只在回答时多花算力来换准确率。
flowchart LR
subgraph write["写出过程:多次前向,计算可叠加"]
A1["问题"] --> A2["设 x = …"] --> A3["代入求解"] --> A4["验算 / 回退"] --> A5["答案更准"]
end
subgraph skip["不写过程:一次前向,深度写死"]
B1["问题"] --> B2["一次前向"] --> B3["深度不够就只能猜"]
end
算力还能横着花。加长思考是串行地花,另一条路是并行地花:同一道题跑 N 条独立的思考链,然后多数投票(self-consistency),或者用一个验证器从 N 条里挑最好的一条(best-of-N)。两种都是在买同一样东西——更多的推理时计算。
和提示词的关系也在这里。「让我们一步一步思考」这句老咒语,做的其实是同一件事:在没有专门训练过的模型上,用提示把「展开中间步骤」这种续写方式唤起来。推理模型只是把这个习惯内化成了默认行为,并用强化学习把它训得更稳、更管用。
用户如何感受:一段自言自语,和一个笃定的结论
点下发送,先是一段折叠的「思考中」或者一个转圈,几秒到几分钟;展开看,里面是絮絮叨叨、第一人称、带犹豫和自我否定的文字。然后答案出来,干净、结构化、语气笃定。
它在「想」。思考区像内心独白,会纠结、会推翻自己;答案区像交付物。这种语气反差让人本能地把思考区当成 AI 的真实心理活动。
思考区的字和答案区的字,是同一套机制生成的文本。它是一份有用的工作草稿,不是内部计算的忠实录像——很多产品展示的还是被二次概括过的摘要。
收益是真的:多步数学、代码调试、带约束的规划、长文档里的交叉比对,这些任务上开不开思考,准确率差距肉眼可见。代价也是真的:慢、贵(思考词照常计费),而且简单问题上会过度思考——问它今天星期几,它也要先自我盘问三轮。
最容易踩的是下面三个直觉:
| 你会以为 | 实际情况 | 该怎么用 |
|---|---|---|
| 想得越久 = 越可靠 | 长链条一样会把早期的一个小错一路推到底,而且推得越久,结论听起来越有条理、越自信。链条长度衡量的是花了多少算力,不是答案对不对。 | 看结论能不能被验证,别看过程有多长。 |
| 过程写对了 = 答案就对 | 存在不忠实的思维链:模型在思考区推出 A,最终答案却给了 B;也存在思考区写下的理由并不是它真正依赖的理由。 | 关键结论单独核对,别因为过程看着很有道理就放行。 |
| 开了深度思考就不会瞎编 | 思考只增加计算,不增加事实。参数里没有的东西,想一万字也想不出来——实时数据、具体引用,仍然只能靠工具去查。 | 事实类问题配工具,推理类问题配思考。 |
所以把「要不要开深度思考」当成一个成本-收益开关就好:需要多步推导、约束求解、代码正确性时打开;只是要一个事实、一段改写、一次闲聊时关掉——不然你只是在等更久。
03 联网机制:把答不出的问题外包出去
不管参数多庞大、推理多强,模型都不可能包含实时变化的信息,比如现在几点、今天股市收盘多少。这时就要靠 Agent 或应用框架提供的外部能力,去互联网、计算器、代码执行器或数据库里查一个确定的结果,再拼进回答里。与其叫联网机制,不如更准确地理解成工具调用机制——联网搜索只是其中一种工具。现在常用的 MCP(Model Context Protocol),本质上就是这套机制的标准化延伸。
今天上证指数收盘多少点?
参数里没有(训练数据早就截止了),也推不出来(不是逻辑可以导出的数字)。于是模型触发一次工具调用,把问题转成一次搜索或 API 请求,等结果回来后,再把这个数字组织成一句话回答你。
flowchart TB Q["问题:今日收盘?"] --> C["模型续写出调用请求"] C --> F["框架真正执行 HTTP / MCP"] F --> D["搜到 3,412.18"] D --> A["结果塞回上下文,模型再组织成回答"]
这里有两件常被误解的事。
一,模型并不会自己上网。它只是续写出一段格式正确的调用请求,剩下的全是框架的活:截获这段请求,真正去执行 HTTP / MCP / 函数,再把结果当成一段文字塞回上下文。MCP 标准化的正是这段请求的格式和执行方式。
二,「什么时候该去查」这个判断本身也是训练出来的行为,和上一节的推理习惯同源,出自同一套权重。
那没有工具可用的时候呢?模型不会卡住,也不会自动改口说「我查不到」——它只会接着往下续写,而在那个位置上,最可能的续写往往就是一个看起来很像答案的数字。这就是下一节的主题。
三条路都不通时:它不一定会说不知道
这是这套机制最值得留意的副作用。模型的底层动作永远是「生成最可能的下一个词」——即便参数里没有、逻辑推不出、也没有工具可查,它依然会被驱动着把话说完,而不是天然具备「承认不知道」的反射。于是它可能编出一个语法通顺、语气自信、细节具体,但根本不存在的答案。
举例:请给我引用一下相关的研究论文
模型可能编出一个格式完全正确、作者听起来很权威、年份也合理的论文标题——但这篇论文实际上并不存在。它不是在撒谎,而是在续写一个统计上看起来像真论文引用的文本。
训练里还有一层火上浇油的因素。给模型调教语气这一步通常用的是 RLHF,它优化的是「人类觉得这个回答好不好」——而人在打分时,天然更偏爱干脆、具体、有细节的回答。于是「别含糊、把话说满」这种倾向,也被一并奖励了进去。这和前面 RLVR 那种「骗不过去的对错信号」正好相反。
理解了前三种机制,就能明白幻觉不是故障,而是同一套生成逻辑在缺少支撑时的正常输出。这也是为什么核对关键事实、给模型接上可验证的工具,比单纯相信语气自信的答案更重要。
三种机制对照
| 机制 | 知识从哪来 | 典型例子 | 局限 |
|---|---|---|---|
| 参数机制 | 训练时压缩进权重的关联 | 地球到月球的距离 | 只能覆盖训练数据里出现过的知识,且会随时间过时 |
| 推理机制 | 参数里学到的运算 / 逻辑套路,在回答时用更多计算展开 | 由出生率、死亡率算净增长率 | 只增加计算、不增加事实;多步推理会把早期的小错一路放大 |
| 联网机制 | Agent / 框架实时调用的外部工具 | 今日股票收盘点位 | 依赖工具是否可用、数据源是否可信 |
最后
回头看,这套想法其实只有一条主线:AI 不会「知道」,它只会续写。记住的、算出来的、查出来的,差别只在于续写时手里有没有材料、材料从哪来。材料不够的时候,它不会停,会把空填满。
落到日常使用上,对应的就是三件事:
- 问事实、问引用、问今天发生了什么,给它接工具,别指望它从脑子里掏出来。
- 问推导、问代码对不对、问约束能不能同时满足,开深度思考,但结论自己核一遍。
- 问它一件它既记不住、也算不出、也没处查的事,默认当它在编,直到你能验证。
道理不复杂。难的是在每一次回答看起来都很自信的时候,还能记得去问一句:这一次,它走的是哪条路。
文中几个缩写
- CoT:Chain of Thought,思维链。给出答案前先写出来的中间步骤。
- SFT:Supervised Fine-Tuning,监督微调。用「问题 + 理想回答」定型格式和语气。
- RLHF:Reinforcement Learning from Human Feedback。按人的偏好打分,容易奖励「听起来自信」。
- RLVR:Reinforcement Learning with Verifiable Rewards。按机器可判定的对错打分,骗不过去。
- test-time compute:测试时计算。不加参数,只在回答时多花算力换准确率。
- MCP:Model Context Protocol,模型与外部工具之间的调用协议。