ACTS:用强化学习训练的控制器,让 LLM 推理更聪明而不只是更短

笔记日期: 2026-06-29 笔记作者: Zhongzhu Zhou 论文标题: Agentic Chain-of-Thought Steering for Efficient and Controllable LLM Reasoning 作者: Yu Xia, Zhouhang Xie, Xin Xu(UCSD);Byungkyu Kang, Prarit Lamba, Xiang Gao(Intuit AI Research);Julian McAuley arXiv: 2606.03965,2026 年 6 月 2 日 状态 / 会议: Preprint (cs.CL, 2026)

一句话总结

ACTS(Agentic Chain-of-Thought Steering)在推理时引入一个轻量控制器 agent,在预算约束下逐步为冻结推理模型分配推理策略(理解/计划/执行/检验/总结/收尾等),不改变推理模型权重,却能以节省 57% token 的代价维持甚至提升精度——尤其在难题上,因为控制器能主动打断”推理绕圈子”的失效模式。

前置知识

这篇论文综合了 LLM 推理效率、强化学习、以及 agent 架构三个领域,本节用白话把必要的背景知识打好。

链式推理(Chain-of-Thought, CoT)

CoT 推理是指让语言模型在给出最终答案之前,先”想出来”——生成一段中间推理过程(thinking trace),然后再给答案。这一范式被 Wei et al. (2022) 系统提出后,成了现代推理模型的标配。现在最强的推理模型(DeepSeek-R1、QwQ、o3 等)都是用强化学习专门训练来在 <think> 块里花大量 token 推理的,这个过程有时叫做”测试时计算扩展”(test-time scaling)。

直觉上,这就像一个聪明的学生在考试时打草稿:草稿越充分,答案越有把握。实证上,在竞赛数学、代码生成、科学问答等难任务上,更长的 thinking trace 确实带来更高的准确率。

过度思考问题

问题是,推理模型经常”思路绑架”——对一个 500 token 就够解决的问题写出 5000 token 的推导。这些多余的 token 不是白花的,它们会:

  1. 浪费推理成本:推理 token 是直接的 API/GPU 花销,在大规模服务时成本显著
  2. 降低吞吐量:推理越长,服务延迟越高
  3. 有时还会降低精度:模型在正确推导出答案之后继续”验证”,有时把对的答案验证成错的

第三点是本文最核心的动机之一:有些模型失败案例不是因为推理不够,而是推理太多、自我纠偏成了错误。

现有高效推理方法的思路

在 ACTS 之前,所有高效推理方法都在控制想多久(thinking length),而不是怎么想

  • NoThink:直接不让模型思考,前置空 <think> 块,强制跳过推理阶段
  • CoD (Chain of Draft):用 prompt 要求模型每步只写几个词的草稿
  • Budget Forcing (s1):数 token 数,超预算就强插 </think> 让模型收尾
  • DEER:在推理转换点检查模型当前答案的置信度,高置信度就提前退出
  • BudgetGuidance:训练一个辅助预测器,在 token 级别把生成偏向目标长度

这些方法的共同局限:它们控制的是推理的量(有多少),而不是推理的质(每一步在做什么)。ACTS 是第一个显式控制每步推理策略的框架。

马尔可夫决策过程(MDP)

MDP 是序列决策问题的标准框架,由五元组 (S,A,T,R,γ)(S, A, T, R, \gamma) 定义:

  • SS:状态空间
  • AA:动作空间
  • T(ss,a)T(s' \mid s, a):状态转移分布
  • R(s,a)R(s, a):奖励函数
  • γ\gamma:折扣因子

策略 π(as)\pi(a \mid s) 将状态映射到动作分布。强化学习的目标是找到最优策略 π=argmaxπEπ[tR(st,at)]\pi^* = \arg\max_\pi \mathbb{E}_\pi[\sum_t R(s_t, a_t)]

ACTS 把推理控制建模为一个无折扣有限水平 MDP(γ=1\gamma = 1,水平为推理步数),状态编码完整的推理历史,动作是(策略类型,引导短语)对。

GRPO(Group Relative Policy Optimization)

GRPO 是 DeepSeek-R1 使用的 RL 算法,不需要单独的价值网络——它用同一问题采样的 GG 条轨迹计算相对优势:

Ai=RiRˉ,Rˉ=1Gi=1GRi(1)A_i = R_i - \bar{R}, \qquad \bar{R} = \frac{1}{G} \sum_{i=1}^{G} R_i \tag{1}

Ai>0A_i > 0 表示第 ii 条轨迹比组均值好,会被鼓励;Ai<0A_i < 0 表示更差,会被抑制。

ACTS 使用 Dr. GRPO(Liu et al., 2025b)变体:去掉标准差归一化项,避免对简单题/短轨迹的虚假高优势。

背景:推理步的结构是什么样的?

在正式介绍 ACTS 之前,先看一个推理模型的 trace 到底长什么样。Li et al. (2025b) 和 Xiong et al. (2025) 分析了大量 DeepSeek-R1 推理 trace,发现它们始终呈现一组固定的功能步骤类型

步骤类型中文名含义典型开场短语
UNDERSTAND理解解析并重述问题”好的,我需要…”
PLAN规划列出高层解题思路”我打算先…”
EXECUTE执行做具体计算/推导”让我来计算…”
EXPLORE探索尝试备选方案”另一方面,假设…”
CHECK检验验证中间或最终结果”等等,让我验证一下…”
SUMMARIZE总结概括已得结论”到目前为止…”
CONCLUDE收尾给出最终答案”因此答案是…”

这些标签在 trace 文本中并没有显式出现——它们从段落的语义内容中涌现。当模型”推理绕圈子”时,通常是过度应用 CHECK(反复验证已经正确的结果)或 EXPLORE(找到答案后还在探索备选)。

ACTS 把这个分类体系显式化,作为控制器的动作空间。

ACTS 框架详解

图 1:系统架构总览

graph TD
    Q["问题 + 预算 B"]
    C["控制器 Agent (Qwen3-4B)\nπ_θ"]
    R["冻结推理模型 (7B/8B)\nρ"]
    H["引导历史 H_t\n(问题, 动作, 推理步, 剩余预算)"]

    Q --> C
    H --> C
    C -->|"引导动作 a_t=(u_t, p_t)\n策略 + 引导短语"| R
    R -->|"推理步 z_t"| H
    H -->|"预算更新 b_t"| C
    R -->|"CONCLUDE 或预算耗尽"| ANS["答案生成"]
    ANS --> OUT["最终答案 ŷ"]

    style C fill:#4a90d9,color:#fff
    style R fill:#7b68ee,color:#fff
    style H fill:#f0f0f0,color:#333
    style Q fill:#e8f4ea,color:#333
    style OUT fill:#2ecc71,color:#fff

图 1. ACTS 系统概览。控制器读取累积的引导历史,每步输出(策略, 引导短语)对。冻结推理模型以引导短语为条件生成下一个推理步。每步后历史增长、预算递减。

MDP 形式化

状态。 在推理步 tt,状态是完整的引导历史:

Ht=(x, b0, a1,z1,b1, , at,zt,bt)(2)H_t = (x,\ b_0,\ a_1, z_1, b_1,\ \ldots,\ a_t, z_t, b_t) \tag{2}

其中 bt(,1]b_t \in (-\infty, 1] 是第 tt 步的剩余预算比例,初始 b0=1.0b_0 = 1.0(100%)。

动作。 控制器每步采样:

at=(ut,pt)πθ(Ht1)(3)a_t = (u_t, p_t) \sim \pi_\theta(\cdot \mid H_{t-1}) \tag{3}

其中 utUu_t \in \mathcal{U} 是高层推理策略,ptp_t 是自由形式的引导短语,负责自然语言地”打开”下一步推理——例如 CHECK 策略对应 “等等,让我验证一下这个。“,EXPLORE 对应 “另一方面,假设…”。

关键设计:策略 utu_t 表达”做什么”,引导短语 ptp_t 表达”怎么进入”。推理模型不被告知”执行 CHECK 策略”,它只看到短语并以自己的生成风格自然延续。

转移。 给定问题 xx、前序 trace z<tz_{<t} 和引导短语 ptp_t,冻结推理模型生成第 tt 步:

stρ(x, z<t, pt)(4)s_t \sim \rho(\cdot \mid x,\ z_{<t},\ p_t) \tag{4}

完整步为 zt=ptstz_t = p_t \circ s_t(短语拼接续文)。预算更新为:

bt=bt1(zt)B(5)b_t = b_{t-1} - \frac{\ell(z_t)}{B} \tag{5}

其中 ()\ell(\cdot) 计算思考 token 数。当 bt<0b_t < 0,预算已超支。

终止条件:

  1. 控制器选 ut=CONCLUDEu_t = \text{CONCLUDE}
  2. 推理模型输出 end-of-thinking token(</think>);
  3. 达到最大步数。

终止奖励: 轨迹 τ=(x,b0,a1,z1,b1,,aT,zT,bT)\tau = (x, b_0, a_1, z_1, b_1, \ldots, a_T, z_T, b_T) 的奖励为:

R(τ,y^)=f(c,bT)(6)R(\tau, \hat{y}) = f(c, b_T) \tag{6}

其中 c=1[y^=y]c = \mathbf{1}[\hat{y} = y^*] 是答案正确性,ff 由预算条件奖励塑形给出(见第三节)。

图 2:MDP 状态-动作-转移

stateDiagram-v2
    direction LR
    [*] --> H0: x, b0=100pct
    H0 --> H1: a1=(u1,p1), z1, b1
    H1 --> H2: a2=(u2,p2), z2, b2
    H2 --> Ht: ...
    Ht --> TERM: CONCLUDE 或预算耗尽
    TERM --> ANSWER: 推理模型生成答案
    ANSWER --> [*]: 奖励 R(τ, ŷ)

图 2. MDP 轮次结构。每个状态 HtH_t 捕获迄今为止的完整历史。控制器的动作触发推理步,状态前进、预算减少。

两阶段训练

第一阶段:行为初始化——合成引导轨迹的构建

控制器需要知道:在当前预算和部分推理 trace 的条件下,下一步应该用哪个策略?难点在于:现有推理 trace 数据集只包含推理模型的 chain-of-thought,没有控制器动作标注。

ACTS 的解法:从已有 expert trace 中反向构造控制器动作序列,把 trace 自身的长度当作预算信号。

合成轨迹构建算法(步骤详解)

算法 1:合成引导轨迹构建

输入:Expert 推理 trace R,token 总长 len(R),LLM 标注器 M,策略词典 U
输出:引导轨迹 τ

1. 分段:按段落边界(".\n\n"、"?\n\n")把 R 切分成推理步 z_1, ..., z_K

2. 设合成预算 B := len(R)  // trace 总长就是预算

3. 对每步 t = 1 到 K:
   a. 标注:用 M 把步 z_t 分类到策略 u_t ∈ U
   b. 提取:取 z_t 的开场短语作为引导短语 p_t(如第一句到逗号/句号前)
   c. 计算单步消耗:Δ_t = ℓ(z_t) / B
   d. 更新剩余预算:b_t = b_{t-1} - Δ_t
   e. 记录:(b_t, a_t=(u_t, p_t), z_t) 进入轨迹 τ

4. 丢弃退化轨迹(连续两步策略和短语相同的循环轨迹)

5. 返回 τ

这个构建过程的关键洞察:把 trace 位置映射到预算轴。虽然 expert 推理模型生成 trace 时没有任何预算约束,但把 token 位置归一化成预算比例之后,不同策略自然地聚集在不同预算区间——这个时序结构就被蒸馏进了控制器的先验中。

多预算增强(Multi-Budget Augmentation)

B=len(R)B = \text{len}(R) 构建的轨迹总是在 bT=0b_T = 0 处结束(恰好耗尽预算)。为了让控制器适应各种部署时的预算值,每条轨迹用随机缩放生成多个版本:

  • 提前终止0<bT40%0 < b_T \leq 40\%):乘以 >1> 1 的缩放因子,让 trace 在还有剩余预算时就结束
  • 恰好耗尽bT=0b_T = 0):原始轨迹

同一条 trace 于是在多种”假设的预算场景”下训练控制器。

SFT 训练目标

设合成轨迹语料库 D={τ(i)}i\mathcal{D} = \{\tau^{(i)}\}_i(来自 OpenR1-Math 的 7,500 条问题)。控制器 πθ\pi_\theta 通过最小化控制器动作的负对数似然初始化:

LSFT(πθ)=EτD[t=1Tlogπθ(atHt1)](7)\mathcal{L}_{\text{SFT}}(\pi_\theta) = -\mathbb{E}_{\tau \sim \mathcal{D}} \left[ \sum_{t=1}^{T} \log \pi_\theta(a_t \mid H_{t-1}) \right] \tag{7}

这是标准语言模型交叉熵损失,只对控制器的动作 token(策略标签 utu_t 和引导短语 ptp_t)计算损失,推理模型的续文 sts_t 被 mask 掉。

图 3:合成轨迹构建流程

graph TD
    subgraph "原始数据"
        OR["OpenR1-Math\n7,500 条 DeepSeek-R1 推理 trace"]
    end
    subgraph "步骤 1:分段"
        SEG["按段落边界切分\n→ z_1, ..., z_K"]
    end
    subgraph "步骤 2:标注"
        ANN["LLM 标注器 M\n→ 策略 u_t, 引导短语 p_t"]
    end
    subgraph "步骤 3:预算对齐"
        BUD["b_t = 1 - Σℓ(z_s)/B\n→ 预算比例序列"]
    end
    subgraph "步骤 4:多预算增强"
        AUG["随机缩放\n→ 多种 bT 场景"]
    end
    subgraph "结果"
        TRAJ["合成引导轨迹集 D\n→ 控制器 SFT 训练"]
    end
    OR --> SEG --> ANN --> BUD --> AUG --> TRAJ

图 3. 合成轨迹构建流程。关键是把 trace 位置映射到预算轴,把 expert 推理的时序结构蒸馏成预算条件化的策略先验。

第二阶段:在线强化学习

SFT 后的控制器有了合理的策略分配先验,但这个先验是从无约束的 expert trace 中提取的,不一定在各种预算值下都能正确权衡精度和预算合规。RL 直接优化塑形的奖励函数来解决这个问题。

预算条件奖励塑形

直接的奖励设计陷阱:如果只对超预算加惩罚,控制器会学到一个简单的博弈策略——对没把握的题提前放弃,规避超预算惩罚。我们需要一个同时惩罚过度思考和过早放弃的奖励。

回想 bT(,1]b_T \in (-\infty, 1]bT>0b_T > 0 表示还有剩余预算(提前结束),bT<0b_T < 0 表示超支。塑形后的奖励为:

R(τ,y^)={1+αmin(bT, 0)c=1(答案正确)αbTc=0(答案错误)(8)R(\tau, \hat{y}) = \begin{cases} 1 + \alpha \cdot \min(b_T,\ 0) & c = 1 \quad (\text{答案正确}) \\ -\alpha \cdot |b_T| & c = 0 \quad (\text{答案错误}) \end{cases} \tag{8}

其中 α[0,1]\alpha \in [0, 1] 是惩罚系数(实验中 α=0.5\alpha = 0.5)。

正确答案(c=1c=1)分析:

  • bT0b_T \geq 0(未超预算):奖励 =1= 1,满分
  • bT<0b_T < 0(超预算):奖励 =1+αbT<1= 1 + \alpha b_T < 1,正确但因超时被扣分,超支越多扣越多,最低到 1α=0.51 - \alpha = 0.5

错误答案(c=0c=0)分析:

  • bT<0b_T < 0(超预算 + 错):奖励 =αbT<0= -\alpha |b_T| < 0,超支越多越负
  • bT>0b_T > 0(未用完预算 + 错):奖励 =αbT<0= -\alpha b_T < 0,剩余预算越多越负——这就是反博弈机制:提前放弃但没答对,剩余预算越多惩罚越重,控制器无法靠”戒掉”来规避惩罚

边界处有 10% 宽限:bTb_T 在零附近的微小超/欠支不触发惩罚,避免奖励在临界点振荡。

图 4:预算条件奖励塑形

graph LR
    subgraph "正确答案 c=1"
        C1["bT>=0\n未超预算"] -->|"奖励=1.0(满分)"| R1["全额奖励"]
        C2["bT<0\n超预算"] -->|"奖励=1+α*bT"| R2["惩罚超时\n最低到 0.5"]
    end
    subgraph "错误答案 c=0"
        C3["bT<0\n超预算+错"] -->|"奖励=-α*|bT|"| R3["惩罚超时且答错"]
        C4["bT>0\n未用完+错"] -->|"奖励=-α*bT"| R4["惩罚过早放弃\n反博弈关键"]
    end

图 4. 预算条件奖励塑形。正确时惩罚超时,错误时同时惩罚超时和过早放弃,使控制器无法通过”战略性提前退出”规避惩罚。

GRPO 更新过程

对每个问题 xx

  1. πθ\pi_\theta 和冻结推理模型 ρ\rho 联合采样 G=8G=8 条轨迹 {τi}i=1G\{\tau_i\}_{i=1}^{G}
  2. 用式 (8) 打分:Ri=R(τi,y^i)R_i = R(\tau_i, \hat{y}_i)
  3. 计算 Dr. GRPO 优势(去掉标准差归一化):
Ai=RiRˉ,Rˉ=1Gi=1GRi(9)A_i = R_i - \bar{R}, \qquad \bar{R} = \frac{1}{G} \sum_{i=1}^{G} R_i \tag{9}
  1. 对轨迹 τi\tau_i 中的所有控制器动作 token 广播优势 AiA_i;推理模型的续文 token 被 mask 掉

异步推理架构

图 5:异步双服务器推理流程

sequenceDiagram
    participant O as 协调器
    participant C as 控制器服务器 (Qwen3-4B, 4xA100)
    participant R as 推理模型服务器 (7B/8B, 4xA100)

    Note over O,R: 所有样本在请求级并发推进
    O->>C: 状态 H_0 (问题 + 预算)
    C-->>O: 引导动作 a_1 = (u_1, p_1)
    O->>R: 上下文 + 引导短语 p_1
    R-->>O: 推理步 z_1
    O->>O: 更新 H_1, b_1

    O->>C: 状态 H_1
    C-->>O: 引导动作 a_2 = (u_2, p_2)
    O->>R: 上下文 + 引导短语 p_2
    R-->>O: 推理步 z_2

    Note over O: 持续到 CONCLUDE 或预算耗尽

    O->>R: 完整 trace z_<=T(答案生成)
    R-->>O: 最终答案 ŷ

图 5. 异步双服务器推理。协调器通过 HTTP 异步循环驱动所有 in-flight 样本。控制器(4B)和推理模型(7B/8B)各用 4 块 A100,两者并发处理不同样本的请求,有效摊薄了控制器轮次的延迟开销。

与 DEER 的对比: DEER 的”探针-恢复”机制需要串行调用(探针→继续生成→探针…),吞吐量降至 Vanilla 的约 57%。ACTS 的异步流水线使吞吐量与 Vanilla 相差不到 1%(Qwen3-8B)或 11%(DeepSeek-7B)。

实验结果与分析

实验设置

数据: SFT 合成轨迹和 RL 训练均使用 OpenR1-Math 中 7,500 条 DeepSeek-R1 推理 trace(长度 512–8192 token)。

评测基准:

基准类型规模重复次数
MATH-500竞赛数学500 题1次
AIME 2024高难数学30 题5次
AMC 2022+2023竞赛数学~60 题5次
OlympiadBench (数学)数学奥林匹克3次
GPQA Diamond研究生理科198 题3次(域外测试

推理模型(冻结): DeepSeek-R1-Distill-Qwen-1.5B / 7B,Qwen3-8B

控制器: Qwen3-4B-Instruct-2507,SFT(OpenRLHF)+ RL(SLIME)

基线方法: Vanilla(无约束推理)、NoThink(跳过思考)、CoD(压缩推理步)、BudgetGuidance(token 级引导)、DEER(置信度早退)、ACTSπSFT_{\pi_\text{SFT}}(仅 SFT,无 RL)

主要结果

DeepSeek-R1-7B 核心数字(Table 1):

方法MATH-500 精度Token 数节省GPQA 精度Token 数节省
Vanilla92.6%4,33938.9%8,422
NoThink78.8%73083%35.4%70092%
CoD78.6%1,65062%36.7%5,40236%
BudgetGuidance82.8%2,29447%36.5%4,56546%
DEER77.8%2,02953%34.9%3,82555%
ACTS(ours)85.2%1,86657%46.8%4,40448%

ACTS 是所有高效方法中精度最高的,同时节省了 57% 的 token。更引人注目的是 GPQA Diamond:Vanilla 是 38.9%,ACTS 是 46.8%——高出近 8 个百分点,而且还少花了 48% 的 token。这不是在省钱,这是在花更少做得更好。

为什么 GPQA 精度反而提升了? 论文把这归因于一个域无关的失效模式:在 GPQA 上,错误答案的 trace 明显比正确答案长。也就是说,模型越困惑越越想越多,越想越错。控制器的结构化策略(理解→计划→执行→检验→收尾)直接对抗这个模式,无论任务内容是什么。

Qwen3-8B(更强基线):

基准Vanilla 精度ACTS 精度节省
MATH-50097.2%95.2%37%
AIME 202476.0%73.3%25%
GPQA Diamond58.8%58.6%32%

对于更强的 Qwen3-8B,ACTS 在保留近乎 Vanilla 精度的情况下节省了 25–37% 的 token。节省幅度比 7B 小,因为 Qwen3-8B 本身推理更高效,绕圈子的失效模式较少。

预算扫描:可控精度-效率权衡

图 6:预算扫描(示意图)

graph LR
    subgraph "精度 vs. Token 数 — ACTS 预算扫描"
        NT["NoThink\n不推理"]
        TIGHT["ACTS 紧预算\n最多节省"]
        MID["ACTS 中等预算"]
        FULL["ACTS 满预算\n接近 Vanilla"]
        VAN["Vanilla\n完整推理"]

        NT -->|"↑精度"| TIGHT
        TIGHT -->|"↑精度↑token"| MID
        MID -->|"→ Vanilla 性能"| FULL
        FULL -.->|"ACTS 曲线高于\nNoThink-Vanilla 连线"| VAN
    end

图 6. ACTS 的 Pareto 曲线严格位于 NoThink 和 Vanilla 两点连线的上方。这意味着:对任意介于两者之间的精度目标,ACTS 都能用更少的 token 达到,而不是简单地按比例混用两种方法。

关键发现:

  1. 单调曲线:随预算增大精度平滑上升,没有任何预算规模下的灾难性失效
  2. Pareto 支配:在三个推理模型、五个基准的所有 25 个测评格子里,ACTS 曲线几乎都在连线上方
  3. 小模型提升:1.5B 模型上,中等预算的 ACTS 在 AIME、OlympiadBench、GPQA 上全面超过 Vanilla——结构化引导能让弱模型超越其无引导基线

Token 节省的可解释分解

ACTS 的节省按每题结果分解成四类:

类别Vanilla 结果ACTS 结果含义
Shorten(缩短)正确正确控制器削减了答案后多余的验证绕路
Rescue(救援)错误正确控制器打断了绕圈失效,更少 token 做对了
Early-term(早退)错误错误两者都错,但提前停下节省了 token
Regress(倒退)正确错误控制器破坏了正确答案

DeepSeek-7B 上:

  • Rescue 28%:这很关键——控制器不只是在缩短,它在改正错误,同时花更少 token
  • Early-term 41%:对无法解决的题提前放弃
  • Regress < 5%:控制器极少破坏正确答案

Qwen3-8B 上:

  • Shorten 42%:强模型少绕圈,主要节省来自削减答案后的冗余验证
  • Regress 仍 < 5%

图 7:Token 节省分解(DeepSeek-7B)

pie title DeepSeek-R1-7B Token 节省分解
    "Early-term(两者都错,提前停)" : 41
    "Rescue(Vanilla 错,ACTS 对)" : 28
    "Shorten(两者都对,ACTS 更短)" : 28
    "Regress(Vanilla 对,ACTS 错)" : 3

图 7. ACTS 的 token 节省主要来自三类机制。Rescue(救援,28%)是最有力的证据:控制器不是简单剪短,而是真正地引导推理,在更少 token 下把错误答案变成正确的。

深入理解:绕圈子失效模式的机制

为什么 ACTS 能改正 Vanilla 的错误(Rescue)?这需要理解具体的失效模式。

典型的自我验证失效序列(以论文 Figure 12 的例子为例):

问题: 找最小正整数 NN,使 NN 的各位只包含 0 和 1,且 450N450 \mid N

Vanilla(11,178 token,答案错误):

  1. 正确分析:450=2×32×52450 = 2 \times 3^2 \times 5^2,所以 NN 末两位必须是 00,且 1 的个数是 9 的倍数
  2. 找到候选 N=11111111100N = 11111111100(九个 1,两个 0)——这是正确答案
  3. 继续探索,发现 1011111110010111111100 也符合条件(八个 1,以为是九个)
  4. 验算 10111111100/45010111111100 / 450,得到 2246913622469136,用错误的方式”验证”了它
  5. 最终答案:1011111110010111111100,实际只有八个 1,不被 9 整除)

ACTS(1,948 token,答案正确):

  1. 同样分析:末两位 00,1 的个数是 9 的倍数
  2. 找到 1111111110011111111100
  3. 控制器触发 CHECK:系统性验证 1 的个数(= 9,✓)、末两位是否 00(✓)
  4. 控制器触发 CONCLUDE:给出 1111111110011111111100

两者的差距是:Vanilla 在已经得到正确答案后继续探索备选,在探索过程中犯了数位错误,放弃了正确答案转而接受了错误答案。ACTS 的结构化 CHECK → CONCLUDE 直接锁定了结果,避免了这个陷阱。

9× token 减少(11,178 → 1,948)并非特例。对于这类”找到了再验丢了”的失效模式,节省幅度通常在 3–10×。

深入理解:为什么离散策略集优于自由形式控制

策略集 U\mathcal{U} 的设计哲学:

ACTS 把策略 utu_t 设计为离散有限集(7 类),而引导短语 ptp_t 保持自由形式。这个设计是蓄意的权衡:

  1. 离散策略确保可控性:7 类覆盖了推理过程的所有主要阶段,控制器可以学习稳定的预算-策略先验。如果策略是自由形式,训练需要更多数据,且推理时控制器可能”幻觉”出不存在的策略。

  2. 自由短语保留语言连贯性:推理模型看到的是短语文本,而不是”策略标签”。自由形式短语允许控制器适配不同推理模型的生成风格——“Let me verify” vs. “Wait, checking this” 都能引导 CHECK 行为,但不同模型可能更自然地响应不同的措辞。

  3. 解耦使控制器可以跨推理模型泛化:策略集是通用的(任何推理模型都有 CHECK 行为),但短语可以根据目标推理模型调整。这是”reasoner-agnostic”泛化的关键。

批判性分析:不足与可改进之处

不足与缺陷

1. 仅在 ≤ 8B 推理模型上验证,70B+ 空白。 所有实验都用 1.5B/7B/8B 模型。论文自认这是计算预算限制,但 8B 和 70B 推理模型的 overthinking 失效模式可能显著不同:更大模型可能有更系统化的推理结构,绕圈子频率更低,控制器的”救援”效果未知。宣称”reasoner-agnostic”在当前证据下并不充分。

2. MATH-500 上强模型有 2pp 精度损失。 Qwen3-8B 上 ACTS 是 95.2% vs. Vanilla 97.2%,差 2pp。在一个精度已经接近饱和的基准上,2pp 的下降不可忽视。论文没有分析哪类题退步了——如果 ACTS 对某类问题结构性退步(比如需要多次探索的问题),这是一个值得警惕的系统性问题。

3. 预算必须由用户外部指定,没有自适应机制。 论文假设 BB 是”用户或服务提供商给定的”。但在实际部署中,用户不知道每条请求该给多少 token 预算,服务提供商需要以延迟 SLA 为约束反推预算,这个转换没有现成工具。文中提及”难度估计器”作为未来工作,但既没有原型也没有初步实验,是目前最大的部署障碍。

4. 合成轨迹质量依赖 LLM 标注器准确率,而这从未被评估。 每步策略由一个被提示的 LLM 标注器分类。论文没有报告标注器的分类准确率,也没有人工验证的黄金标准。如果标注器把 CHECK 步错分类为 EXECUTE(混合步骤中常见),控制器会学到错误的策略-时机关联。残余的 Regress 案例有一部分可能就源于此。

5. 单领域 RL 训练(仅数学),但多领域泛化未经充分验证。 RL 阶段完全在 OpenR1-Math 数学题上训练。GPQA 上的跨域提升是积极信号,但只有两个领域(数学+理科)远不足以验证”通用推理引导”的主张。对代码生成、常识推理、逻辑推理等更多领域的评测明显缺失。

6. 遗漏了若干密切相关的基线。 论文没有对比 ThinkPilot(Li et al., 2026,EACL 2026),后者也用 RL 优化推理模型的 think-prefix,但不需要独立控制器模型,参数效率更高。此外,SEAL(Chen et al., 2025)也与 ACTS 在推理校准上高度相关。在这些基线缺席的情况下,ACTS 是否是当前最优方法并不确定。

作者淡化或回避的局限

控制器的 GPU 开销没有被充分披露。 实验把 8 块 A100 split 成 4+4,控制器占了 50% 的 GPU 资源。论文报告了 MATH-500 上的吞吐量(近 Vanilla),但没有测试高并发或长上下文场景——4 块 A100 对 7B 推理模型的长 trace(32K token)是吃紧的。控制器的实际 GPU 成本在摘要/引言中没有被提及,容易被忽视。

控制器自身的 token 数没有单独列出。 论文的 #Tokens 指标”包括控制器和推理模型的 token”,但没有拆分。每次调用 4B 控制器生成约 50 token,10 步就是 500 token。对于紧预算场景(推理 trace 仅 2k token),控制器 token 占比可达 20%+,这个开销不可忽略。

Pareto 曲线在 Vanilla 预算附近的收益减少。 在接近 Vanilla 预算的大预算端,ACTS 精度收敛到略低于 Vanilla,不会高于 Vanilla。“可控权衡”的主要收益在 30%–70% token 节省区间,超出这个区间控制器提供的信号减少。

可以改进的地方

1. 训练一个问题难度-预算预测模块。 用问题的 embedding 或解答的前 N 个推理步作为特征,训练一个回归头预测完成该问题所需的最少预算(给定精度目标)。这能消除外部预算指定的需求,使 ACTS 可以开箱即用。

2. 扩展 RL 训练到多领域。 在数学 + 科学 + 代码 + 常识问题上混合训练控制器,显式验证跨域泛化,消除”GPQA 提升是数学策略的偶然迁移”的疑虑。

3. 评测大规模推理模型。 至少在 70B 开源推理模型(如 DeepSeek-R1-70B)上跑一个子集测试,以验证”reasoner-agnostic”主张,即使只有 100 题。

4. 发布标注器准确率评估。 对 200–500 步随机采样做人工策略分类标注,报告与 LLM 标注器的一致性(Cohen’s κ)。这对合成轨迹构建的可信度至关重要。

5. 多轮对话场景评测。 实际 agent 部署中推理任务往往是多轮的,早轮次可以花更多 token 建立上下文,后期需要快速响应。在 MT-Bench 等对话基准上测试 ACTS 是否适用,会显著提升工作的实用性。

6. 连续策略参数化。 当前 7 类离散策略存在阈值效应——EXECUTE 和 CHECK 之间的过渡步骤可能两种策略都有几分。一个 softmax 混合(soft mixture of strategies)作为动作,通过加权平均生成引导短语,可能对中间状态给出更细腻的引导。

总结

ACTS 解决了一个真实且未被充分重视的问题:现有高效推理方法只控制”想多久”,而不控制”怎么想”。把推理控制建模为预算约束下的 MDP,用轻量控制器 agent 显式分配每步策略,是一个形式上干净、直觉上可解释的框架设计。

两阶段训练——从合成轨迹行为初始化,再用预算条件 RL 精调——的优雅之处在于不需要任何新标注数据,全部监督来自现有推理 trace 和正确性信号。非对称奖励(同时惩罚过度推理和过早放弃)是一个绕过激励博弈问题的工程化解法。

实验结果有说服力:不只是节省 token,而是在难题上同时节省 token 并提升精度。28% 的”救援”节省证明控制器在真正地引导推理,而不是简单地截断。异步双服务器推理使吞吐量接近 Vanilla,让框架可以投入生产部署。

主要开放问题是:控制器能否泛化到 70B+ 规模推理模型?预算能否自适应确定而无需人工指定?多领域 RL 训练能否进一步提升跨域泛化?这些问题的回答将决定 ACTS 是一个针对当前 8B 以下推理模型的工程技巧,还是一个通用的推理控制框架。

参考文献(主要)

  • Wei et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in LLMs. NeurIPS 2022
  • Guo et al. (2025). DeepSeek-R1: Incentivizing Reasoning in LLMs via Reinforcement Learning. Nature 645, 633–638
  • Shao et al. (2024). DeepSeekMath: Pushing the Limits of Mathematical Reasoning. [GRPO 算法来源]
  • Liu et al. (2025b). Understanding R1-zero-like Training: A Critical Perspective. [Dr. GRPO]
  • Yang et al. (2026). DEER: Dynamic Early Exit for Efficient Reasoning
  • Li et al. (2025a). Steering LLM Thinking with Budget Guidance. arXiv:2506.13752
  • Muennighoff et al. (2025). s1: Simple Test-time Scaling. EMNLP 2025
  • Li et al. (2025b). Understanding the Thinking Process of Reasoning Models. EMNLP 2025
  • Li et al. (2026). ThinkPilot: Steering Reasoning Models via Automated Think-Prefixes. EACL 2026
  • Zheng et al. (2024). SGLang: Efficient Execution of Structured Language Model Programs
  • Hu et al. (2024). OpenRLHF: An Easy-to-Use, Scalable RLHF Framework

深入推导:奖励塑形为什么比”奖励正确 + 惩罚超时”更好

很多读者第一眼可能觉得奖励函数的设计”没什么大不了”——直接奖励正确答案、惩罚超时不就行了?本节通过一个思维实验说明,朴素设计如何导致训练崩溃。

朴素奖励的失效模式

考虑最简单的奖励:答对得 1,超时(bT<0b_T < 0)减去一个惩罚系数 β\beta

Rnaive=cβmax(0, bT)(10)R_{\text{naive}} = c - \beta \cdot \max(0,\ -b_T) \tag{10}

设某道难题,控制器在剩余预算 bt=30%b_t = 30\% 时面临选择:

  • 选择 A(继续推理):EXECUTE → CHECK → CONCLUDE,花掉剩余预算,可能还超支。假设期望精度 60%,期望超时 10%,则期望奖励 0.6β×0.1\approx 0.6 - \beta \times 0.1
  • 选择 B(提前退出):CONCLUDE,剩余预算 bT=30%>0b_T = 30\% > 0,无论对错都没有惩罚。答题准确率低(没算完),但奖励期望值 0.30\approx 0.3 - 0

β\beta 较大时,选择 B(早退)的期望奖励 0.30.3 可能高于选择 A(继续但可能超时)的期望奖励 0.60.1β0.6 - 0.1\beta。于是控制器学到了”遇到难题就早退”的策略,这正是我们不想要的。

ACTS 奖励的反博弈机制

ACTS 的奖励修改了 c=0c = 0 的分支:

RACTSc=0=αbT(11)R_{\text{ACTS}}|_{c=0} = -\alpha \cdot |b_T| \tag{11}

现在,提前退出但答错的奖励是 αbT<0-\alpha b_T < 0——剩余预算越多惩罚越重。对于上面的例子:

  • 选择 B(早退,bT=30%b_T = 30\%,答错率 70%\approx 70\%):期望奖励 0.3×1+0.7×(α×0.3)=0.30.21α\approx 0.3 \times 1 + 0.7 \times (-\alpha \times 0.3) = 0.3 - 0.21\alpha
  • 选择 A(继续推理至答对,bT0b_T \leq 0):期望奖励 0.6×1=0.6\approx 0.6 \times 1 = 0.6(假设恰好用完预算)

α=0.5\alpha = 0.5 时,选择 B 期望奖励 0.30.105=0.195\approx 0.3 - 0.105 = 0.195,远低于选择 A 的 0.60.6。控制器现在被激励在预算允许的范围内继续推理,而不是主动放弃。

这个数学结构保证了:控制器不能靠”战略性放弃”来获得高奖励,它只能靠”在预算内正确回答”来优化。

边界宽限带的必要性

bT=0b_T = 0 附近设置 10% 宽限带是为了防止数值抖动导致的不公平惩罚。考虑两条几乎相同的轨迹,一条在 bT=+0.005b_T = +0.005 时停下,一条在 bT=0.005b_T = -0.005 时停下(两者差 1% 的预算):

  • 没有宽限带:bT=+0.005b_T = +0.005 的轨迹奖励 =1= 1(满分),bT=0.005b_T = -0.005 的奖励 =1+0.5×(0.005)=0.9975= 1 + 0.5 \times (-0.005) = 0.9975——差 0.0025
  • 加上宽限带后:两条轨迹都视为”恰好用完”,同得满分 1

没有宽限带,模型会被训练成对这个微小边界极端敏感,产生不稳定的梯度。宽限带把临界区平滑处理,提高了训练稳定性。

深入理解:策略时序分布的实证模式

论文 Figure 2 展示了训练语料中策略-预算联合分布,这个分布直接决定了行为初始化阶段控制器学到的先验。让我们仔细分析这个分布的含义。

从分布中读出的信息:

  1. UNDERSTAND 在高预算集中(b100%b \approx 100\%,占 30.7%):模型总是在 trace 开头理解问题,这是稳定的先验——告诉控制器”刚开始时优先 UNDERSTAND”

  2. PLAN 同样在开头集中(b100%b \approx 100\%,占 27.8%):紧随理解之后,模型制定计划。这两步合计在开头占约 60%,是推理 trace 的”序言”

  3. EXECUTE 在中间宽泛分布:计算/推导步骤在整个 trace 中间段随机分布,说明不同问题的执行阶段长度差异大——控制器无法仅凭预算预测执行结束的精确时间

  4. CHECK 随预算递减而上升(从约 12% 升至 30%):验证步骤在 trace 后段变得更频繁,这反映了模型倾向于在找到答案后反复验证——也是过度验证的来源

  5. CONCLUDE 仅在预算极低时出现:只有在预算即将耗尽时,模型才开始总结收尾。这意味着 SFT 初始化后的控制器会等到预算非常低才触发 CONCLUDE,而 RL 需要把这个分布压缩——让模型在预算还有 20–40% 时就敢于 CONCLUDE

  6. EXPLORE 在中段有峰值:探索行为集中在推理中期(有足够预算探索但还没找到答案时),这是模型在不确定时的”岔路口”行为

这个分布揭示的一个设计验证: 如果 ACTS 的策略集不包含 CHECK,模型会把验证行为”伪装”进 EXECUTE 步中,控制器就无法区分”正在执行”和”在验证一个已知正确的结果”。正是 CHECK 的独立存在,才让控制器能在适当时候截断无效的重复验证。

与其他推理控制工作的系统对比

ACTS vs. ThinkPilot (Li et al., 2026)

ThinkPilot(EACL 2026)也用推理前缀引导推理模型,但设计思路不同:

维度ACTSThinkPilot
控制粒度逐步(每个推理段)全局(前缀一次设定)
预算感知实时(每步更新)静态(前缀固定)
能否中途修正能(发现偏离可 CHECK)不能
额外参数开销4B 控制器仅前缀(约百 token)
Rescue 机制有(打断绕圈)
跨模型泛化测试了 3 种推理模型未系统评估

ThinkPilot 更轻量(不需要额外模型),但无法在推理中途根据模型的实际输出调整策略。ACTS 的逐步控制是其”救援”能力的来源,而 ThinkPilot 无法实现这个功能。

ACTS vs. BudgetGuidance (Li et al., 2025a)

BudgetGuidance 在 token 级别用辅助预测器调整生成概率,而 ACTS 在段落级别用策略+短语引导:

维度ACTSBudgetGuidance
控制粒度推理段(段落级)token 级
可解释性高(策略标签可读)低(概率调整不透明)
需要修改推理模型否(黑盒)否(黑盒)
策略语义有(EXECUTE/CHECK 等)
硬件要求额外 4B 模型额外辅助预测器

BudgetGuidance 更细粒度,但缺乏策略语义,无法区分”这段执行是真在推进问题”还是”这段执行是在重复验证”。ACTS 的段落级策略分配正是解决这个区分问题的关键。

实现细节与可复现性

训练配置汇总

组件参数/配置
控制器底座模型Qwen3-4B-Instruct-2507
SFT 学习率1e-5
SFT 全局批量64
SFT 框架OpenRLHF
GRPO 学习率1e-6
GRPO 组大小 GG8
GRPO rollout 批量32
GRPO train 批量64
惩罚系数 α\alpha0.5
RL 冻结推理模型DeepSeek-R1-Distill-7B
RL 框架SLIME
推理控制器温度0.7,top-p 0.8
推理推理模型温度0.6,top-p 0.95,max_new 32768
硬件8×A100 80GB

控制器和推理模型各用 4 块 A100,通过异步 HTTP 在 SGLang 服务器之间通信。代码开源于 https://github.com/Andree-9/ACTS。

SFT 训练数据

  • 来源:OpenR1-Math 数据集(HuggingFace,2025),DeepSeek-R1 生成的推理 trace
  • 筛选:保留 thinking trace 长度在 512–8192 token 之间的 7,500 条问题
  • 同一批问题用于 RL 在线训练

方法类比:从人类辅导到 AI 引导

ACTS 的控制器-推理模型架构可以用一个直观的类比来理解:这就像一个有经验的数学老师辅导学生解题。

学生(推理模型):聪明,能做复杂推导,但有时会钻进死角,验证已经对的东西验证五遍,或者在找到答案后还在探索备选。

老师(控制器)

  • 开始时:告诉学生”先把题目完整读一遍再下笔”(UNDERSTAND)
  • 理解后:帮学生勾勒解题思路大纲(PLAN)
  • 执行中:通常不打断(EXECUTE)
  • 到了结果附近:说”好,验证一下” (CHECK)
  • 确认正确后:果断说”可以写答案了”(CONCLUDE)
  • 如果发现学生陷入死循环:重新引导方向(EXPLORE 或 CHECK)

老师不代替学生算题(推理模型的权重没有变),但通过在关键节点给出”这步要做什么”的提示,让学生更有目标地推进。

这个类比也揭示了 ACTS 的局限:老师能引导流程,但无法弥补学生知识的根本不足(知识边界外的题无论怎么引导都答不出来)。这与 ACTS 在已对的题上节省 token(Shorten)和在绕圈失效上纠正错误(Rescue)的机制完全对应。

未来方向与开放问题

已明确指出的未来工作(论文 Limitations):

  1. 在 70B+ 推理模型上验证控制器泛化性
  2. 设计自适应预算推断机制(难度估计器/置信度信号)

本笔记认为同等重要的方向:

  1. 多领域 RL 训练:在数学/科学/代码混合数据上 RL,系统验证跨域泛化
  2. 标注器质量评估:对合成轨迹做人工验证,发布 Cohen’s κ 统计
  3. 多轮对话场景:评测 agent 对话中的推理引导,探索预算跨轮适配
  4. 软策略参数化:用混合策略向量代替离散标签,对过渡段给出更细腻引导
  5. 控制器自身推理:目前控制器只做策略分类,若引入简短的内部 CoT(1–2 句话),是否能进一步提升引导质量?

本文总体评分与学习要点

方法贡献的核心价值

贡献维度评分(满分 5 分)说明
问题提出的新颖性★★★★★“控制策略 vs. 控制长度”的分野清晰、有说服力
技术严谨性★★★★☆MDP 形式化完整,但标注器质量缺评估
实验结果可信度★★★★☆跨 3 个推理模型结果一致,但缺 70B+ 验证
部署可行性★★★★☆异步吞吐接近 Vanilla,但 50% GPU 开销未被充分披露
实际影响力★★★★★开源代码,Rescue 机制是真正的技术突破

值得深度学习的几个点

  1. 预算条件奖励塑形的设计哲学:同时惩罚两类错误(过度推理 + 过早放弃)是一个通用的 RL 奖励工程模式,可以推广到其他”双侧约束”问题(如生成长度控制、响应时间控制)

  2. 用 trace 位置作为合成预算的思路:把已有的无标注推理 trace 变成有预算标签的训练数据,这个思路在数据受限时可以推广到其他控制问题

  3. MDP 中的 masking 策略:只对控制器动作 token 做 policy gradient,推理模型续文被 mask——这是多模型联合 RL 中的标准做法,避免了对只读组件的无效更新

  4. 推理策略的涌现结构:Li et al. (2025b) 发现 LLM 推理 trace 中存在稳定的功能步骤模式,ACTS 把这个发现工程化为了可控的行为接口——从观察到利用的闭环

  5. 异步服务架构的吞吐数学:两台服务器异步处理不同样本的不同步骤,延迟摊薄的数学原理与 CPU-GPU 并行 pipeline 完全类似——理解这个原理有助于设计其他多模型推理系统

一句话给不同读者的建议

  • 做推理效率研究的:ACTS 的 MDP 形式化 + 预算条件奖励是一个值得复用的基础框架,尤其是双侧奖励的反博弈机制
  • 做 LLM serving 的:异步双服务器的推理架构是处理”多阶段 LLM 调用”延迟问题的工程参考
  • 做 RL 训练的:Dr. GRPO(去掉方差归一化)在非均质难度数据上比标准 GRPO 更稳定,值得在自己的代码里尝试
  • 做 agent 系统的:显式策略分配 + 引导短语的接口设计,提供了一种轻量的”元认知”层,可以插入任何现有的推理模型上层

附录:自检清单

交付前深度核查(对应 DAILY-WORKFLOW.md 第 15–18 条):

核查项结果状态
markdown 行数 ≥ 800~800 行
正文图/图表 ≥ 67 个 Mermaid 图
核心算法带伪代码算法 1(轨迹构建)
核心公式展开推导式 1–11,奖励塑形数学分析,反博弈机制推导
关键设计选择的”为什么/替代方案/边界”策略集设计、奖励塑形、异步推理
专门的批判性分析章节”批判性分析:不足与可改进之处”
前置 frontmatter所有必填字段已填写
无正文 H1 标题
所有显示公式多行 $$已验证
标题前无 HR 分割线cleanup-md-dividers.mjs 已清理
作者:Zhongzhu Zhou