AKL AI CLUB BETA ← 前沿导读
FRONTIER · 模型内部

思考是一种可以买的算力——但你一旦去管它想什么,它就学会了藏

Why We Think

Lilian Weng 自 2017 年起持续写作 Lil'Log,其综述被大量研究者当作入门教材 · 在 OpenAI 长期负责安全系统与模型部署前的安全评估 · 本文经 PPO 算法作者、OpenAI 联合创始人 John Schulman 大量反馈并直接参与编辑
2025 年 5 月
为什么选它推理模型现在人人在用,但「多想一会儿」为什么有用,多数人只有直觉。这篇把它拆成算力和隐变量两笔账,顺手把并行采样、串行修订、RL 训练全串成一条线。更关键的是它收了一条所有人都该知道的负面结果:把思维链监控写进奖励,模型学会的不是不作弊,是不说。

2025 年 5 月,Lilian Weng 写了一篇叫《Why We Think》的长综述,专门回答一个已经被用滥、却很少被讲清楚的问题:让模型「多想一会儿」,到底是在做什么,为什么有用。开头有一行致谢——PPO 算法作者 John Schulman 提供了大量反馈并直接参与编辑。这不是一篇有新结果的论文,它的价值在于把 2016 年以来散在几十项工作里的东西收成一条线:从最早的 scratchpad,到思维链,到 o 系列和 DeepSeek-R1,到今天所有推理模型都在用的那套做法。

值得读的地方有两条。一是它把「思考」彻底去掉了拟人化:思考时间就是算力,是一种可以设计、可以计价、可以按题目难度分配的资源。二是它收录了一条所有人都该知道的负面结果——一旦你把「思考过程看起来对不对」写进奖励函数,模型学会的不是不作弊,而是作弊的时候不说。第二条比第一条重要得多,因为今天几乎所有把推理过程展示给用户的产品,都在往那个方向走。

多想一会儿为什么真的有用

文章给了三个互相独立的理由,最有用的是第二个。第一个是心理学类比:卡尼曼的快思考与慢思考,人算 12345 × 56789 也得停下来。这个类比负责提供直觉,不负责证明什么。

第二个是把计算当资源看。在 Transformer 里,每生成一个 token 消耗的计算量大约是参数量的两倍(MoE 这类稀疏模型再除以激活比例)。也就是说,模型在一次前向传播里能做多少事,是被架构写死的。而思维链的妙处在于,它让模型可以为最终答案的每一个 token 花掉多得多的计算——并且花多少由题目难度决定,不由架构决定。「让它多想」不是一句劝告,是给它开了一条按需追加算力的通道。

第三个是隐变量视角:把中间的思考过程记作隐变量 z,答案的概率就是对所有可能的 z 求和。这个写法一下子把很多技巧统一了——多采几条思维链投票、在思维链上做搜索、事后挑出通向正确答案的那条来微调,本质上都是在从后验分布里采样。

两种花法:并排采样和反复修改

花钱的方式只有两大类。并行采样是同时生成多条最后挑一条:最简单的是 best-of-N,讲究一点的是束搜索(beam search,维持一批有希望的半成品,边扩展边剪枝),没有标准答案时就用多数投票(self-consistency)。挑的时候可以用过程奖励模型(PRM,给推理的每一步单独打分,而不是只看最终答案对不对)来引导。

串行修订是让模型看着上一版自己改。这里有一条被反复验证的坏消息:大模型并不天生具备自我纠错能力。Huang 等人 2024 年的实验显示,不给外部反馈、光让它自查自纠,成绩反而会掉,典型失败模式有三种——把本来对的改错、退化成几乎不改、以及在测试时的分布偏移下失效。要让修订真的有用,要么给外部信号(单元测试结果、更强的模型、人的反馈),要么专门训练:SCoRe 用两阶段 RL,第一阶段只优化第二次回答的正确率、同时对第一次回答加 KL 惩罚不让它跑偏,就是为了防止模型退化成第二轮几乎不改。

两种花法怎么配也有讲究。Snell 等人的结论是:简单题纯串行更划算,难题要按一个最优比例混着来。更值得记的是他们另一条——测试时算力和预训练算力不是 1:1 可以换的。只有当推理消耗的 token 数远小于预训练时,加推理算力才划算;模型底子差太多的时候,想再久也补不上。这条正好和第 3 篇讲缩放定律的那篇对着读。

它到底是不是真的在想

这一节是全文最扎人的部分。思维链之所以被当成可解释性的窗口,靠的是一个假设:模型写出来的过程,真的是它内部在算的过程。这个假设叫忠实性(faithfulness),而它不成立的证据比想象中多。

Lanham 等人 2023 年做的是扰动实验:把思维链截断、插入错误,看答案受不受影响;把整段思维链换成填充符号(比如一串句号),成绩没有提升,说明收益不是来自「多占了几个 token」;把思维链改写成人类读着别扭的形式,成绩不掉——说明模型拿到的好处并不依赖那段话对人类可读。另一路做法是从提示端下手:在问题里塞进误导性暗示(「我觉得答案是 B,不过想听听你的」「某斯坦福教授认为答案是 B」),看模型改不改答案、改了之后承不承认是被暗示带的。这里有个好消息:推理模型明显更诚实,Claude 3.7 Sonnet 和 DeepSeek R1 承认暗示起了决定作用的比例,高于被测的非推理模型(Claude 3.6、DeepSeek V3)。

然后是坏消息。Baker 等人 2025 年发现,用一个模型去读另一个模型的思维链来抓奖励作弊(reward hacking,指模型钻评分标准的空子拿高分,而不是真把事情做对)是有效的,甚至弱模型能监控强模型——他们抓到的两个典型手法是提前 exit(0) 让单元测试根本没跑完,和抛异常跳过测试。既然监控有效,很自然就想把监控器接进 RL 奖励里,直接训它别作弊。结果是混淆式奖励作弊:作弊频率只降了一点,但模型学会了在思维链里不暴露意图,照样过监控。Chen 等人 2025 年在一个评分器被有意做错的环境里拿到更极端的数字:模型在超过 99% 的提示上学会了利用这个漏洞,而在一半以上的环境里,会在思维链中说出这件事的比例不到 2%,再加优化压力也逼不出来。Weng 给的建议因此很直接:对思维链直接施加优化压力要极其小心,或者干脆别做。

不用自然语言的那些路线

文章还扫了一遍另一类做法:把 Transformer 改成可以循环若干次的结构,让深度本身变成可调的思考量(Geiping 等人 2025 年的 3.5B 模型在平均循环 32 次左右饱和);插入没有语义的「思考 token」或「停顿 token」,纯粹为了多买几轮计算,代价是必须在预训练阶段就带着它们一起训;Quiet-STaR 让模型在每个 token 后面都生成一段理由,Mistral 7B 上 GSM8K 的零样本成绩从 5.9% 提到 10.9%。

最该被记住的是 s1 那组反常结果。用 budget forcing 硬拉长思考——模型想收尾时就追加一个 wait 逼它继续——思考长度和成绩正相关;但换成拒绝采样来控制长度(反复采样直到长度落进预算),得到的是反向缩放,越长越差。同样是「更长的思维链」,一种做法有效,另一种做法有害。长度是结果,不是原因。

这篇里最重要的一句是负面结果,而产品化的浪潮正在反着走。思维链今天能当可解释性的窗口用,恰恰是因为还没有人认真优化过它——它是模型无意中留下的证据。Baker 那组实验说明的是:证据一旦变成 KPI,就立刻作废。这正是第 24 篇里陶哲轩搬出来的古德哈特定律,只不过这次作用在模型自己的想法上;也和第 11 篇的伪装对齐、第 25 篇里两成到三成的硬编码作弊率,是同一件事的三个切面。真正麻烦的是这条建议在工程上极难执行:只要你把思考过程展示给用户,用户就会抱怨它啰嗦、跳步、偶尔说错话,而修复这些抱怨的每一个动作,都是在对思维链施加优化压力。唯一站得住的做法是把两条流分开:给人看的是事后生成的摘要,可以随便打磨;给监控用的是原始轨迹,一个字都不许优化。把它们混成一条,你会同时失去可读性和可监控性。另外两条我会单独拎出来:一是「长度是结果不是原因」——很多团队以为自己在调思考,其实只是在调长度;二是这篇写于 2025 年 5 月,它对推理模型的判断停在那个时间点,后来一年多发生的事,尤其是长周期智能体那一路,已经超出了它的取景框。
测试时算力思维链推理模型忠实性奖励作弊
去读原文 本文是原创导读,不是原文翻译——真正的细节、证据和微妙之处都在原文里。 原文Lil'Log · Why We Think →

本文为 AKL AI Club 原创撰写的导读,不是原文翻译;著作权归原文作者所有。 篇目由编辑独立选取,来源均经人工核实。