精读:LoCo——把推理压缩的监督从轨迹级偏好搬到状态级选择
从模型自己的 CoT 里检测过度思考状态(步级置信度 25 分位以下且波动率 75 分位以上,judge 三档复核),冻结前缀重采出更短且验证正确的续写构成同前缀偏好对交给 DPO——数学五基准 token 砍 41.7%-45.4% 且精度全线持平或上涨,只用 math14k 训练却在三个代码基准上同步省 23.4%-36.3% 还涨点;对照消融显示轨迹级偏好只能压 5.2%-15.8%、随机剪点照样压四成但精度掉光——压缩幅度与剪点位置是两个解耦的旋钮,值钱的那文献基本没碰。
1 论文概览
一句话总结:微信 AI 与西安交大把推理压缩的监督粒度从「整条轨迹的长度偏好」搬到「单个推理状态上继续或收束的选择」——用步级置信度与波动率的合取筛出过度思考状态,冻结该状态的前缀、重采出更短且验证正确的续写,构成同前缀的偏好对交给 DPO;数学五个基准 token 砍 41.7%–45.4% 且精度全线持平或上涨,只用 14k 数学题训练、一道代码题都没有,在三个代码基准上照样省 23.4%–36.3% 还涨点。
核心问题:大推理模型经常在拿到足够信息后继续空转——overthinking 与其说是能力问题,不如说是偏好问题:模型答对了还不肯停。
“The problem therefore lies in when the model chooses to stop, rather than whether it can reach the correct answer” —— 原文 §1
既有压缩方法分两派。轨迹级(Kimi k1.5 的 Long2Short、O1-Pruner 这类用长短对做 DPO,或把长度奖励写进 RL 目标)只知道「整体上该短」,不知道「哪里短」——两条解路殊途同归,从整体长度看不出哪一段能安全砍掉。细粒度级(TokenSkip、TokenSqueeze 删 token,Step-DPO、SSPO、ReCUT 在前缀共享的步骤对上做文章)会改轨迹内容,监督的还是「已有内容里哪些该删」,不是「从这个状态出发还要不要继续想」。论文把问题挪了一格:压缩决策本身应该是状态条件的——同一个模型,在某个状态该继续,在另一个状态该收束。
主要贡献:
- 状态条件的压缩监督。偏好对的 prompt 不是原题,而是冻结的推理前缀;chosen 与 rejected 是同一状态下的两条续写,监督信号直接落在「到达该状态之后选哪条路」这个局部决策上。
- 因果的过度思考检测器。步级置信度取自家分布的 25 分位以下、步间波动率取 75 分位以上,两信号合取筛候选,再由 Qwen3-30B 复核;全部计算只用截断点之前的信息,检测器从不看它要删的那段。
- 再生验证闭环兜底。误报的状态很难再生出「短且答案正确」的续写,会在有效性判定处被天然清掉——检测管线自带纠错,不靠检测器百发百中。
- 跨域泛化证据。math14k(14,027 题)纯数学训练,代码三基准精度与 AUC 全涨,支撑「学到的是收束偏好、不是领域知识」这个读法。
2 方法详解
2.1 检测:低置信与高波动的合取,加一道 judge
把完整 CoT 喂回模型自己,逐位置记 top-1 token 概率;步骤以段落分隔,步级置信度是该步内 token 概率的均值,波动率取最小窗口——相邻两步置信度差的平方除四。四个分位数(置信度与波动率各取 25/75 分位)在模型自采语料上一次性校准。候选状态定义为「最近完成的步骤既低置信又高波动」(式 6):低置信单独出现对应真难的子问题,高波动单独出现对应合法的推理切换,合取之后剩下的才是「既不确定又原地打转」的状态。
Judge 复核拿到题目、冻结前缀、下一步原文和预测标签,返回 OVERTHINK / NORMAL / FINAL 三选一。FINAL 这一档专门保护收尾——推理模型爱在结尾复述 boxed 答案,看着重复,删了就把答案本身抽掉了。检测全程因果:
“Hence, the detector never uses the continuation it removes.” —— 原文 §4.2
每条轨迹最多保留 10 个候选状态(均匀采样),防止多检轨迹主导后续的再生环节。
2.2 再生:同一前缀下采 8 条,挑最短的正确续写
对每个幸存状态,冻结其前缀,同温同 top-p 采 8 条续写;答案与金标符号等价才算有效,取最短有效续写为 chosen,原轨迹从该状态起的续写为 rejected;空集丢弃,不严格更短也丢弃。最后按节省量过门槛:至少省 300 token、每题至多 3 对、前缀限 6k、续写限 12k。
2.3 训练:状态条件的 DPO
偏好三元组直接进 DPO(,参考策略为基座本身)。两条分支共享同一个前缀,似然比只在续写段上算——比较的对象从「两整条解」缩到「同一状态的两条后续」。LoRA rank 256、只动注意力的 q/k/v/o 投影、2 epochs、4 张 H20,基座全程冻结。
2.4 与基线的分别:监督落在哪个对象上
对照里 DAST 是轨迹级长短偏好方法,TokenSqueeze 是 token 级删减。最接近 LoCo 的是 Step-DPO 这一族:同样是前缀共享的步骤偏好对,差别在两边的语义——Step-DPO 对的是「正确 vs 出错」的续写,LoCo 对的是「短而对 vs 长而冗」的续写,且切点由检测器选定而非人为指定。这个差别是全文立论的支点。
3 实验结果
3.1 数学:越难越省,精度还涨
评测协议:温度 0.6、每题 8 次采样、vLLM、32,768 新 token 上限,答案取最后一个 boxed 表达式用 math_verify 做符号等价。表 1 摘要(相对基座的变化):
| 基准 | Acc | Token | AUC |
|---|---|---|---|
| MATH-500 | −0.08 | −44.1% | +3.92 |
| AMC23 | +1.25 | −41.7% | +6.49 |
| Olympiad | +1.45 | −44.6% | +5.33 |
| AIME24 | +3.34 | −45.4% | +6.49 |
| AIME25 | +2.50 | −45.2% | +4.26 |
对照组里 TokenSqueeze 在 MATH-500 掉 0.70、AIME24 掉 2.08;DAST 更扎眼——在 AIME24/25 上 token 不降反升 6.9%/3.4%,代码侧全线恶化(MBPP 精度 −2.92、token 反涨 20.4%)。LoCo 是唯一五个基准「砍四成以上、精度不降」的方法。留一道刻度:AIME24 只有 30 题、标准差 ±4.27,+3.34 在一倍标准差之内,MATH-500(500 题)的 −0.08 与 Olympiad(675 题)的 +1.45 反而是更硬的证据。
3.2 代码:math14k 训练,代码白捡
| 基准 | Acc | Token | AUC |
|---|---|---|---|
| MBPP | ±0.00 | −36.3% | +1.53 |
| LiveCodeBench | +0.74 | −24.7% | +2.78 |
| CodeContests | +2.13 | −23.4% | +2.91 |
训练一题代码都没有,三个基准精度与 AUC 全涨。论文用这个迁移论证「学到的是何时收束的偏好,不是数学知识」——领域知识解释不了跨域涨点,偏好解释得了,这个推理方向站得住。
3.3 消融:两个解耦的旋钮
表 3 在 AMC23/AIME24/AIME25 上做对照:
- Global(轨迹级偏好:同题最短 vs 最长正确全解,prompt 只放原题):token 只压 5.2%/11.1%/15.8%,精度与 LoCo 相当。压缩几乎全部来自状态条件化——轨迹级偏好是文献里的默认构造,这条消融把它的压缩上限量出来了。
- GPT-5.4 续写(chosen 换成 GPT-5.4 从同一前缀重写的更短正确续写):压缩与 AUC 全面落后自采版(AIME24 token 9204 对 7364,AUC 44.11 对 46.82)。更强的教师给的钱不如学生自己的分布贴,原文给的解释是分布对齐:
“A plausible explanation is distributional alignment.” —— 原文 §5.4
- RandCut / UniCut(切点换随机/均匀,再生与配对流程不变):压缩幅度几乎不打折(39.5%–43.2% 对 LoCo 的 41.7%–45.4%),掉的全是精度——AMC23 −1.87/−0.93,AIME24 −2.50/−2.08。剪多剪少由「偏好短」决定,剪得准不准由「剪点选得对不对」决定,两个旋钮各管各的。
“Both variants can still shorten CoT substantially, but they incur larger accuracy losses because they often compress reasoning at positions where the model still needs additional computation.” —— 原文 §5.4
4 个人分析
4.1 亮点
检测-验证闭环是设计上的巧劲。检测器的误报不需要人工纠:一个被错标为 overthink 的状态,模型在那儿还要真算,重采 8 条很难出「短且正确」的续写,有效性判定这道闸门自然把这类点清掉。整套管线没有一处依赖「检测器必须准」——检测器只需要召回过得去,精度交给再生验证兜底。这是把不可靠信号变成可靠监督的标准姿势:别修信号,给信号配一个可证伪的下游闸门。
RandCut 消融把文献的盲区量出来了。推理压缩文献大多在拧「怎么奖励短」这个旋钮——长度惩罚 RL、长短对 DPO、token 删减,变着法子鼓励短。LoCo 的对照显示:随机剪都能压四成,压缩根本不是瓶颈;瓶颈是剪得准不准,这一维主流方法基本没碰。表 3 是全文最值钱的一张表,RandCut 压缩 41.6% 摆在那儿,「奖励短」能买到的东西一眼见底。
自采续写打赢外部教师,与蒸馏文献里的容量失配结论同源(本专栏 OPD 系列反复撞到这堵墙):监督信号的有效性由「贴不贴学生自己的分布」决定,不由「写得好不好」决定。GPT-5.4 的续写更漂亮,但离学生的原生 CoT 风格更远,DPO 的梯度反而更弱。
4.2 局限
单一基座、单一规模。全部实验落在 DeepSeek-R1-Distill-Qwen-7B 一个模型上,更大或更小的模型、其他家族一概没碰——「偏好问题而非能力问题」这个立论在更大模型上是否还成立,overthinking 文献在 32B 级别有相反证据,论文没接这茬。
检测管线的账没报。筛查命中率、judge 通过率、最终偏好对数量,三个数一个都没有——14,027 题 × 3 条 rollout 进去,出来多少对训练数据,无从对账,复现要靠猜。judge 消融也缺:去掉 Qwen3-30B 复核只留统计筛查会掉多少,不知道。
节省门槛是个大超参。300 token 的门槛直接决定偏好对的难度分布——低于 300 的温和冗余全部丢弃,等于只学「大刀阔斧的收束」,细碎的啰嗦不管。敏感度没扫。
AUC 的读法要留一道刻度。AUC 由「逐级收紧 token 预算下的精度」扫出,模型整体变短天然抬高小预算端的曲线——LoCo 的 AUC 领先有一部分是长度的直接后果。真正有说服力的是 TokenSqueeze 同样变短但 AUC 全面落后:截断 LoCo 的 CoT 不伤精度,说明删的是真冗余;TokenSqueeze 删的段里有内容,一截就露馅。这个同长度带内的对照成立,单看 AUC 绝对值不行。
模板依赖。有效续写要求「完成推理模板」,收尾判定(FINAL 档)也是 <think > 与 boxed 文化的产物——方法绑在这套输出格式的模型上,换格式的模型,判定与再生两头都要重调。
4.3 对大模型领域的影响
overthinking 是推理成本的显性大头,工业界的默认解法是推理时截断或提示词压缩——都是运行时的绷带。LoCo 把「何时停」从运行时技巧变成训练时偏好,训练成本是一次 LoRA 微调(4 张 H20、2 epochs)加一轮离线数据构造。与长度惩罚 RL 的本质分别在奖励面:RL 优化「结果长度」,模型可以拿错换短;LoCo 的偏好对里「短而错」在有效性判定处就进不了训练集,没有 hacking surface。往前一步的问题是:状态条件偏好能不能推广到推理之外——agent 多轮轨迹里「这一步之后还要不要再试」、检索系统里「这条上下文之后还要不要再读」,结构与「这个状态之后还要不要继续想」同构。
5 实践启示
5.1 可以借鉴的技术
- 统计粗筛 + LLM 精筛 + 可验证闭环的三级漏斗。这是数据清洗的标准架构移植到训练信号构造:分位数阈值校准一次、批量离线跑 logprobs 几乎免费、judge 只看粗筛幸存者。任何「从海量自采轨迹里挖高质量训练点」的管线都可以抄这个骨架——关键是最后一道闸门要可证伪(再生验证),让前两级的误报自动出局。
- 自采短续写优于外部教师重写。构造偏好数据时别急着请强模型:学生自己从状态里采 8 条挑最短正确的,监督信号比教师写的更贴分布。这条对预算紧张的团队直接省一笔 API 钱,效果还更好。
- 分位数自适应阈值。检测阈值不是绝对值而是模型自身分布的分位数,换模型、换域不用重调——「用模型自己的行为归一化模型自己的信号」这个思路可以搬去任何 per-model 校准场景。
5.2 潜在应用场景
- 推理服务的降本改造:7B 蒸馏模型上一次 LoRA(rank 256)换数学四成、代码两到四成的 token 削减且精度不降,回本周期极短。有 verification oracle 的域——代码有沙箱、数学有等价校验、SQL 有执行结果——都能直接套;开放生成没有 oracle,续写验证会退化成 judge 打分,信号变弱,套用前先看域里有没有可验证的终止判据。
- 数据平台的 overthinking 普查:置信度与波动率信号不需要任何标注,可以先当分析工具用——对现有 RLVR/SFT 语料做一遍过度思考普查,按分位分档,看哪些任务族、哪些难度段的冗余最重,再决定要不要训。对做数据质量画像的平台,这是一套现成的指标。
- Agent 长轨迹的收束训练:多轮 agent 轨迹的「原地打转」(反复重试、重复观察)与 CoT 的过度思考结构同源——把「冻结状态、重采短正确续写」搬到工具调用轨迹上,检测信号从 logprob 换成动作分布,思路可迁移。
参考文献
- Yuan, M., Xu, L., Zhang, W., Jiao, M., Li, J., Zhang, J., Zhou, J. Think Less, Locally: Local Preference Learning for Reasoning Compression. arXiv:2611.04814, 2026(本文,微信 AI 与西安交通大学;代码与模型承诺开源于 github.com/MuyaoYuan/LoCo)。
- Zhang, et al. TokenSqueeze. 2026(token 级压缩基线;训练集 math14k(14,027 题)与 AUC 口径均出自此文)。
- Shen, et al. DAST. 2025(轨迹级偏好压缩基线,表 1/表 2 对照)。
- Team, K. Kimi k1.5: Scaling Reinforcement Learning with LLMs. 2025(Long2Short 阶段:轨迹级长短对 DPO 的代表)。
- Lai, et al. Step-DPO. 2024(前缀共享步骤偏好对的出处,与 LoCo 最近的同族方法)。
- Guo, D., et al. DeepSeek-R1. 2025(基座 DeepSeek-R1-Distill-Qwen-7B 与 think 模板格式的来源)。
相关精读
- 本篇把本专栏连续六十六期的主线再挪一格:此前六十五期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账、信号被消费时旧了多少、数据分布离基座多远、整条响应有没有资格参与这次更新、策略容量会不会被优化动力学耗光、教师分布里哪些位置允许比较、事后经验除了改行为还能不能改行动之前的那次预测、参考模型的 KL 该从哪条边进组相对更新、教师的意见从哪条通道进 RL、off-policy 校正的记账区间有多长、裁剪区间那两个端点由什么决定、干预落在流水线的哪一环、逐步信用从哪个模型里来、一个已经报出来的增益该怎么拆账、这些信号最终以什么形状落到参数上、结局空间该分成几档、同一笔优势在响应内部怎么分、教师交出来的那笔位移里哪些前缀有资格进损失、这笔信用在更新里当斜率还是当终点、一次迭代该对齐到任务的哪一格、一份外部语料要进模型,是作为检索出来的文本进上下文,还是作为预测出来的隐状态进解码器、模型内部被拆出来的那批坐标能不能当作可以相加的行为解释单元、思考预算拧大之后,模型换掉的是对一个句子的读法,还是只换掉了答对的比例、一组 token 压成一个向量时,这个压缩动作本身该不该由输入自己解出来、一份原生多模态预训练预算该在三个模态之间怎么切成参数、token 与重复次数、生成过程里没有左右顺序时 token 级信用该记在什么量上、当奖励本身就是一份由打分器算出来的清单覆盖率时,优化器在最大化哪一样,以及给这份奖励补上一个精确率项之后,模型缩短的究竟是废话还是内容、当参数量被钉死、深度靠同一组权重反复复用来买时,多出来的计算到底在买什么、MTP 的交叉熵梯度里,到底有多少在教模型它还不会的事、有多少只是在低信噪比地复读它已经会的下一 token 分布——把后者单独留下来,要不要付钱、两个从不见面的模态编码器,学到同一份世界表征的充分条件是什么——正对连的到底是世界状态,还是同一份观测的扰动,这一个选择决定了表征属于世界还是属于模态,next-token prediction 属于哪一边、评测用的那把尺子本身——一道题都不换、模型也不换,只是题目在难度轴上的摆放不均匀时,排行榜的排名会翻转多少、训练监控里哪些区段的进步在任何重复采样次数下都测不出来、一次交互在执行之前能不能被便宜地估值、错估的账怎么摊、被那道把关的门删掉的训练数据算谁的、稀疏注意力的账单从「算」搬到「找」之后,挑 key 的钱能不能不按全文长度付、而按语义聚类的层级付」;这一期问的是推理压缩的监督该记在哪个对象上——是整条轨迹的长度偏好,还是单个状态上「继续想还是就此收束」的那次选择,以及谁有资格判定那个状态已经想够了——上一期把稀疏注意力的账单从「算」搬到「找」,问挑 key 的钱按位置分块付还是按语义聚类的层级付;这一期从推理系统退回训练信号的记账粒度:监督落在状态上,短而验证正确的续写胜过长而冗余的原路,检测器的误报由再生验证这道闸门自己兜底。
- 精读:LSA——当稀疏注意力的账单从「算」搬到「找」
- 精读:条件交互——System-1 的预算闸门、1/ρ_u 的记账本质与那道删自己训练数据的门
- 精读:基准不是题库,是难度轴上的经验测度——DDM 与 Max Gap 的两张体检单、30 题基准的盲区定理与 BenchFill 的三道补题
- 精读:把「柏拉图表征」从假说拧成定理——好视图的 42 倍样本效率、NTP 的 log-partition 身份与那台写文本的图像描述器
- 精读:把 MTP 梯度拆成自蒸馏与噪声残差——Soft-MTP 的一行改动、80% 的噪声占比与那份免费午餐的账单
- 精读:三明治包络、输入注入与状态组织的三轴审判——Looped Models Done Right 与那笔藏在全胜账本背面的 5.4 分
- 精读:给评分标准奖励补一个精确率项——FORK 的 1/K 信用与那道没写进公式的去重
- 精读:没有左右顺序时,token 级信用该记在什么量上——DTCA 的 255 倍量纲与 18 个词性权重
- 精读:多模态数据配比的第一张标尺——268 次 MoE 预训练定律与它最锋利的那格消融
- 精读:把压缩写成一次测试时回归——TTR-Compressor 的 Gram 矩阵与 12.24 点是怎么来的
- 精读:思考预算把 some 读成 ∃——Entertain-then-Cancel 的剂量曲线与读法记账
- 精读:SAR——SAE 特征的可加性该怎么记账,以及这笔账测不到的那一半
- 精读:DFM——把检索邻域压成一块记忆,插进解码器的中间层
- 精读:给 agent 换一层外壳再训一次——Harness Scaling 的因子化执行空间与正交选点
- 精读:给每一次迭代发一张工牌——PAR 的深度-长度对应与范数锚定
- 精读:把回合级信用从斜率换成终点——TreeOPSD 的仿射教师与残差匹配
- 精读:给教师的位移装一道闸门——中间检查点只做证据,不做目标
- 精读:把每个奖励的功劳拆回到它自己读的那几个 token 上
- 精读:GracefulRL——给退避一个中间价,代价是 74% 的题不再作答
- 精读:Ares——把 RLVR 的更新秩交给梯度谱,账本落在截断之后
- 精读:Thinking Leakage——no-think 模式下的 RL 增益有多少是从 think 模式漏过来的
- 精读:LVRL——把价值函数从「训出来的部件」换成「冻结的前沿 LLM」
- 精读:RTI——把干预从优化期搬到采样期
- 精读:GPPO——把 PPO 的裁剪区间拆成「散度」与「估计器」两维
- 精读:TAPO——把重要性比的记账区间从「当前 token」挪到「到当前位置为止的前缀」
- 精读:Residual Advantage——让教师只重分信用,不改响应总分
- 精读:ZCPO——把参考 KL 从损失支搬进组内系数
- 精读:SRD——把事后回顾蒸成事前先见
- 精读:跨分词器 OPD——把对齐覆盖度补满反而掉点
- 精读:Mesh Learning——把 RLVR 的坍塌解释成策略容量的供需冲突
- 精读:CARM——把响应级掩码的判据从净位移换成双向漂移
- 精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 精读:SCAPO——用「扰动下不动」给 token 记一笔负账
- 精读:把 prompt 课程从「排难度」换成「排目标」——Fisher–Rao 弧长上的高斯课程 ARCUS
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO——用特权信息突破 RLVR 学习悬崖
- 精读:不跑 RL,先用已有策略把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果——八阶段流水线里哪些收益经得起对账
- 精读:STARE——惊奇度引导的Token级优势再加权稳定策略熵
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT —— 只让「中间那一段置信度」的 token 参与 SFT
- 精读:E-SFT —— 把推理轨迹的中间段删掉再练
- 精读:把中间状态的价值估计整体消掉
- 精读:Don’t Mask the Environment 与被 mask 掉的环境观察
- 精读:SP³O 与 PPO critic 的价值压平
- 精读:把「做不出来」的题变成训练信号
- 精读:DataFlex-RL —— 13 种 RLVR 数据策略,没有一个跑赢均匀采样
- 精读:NGU 与 RL 里的马太效应
- 面向RLVR训练的秩-判别性联合数据工程:从秩退化诊断到判别性驱动的训练数据策展
- 精读:Co-Evolving Harnesses and Models —— 同一份专家轨迹,换个脚手架符号就反过来
- 精读:OPD-then-RL —— 两阶段为什么打过单步融合
- 精读:One-Shot OPD —— 一条 query 够不够,取决于它走出多宽的状态
- 精读:Compile by Training —— 把提示词编译成本地权重
- 精读:Terminal-Universe——把轨迹反演回环境,而不是模仿它
- 精读:OPSA——把教师从 on-policy 蒸馏里彻底移除
- 精读:SPADE——把环境设计本身变成可训练的组件
- 精读:DART-SD——用状态拓扑定位断点,只修补该修补的那一段