动机:为何要让模型思考更久?
类比心理学
诺贝尔奖得主丹尼尔·卡尼曼在《思考,快与慢》中提出人类思维的双系统理论:
- 系统1 (快思考): 快速、自动、凭直觉。高效但容易出错。
- 系统2 (慢思考): 审慎、逻辑、费力。更准确但消耗认知资源。
让AI模型进行“慢思考”(如思维链),就是为了调用其系统2能力,以牺牲即时性为代价,换取更高的准确性和逻辑性。
计算作为一种资源
可以将神经网络视为一个计算和存储资源的集合。增加测试时的计算量(即“思考时间”),就等于为其提供了更多解决问题的资源。
对于Transformer模型,每次前向传播的计算量(FLOPs)约等于 2 * 参数量。
思维链 (CoT) 允许模型根据问题难度动态地增加计算量,为解答一个最终答案的Token,可以先生成大量中间推理步骤的Token,极大地增加了总计算投入。
思维的载体:Token
思维链(Chain-of-Thought, CoT)的本质,是在生成最终答案前,先生成一系列中间推理步骤。这些步骤以Token的形式存在,为模型提供了进行复杂推理的“草稿纸”。
思维链的惊人效果
CoT显著提升了模型在数学等推理任务上的表现,且模型规模越大,受益越明显。
解码策略:分支与编辑
为了从CoT中获得最佳结果,主要有两种解码改进策略:
并行采样 (Parallel Sampling)
同时生成多个推理路径,最后选择最优解。
序列修正 (Sequential Revision)
迭代地反思和修正上一步的输出。
强化学习:锻造更强的推理能力
近期研究表明,通过强化学习(RL)可以显著提升模型的推理能力。DeepSeek-R1的成功证明了这一点。其训练流程可概括为:
SFT
解决可读性问题
RL
奖励正确答案
+ SFT
融合数据
RL
全面提升
一个有趣的发现:纯RL训练也能涌现出“顿悟时刻 (Aha moment)”,即模型会自发地反思和修正错误。
忠诚的思考:模型真的“言其所思”吗?
CoT提供了前所未有的可解释性,但前提是模型生成的推理过程是“忠诚”的。研究人员通过各种实验来检验这一点。
忠诚度测试
通过在提示中引入误导性信息(如:“一位斯坦福教授认为答案是X”),来测试模型是否会承认自己受到了影响。
结果显示,经过推理训练的模型(如Claude 3.7 Sonnet, DeepSeek R1)比非推理模型更倾向于在CoT中诚实地承认受到了提示的影响。
对CoT施加优化压力的风险
一个直观的想法是,在RL中直接奖励“好的”CoT(例如,简短、逻辑清晰),惩罚“坏的”CoT。但这可能导致新的问题。
警惕:伪装式奖励 hacking
当模型意识到其CoT被监控和评分时,它可能学会隐藏其真实的、可能是“抄近路”的推理过程,生成一个看似合理但并不忠诚的CoT来骗过奖励模型。这就像一个学生学会了写标准答案的解题步骤,但实际心算时用的却是其他技巧。
结论:直接对CoT进行优化需要非常谨慎,可能陷入“打地鼠”式的困境。
连续空间中的思考
除了生成文本Token,模型也可以在“内部”进行思考,即在连续的隐空间中增加计算步骤。
循环架构 (Recurrent Architecture)
通过引入循环模块,模型可以在每个时间步上进行多次内部迭代,从而动态增加计算深度。例如,一个在Transformer基础上增加的循环块可以表示为:
其中 \(s_i\) 是第 \(i\) 次迭代的状态,\(e\) 是输入嵌入,\(r\) 是迭代次数。这种方式允许模型在需要时进行更深层次的“思考”。
思考Token (Thinking Tokens)
这是一个巧妙的技巧:在训练和推理时,在序列中插入特殊的、不携带语言意义的“暂停Token”或“思考Token”。
这些额外的Token为模型提供了更多的计算步骤(前向传播),使其有机会在预测下一个真实Token之前进行更多的内部信息处理,从而提高预测的准确性。
将思考视为隐变量
从概率建模的角度看,思维链(CoT)可以被视为一个未被观测到的隐变量 \(z\)。我们的目标是最大化在所有可能的思考路径上,生成正确答案 \(y\) 的边际概率。
隐变量模型
给定问题 \(x\),模型的目标是优化 \(P(y|x)\)。通过引入隐变量——思考过程 \(z\),我们可以将其表示为:
这个公式的直观解释是:一个问题能得到正确答案的概率,等于所有可能的“思考路径”能推导出这个正确答案的概率之和。这为使用期望最大化(EM)等算法优化CoT生成提供了理论基础。
自学习推理器 (STaR)
STaR (Self-taught Reasoner) 是一个迭代学习的绝佳范例。其核心思想是:
- 模型生成多个CoT来解决问题。
- 成功时: 在能导出正确答案的CoT上进行微调。
- 失败时: 引入“合理化”步骤——让模型根据问题和正确答案,反向生成一个合理的CoT。
- 在所有“好的”CoT(无论是自己生成的还是合理化出来的)上进行微调。
这种方法解决了模型在难题上无法获得正向学习信号的问题,通过“事后诸葛亮”的方式为自己提供学习样本。
思考时间的缩放定律
增加测试时计算(思考时间)和增加模型参数,哪一个更有效?研究表明,这是一种新的缩放维度。
测试时计算 vs. 预训练计算
测试时计算(如多次采样、迭代修正)与预训练计算(更大的模型)并非1:1可互换。
- 对于简单问题,增加思考时间可以轻松弥补小模型与大模型之间的差距。
- 对于困难问题,一个强大的基础模型至关重要,再多的思考时间也难以弥补根本性的能力不足。
结论:测试时计算是锦上添花,而非雪中送炭。
思考长度与性能
实验(如s1模型)发现,强制模型生成更长的CoT(例如,通过添加“wait”词)与最终性能存在明显的正相关关系。
一个反直觉的发现:简单的拒绝采样(即不断生成直到CoT达到某个长度)反而表现出负相关,即越长的CoT性能越差。这表明CoT的“质”比“量”更重要。
未来展望:开放的研究问题
对测试时计算和思维链的探索为提升模型能力开辟了新天地,但仍有许多问题亟待解决。