论文精读

精读:KAPPO——把 pass@k 训练拆成一个按题配准的系数

KL 正则 pass@k 与 max@k 的最优策略闭式解出来是同一个东西:@1 优化的指数倾斜加一个逐题的 β_eff(x)=β/(k(1-p)^{k-1})——饱和曲线的导数 k(1-p)^{k-1} 就是压力分配系数,易题正则收紧、难题奖励最多放大 k 倍;参考策略的逐题通过率离线校准一次(M=30、开销≤5%),DPO/APO/GRPO 不改训练流程升格 @k 优化器,@k-A*PO 单样本在线更新追平 k 倍 rollout 的 PKPO(目标预算差 0.5 分内、rollout 省 50%-75%)——sharpening 从争论变成旋钮 k。

论文: Controlling Sharpening in LLM Post-Training
作者: Simon Matrenok, Nicolas Menet, Nicolas Flammarion, Andreas Krause
arXiv: 2611.03146
RLVR sharpening pass@k 策略优化 KL正则 后训练 cs.LG

1 论文概览

一句话总结:EPFL 与 ETH Zürich 把 KL 正则 pass@k 与 max@k 目标的最优策略解成闭式,发现所谓 @k 优化不过是 @1 优化配上一个按题校准的正则强度(等价地,一个按题缩放的奖励倍率)——题目的难度信息全部来自参考策略的逐题通过率,可以离线一次性量好;据此提出的 KAPPO 给 DPO、A*PO、GRPO 三类 @1 优化器各装一个自适应系数,单样本在线更新在 MATH Level 5 上追平需要 k 倍 rollout 的专门 pass@k 优化器 PKPO(目标预算处差距 0.5 分以内),把 sharpening 从一个争论不休的现象变成训练时可以直接拧的旋钮 k。

核心问题:RLVR 涨平均分的方式经常是「锐化」——把概率质量集中到模型本来就会的那几个解上,单次通过率涨、多样本通过率不涨甚至跌。Yue et al. 用 pass@k 曲线把这件事量化了:训练增益集中在小 k 端,采样预算一拉大,增益缩水甚至反转为负。

“The impressive single-trial gains frequently diminish or reverse in multi-trial settings, as the generated reasoning paths are confined to a narrow subset of the base model’s original distribution.” —— 原文 §1

以 pass@k 当训练目标是已知解法(PKPO、Chen et al. 2025b),但两件事没说清:@k 目标为什么天然抗锐化;以及为什么必须为此维护一套「每题采 k 条、按组构造学习信号」的专门算法——RL 社区在 @1 优化器上积累的全部改进(裁剪、归一化、回归式拟合)到了 @k 这儿都得重写。论文把这两个问题一并拆掉。

主要贡献:

  • 闭式最优策略。KL 正则 pass@k 与 max@k 的最优策略都是参考分布的指数倾斜,pass@k 的倾斜系数是逐题的 β_eff(x) = β / (k(1−p*(x))^(k−1)),其中 p*(x) 由一个可离线求解的标量方程唯一决定。
  • @k 等价于 @1 加逐题压力配准。证明 @k 最优策略与「@1 目标 + 逐题自适应正则强度」或「@1 目标 + 逐题奖励倍率」的最优策略完全一致——二进制奖励下两种视角严格等价,@k 优化器不再是独立的方法类别。
  • KAPPO 框架。参考校准(每题 M 条参考采样、一次性离线跑完)之后,任何 @1 优化器不改训练流程就能升格为 @k 优化器;k 直接控制锐化程度。
  • 单样本兑现多样本目标。@k-A*PO 每题只需 1 条在线采样,在匹配的训练预算上与 PKPO(每题至少 k 条)差距不超过 0.5 分,在线 rollout 省 50%(k=2)到 75%(k=4)。

2 方法详解

2.1 pass@k 的最优策略:还是指数倾斜,只是系数开始看题下菜

KL 正则 RL 的标准目标下,最优策略是 π_ref 的指数倾斜:π*(y|x) ∝ π_ref(y|x)·exp(R(y,x)/β),倾斜幅度由全局常数 β 决定——所有 prompt 共用一把尺子。论文把目标里的 @1 奖励换成 pass@k = 1−(1−p)^k 再解一遍,最优策略的形式完全不变,只有 β 换成了逐题的 β_eff(x):

π∗(y∣x)=1Z(x) πref(y∣x)exp⁡ ⁣(R(y,x)βeff(x)),βeff(x)=βk (1−p∗(x))k−1\pi^{*}(y\mid x)=\frac{1}{Z(x)}\,\pi_{\mathrm{ref}}(y\mid x)\exp\!\left(\frac{R(y,x)}{\beta_{\mathrm{eff}}(x)}\right),\qquad \beta_{\mathrm{eff}}(x)=\frac{\beta}{k\,(1-p^{*}(x))^{k-1}}

其中 p*(x) 是最优策略自己的通过率,由一个标量方程隐式决定:

k (1−p∗(x))k−1=βlog⁡p∗(x) (1−pref(x))pref(x) (1−p∗(x))k\,(1-p^{*}(x))^{k-1}=\beta\log\frac{p^{*}(x)\,(1-p_{\mathrm{ref}}(x))}{p_{\mathrm{ref}}(x)\,(1-p^{*}(x))}

右边只依赖参考策略的通过率 p_ref(x)——一个可以从参考采样直接估计的量。给定 p_ref,这个方程离线数值求解,逐题解一次,训练时只查表。两个边界值得停一下:k=1 时方程退化,β_eff = β,回到标准结果;p*(x) 趋近 1 时 β_eff 发散到无穷,最优策略就是「别动」——已经稳过的题,@k 目标的最优解是原地站在参考分布上。

2.2 机制:饱和曲线的导数就是压力分配

为什么这个系数对抗锐化?看 pass@k 对通过率的导数:d(1−(1−p)^k)/dp = k(1−p)^(k−1),恰好就是奖励倍率 a_k(x) = β/β_eff(x)。把 p 从 0.9 推到 1.0,pass@1 账面上记 0.1 的收益,pass@4 只记 0.0001——在 @1 目标下,把易题的尾巴概率吃干净和把难题从 0 拉到 0.1 奖励相同,但前者只需要集中已知解,后者要习得新策略,优化器理性地选择前者,这就是锐化;@k 目标的饱和结构让易题的边际收益趋零,压力自动流向还有空间的地方。论文自己的表述:

“The adaptive pressure induced by pass@k objectives counteracts this tendency towards sharpening by imposing stronger effective regularization on already-easy tasks or, equivalently, through the prompt-adaptive reward scaling described above.” —— 原文 §4.1

倍率的取值范围是 [0, k]:难题(p*→0)拿满 k 倍奖励放大,稳题(p*→1)倍率归零。@k 训练对单道题的优化压力至多放大 k 倍、至少清零,这个包络是饱和函数的导数性质自动给出的,没有额外超参。

2.3 max@k:正则侧等价断裂,胜率替代补上

连续奖励(代码按测试用例通过率记分)下 max@k 的最优策略仍是指数倾斜,但倾斜指数里出现最优策略自身的奖励分布 F_π* 的 k−1 次幂积分——隐式量套隐式量。把它硬拆成 β_eff 的形式会发现系数不仅逐题、还逐条完成依赖,正则侧的严格等价在这里断了;论文的处理是保留奖励侧:奖励换成 S_x(r) = k∫F^(k−1) 这个变换。麻烦在于 S_x 依赖 F_π*(最优策略的分布),没法离线校准。解法是把奖励先换成「对参考策略的胜率分位数」F_ref(r|x)——保序变换,语义是把每条完成的分数改记成「打赢了参考模型多大比例的采样」——这一步之后闭式解完全显式(式 12),唯一需要的逐题量 F_ref 与二进制情形的 p_ref 一样,从固定参考样本库直接估计。

2.4 KAPPO 与基线的分别:校准的钱付一次,训练的钱按 @1 付

PKPO 这类专门的 @k 优化器要在每个训练步为每道题采至少 k 条在线样本,按组构造 pass@k 的梯度估计。KAPPO 把「难度信息」和「在线更新」拆开:难度信息(p_ref 或 F_ref)在训练前用 M=30 条/题的参考采样离线量好,一个纯推理批处理任务(vLLM/SGLang 连续批处理,无反向、无权重同步),量完存表,换 k、换 β、换学习率、换种子都不用重新生成;在线阶段每题 1 条采样(@k-A*PO)或维持原优化器的采样数(@k-GRPO 的 n=8、@k-DPO 的 8 选 1 构造偏好对),只把损失里的系数或奖励换掉。三个实例化分别走两个接口:@k-DPO 走正则侧(β 换 β_eff(x),式 13),@k-A*PO 与 @k-GRPO 走奖励侧(R 换 βR/β_eff 或 S_x^q,后者进 GRPO 的组归一化后 prompt 自适应结构保留)。

与专栏此前拆过的 GPPO 对照着读更清楚:GPPO 把 PPO 裁剪拆成「散度选择」与「估计器设计」两根正交轴,KAPPO 把「@k 与否」从算法类别降格成损失系数——两篇做的是同一类消解手术,把文献里当成独立方法的东西还原成基础方法的可拆参数。

3 实验结果

3.1 设置:刻意选「没被 RL 碰过」的基座

两个基座:OLMo-3-7B-Instruct-SFT(SFT 后、RL 前的检查点,全开放训练管线、显式去污染流程)与 Qwen3-4B-Base。选型逻辑是排除法——推理强化过的检查点带着说不清的课程与锐化历史,归因会糊。数据协议模拟真实研发节奏:MATH 训练集(7,500 题)上做 RL,MATH 测试集 Level 5 做分布内验证,AIME 2026 做最终测试——比 MATH 最高难度档更难、且晚于两个检查点发布,堵住污染。代码侧:LeetCodeDataset 训练集训练(2024 年 7 月截止),LiveCodeBench v6 hard 子集(2025 年 1–4 月题)测试,奖励为测试用例通过率。

3.2 数学:单样本追平 k 倍采样

MATH Level 5 验证集(表 1,按训练时选定的 pass@k_train 最大化的检查点):

模型方法pass@1pass@2pass@4pass@8pass@16
OLMo-3-7B起点37.3850.9463.1673.2981.80
OLMo-3-7B@2-A*PO65.3476.9884.3889.1192.22
OLMo-3-7BPKPO (k=2)66.0877.3884.7389.4692.52
OLMo-3-7B@4-A*PO64.4676.5184.3989.3392.45
OLMo-3-7BPKPO (k=4)64.3176.1883.9289.0492.45
Qwen3-4B起点23.9338.3254.3268.1677.79
Qwen3-4B@2-A*PO57.2770.4879.3985.3489.43
Qwen3-4BPKPO (k=2)59.8870.7778.7784.5988.75
Qwen3-4B@4-A*PO57.2270.1478.6384.2288.29
Qwen3-4BPKPO (k=4)57.9469.9178.6584.8189.20

匹配训练目标的预算处(k_train=2 看 pass@2,k_train=4 看 pass@4),@k-A*PO 与 PKPO 差距全部在 0.5 分以内;AIME 2026 上的对比(图 8)给出同样结论。小预算端留一道刻度:Qwen 的 k=2 组里 PKPO 的 pass@1 比 @2-A*PO 高 2.61 分——两套方法的目标预算对齐、端点分布并不重合,PKPO 在 pass@1 端保留的锐化更多一点。大预算端方向反转,@2-A*PO 的 pass@8/16 反超。

3.3 成本账:压力重构这件事可以离线买

1,000 步 × 128 题/步的设定下,@k-A*PO 生成 128,000 条在线完成;PKPO 按最低倍率 n=k 要 256,000(k=2)或 512,000(k=4)条——在线 rollout 分别省 50% 与 75%,PKPO 用更大组时差距按比例继续拉大。GRPO 的 n=8 是 1,024,000 条,@k-GRPO 沿用同样 8 条、不加钱。参考校准的开销:MATH 全库 30 × 7,500 = 225,000 条完成,纯推理 0.5 小时跑完,对比单次训练 10–12 小时,论文记为不超过 5% 的训练时间开销。这笔账的关键结构是「校准一次、处处复用」——同一张 p_ref 表支撑所有 k、β 与学习率组合的超参扫描。

3.4 拧 k 这个旋钮

AIME 2026 上把 pass@k_eval 从 1 拉到 16(图 2):k=1 训练的增益随评估预算增大不断缩水,起点检查点在大预算端追上来;k>1 训练通常(论文原话是 typically (but not always))保留的 pass@1 增益略小,在大预算端持续领先基线。DPO 与 @k-DPO 的对照同构:标准 DPO 的增益集中在小预算端,@2-DPO 在大预算端反超。代码侧(LiveCodeBench v6 hard,图 4)两个实例化(胜率 @k-A*PO、@k-GRPO)复现同样形态。锐化程度成了 k 的单调函数,这是「直接控制」的最硬证据。

3.5 附录 K 的自审:最脆的地方恰好是最想帮的地方

参考校准的有限样本噪声分析是全文最诚实的一节。校准映射 g 在零点附近极陡:k=4 时 g(0)=0,但 g(1/30)≈0.553——30 条参考采样里从「零个对」变成「一个对」,推断出的 p* 从 0 跳到 0.55,奖励倍率 a_4 从 4.0 掉到 0.36,一道题的压力配准翻了 11 倍。真实通过率 q=0.01 的题,M=30 的库里全零的概率约 74%。也就是说,@k 训练最想加持的最难带的那批题,恰好是校准信号最接近抛硬币的地带。工程上论文打了两个补丁:@k-DPO 加失败伪计数 α=0.5、β_eff 封顶 2(附录 J.2),并证明封顶后的估计量收敛到 min{β_eff, 2}——易题端本该发散的正则强度被这个盖子压住,代价是易题的「别动」指令打折执行。

4 个人分析

4.1 亮点

消解式结论是这篇论文最值钱的部分。「pass@k 训练需要专门算法」在 2025–2026 年的文献里几乎是默认前提,PKPO、Chen et al. 的自适应优势、OrderGrad 各自构造 @k 专属的学习信号。KAPPO 证明在 KL 正则的框架里这些「新算法」收敛到同一个逐题系数调过的 @1 最优策略——@k 与 @1 的分别不在算法类别里,在一个可以从参考分布离线算出的标量里。这类把方法差异还原为系数差异的手术,与 GPPO 对 PPO 裁剪的拆解同构,是把一个子领域收编进主流框架的标准姿势。

饱和导数即压力分配,机制干净到没有自由参数。a_k = k(1−p*)^(k−1) 不是设计出来的启发式,是 1−(1−p)^k 这条饱和曲线的导数——@k 目标「天然」抗锐化的全部秘密就是这个导数在易题端趋零、难题端封顶 k。读懂这一点,@k 优化从经验现象变成了可以推导的性质,任何单调饱和的目标(top-α、加权分位数)都能照方抓药地写出自己的压力分配系数。

难度信息与在线更新解耦,是对算力结构的正确洞察。探索贵在 on-policy——每一步都要重新采样。KAPPO 展示了压力重构这部分价值可以 off-policy 地买:参考库是纯推理批处理,比训练便宜两个量级(0.5 小时对 10–12 小时),且换超参不重跑。对数据平台出身的读者,这张 p_ref 表就是一份「模型自己量的逐题难度标注」——零人工、可复用、随数据集沉淀,与上一期 LoCo 的分位数自校准(用模型自己的行为归一化自己的信号)是同一个思想在不同环节的落地。

4.2 局限

等价停在最优策略层,动力学与估计方差不在保证范围内。理论说的是两个目标的最优解相同,不是两条优化轨迹相同——PKPO 的梯度带在线组的方差结构,KAPPO 带静态校准的偏差,表 1 的 0.5 分差距证明在 4B/7B、MATH 规模下这个缝隙不致命,规模上去之后没人知道。更扎的一根刺是 @k-GRPO:按 RLVR 惯例不带 KL 惩罚,而全部推导建立在 KL 正则之上,论文自己承认这一实例化是「tests whether KAPPO remains effective beyond the KL-regularized setting assumed by our theory」——没有 KL 锚,最优策略根本不存在,等价命题无从谈起,实验有效是理论的意外收获而非推论。

校准噪声集中在目标客群。附录 K 把问题量化得很清楚(3.5 节),但 M=30 是拍定的,没有按噪声传递公式做预算分配(论文在 Limitations 里自己点名),最难的题带承受着 11 倍的压力摆动。k 拧得越大,g 在零点附近越陡,这个矛盾随 k 放大——而 k 正是这篇论文主推的那个旋钮。

k 只到 4,部署端的故事没讲。实验里 k∈{2,4},而 pass@k 训练真正诱人的场景是大预算部署(best-of-n 的 n 是几十上百)。PKPO 的成本随 k 线性涨,KAPPO 恒定 1 条——论文的框架在大 k 下优势只会更大,但恰恰没做,胜率替代 S_x^q 与原始 max@k 的分别也没实证(Limitations 第二条)。基座选择是双刃剑:SFT-only 检查点排除了历史锐化的干扰,代价是结论对「已经被 RL 训过、锐化已经发生」的现役推理模型不适用——工业界拿到的正是后者。

4.3 对大模型领域的影响

Yue et al. 那场「RLVR 究竟在扩展能力还是在锐化」的争论,在这篇论文里被降维成一个工程参数。争论的两边其实都同意 pass@1 不是全部——分歧在要不要为多样本能力专门造算法。KAPPO 的回答是不用:多样本能力是 @1 优化器加一个系数就能买到的副产品。对做推理服务的团队,这里有一条直接可用的对齐原则:训练目标的 k 应该匹配部署时的采样预算——best-of-16 的服务不该拿 pass@1 训出来的模型硬扛,调一个系数就能把训练和服务在 k 这维对齐,边际成本约等于零。专栏此前在 Residual Advantage 一期里看过 pass@512 端的反例(RA 的宏余量随 K 涨、纯验证器训练收窄),那批证据说明锐化不是铁律而是可以反抗的动力学;KAPPO 把「怎么反抗」从算法设计问题变成了系数查表问题,方向上是同一份进步。

5 实践启示

5.1 可以借鉴的技术

  • 逐题参考统计当成数据集的一等公民。p_ref / F_ref 这张表一次生成、多处消费:@k 系数校准、难度画像、课程排序、评测期的 pass@k 基线估计。任何 RLVR 数据管线都可以先花半天推理时间把训练集的逐题自采样通过率量出来存进元数据——它比人工难度标注便宜且直接对齐模型的真实行为分布,后续无论换什么训练方法都用得上。
  • 饱和目标的导数改写法。手里任何「对成功率做饱和变换」的目标(top-α、加权 pass@k、平滑最大值),都可以试着把它改写成 @1 奖励乘导数系数的形式,把非标准目标消化进标准优化器。这篇论文的式 4–7 是这个改写的完整模板,连边界情形(p*=0/1)和有限样本敏感性分析都附了。
  • 离线校准加在线单样本的算力分配。「贵的信息离线量一次、便宜的更新在线跑」这个结构适用于一大类自适应训练信号:逐题温度、逐题 KL 系数、逐题裁剪宽度。凡是只依赖参考策略(不依赖当前策略)的自适应量,都能照这个模式把在线开销压到零。

5.2 潜在应用场景

  • best-of-n 部署的模型定制:评审系统、代码生成、SQL 生成这类生产上真会采多条取最优的场景,用 @k 系数把训练 k 对齐到 n,不用换优化器、不加 rollout,一次参考校准(≤5% 开销)完成改造。
  • RLVR 数据集的难度分层与课程设计:p_ref 表天然就是按模型视角的难度分层。难度带之间的锐化风险不同——易题带是锐化重灾区(@1 目标下边际收益最高),难题带是校准噪声区——分层之后可以按带配不同的 k 或不同的采样温度,比全局一个 k 更细。
  • DPO 管线的锐化体检:@k-DPO 说明偏好优化同样在锐化、同样能用逐题系数修。跑过 DPO 的团队可以直接复用现有偏好对,把全局 β 换成校准过的 β_eff(x),对照 pass@k_eval 曲线看锐化掉了多少——这是一次成本接近零的实验。

参考文献

  1. Matrenok, S., Menet, N., Flammarion, N., Krause, A. Controlling Sharpening in LLM Post-Training. arXiv:2611.03146, 2026(本文,EPFL 与 ETH Zürich;代码随补充材料发布)。
  2. Yue, Y., et al. Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model? NeurIPS 38, 2025(锐化现象的 pass@k 量化证据,本文的问题起点)。
  3. Walder, C., Karkhanis, D. T. Pass@K Policy Optimization: Solving Harder Reinforcement Learning Problems. NeurIPS 38, 2025(PKPO:专门的多样本 pass@k 优化器,本文的主要对照基线)。
  4. Brantley, K., et al. Accelerating RL for LLM Reasoning with Optimal Advantage Regression. NeurIPS 38, 2025(A*PO:单样本回归式拟合最优策略,@k-A*PO 的宿主优化器)。
  5. Matrenok, S., Moalla, S., Gulcehre, C. Quantile Reward Policy Optimization. NeurIPS 38, 2025(QRPO:一作的先前工作,同一「精确配分函数 + 回归拟合」方法族)。
  6. Song, Y., Kempe, J., Munos, R. Outcome-based Exploration for LLM Reasoning. arXiv:2509.06941, 2025(结果驱动的探索奖励,相关但未做正面对比的路线)。

相关精读