推理能力从哪里来

ChatGPT 不是天生的。预训练提供知识和语言能力,微调教会模型如何回答,偏好优化(RLHF / DPO 等)调整行为,而推理训练强化复杂逻辑能力。今天我们看到的 ChatGPT、Claude、Gemini、o3、DeepSeek-R1,都不是“一个模型一次训练”直接长成的,而是多阶段迭代出来的结果。


为什么要读这篇

上一篇文章讲了 LLM 的底层机制:Transformer、Attention、Token Prediction。那篇文章解决的是一个“机器内部怎么运转”的问题:模型为什么能读懂上下文、为什么能预测下一个 token、为什么参数越大通常越强。

但理解底层机制以后,很多人会立刻冒出第二个问题:

如果 LLM 本质上只是“下一个 token 预测器”,那它为什么后来能聊天、能写代码、能做规划,甚至看起来像在“推理”?

答案就在训练流程里。

一个“裸”的预训练模型,往往并不会好好和你对话。你问它一个问题,它可能继续接龙;你让它输出 JSON,它可能写一半自然语言;你让它做复杂任务,它也未必知道应该先拆步骤再回答。换句话说,预训练给了模型原始能力,但并没有把这些能力整理成“人类可用”的产品形态。

本文要讲的,就是这条完整的训练链路:

  • 预训练:让模型学会语言和知识
  • 监督微调(SFT):让模型学会“按要求回答”
  • 偏好优化(RLHF / DPO):让模型更有用、更安全、更符合人类偏好
  • 推理训练(Reasoning Post-Training):让模型更擅长多步思考和复杂任务
  • 推理时计算扩展(Test-time Compute Scaling):在运行时用更多计算换更高准确率

如果你想理解:

  • 为什么 Base Model 和 Chat Model 差别这么大
  • 为什么不同模型“性格”不一样
  • 为什么同样是 LLM,有些模型特别擅长代码和数学
  • 为什么 o3、DeepSeek-R1 这样的“推理模型”看起来像更会思考

那么这篇文章就是把这些问题串起来的一张总图。


一个核心问题

很多人第一次接触 LLM 时都会问:

为什么 GPT-4 / o3 能推理,而 Base Model 不会?

这个问题本身就有一点误导性。因为“会不会推理”并不是某一个开关突然被打开,而是多个训练阶段层层叠加出来的结果。

你可以把整个过程想象成一条生产线:

Pretraining

SFT

Preference Optimization (RLHF / DPO)

Reasoning Post-Training

Test-time Compute Scaling

每一步都在解决一个不同的问题:

阶段主要解决什么问题
预训练让模型“知道世界”,学会语言、知识、模式
SFT让模型“知道怎么回答你”,学会指令遵循
偏好优化让模型“更像你想要的助手”,更有用、更安全
推理训练让模型在复杂任务上更擅长分步思考
推理时扩展让模型在运行时用更多计算换更高准确率

如果用一句更直白的话来总结:

预训练决定模型“有什么原材料”,后训练决定模型“怎么把这些材料组织起来为人服务”。


想深入?


1. 预训练(Pre-training)

一句话:

在海量文本上做 next token prediction,让模型学会语言规律、世界知识和大量隐含模式。

这是所有能力的基础。


预训练到底在做什么

从形式上看,预训练很朴素:给模型一段文本,让它预测下一个 token 是什么。

比如:

法国的首都是 → 巴黎
for i in range(10): → ...
光合作用的作用是 → ...

训练目标并不复杂,但当数据规模足够大、模型规模足够大时,这个任务会逼着模型学会很多东西:

  • 它要理解语法和句法,否则连一句话都接不顺
  • 它要记住常识和事实,否则很多文本预测不准
  • 它要捕捉上下文关系,否则不知道当前句子在讲什么
  • 它要学习代码、数学、论文写作、对话风格等不同分布的模式

所以预训练虽然看起来只是“猜下一个词”,本质上却是在压缩整个人类语言世界里的统计规律。


训练什么

维度典型配置说明
数据万亿级 token网页、书籍、代码、论文、问答、论坛等
时长数周到数月取决于模型规模、集群规模和优化效率
目标最小化 token 预测误差标准自监督训练,不依赖人工标注

但这张表只是表面。更重要的是理解:预训练学到的不是“答案列表”,而是一种分布式表示能力。

也就是说,模型并不是把每个问题和答案硬背下来,而是在参数里压缩了大量模式:

  • 什么问题通常对应什么回答
  • 哪些概念经常一起出现
  • 一个句子在不同语境下可能怎么继续
  • 某种逻辑推演在文本里通常如何展开

这也是为什么大模型经常会表现出“像理解了一样”的能力。


模型学到了什么

预训练通常会让模型获得四类核心能力:

1. 语言模式

这是最基础的一层。模型学会了语法、句式、文风转换、多语言映射、长距离依赖等能力。没有这一层,后面所有对话能力都谈不上。

2. 事实知识

因为训练语料里包含了大量百科、书籍、代码库、新闻、论坛和文档,模型会在参数中吸收大量事实性知识。比如地理常识、历史事件、编程 API、学术术语等,很多都来自这一阶段。

3. 任务模式

虽然预训练不是专门的“任务训练”,但海量语料里本来就包含各种任务形式:问答、摘要、翻译、改写、解释、代码补全、论文写作。模型会逐渐习得这些模式,因此即使没有专门微调,它也可能已经能做出一些任务型输出。

4. 基础推理能力

这是很多人最感兴趣的部分。模型会在预训练中学到一些简单推理模式,比如:

  • 常见数学模板
  • 因果表达
  • 类比和对应关系
  • 代码中的控制流与依赖关系
  • 文本里反复出现的逻辑链条

所以要特别注意:

很多推理能力其实已经在预训练阶段出现。

随着模型规模和数据规模扩大,研究者发现模型会表现出越来越强的“涌现能力(emergent abilities)”。这意味着很多看起来像“思考”的能力,并不完全是后训练硬塞进去的,而是在大规模预训练中逐渐长出来的。


Base Model vs Chat Model

这是理解整个 pipeline 最关键的区分之一。

类型训练阶段表现
Base Model仅预训练会接龙,但不会稳定对话
Chat Model预训练 + 后训练会对话、遵循指令、风格更稳定

Base Model 的典型问题不是“它什么都不会”,而是“它不知道怎样以你希望的方式用会的东西”。

比如你输入:

请用 3 个要点解释什么是强化学习

一个 Base Model 可能会:

  • 继续模仿互联网上的问答页面
  • 输出一段风格混乱的解释
  • 接着生成别人的追问
  • 或者干脆把你的问题当成文章标题继续写下去

这不是它没有知识,而是它没有被训练成一个“助手”。

因此 Base Model 常见问题是:

  • 不遵循指令
  • 输出格式不稳定
  • 不知道什么时候该拒绝
  • 容易继续接龙而不是完成任务
  • 可能输出有害或不合适内容

所以,从 Base Model 到 Chat Model,真正发生的不是“模型突然变聪明”,而是:

模型开始学会把已有能力组织成可用的对话行为。

这一步靠的就是后续的对齐训练。


2. 微调(Fine-tuning)

一句话:

用高质量任务数据继续训练模型,让它学会 如何回答问题、如何遵循指令、如何输出特定格式


为什么预训练后还需要微调

如果预训练已经学了那么多,为什么不能直接拿来做产品?

因为预训练的目标和“做一个助手”的目标并不一致。

预训练优化的是:

“给定前文,最可能出现的下一个 token 是什么?”

而用户真正需要的是:

“给定我的任务,给我一个清晰、正确、符合要求的答案。”

这两个目标是相关的,但不是一回事。

举个简单例子。你给模型一句话:

请把下面内容总结成三点。

预训练模型可能知道“总结”这个概念,也见过类似文本;但它未必知道此时最好的行为是:

  1. 先读完输入内容
  2. 抽取关键点
  3. 严格输出三条
  4. 不额外发挥

SFT 的作用,就是用大量高质量的“输入—输出”示范,把模型从“会语言”进一步训练成“会完成任务”。


监督微调(SFT)

SFT(Supervised Fine-Tuning)最直观的形式,就是给模型看很多高质量示范。

例如:

输入: 请解释机器学习
输出: 机器学习是让计算机从数据中自动学习规律的技术。

再例如:

输入: 请把这段内容改写成正式邮件语气
输出: 尊敬的……

模型在这个阶段学到的,不只是答案本身,而是:

  • 收到某类任务时应该采用什么结构
  • 何时简洁,何时展开
  • 什么是好的列表格式
  • 如何遵守“只输出 JSON”“控制字数”“分步骤解释”等指令

你可以把 SFT 理解成:给模型上“示范课”。


SFT 主要解决什么问题

SFT 对模型的改善通常体现在几个方面:

1. 指令遵循

模型更懂得“你是在下任务,而不是在闲聊或接龙”。

2. 输出格式稳定

比如更容易遵守:

  • 用表格回答
  • 输出 JSON
  • 分三点解释
  • 先结论后展开

3. 对话风格成形

模型开始更像一个助手,而不像一台补全文本的机器。

4. 任务适配

通过不同领域数据,模型可以学会更专业的术语、语气和问题结构。


数据质量比数量更重要

SFT 阶段有一个经常被低估的事实:

高质量数据,往往比大规模低质量数据更重要。

因为这个阶段不是在“补知识总量”,而是在“塑造行为模板”。

如果数据里充满:

  • 冗长空话
  • 模糊指令
  • 错误答案
  • 风格不统一
  • 低质量格式示范

那模型学到的就会是这些坏习惯。

这也是为什么很多开源模型参数不小,但聊天体验仍然不稳定——问题往往不只是 Base Model,而是后训练数据质量和配方的差距。


LoRA 与 QLoRA

在工程实践里,很多团队并不会从头全量微调一个大模型,而是使用更省资源的方法。

方法可训练参数显存需求
全量微调100%极高
LoRA0.1–1%
QLoRA0.1–1% + 4bit更低

LoRA 是什么

LoRA(Low-Rank Adaptation)的核心思想是:不要改整个大模型,只额外训练一小部分低秩适配参数。

原模型参数冻结,只训练少量附加矩阵。这样做的好处是:

  • 显存占用更低
  • 训练速度更快
  • 更适合做领域适配
  • 可以为同一个 Base Model 挂多个不同任务的适配器

QLoRA 又是什么

QLoRA 在 LoRA 的基础上进一步把底座模型量化到更低精度,例如 4bit,从而进一步节省显存。

这使得“用消费级显卡做大模型微调”成为可能。

但这里要避免过度乐观。常见说法是“24GB 显卡能微调 70B 模型”,这在某些配置下确实成立,但通常伴随:

  • 极小 batch size
  • gradient checkpointing
  • CPU/offload
  • 训练速度很慢
  • 工程调参复杂

所以更准确的说法是:

QLoRA 把原本几乎不可触及的大模型微调,变成了小团队和个人开发者也能尝试的事情,但它不等于“廉价且轻松”。


微调 vs Prompt Engineering

很多团队在项目初期都会纠结:到底该不该微调?

一个很实用的经验法则是:

先试 Prompt,不行再微调。

原因很简单。Prompt 的成本最低、迭代最快、可解释性也更强;而微调一旦做错,代价更高。

场景推荐
通用任务Prompt
固定格式输出Prompt + 示例
专业领域术语微调
高频调用、长 prompt 成本高微调
复杂规则反复失效微调或 RAG

更直白一点:

  • 如果问题只是“让模型按某种方式说话”,先试 prompt
  • 如果问题是“模型始终不稳、老忘规则、每次都要喂一大堆示例”,微调才更值得

微调不是魔法。它更像是:把某种行为固化进模型里,减少每次推理时临时引导的成本。


3. 偏好优化(RLHF / DPO)

一句话:

通过人类偏好数据,让模型生成 更符合人类期望的回答

RLHF 是其中一种典型方法,但从更广义上说,这一类方法都可以归到 Preference Optimization(偏好优化)


为什么 SFT 之后还不够

SFT 可以教会模型“怎么回答”,但很难彻底解决一个更细的问题:

两条都看起来正确的回答,哪一条更好?

比如同一个问题:

  • 回答 A:正确,但太简短
  • 回答 B:也正确,但更清晰、有条理、有边界提醒
  • 回答 C:内容全面,但太啰嗦

SFT 的训练目标更像“模仿示范答案”,但人类真正关心的,往往是这种更细腻的偏好排序:

  • 哪条更 helpful
  • 哪条更 harmless
  • 哪条更 honest
  • 哪条更符合场景期待

偏好优化就是在解决这个层次的问题。


RLHF Pipeline

经典 RLHF 可以概括为三步:

1. 收集偏好数据
2. 训练 Reward Model
3. 用 RL 算法优化 LLM

展开来看是这样:

第一步:收集偏好数据

让模型针对同一个 prompt 生成多个回答,然后由人类标注者排序:

A 比 B 好
B 比 C 好

这里不是简单打“对/错”,而是比较哪一个更符合人类偏好。

第二步:训练奖励模型(Reward Model)

奖励模型输入:

(prompt, response)

输出:

一个偏好分数

它学的是:对于这种问题,人类更喜欢什么样的回答。

第三步:优化原模型

再用 PPO 等强化学习方法,让原模型不断生成答案,由奖励模型打分,并朝着“更高奖励”的方向更新。

这样,模型就不只是会回答,而是会慢慢偏向人类更喜欢的回答风格。


PPO vs DPO

随着时间发展,业界开始发现:传统 RLHF 虽然有效,但工程复杂度高、训练不稳定、成本也大。因此后面出现了很多更直接的偏好优化方法。

方法原理
PPO经典 RLHF 路线,用奖励模型做强化学习
DPO直接用偏好对优化,无需单独训练 RM
RLAIF用 AI 反馈替代部分人类反馈

2025–2026 年,一个明显趋势是:

  • DPO
  • IPO
  • KTO
  • ORPO

这类方法越来越流行。

原因也很现实:

  • 实现更简单
  • 训练更稳定
  • 不需要完整 RL pipeline
  • 对中小团队更友好

所以今天再说“RLHF”,很多时候其实是在泛指整类偏好优化方法,而不一定严格指 PPO + Reward Model 的经典三段式。


偏好优化到底改变了什么

偏好优化的作用,不是给模型增加很多新知识,而是改变模型在多个可选回答之间的偏好分布

典型变化包括:

  • 更愿意正面回答问题,而不是绕弯子
  • 更少输出明显冒犯、有害或危险的内容
  • 更会控制语气和边界
  • 更容易保持一致的人设和回答风格
  • 更懂得在不确定时表达不确定

这也是为什么 ChatGPT 相比 Base Model 更“像一个助手”。

更准确地说:

偏好优化是 Chat Model 之所以“好用”的主要原因之一。


偏好优化的局限

这一步虽然关键,但也不是万能的。

因为它主要解决的是“行为偏好”,不是“底层认知上限”。

也就是说,它可以让模型:

  • 更愿意讲清楚
  • 更少乱说
  • 更符合规范

但它并不能自动让模型在高难数学、复杂代码、长程规划上突然跃升。

这也是为什么后面还会出现一个单独的方向:推理训练。


4. 推理模型(Reasoning Models)

定义:

推理模型(Reasoning Models,或 LRM)通常指那些:

  • 在训练阶段更深地内化分步推理模式
  • 在推理阶段主动使用更多计算来提升复杂任务准确率

的模型系列。

如果说普通 Chat Model 的目标是“更会回答”,那推理模型的目标更像是:

在复杂问题上,不急着立即回答,而是更擅长先分解、再求解、再验证。


为什么还需要推理训练

一个模型即使已经经过预训练、SFT 和偏好优化,也未必就擅长复杂推理。

原因在于:

  • 预训练学到的是广泛模式,不一定针对高难推理优化
  • SFT 更关注“像人类示范那样回答”
  • 偏好优化更关注“人类更喜欢什么回答”

但数学证明、复杂代码调试、多步决策规划,这些任务对模型的要求更高:
它不仅要“会说”,还要“会拆步骤、能坚持逻辑、尽量减少中途跑偏”。

这就是推理模型出现的背景。


推理能力的两个来源

推理模型的能力,通常来自两个相互关联但不完全相同的机制:

训练阶段
CoT 内化 + 过程监督

推理阶段
Test-time Compute Scaling

这两个机制经常被混在一起讲,但最好分开理解。


4.1 训练阶段:CoT 内化与过程监督

“先想再答”并不是一句口号,而是训练目标上的变化。

模型会接触大量带有推理过程的数据,例如:

题目

中间步骤

最终答案

常见方法包括:

方法说明
CoT 微调用带推理步骤的数据做监督微调
ORM只对最终答案打分
PRM对每一步推理过程打分

CoT 微调在做什么

CoT(Chain-of-Thought)微调最核心的作用,是让模型习惯于把复杂问题展开成中间步骤,而不是直接跳到答案。

比如一道多步数学题,如果训练数据里经常呈现这种形式:

  1. 先列条件
  2. 再写公式
  3. 再代入
  4. 最后给结论

那么模型就更容易在面对类似问题时,自动激活这种“分步生成”的模式。

这并不意味着它每一步都真的像人在脑中演算,但它确实更容易沿着合理的步骤结构往前走。


PRM vs ORM

类型评分方式
ORM只看最终答案是否正确
PRM对中间推理步骤也给奖励或惩罚

ORM(Outcome Reward Model)只关心结果。
PRM(Process Reward Model)则关心:你是怎么走到这个结果的。

这两者差别非常大。

只看最终结果时,模型可能会学到一种“碰运气”的策略:
只要最后答案对,中间乱写一点也没关系。

而 PRM 会鼓励模型形成更稳定的中间步骤,因为训练信号不再只在最后一刻出现,而是沿着整个推理过程展开。

所以在 2025 之后,PRM 越来越被认为是推理训练的重要组成部分。


一个重要提醒:推理链不一定都“真实”

这里也要保持技术上的克制。

虽然模型会生成推理链,但这并不意味着每一步都是严格意义上的“真实思考过程”。

有些情况下,模型可能是:

  • 先大致锁定答案
  • 再生成一段看起来合理的解释

也就是所谓的 post-hoc rationalization(事后合理化)

所以更严谨的表述是:

推理链可以显著帮助模型完成复杂任务,但它并不保证每一步都等价于人类脑中的真实推理过程。

这也是为什么仅仅“让模型多写几步”并不总能提升质量,关键在于训练时有没有把过程本身纳入优化目标。


4.2 推理阶段:Test-time Compute Scaling

训练阶段解决的是“模型会不会分步做题”,而推理阶段解决的是另一个问题:

模型在真正回答时,愿不愿意花更多算力认真想。

传统 LLM 的运行方式更像是“一次前向、顺着输出”。
而推理模型强调的是:面对难题时,单次快速输出不一定最好,模型可以通过更多计算换更高准确率。

这类方法包括:

  • 生成更长的内部推理链
  • 多次采样不同解法
  • 自我检查、自我纠错
  • 对候选答案做排序
  • 在必要时做搜索或工具调用

这就是所谓的 test-time compute scaling


为什么这会有效

原因很像人类做题:

  • 简单题一眼就能答
  • 难题往往需要列草稿、回头检查、尝试不同方法

如果一个模型在运行时只允许“马上回答”,那它很可能在复杂题上失误。
但如果允许它“多想一会儿”,就可能显著提高正确率。

因此,今天很多推理模型的优势,并不只是“参数更大”,而是:

它们被训练成了会在难题上主动消耗更多推理预算。


真实代价

这类能力当然不是免费的。

推理模型通常比普通 chat model 昂贵得多。
复杂问题下,它可能消耗:

数千到数万 reasoning tokens

典型影响是:

指标变化
延迟×10 – ×100
成本×5 – ×20

所以在工程实践里,“推理模型更强”并不自动等于“适合所有场景”。

例如:

  • 客服问答、轻量写作、简单总结,未必需要 reasoning model
  • 数学、代码、规划、科学问题,reasoning model 往往更值

本质上,这是一个精度、延迟、成本之间的权衡。


代表模型

模型特点
OpenAI o3 / o4-mini内部思考链不可见,强调推理时计算扩展
DeepSeek-R1推理链部分可见,强调多阶段训练与推理能力开源化
Gemini / Claude 部分模型也在探索类似的推理增强路线

o3 vs DeepSeek-R1

虽然它们都被归入“推理模型”,但路径并不完全相同。

模型训练路径推理链
o3大规模 RL on CoT,结合过程监督与推理时扩展不可见
DeepSeek-R1多阶段后训练,强化推理模式与可解释输出部分可见
其他推理模型路线不一,通常结合 SFT、偏好优化、推理训练和 test-time scaling不公开或部分公开

这说明一件事:

推理模型不是某个固定配方,而是一类共同朝向“复杂任务性能”优化的训练范式。


5. 能力进阶路线图

如果把整条链路压缩成一张图,大概就是这样:

Base Model(预训练)

会语言、懂知识、出现基础推理

SFT

学会按指令回答、输出格式稳定

Preference Optimization

更有用、更安全、更符合人类偏好

Reasoning Post-Training

更擅长多步推理、复杂规划、数学和代码

Test-time Scaling

在难题上用更多计算换更高准确率

这一整条路线,才构成了今天主流强模型的能力来源。


各阶段贡献

阶段贡献
预训练语言能力、知识储备、基础模式识别
SFT指令遵循、对话结构、输出格式
偏好优化有用性、安全性、风格一致性
推理训练复杂逻辑、多步推理、过程稳定性
推理时扩展在高难任务上进一步提升正确率

一个最容易记住的总结

如果你只想记住一句话,那就是:

预训练决定模型“知道多少”,SFT 决定模型“会不会按要求说”,偏好优化决定模型“说得像不像一个合格助手”,推理训练和 test-time scaling 决定模型“遇到难题时能不能多想几步”。


核心概念速查

概念一句话
预训练在海量文本上做 token 预测,学语言和知识
Base Model只有预训练,擅长接龙,不擅长稳定对话
SFT用高质量示范教模型如何回答
LoRA低成本微调,只训练少量参数
QLoRA在量化模型上做 LoRA,进一步省显存
RLHF用人类反馈优化模型行为
DPO更简单的偏好优化方法
PRM对推理步骤打分,而不只看结果
推理模型更擅长复杂任务和多步思考的模型
Test-time compute推理时给模型更多计算预算,提高准确率

下一篇

模型的能力来自训练,但训练完成以后,模型在运行时又是如何“利用上下文”的?

为什么有的模型明明上下文窗口很长,却还是会忘记前面说过的话?
为什么 RAG 有时候有效,有时候又像“外挂失败”?
为什么“更长上下文”不等于“真正记住”?

下一篇我们就来讲这些问题:

  • 上下文窗口到底是什么
  • 模型为什么会“失忆”
  • RAG、Memory、总结链分别解决什么问题
  • 为什么即使有 1M 上下文,工程上仍然要做检索和记忆设计