Batch Prompting Suppresses Overthinking Reasoning Under Constraint: How Batch Prompting Suppresses Overthinking in Reasoning Models


TL;DR

本文发现,批处理提示 (Batch Prompting) 不仅能摊销推理成本,还能作为一种有效的推理时正则化器,抑制大型推理模型(LRM)的“过度思考”行为,从而在保持精度的同时大幅减少推理Token消耗。

关键定义

本文的核心见解是基于对现有概念的应用和新解释,主要涉及以下术语:

相关工作

当前,顶尖的大型推理模型(LRMs)通过生成明确的思维链 (Chain-of-Thought, CoT) 在数学、编码和逻辑规划等多步推理任务上取得了SOTA性能。然而,这种详尽的推理方式也带来了一个显著的瓶颈:过度思考。模型即使在面对简单问题时也会消耗过多的Token和时间,生成冗长、不必要的推理步骤,这使得它们在对延迟和成本敏感的应用场景中不切实际。

先前的工作主要通过两种方式解决此问题:

  1. 训练时干预:例如自训练方法,教模型判断何时停止推理。
  2. 模型内部干预:例如激活工程(activation-steering),通过修改模型内部的隐藏状态来抑制过多的Token生成。

这些方法的共同局限性在于,它们需要访问模型的权重或内部激活状态,这对于通过API访问的闭源模型(如OpenAI的模型)是不可行的。因此,本文旨在解决一个关键问题:能否在不接触模型内部结构、完全在推理时通过黑箱操作来减少模型的“过度思考”?

本文方法

本文提出,最初为摊销成本而设计的批处理提示(Batch Prompting)技术,本身就能作为一种隐式的正则化器,有效抑制LRM的过度思考。

批处理提示机制概览

上图展示了该方法的核心机制。将一批测试查询 $Q=[Q_{1},Q_{2},\ldots,Q_{N}]$ 组合成一个单一的提示,发送给模型 $\mathcal{M}$ 进行联合响应生成。最终得到的输出 $R=[R_{1},R_{2},\ldots,R_{N}]$ 共享一个共同的推理上下文,从而有效地在批次内的所有项目间分配注意力和计算资源。

创新点:作为效率工具

批处理提示通过摊销固定的提示开销来降低平均成本。对于单个查询 $q$,总Token成本为:

\[C(q)=T_{\text{fix}}+T_{q}+T_{a}\]

其中 $T_{\text{fix}}$ 是固定的指令开销,$T_{q}$ 是查询Token数,$T_{a}$ 是回答Token数。

当将 $b$ 个查询批处理时,总成本变为:

\[C_{\text{batch}}=T_{\text{fix}}+\sum_{i=1}^{b}(T_{q_{i}}+T_{a_{i}})\]

因此,每个查询的有效成本降低为:

\[\frac{C_{\text{batch}}}{b}=\frac{T_{\text{fix}}}{b}+\frac{1}{b}\sum_{i=1}^{b}(T_{q_{i}}+T_{a_{i}})\]

随着批次大小 $b$ 的增加,固定的提示开销 $T_{\text{fix}}$ 被摊销,从而显著降低了平均每个查询的成本。

创新点:作为正则化器

本文最核心的贡献在于揭示了批处理提示的正则化效应。当多个问题被打包到同一个上下文中时,模型有限的注意力带宽和计算资源必须在所有问题之间进行分配。这种机制就像一个软性的计算约束,促使模型避免在任何单个问题上投入过多的“思考”时间,尤其是对于简单问题。

这种行为可以用以下方式形式化地表达。令 $R(q)$ 表示模型对查询 $q$ 的推理轨迹(例如思维链的长度)。在单查询模式下,模型可能会过度生成:

\[\mid R(q) \mid _{\text{single}}\gg \mid R(s) \mid \_{\text{optimal}}\]

而在批处理提示下,每个查询的平均推理长度被有效缩短:

\[\mathbb{E}[ \mid R(q) \mid _{\text{batch}}] < \mathbb{E}[ \mid R(q) \mid _{\text{single}}]\]

这种隐式的约束鼓励模型生成更简洁、更果断的答案,从而抑制“过度思考”。

DeepSeek-R1和OpenAI o1的综合结果

值得注意的是,这种约束是“软性”的,模型仍能自适应地为批次内更难的问题分配更多的推理步骤,而在简单问题上保持简洁,从而在效率和性能之间取得平衡。

实验结论

本文在13个涵盖算术推理、问答、结构化提取等多种类型的基准上,对DeepSeek-R1和OpenAI-o1两款模型进行了实验。

关键实验结果

实验结果有力地证实了本文的假设。如下图所示,随着批次大小的增加:

DeepSeek-R1和o1的Token消耗分解图

下表展示了在不同任务类型上,准确率(Acc)、推理Token(RTok)和输出Token(OTok)随批次大小(BS)变化的详细数据。

模型 任务类型 指标 BS=1 BS=5 BS=15
DeepSeek-R1 算术 Acc 39.0 44.5 44.8
    RTok 2397.6 1342.3 913.3
    OTok 422.3 200.7 100.9
  QA Acc 87.0 88.0 88.3
    RTok 3388.9 1500.5 1184.2
    OTok 1076.6 280.9 163.6
  结构化 Acc 58.7 62.3 64.4
    RTok 2779.6 1290.4 1147.2
    OTok 787.0 258.9 185.0
OpenAI-o1 算术 Acc 59.8 61.5 62.3
    RTok 2011.6 682.3 473.0
    OTok 308.2 110.1 59.4
  QA Acc 88.5 90.0 89.8
    RTok 3290.8 1269.4 823.1
    OTok 1101.4 309.8 158.4
  结构化 Acc 78.4 80.3 79.9
    RTok 2588.6 890.7 619.6
    OTok 1189.6 312.3 196.9

行为分析与结论

总结

本文证明了批处理提示是一种简单、通用且无需修改模型的推理时优化技术。它不仅是一种提升系统吞吐量的工程技巧,更是一种能改善模型行为的“认知约束”,通过抑制过度思考,在不牺牲(甚至提升)准确率的前提下,显著提高了大型推理模型的效率和可靠性。

尽管结果喜人,本文也承认其局限性,例如在处理高度异构的查询时,极端大的批次可能影响性能;同时,该方法缺乏对Token预算的显式控制。