晚高峰的十字路口,余师傅握着方向盘,一边跟乘客闲聊近期的油价,一边自动完成变道、刹车、跟车。他的左脚像自己会思考一样踩着离合,右手换挡流畅得像练过千百遍。直到前方忽然竖起一排施工围挡,他才猛地坐直:靠边停车,摇下车窗,把手机导航放大,重新规划路线。 前一刻的“自动驾驶式应对”是快思考,心理学中叫 System 1;后一刻的“停车、看地图、做计划”是慢思考,叫 System 2。这原本是心理学家卡尼曼对人类的观察,如今却成了 AI 推理模型的学习蓝本:传统大模型常常像刚上路的新手,踩油门就冲,而 o1 这类模型学会了在回答前先“停车想一想”。理解这套双系统,你就拿到了读懂 AI 推理进化的一把钥匙。
对 AI 从业者而言,双系统思维是连接认知科学与大模型推理的桥梁:它解释了为什么直接生成会出错、为什么 o1 需要思维链,以及未来推理模型应该往哪个方向训练。
目录
可视化演示
动态演示System 1与Syste的核心机制,通过输入/处理/存储/输出四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
System 1与Syste:双系统认 双系统认知架构的理论基础 双系统架构在AI中的映射与实现 核心机制可视化 System 1与Syste整体架构与关键组件
双系统起源:卡尼曼的两个驾驶员
余师傅的双手似乎有自己的记忆。下坡松油门、红灯前轻点刹车、变道时扫一眼后视镜,这些动作根本不需要大脑用力思考。心理学把这套自动化的行为叫 System 1;而当他靠边停车、打开导航寻找绕行路线时,注意力完全集中,每一步都慢而谨慎,这就是 System 2。一次普通的晚高峰,成了两种思维模式的现场演示。
这个“双系统”框架来自丹尼尔·卡尼曼和阿莫斯·特沃斯基自 1970 年代开始的研究。卡尼曼在《思考,快与慢》中总结:System 1 自动、快速、依赖经验,负责 90% 的日常判断;System 2 缓慢、费力、负责逻辑推理和复杂规划。对人类如此,对 AI 也一样——传统大模型接到问题后立刻吐出答案,就像余师傅直接踩油门;而 o1 这类推理模型会先生成一段内部推理,就像绕路前先看地图。
我们可以把这种切换写成一个简单的决策模型:
余师傅每天在同一路段下班,风险低,System 1 一路带他回家;遇到施工围挡,风险升高,System 2 立刻接管。AI 推理模型想学的,正是这种“该快则快、该慢则慢”的切换能力。
- 决策函数
M(x)表示面对任务x时最终启用的思维模式,取值为S1或S2。 - 风险函数
\rho(x)用来衡量当前任务的不确定程度,比如题目难度、道路施工风险、逻辑链长度。 - 阈值
\theta个人或模型预设的“耐心值”,阈值越低,越容易启动慢思考。 - 分支条件当
\rho(x)小于等于阈值走快思考,大于阈值走慢思考。
快思考S1:低功耗的直觉引擎
余师傅的老款手动挡车,左脚离合、右手换挡,动作连成一条流水线。他不需要在脑中默念“先踩离合、再挂挡、再慢抬”,因为这套流程已经刻进了肌肉记忆。System 1 就是这样的直觉引擎:几乎不消耗注意力,反应快,永远在线,但它依赖的是经验而非严谨证明。
在大模型身上,System 1 的对应物是预训练之后的自回归生成。模型看到一句“北京的冬天通常”,立刻补出“很冷”,这不是逻辑推演,而是从海量文本中统计出来的直觉。可直觉并不总是可靠:人类有锚定效应、可得性偏差;大模型也有语言惯性、知识过时、上下文误读。
System 1 的底层打分方式可以用 softmax 表示:
System 1 的优势是快,代价是容易把“看起来像”当成“一定对”。余师傅如果遇到一条与老路很像的岔路,也可能下意识拐进去;大模型面对没见过的推理题,也会用表面的语言模式拼出一个错误答案。
- 目标词
y模型当前要预测的下一个词。 - 上下文
x已经看到的前文,相当于开车时的路况和周围车辆。 - logit 得分
z_y神经网络给每个候选词打的分,分数越高越可能被选中。 - 词表
\mathcal{V}与归一化分母把所有候选词的指数得分加起来,使结果成为概率。
慢思考S2:耗油但稳的深思模式
余师傅最终把车停进路边车位,花了十分钟研究地图:哪条路不堵、哪个桥限高、哪里需要掉头。这个时候他的心率也许没变,但大脑的“油耗”明显升高。System 2 正是这种昂贵的模式:串行处理、需要注意力、能执行多步推理。
复杂任务必须靠 System 2:解数学题、写代码、做法律条款对比、规划一场旅行。它可以把问题拆成子目标,分别验证,再合并答案。这也是 AI 在数学和代码任务上长期欠缺的能力——单纯预测下一个词,无法保证中间步骤不出错。
于是研究者开始讨论“要不要慢思考”的收益问题:
不是所有情况都值得绕路。余师傅问路边的保安“前面能不能走”只花十秒,而打开地图规划最优路线要十分钟。AI 同样要学会判断:哪些问题值得烧算力,哪些问题直接回答就好。
- 成功概率
p_2慢思考把事做对的概率,通常比快思考更高。 - 任务价值
r_2问题答对后带来的收益,比如收入、分数、决策质量。 - 单位成本
c_2每单位时间消耗的认知资源或算力成本。 - 时间
t_2慢思考付出的总时间。
AI快慢映射:大模型为什么天生偏科
把余师傅的车开上高速公路,开启自适应巡航后,车子能自动跟车、自动走直线,看起来像“老司机”。但一旦前方突然窜出一只野猫,巡航系统往往反应过激或来不及处理。传统大模型就是这样一个“高速巡航选手”:它能流畅生成文本,却缺乏真正的事故处理能力。
原因是训练目标。预训练大模型学习的是“一句话后面大概率接什么”,本质上是连续做 System 1 式的直觉预测。它没有在输出之前进行全局规划,也不会因为中间某一步错了就回头修正。这种生成方式用条件概率链可以写得更清楚:
这种逐词预测的机制天生缺少 System 2 的“全局视野”和“自我纠错”。余师傅如果只看眼前三块路牌,而不在出发前看整体地图,很容易被带进死胡同。AI 要提升推理能力,就必须在直觉生成之外再套一层慢思考机制。
- 完整回答
y_1,\dots,y_T模型最终生成的一整段文本。 - 输入
x用户提供的提示词或问题。 - 历史词序列
y_{<t}生成第t个词前已经产出的所有词。 - 连乘符号
\prod把每一步的条件概率乘在一起,表示整个序列的总概率。
o1推理架构:给模型装上“思考暂停键”
OpenAI o1 的最大变化,是让模型在正式回答之前先“停车想一想”。它会在一个对外隐藏的私有思考区内生成一段思维链,这段思考不会直接展示给用户,但会被模型用来规划、推理、验证,最后才生成对外的答案。这就像余师傅靠边停车,先在脑中复盘路线,再决定起步往哪走。
o1 不是简单地“多写几步小作文”。它的推理架构融入了搜索和回溯:模型可能生成多个候选思路,做一步推演后检查前后是否矛盾,发现走不通就退回上一个状态,换一条路继续试。传统模型一条路走到黑,o1 则会像老司机一样不断评估“前方是否可通行”。
这种“先搜索、后验证”的选择过程可以这样理解:
余师傅绕路时也在做同样的验证:先看主干道是否拥堵,再查桥能不能走,最后估算油量是否够绕这一圈。o1 的“搜索回溯”不是魔法,而是把这类验证过程变成了模型内部的思考习惯。
check_k 都是一次内部检查,比如“计算是否正确”“是否符合题干约束”“上下文是否一致”。- 候选答案
a模型在思考阶段生成的其中一个方案。 - 候选集合
A所有可行方案组成的集合。 - 检验函数
\text{check}_k第k项验证,返回 1 表示通过,返回 0 表示不通过。 - 指示函数与求和把一个方案通过的总次数加起来,得分最高的方案胜出。
慢思考训练:不是写小作文,是奖励中间步
余师傅不是一天学会绕路的。驾校教练当年会在他停车、观察、打方向盘的每一个动作后给出反馈;跑过几年夜路后,他才懂得哪些路口要提前减速,哪些小路只在白天能走。AI 要学会慢思考,也需要这种“过程型”训练。
o1 的训练语料里包含大量带详细推理过程的数据,而强化学习阶段不再只奖励最终答案。研究者采用过程监督:模型每走一步,模型都会检查这一步是否合理,然后给出奖励。这样模型不会为了凑答案而乱编步骤,而是真正学会“一步接着一步地想”。
过程监督的奖励可以写成:
老司机之所以可靠,是因为他经历过大量“过程被纠正”的练习。只告诉 AI“答案错了”而不指出“哪一步错了”,它会像没教练的新手一样盲目绕圈。过程监督正是那个在副驾驶位上不停纠正动作的教练。
- 第
t步\text{step}_t思维链中的某一个推理步骤。 - 有效性指示函数这一步合理则记 1,否则记 0。
- 权重
\lambda_t不同步骤的重要程度,关键步骤可以给更高权重。 - 求和
\sum_{t=1}^{T}把整个思考过程中的奖励累加起来。
应用与局限:慢思考不是万能钥匙
余师傅选择绕路,确实解决了眼前的问题,但也付出了额外油费和十分钟时间。慢思考对 AI 同样不是免费的:生成的思考 token 要算力,要时间,还要更长的上下文空间。若每个问题都启动 System 2,模型会变成“想太多”的慢性子,连“今天天气怎么样”都要先做五分钟内部推演。
好在,数学竞赛、代码调试、多步逻辑推理这类任务,慢思考的价值远大于成本。o1 在数学和编程榜单上的提升,正是因为它愿意在复杂问题上多花算力。而日常闲聊、简单问答,传统 System 1 式模型反而更高效。
我们可以把思考成本写成:
未来的推理模型不会是永远慢思考的“路怒症患者”,而更像一个聪明的 AI 副驾:知道何时沿用直觉、何时接管方向盘、何时提前检查油量。慢思考是一把钥匙,但什么时候掏出来,本身就是一门值得深思的艺术。
- 思考长度
L_{\text{think}}模型在私有思考区生成的 token 数量。 - 单位成本
\alpha每个思考 token 对应的算力成本。 - 回溯标记
\mathbb{1}[\text{retry}]如果模型发现思路错误并重新尝试,则记 1。 - 回溯成本
\beta一次完整回溯带来的额外开销。
AI 应用场景
数学与代码推理增强
阶段:推理时扩展(Inference-time Compute)与模型对齐
解决的问题:传统大模型面对竞赛级数学题或复杂算法题时,常常“一本正经地胡说八道”。问题是它只有 System 1 的逐词直觉,没有 System 2 的验证回路。解决方法是让模型在生成最终答案前,先展开思维链,搜索多种思路并对中间过程做自检。
具体案例:在算法竞赛平台中,系统收到一个 hard 级题目后,不再直接输出完整代码,而是先让模型生成三个候选解法,再分别用示例输入做模拟执行,失败的方案被标记并退回到“重新思考”状态。最终只有通过所有本地测试的代码才会被提交。
复杂文档审阅与合规判断
阶段:后训练与推理规划
解决的问题:合同、法律条文、技术规范这类文档里往往藏着互相制约的条件。System 1 式阅读只能提取表层信息,很容易漏掉条款矛盾。AI 需要按双系统思路,先快速抽取关键条款,再逐条比对优先级,最终形成审查结论。
具体案例:某金融公司用支持慢思考的模型审阅采购合同。模型先列出所有付款条款,然后逐一检查“发票节点”“验收标准”“违约赔偿”三者是否一致,发现冲突时回溯到原始条款并给出修改建议,整个过程像一位逐行核对的老会计。
智能体多步任务规划
阶段:Agent 路径规划与工具调用
解决的问题:让 AI 完成“订机票+订酒店+规划行程”这类多步骤任务时,直接生成会导致步骤冲突。慢思考帮助 Agent 先拆解子任务,再为每一步选择合适的工具,并在某一步失败后重新规划后续路径。
具体案例:旅行规划 Agent 先判断“日期是否合理、预算是否充足”,然后依序调用航班查询、酒店比价、天气检查工具;如果发现航班时间与酒店入住时间冲突,Agent 会回溯到航班选择并生成新方案,而不是硬着头皮完成任务。
Python 演示
class DualSystemSolver: def __init__(self): self.fast_calls = 0 self.slow_calls = 0 def fast_guess(self, a, b): self.fast_calls += 1 rough_a = ((a + 5) // 10) * 10 rough_b = ((b + 5) // 10) * 10 return rough_a + rough_b def slow_reason(self, a, b): self.slow_calls += 1 da = [int(c) for c in str(a)[::-1]] db = [int(c) for c in str(b)[::-1]] n = max(len(da), len(db)) carry = 0 bits = [] steps = [] for i in range(n): x = da[i] if i < len(da) else 0 y = db[i] if i < len(db) else 0 s = x + y + carry carry = s // 10 bits.append(str(s % 10)) steps.append("column %d: %d + %d + %d = %d" % (i + 1, x, y, carry, s % 10)) if carry: bits.append(str(carry)) steps.append("final carry: %d" % carry) result = int("".join(reversed(bits))) return result, steps def show(self, a, b): fast = self.fast_guess(a, b) slow, steps = self.slow_reason(a, b) print("question: %d + %d" % (a, b)) print("System1 fast guess:", fast) print("System2 slow answer:", slow) print("verified:", fast == slow) print("reasoning steps:", "; ".join(steps)) print("---") if __name__ == "__main__": solver = DualSystemSolver() solver.show(457, 836) solver.show(123, 987) solver.show(991, 9) print("fast calls:", solver.fast_calls, "slow calls:", solver.slow_calls)
rough_a = ((a + 5) // 10) * 10把数字按十位四舍五入,模拟模型凭经验给出的近似直觉。return rough_a + rough_bSystem 1 直接吐出结果,不检查进位,速度快但可能不精确。da = [int(c) for c in str(a)[::-1]]把数字反转成个位在前的列表,方便逐位加法。n = max(len(da), len(db))确定需要计算多少位,相当于规划思考步数。s = x + y + carry每一位加法都要考虑上一位的进位,这就是思维链中的“状态传递”。carry = s // 10提取进位,模拟模型记录中间结果的关键记忆。bits.append(str(s % 10))保存当前位的最终数字,相当于每一步验证后落定结论。result = int("".join(reversed(bits)))把各位数字重新拼成最终答案,完成完整推理。print("verified:", fast == slow)对比快思考与慢思考的结果,暴露直觉估算的误差。if __name__ == "__main__":保证脚本可以被直接运行,也能作为模块被导入。
常见误区
误区很多人以为 System 1 是坏思考,System 2 是好思考,AI 应该完全抛弃 System 1。可实际上,System 1 每天都在帮我们避开危险、快速决策,没有它我们连走路都困难。
正解System 1 和 System 2 只是两种加工方式,不是对错标签。System 1 负责大多数低风险任务,System 2 只在复杂情况下接管。AI 也一样,聊天机器人的流畅应答依赖 System 1,数学难题才需要 System 2。盲目让所有问题都慢思考,只会浪费算力。
为何常见:因为教材和文章总喜欢用“直觉会犯错”的例子,比如锚定效应、认知偏差,慢慢给大家留下了 System 1 不靠谱的印象。
误区很多人认为只要启动了慢思考,模型就绝不会错。实际上 System 2 也会偷懒,它可能只是为直觉答案找理由,而不是真正重新推导。
正解心理学里有一类“合理化”现象:先由 System 1 给出倾向,System 2 再编一套逻辑去解释。AI 同样会出现“看似深思熟虑,实则一本正经地编造”。o1 之所以比普通模型强,不是因为它不会错,而是因为它有搜索回溯和过程监督,让错误更容易被发现。
为何常见:媒体宣传时常把“思考”和“正确”绑定,再加上推理模型在榜单上表现抢眼,公众就容易忽略它仍然会犯错。
误区有人以为 o1 的“思维链”就是把 prompt 改成“请一步一步思考”,让模型多输出几行解释。这种想法把慢思考理解得太简单了。
正解o1 的思维链不是简单文字堆砌,而是模型在私有思考区里进行规划、搜索、回溯,并且经过强化学习校准过。普通大模型虽然也能输出“步骤”,却不会因为某一步错误而回头修正,就像新手照着导航念,却不知道走错后怎么绕回来。
为何常见:因为思维链是可见的文本,人们容易把“思考”等同于“写小作文”,忽略了训练方式和推理控制的重要性。
误区训练推理模型时,只要判断最后答案对不对就行,中间步骤无关紧要。很多人会用“只看结果”来简化问题。
正解对于复杂推理,最终答案正确可能是蒙的,中间步骤却漏洞百出。过程监督会给每一步合理/不合理打分,这样模型才能学到真正的推理能力,而不是学会“撞大运”。就像教练不能只看学员是否到达终点,还要看方向盘、刹车、换挡每一步做得对不对。
为何常见:主流的分类任务评估往往只看最终指标,这种习惯被带入强化学习设计后,很容易忽略过程质量。
误区有些同学把 System 1 等同于模型 A,System 2 等同于模型 B,认为双系统理论只是某种网络架构。
正解双系统来自认知心理学,描述的是人类思维的两种加工模式;在 AI 中它更多是隐喻和设计思路。o1 并不是真的把两个神经网络拼在一起,而是在一个模型里通过训练实现“快直觉”和“慢验证”两种行为。把比喻当成工程实现,容易产生误解。
为何常见:因为 AI 术语常借用人脑概念,比如“神经网络”“注意力”,大家自然会以为双系统也有对应的物理模块。
面试题
Q1. 双系统思维最初来自哪位学者与特沃斯基的合作研究?
- A.图灵提出可计算理论
- B.卡尼曼提出双系统← 正确答案
- C.明斯基提出知识框架
- D.辛顿提出反向传播
答案:B。丹尼尔·卡尼曼与阿莫斯·特沃斯基共同提出了认知双过程理论,后来由卡尼曼在《思考,快与慢》中普及。图灵、明斯基、辛顿虽然都是 AI 重要人物,但并非双系统理论的提出者。
Q2. System 1 的核心特点是什么?
- A.消耗大量注意力
- B.自动快速完成← 正确答案
- C.必然逻辑正确
- D.不依赖任何经验
答案:B。System 1 是自动加工,速度快、能耗低、依赖经验。它不消耗大量注意力,也不保证逻辑正确,更不可能脱离经验。题目中的“自动快速完成”正是它最典型的特征。
Q3. System 2 通常在什么情况下被激活?
- A.道路熟悉且无干扰
- B.任务复杂需要规划← 正确答案
- C.只处理单一感觉
- D.没有任何时间压力
答案:B。System 2 在任务复杂、风险高或需要多步规划时接管,比如做数学题、找绕行路线。熟悉的道路由 System 1 完成,单一感觉和没有时间压力都不能单独激活 System 2。
Q4. 预训练大模型直接生成下一个词,最像双系统里的哪一种模式?
- A.System 2 深度搜索
- B.System 1 快直觉← 正确答案
- C.过程监督训练
- D.搜索回溯机制
答案:B。大模型预训练后根据上下文预测下一个词,本质上是基于统计规律的快速自动应答,和 System 1 的直觉加工非常相似。深度搜索、过程监督、搜索回溯都是后训练阶段的慢思考机制。
Q5. o1 模型中“私有思考区”的主要意义是什么?
- A.让用户编辑推理步骤
- B.保护内部推理数据← 正确答案
- C.增加模型参数量
- D.消除所有计算延迟
答案:B。o1 在私有思考区生成思维链,用户只能看到最终答案,看不到内部推演过程。这样做是为了保护推理数据不被直接复制。它不增加参数量,也不能消除延迟,反而会增加算力消耗。
Q6. 关于双系统之间的关系,下列说法正确的有?
- A.两套系统可以协同工作← 正确答案
- B.System 1 永远犯错
- C.System 2 能纠正直觉← 正确答案
- D.System 2 必定更优
答案:AC。很多时候 System 1 先给出直觉,System 2 再负责审查和修正,因此 A、C 正确。System 1 并不永远犯错,System 2 也不是必定更优,它同样可能被合理化偏差影响。
Q7. o1 在推理过程中可能用到的技术有哪些?
- A.思维链生成← 正确答案
- B.私有思考区← 正确答案
- C.搜索与回溯← 正确答案
- D.固定输出长度
答案:ABC。o1 通过思维链模拟内部思考,在私有思考区隐藏推理内容,并在思路错误时进行搜索回溯。它不会使用固定输出长度,因为思考 token 的长度本身就是动态可变的。
Q8. 下列哪一项属于慢思考训练的关键设计?
- A.只给最终答案打分
- B.奖励中间推理步骤← 正确答案
- C.减少训练数据量
- D.关闭强化学习
答案:B。慢思考训练强调过程监督,也就是对中间步骤给奖励,而不是只看最终结果。减少数据、关闭强化学习都与训练目标相反,最终答案打分是传统方法,不是关键。
Q9. 关于 o1 的“思考 token”,下列描述正确的是?
- A.必定展示给最终用户
- B.属于隐藏的推理记录← 正确答案
- C.与训练目标无关
- D.只用于压缩上下文
答案:B。o1 的思考 token 是模型在私有思考区产生的推理记录,不会完整展示给用户。它是模型决策的一部分,和训练目标密切相关,也不是用于压缩上下文的技术手段。
Q10. 以下哪些属于 System 1 的典型表现?
- A.自动识别红绿灯← 正确答案
- B.熟练换挡不费力← 正确答案
- C.解决复杂数学证明
- D.突发情况猛踩刹车← 正确答案
答案:ABD。识别红绿灯、熟练换挡、突发情况急刹车都是不需要深思熟虑的自动反应,属于 System 1。解决复杂数学证明需要多步逻辑推演,属于 System 2 的典型工作。