你有没有过这种经历:一道数学题,你其实在心里已经算出答案了,但还是不放心,又拿起笔重新验算一遍,甚至反复算了三四次,哪怕前几次结果一模一样。
现在的AI推理模型,比如Qwen3、DeepSeek-R1这类能够“思考”的大模型,正患上一种类似的毛病。它们在给出答案之前会写一长串思考过程,专业上叫**思维链**
思维链:模型在正式回答前,像打草稿一样一步步推导的文字过程,通常放在和标签之间,写完才输出最终答案
问题是,这串思考过程经常写得太长了。一道AIME竞赛数学题,Qwen3-32B可能已经在思考过程进行到一半时就得出了正确答案,但它没有停下来,而是继续写了几千字去反复验证、换个角度再算一遍、甚至怀疑自己是不是漏掉了什么情况。论文作者统计发现,在用Qwen3-32B正确解答的题目里,答案第一次出现之后,模型还要再写掉32%到69%的思考篇幅,才肯真正结束思考过程。
这意味着什么?意味着一道题目的计算成本里,接近一半甚至七成,都花在了“已经知道答案但还不死心”这件事上。
这篇来自香港中文大学和洛桑联邦理工学院(EPFL)的论文,给这个毛病起了个挺贴切的名字:DoubtLess,直译是“少一点疑虑”。他们想做的事情很朴素:让模型别那么爱瞎琢磨,但前提是不能动模型一根毫毛,不许重新训练,也不能让它变笨。
过去的办法,为什么都不够好
在DoubtLess出现之前,想让AI少想一点,大致有两条路。
第一条路是重新训练模型,在训练过程里加一个“篇幅惩罚”,让模型学会自己管住嘴。这类方法包括给强化学习加长度惩罚、或者直接拿短答案去微调模型。问题很直接:每出一个新模型,就要重新训练一遍。今天对Qwen3-32B训练好了,明天换成另一个模型家族,这套训练又得从头来过,成本高、周期长。
第二条路是不碰模型权重,只在生成答案的过程里动手脚,专业上叫**推理时方法(inference-time method)**
推理时方法:不修改模型参数,只在模型生成文字的过程中加以干预的技术,比如改提示词、屏蔽某些词、提前喊停
这条路里又细分出好几种做法。有人直接在提示词里加一句“请简洁作答”,但这招管不管用完全取决于模型听不听话,论文实测发现,同一句“简洁”指令,对Qwen3-32B有效果,换到EXAONE-4.0或Granite-4.2这些模型上,效果立刻打了三折。
还有人更粗暴,直接把“wait”“but”“alternatively”这类开启新一轮检查的词从词表里禁掉,不让模型说这些词。这个方法叫NoWait,论文测试发现它确实能省不少字,但代价是准确率大跳水,在AIME 2025上直接掉了14.4个百分点。这就好比一个人正在仔细核对账目,你直接把他嘴巴捂住不让他说“等等,我再看看”,结果他真漏掉了一笔错账。
另外两类办法是设定提前结束的规则,比如模型思考到一定长度或者置信度足够高就直接喊停;还有一类是往模型内部的隐藏状态里加一个固定的“简洁方向”向量,让它整体上偏向写得短。这些方法各有各的毛病,要么在某些题目上照样掉分,要么对所有位置一视同仁地施加同样的压力,根本不管模型此刻是正在拼命推导关键步骤,还是已经把答案写在纸上又开始瞎琢磨。
DoubtLess的解法:找一个小模型来当“审稿人”
DoubtLess的思路挺巧妙,它没有去改大模型,而是请来了一个体积小得多的“助手模型”,让这个小模型用两种不同的性格去读大模型正在写的思考过程,然后比较这两种读法之间的差异,把差异当作信号去影响大模型下一步该写什么。
具体来说,这个小模型会被问两遍同一个问题。第一遍,论文把它称为“简洁思考者(brief thinker)”,提示词告诉它:直接给答案,别再推导,别再验证,拿到结果就收工。第二遍叫“啰嗦思考者(verbose thinker)”,提示词告诉它反过来操作:每一步都要反复核实,换着花样再算一遍,充分考虑各种可能性之后再下结论。
这两个思考者读的是同一段文字,差别只在于被下达的指令不同。小模型分别给出下一个词该是什么的概率分布,论文把“简洁思考者”的概率分布减去“啰嗦思考者”的概率分布,乘上一个强度系数,加到大模型本来的输出概率上。
这里值得停下来想一想,为什么要用“两种性格的小模型相减”这种绕弯子的办法,而不是直接训练一个模型告诉大模型“该停了”?
这就好比你请了一位编辑帮你审稿。你不是让编辑直接拿笔改你的文章(那样太冒险,万一改错了呢),而是让编辑先读一遍,心里琢磨“如果这是一篇要求精简的稿子,接下来该写什么”,又琢磨“如果这是一篇要求详尽考据的稿子,接下来又该写什么”。两种设想之间的落差,恰恰揭示了此刻这段文字到底处在“该收尾”还是“该继续”的分叉口上。如果不这样做,只让一个模型单一地判断“该不该停”,它要么过于谨慎不敢喊停,要么又太武断提前打断了关键推导,而两种性格对比出来的差异,天然就带有“此刻是否值得继续检查”这层判断力。
论文给出的公式(Equation 6)说明了这背后的数学本质:这套方法其实是在给大模型原本的概率分布做一次“加权重排”,权重就是简洁思考者和啰嗦思考者对下一个词预测概率的比值。某个词如果简洁思考者更看好,它的出现概率就被调高;如果啰嗦思考者更看好,概率就被压低;如果两者看法一致,什么都不变。
更重要的一点是,这套机制只在大模型写思考过程时才起作用。一旦大模型写完思考,正式给出答案,这个调整就立刻停手,完全交还给大模型自己的判断。而且即便在思考过程中,大模型什么时候真正结束思考(也就是什么时候触发这个结束标记),这个决定权始终握在大模型手里,小模型只能在大模型本就愿意考虑的候选词里做排序调整,没法凭空插进一个大模型压根不会选的词。这个设计有点像一个顾问,他能影响你在几个选项之间怎么权衡,但他没法替你拍板做决定,也没法无中生有地塞给你一个你从没想过的选项。
为什么这招在“答案出现之后”特别管用
论文做了一个很细致的分析,把每一段正确的思考过程切成两半:答案第一次出现之前,和答案第一次出现之后。
结果发现一个很有意思的现象:在答案出现之前,简洁思考者和啰嗦思考者的判断几乎一模一样,两者的差异用KL散度衡量只是个很小的数值。但答案一出现,这个差异立刻飙升到原来的七倍左右。
这说明什么?说明这两种人格的小模型压根不是无差别地唱反调,它们只在“该不该继续检查”这个关键节点上才真正产生分歧。论文还细致地统计了哪些词被压低了概率:答案出现之后,“But”“However”“Alternatively”这类开启新一轮核查的连接词,被压低了五倍以上;但在答案出现之前,这些词几乎不受影响,该出现照样出现。
这就是为什么DoubtLess和前面提到的粗暴屏蔽词语的NoWait方法完全不同。NoWait是不管三七二十一,从头到尾把“wait”“but”这些词一律禁掉,相当于一个人从进考场那一刻起嘴就被封住了,连他推导过程中正常的自我提醒也没法说出口。而DoubtLess只在“答案已经摆在桌上,接下来还要不要再掰扯一遍”这个具体时刻才出手压低这些词的概率,推导过程中正常使用这些词去转折、去提醒自己换个思路,几乎不受干扰。论文的统计数据也证实了这点:在DoubtLess的输出里,“Wait”“But”“Alternatively”这些词出现的频率跟原始模型差不多甚至略高,但NoWait把它们直接清零了。
论文里给了一个具体案例,题目是2025年AIME竞赛第一题,模型最终答案是70。原始模型在写出“sum is 21+49=70”之后,接下来还反复问自己“是不是还有别的除数没找到”“56的除数是不是算全了”“要不要考虑负数除数”,类似的自我质疑重复了至少五六轮,总共多写了2369个思考单位。而DoubtLess版本在写出同样的答案之后,只补了一轮简短验证,“Wait, is that all? Let me verify”,核对完就收尾了,只多写了523个单位,省了将近80%的后续篇幅。
这里有个容易被误解的点需要澄清:DoubtLess删掉的不是“检查”这件事本身,它删掉的是“重复的检查”。论文给了一个反例,在AIME 2025的第11题里,模型一开始误删了一个本该保留的方程根,后面的一轮代数验算把这个根重新找了回来,这轮检查是真正纠错的检查,论文的人工标注也确认,DoubtLess并没有把这种有价值的验证一并删掉。换句话说,DoubtLess像一个经验丰富的审稿人,他不会阻止作者核对数据,但他能分辨出哪次核对是认真在查漏补缺,哪次只是作者自己心里不踏实在原地打转。
跑分说话:七个基准测试的结果
说了这么多原理,数据才是硬道理。论文在七个基准测试上做了对比,覆盖了竞赛数学(AIME 2024、AIME 2025、HMMT 2025、AMC 2023)、研究生水平的科学问答(GPQA-Diamond)、奥赛题(OlympiadBench)和编程题(LiveCodeBench)。
对比的五个基线方法分别是:简洁提示词、屏蔽关键词的NoWait、提前结束思考的DEER和ThinkBrake、以及给隐藏状态加固定向量的ASC。实验用的是Qwen3-32B当大模型,Qwen3-0.6B当那个负责对比的小模型,每道题跑三次取平均。
结果是,DoubtLess平均把思考篇幅削减了31%,而且整体准确率几乎没有变化(反而还微微涨了一点,不过这点涨幅在统计误差范围内,不算显著进步,但至少证明没有掉分)。这个削减幅度在六个对比方法里是最高的。排第二的是简洁提示词,削减了25%,但它在HMMT 2025这道最难的基准上准确率掉了6.7个百分点,而DoubtLess在同一个基准上反而涨了3.3个百分点。
NoWait和ThinkBrake这两个方法则明显是拿准确率换篇幅,NoWait在AIME 2025上掉了14.4分,ThinkBrake在LiveCodeBench上掉了4.7分。DoubtLess几乎在所有七个基准上都守住了准确率,没有一个基准出现统计意义上显著的下降。
论文还专门设计了一个对照实验,叫“随机目标控制组”,用来验证削减效果到底是不是来自“哪些词被压低”这个具体方向,而不只是单纯往概率分布里加了噪音。做法是保留DoubtLess计算出来的调整幅度,但把这些调整值随机分配给候选词表里的其他位置,相当于保留了“扰动的力度”但打乱了“扰动的方向”。结果这个对照组的思考篇幅几乎没有变化,只少了1%。这说明削减效果真正来自于小模型指出的那个具体方向,也就是“哪些词该压低”,而不是随便往模型脑子里扔点噪音就能让它说话变少。
这招能不能用到别的模型上
一个方法好不好用,很大程度上要看它能不能脱离“专门为某个模型调出来的参数”这种局限。论文在EXAONE-4.0和Granite-4.2这两个完全不同的模型家族上做了重复实验,各自配上同家族里更小的版本当对比小模型。
结果是,在AIME 2025和AMC 2023这两个基准上,DoubtLess在EXAONE-4.0上削减了25%的思考篇幅,在Granite-4.2上削减了40%,两边都没有掉准确率。相比之下,简洁提示词这个最接近的竞品在这两个模型上分别只削减了8%和14%。
这个差距背后的原因其实挺直白:提示词这种办法完全依赖模型愿不愿意听话。你让它“简洁一点”,它听了多少、听没听懂,取决于这个模型本身的训练习惯和性格,不同模型差异很大。而DoubtLess压根没有向大模型提任何要求,它直接动手调整大模型输出每个词的概率,这个过程不依赖大模型的“配合意愿”。这就好比劝一个人少说话,有人听劝有人不听劝,效果参差不齐;但如果直接在他说话的通道上做了点手脚,让某些啰嗦的措辞变得不那么顺口,这个效果就不会因人而异。
论文还把这个方法用到了一个写代码的自我调试智能体(agent)上,场景是先让模型写一段程序,跑测试用例,如果失败就给它一次修复机会。
在这个场景里,DoubtLess让每轮思考的篇幅减少了20%,而且通过率还提升了2.0个百分点。有意思的是,DEER这个专门按预算喊停的方法在这个任务上削减幅度更大,达到41%,通过率也涨了4.5个百分点,原因是原始模型在这个智能体场景下,有16%到20%的回合会把全部思考预算都耗光还没写出程序,而DEER的强制喊停机制恰好腾出了写代码的空间。这也从侧面说明,不同场景下的“过度思考”成因不一样,针对性的方法各有各的用武之地。
和“已经训练过变简洁”的模型叠加会怎样
还有一个挺现实的问题:如果一个模型已经经过专门训练变得比较简洁了,DoubtLess还有没有用武之地?
论文拿了一个经过LACONIC方法训练过的Qwen3-32B版本来测试。这个版本在训练阶段的强化学习奖励里就加入了长度惩罚,本身已经比原始模型省话很多。在这个基础上再叠加DoubtLess,思考篇幅又进一步削减了29%到52%,任务表现没有明显变化。
这说明DoubtLess和训练阶段的压缩方法走的是两条互不冲突的路子,一个是在训练时让模型养成说话简练的习惯,一个是在生成过程里实时判断“这句话到底该不该再说”,两者叠加起来效果是可以累加的,而不是互相抵消。这就像一个人本来说话就比较利落,但你在他旁边再配一个贴心的编辑,随时提醒他“这句你已经说过了”,省下来的篇幅依然可观。
调节这个“劝退”强度会发生什么
DoubtLess只有一个需要手动设定的参数,论文管它叫强度系数α。这个系数决定了简洁思考者和啰嗦思考者之间的差异被放大多少倍再加到大模型身上。
论文做了一轮强度扫描实验,用的是在Qwen3发布之后才出现的AIME 2026题目,确保这套题目没有在模型训练数据里出现过,测试结果更干净。结果显示,强度从0逐渐调高到5(也就是论文最终选用的默认值)的过程中,削减的思考篇幅稳步增加,而准确率基本保持不变。但如果继续往上调到10,准确率就开始明显下滑,掉了7.8个百分点。
更有意思的是负强度的实验。如果把α设成-5,相当于反过来计算,用啰嗦思考者减去简洁思考者,结果思考篇幅不减反增,涨了26%。这其实挺直观:你把“鼓励继续检查”的方向反过来用,模型自然会变得更啰嗦。这组实验很有说服力地证明了,削减效果确实来自这个方向本身,而不是某种巧合。
换用更大的小模型会怎样?论文试了用Qwen3-1.7B和Qwen3-4B替代默认的Qwen3-0.6B,结果削减幅度一下子蹿到接近60%,但代价是准确率也开始明显滑坡,效果类似于把α调得过高。这说明小模型越大,它制造的“方向差异”就越强烈,用力过猛同样会伤到正确率。反倒是论文默认选用的最小、最便宜的0.6B模型,表现出了最好的平衡。
写在后面
读完这篇论文,印象最深的地方不是削减了多少篇幅,而是论文揭示出的一个现象:大模型在答案写出来之后继续检查的那些内容,很多时候并不是在认真核对,而更像是一种习惯性的、程式化的自我提醒,披着“Wait”“But”这样的外衣,实际上没有带来任何新信息。这跟人类考试时反复涂改答案、却往往把对的改成错的那种心理现象,有点异曲同工。
论文里那张KL散度曲线图特别值得多看一眼:答案出现前几乎是条平线,答案出现后突然跳起来又上下波动。这条曲线其实是在用数学语言告诉我们,模型的“纠结”并不是均匀分布在整个思考过程里的,它高度集中在“我已经得到答案了,但还要不要再想想”这个特定节点上。这给了一个挺朴素的启发:想要优化一个系统的效率,与其笼统地压缩整体,不如先找到真正低效的那个节点,再对症下药。
还有一个细节值得单独说一说,就是论文选择用最小的0.6B模型而不是更大的模型来做这件事。很多人直觉上会觉得,判断力这种东西应该跟模型规模成正比,越大的模型判断越准。但这篇论文的实验恰恰说明,辨别“这句话是不是在做无意义的重复”,根本不需要多强的推理能力,哪怕是一个连原题都解不出来的小模型,照样能准确分辨出“该收尾了”和“还该接着写”之间的区别。这其实是个挺有意思的分工:解题需要强大的推理能力,但判断“什么时候该停止解题”,靠的是另一种完全不同的、更接近直觉的能力。
Q&A
Q1:DoubtLess是什么?
A:DoubtLess是一种不需要重新训练模型的解码方法,它用一个小得多的AI模型分别扮演“简洁思考者”和“啰嗦思考者”,把两者判断的差异用来引导大模型减少重复检查,从而在不损失准确率的前提下缩短AI的思考篇幅。
Q2:DoubtLess会不会让AI漏掉重要的检查步骤,导致答案出错?
A:论文的实验显示不会。DoubtLess只在答案已经出现之后才明显压低“再检查一遍”类词语的概率,答案出现之前的正常推导几乎不受影响,而且实测在七个基准测试上准确率都没有显著下降。
Q3:DoubtLess只能用在Qwen3模型上吗?
A:不是。论文在EXAONE-4.0和Granite-4.2这两个不同模型家族上也做了测试,同样配上各自家族里的小模型,结果依然能削减25%到40%的思考篇幅且不掉准确率,说明这个方法具备跨模型家族的通用性。
热门跟贴