NPO:让"未来的自己"教会"现在的自己",RLVR走出Q/V困局

核心摘要

做过 RLVR 的人对两个画面应该不陌生:训练前 50 步,rollout 组里 8 条全是错的,advantage 全为零,loss 像一潭死水;训了几百步之后,validation 又卡死在某个 plateau 上不动了。NPO 这篇论文给出的方案出奇地朴素——在同一条训练曲线上,往后多跑 \(\Delta\) 步拿到一个稍微强一点的 checkpoint,让"几十步之后的自己"回头来教"现在的自己"。

听起来像 self-distillation 的某种变体,但作者把它拆成一个干净的 \(\mathcal{S}=Q/V\) 框架:信号质量 \(Q\) 和方差代价 \(V\)。外部老师(LUFFY)\(Q\) 高但 \(V\) 爆炸;经验回放 \(V\) 小但 \(Q\) 被早期 checkpoint 锁死;而"近未来的自己"恰好处在 \(\mathcal{S}\) 曲线的甜蜜点上。在 Qwen3-VL-8B-Instruct 上跑 GRPO,平均分从 57.88 涨到 62.84,AutoNPO 进一步推到 63.15。这个 +5.27 的幅度对一个不改 reward、不改 verifier、只换了一条 trajectory 来源的方法来说,已经相当能打。

更关键的是,作者还给了 AutoNPO——一个用 reward stagnation + entropy collapse 自动触发干预、用 \(\hat{Q}/\hat{V}\) 自动选回滚距离的 controller。这套东西不只是个 paper trick,而是能直接挂进生产 RLVR pipeline 的工程组件。


论文信息

  • 标题:Near-Future Policy Optimization
  • 作者:Chuanyu Qin, Chenxu Yang, Qingyi Si, Naibin Gu, Dingyu Yao, Zheng Lin, Peng Fu, Nan Duan, Jiaqi Wang
  • 机构:Institute of Information Engineering, CAS(中科院信工所);School of Cyber Security, UCAS(中国科学院大学网络空间安全学院);JD.COM
  • 发布日期:2026-04-22
  • arXiv2604.20733

图1:NPO 与 AutoNPO 的训练动态与基准对比。左图显示 NPO 早期干预把收敛速度加速约 2.1×,晚期干预突破 GRPO 的 plateau;右图显示 NPO/AutoNPO 在多个推理 benchmark 上稳定优于 GRPO 与最强 baseline。

图1:左图是训练奖励曲线,红色 AutoNPO 一上来就甩开蓝色 GRPO,并在后面的红色阴影区(晚期干预窗口)再次拉开差距;右图是雷达图,NPO/AutoNPO 在 8 个 multimodal 推理 benchmark 上几乎全方位包住 GRPO 和最强 baseline。


问题动机:辅助轨迹的来源,本身就是个 Q-V 难题

我之前在调一个 RLVR 任务的时候,被两个相反的现象同时折磨过:

早期,模型对绝大多数 prompt 都答不对,rollout 组里 8 条 trajectory 全是 reward=0。GRPO 的 advantage 是组内归一化的,全错就意味着 advantage 全为零,gradient 几乎不更新。模型卡在那儿空转,要熬好几百 step 才能出现第一个正确轨迹,整个早期窗口的算力基本是浪费的。

晚期,模型已经把"它能想到的解法"都收敛到了一个固定模式上。pass@1 还在涨,但其实只是 base model 已知解法之间的重新分配,不是真的学到了新东西。训练曲线变平,怎么再加 step、加 batch 都没用——这就是 [33] 里讲的 plateau 现象。

业界对这两个痛点的常见应对,是给 RLVR 加点"外援"——把 on-policy 改成 mixed-policy。但具体怎么"外援",存在两条相反的路线:

路线 代表方法 信号质量 \(Q\) 方差代价 \(V\) 痛点
外部老师 LUFFY、Prefix-RFT、SRFT 高(来自更强的模型) 大(分布差距大) 当前策略学不动
历史回放 RePO、ExGRPO 中(早期 checkpoint 的天花板) 小(同源) 信号上限被锁死
远未来回放 RLEP 高(用完整训练好的模型) 大(参数漂移大) 同样学不动
纯 on-policy GRPO 低(出不了当前策略边界) 0 早期稀疏、晚期触顶

作者把这件事抽象成了一个清楚的 trade-off。对任何一个 off-policy 轨迹源,定义两个量:

  • \(Q(\Delta)\):在当前策略答错的 prompt 里,这个源能产出 verifier 通过的正确轨迹的比例。
  • \(V(\Delta)\):通过 importance sampling 把这个源的轨迹接进 RL 时,引入的梯度方差。

有效学习信号是它们的比值:

\[\mathcal{S}(\Delta) = \frac{Q(\Delta)}{V(\Delta)}\]

一句话讲清这个公式的工程意义:你给的"老师"必须强到能教新东西(高 \(Q\)),又近到学生能学得动(低 \(V\))——两个条件同时满足,这条轨迹才真正有用。

外部老师在 \(Q\) 上天花板很高,但 \(V\) 是爆炸的——LUFFY 在论文实验里甚至在 WeMath 上比 base model 还低,作者一句话点破:"a concrete instance of variance cost overwhelming signal quality."(一个变量成本碾压信号质量的具体案例)。这个判断挺扎心的——把更强的老师拉进来训练听起来很美,但实际效果可能还不如什么都不加。


方法核心:让未来的自己回头教现在的自己

图2:质量-稳定 trade-off 与有效学习信号 S(Δ) 的实证测量。(a) 不同方法在 Q-V 平面的位置:外部老师和远未来源的 dot 高但 disk 大;近未来源把 dot 和 triangle 都送到右上角的高 S 区。(b) 在 Qwen3-VL-8B-Instruct 上的实测:Q 凹增长,V 指数级增长。(c) S(Δ) 在 T=0 和 T=50 两个 anchor 上都呈现明确的 U 型峰,最优 Δ* 大约在 20-70 步。

图2:作者最关键的观察图。中间的子图实测了 \(Q\)\(V\)\(\Delta\) 的演化——\(Q\) 蓝色曲线快速上升然后趋平,\(V\) 红色曲线先平后陡。右边的子图直接画出 \(\mathcal{S}(\Delta)\),从 base policy 出发最优 \(\Delta^* \approx 20\) 步,从 mid-training policy 出发偏移到 \(\Delta^* \approx 70\) 步,确实是一条带明显内点峰值的 U 型(倒 U 型)曲线。

直觉先讲清楚

NPO 的核心 idea 用一句话讲:与其去外面找老师,不如继续多训几十步,把那个稍微强一点的自己当老师。因为这个"近未来的自己"和当前模型共享 initialization、架构、optimization history,参数距离天然小,\(V\) 就小;同时它毕竟多优化了几十步,\(Q\) 比当前策略高、也比任何"等价参数距离"的历史 checkpoint 高。

\(\Delta\)(近未来检查点距离当前的步数)成了一个可以自由调的旋钮。这就是 NPO 相比所有 baseline 最关键的优势——以前的方法要么用固定的"远老师",要么用被动漂移的历史 checkpoint,没有一个旋钮能直接调 \(\mathcal{S}\)

NPO 的核心操作(3.1)

具体怎么做?流程其实非常朴素:

  1. 训到 step \(t\),先继续训 \(\Delta\) 步拿到 \(\pi^{(t+\Delta)}\)
  2. \(\pi^{(t+\Delta)}\) 离线对每个 prompt \(x\) 做一次 rollout,verifier 通过的留下,每个 prompt 保留一条正确轨迹 \(o_x'\) 作为 guidance。
  3. 把模型权重和 dataloader 状态回滚到 step \(t\),重新跑 NPO 段(论文实验大约跨 40 步)。
  4. 在每个训练步,对 prompt \(x\) 先正常 sample \(n=8\) 条 on-policy trajectory,算 pass-rate \(\hat{p}(x)\)
  5. 如果 \(\hat{p}(x) \leq \tau_{\mathrm{gate}}\)(论文设 0.6)且缓存里有 \(o_x'\),就把 group 里的第 \(n\) 条替换成 \(o_x'\);否则保持纯 on-policy。
  6. 剩下的 GRPO 流程一字不改:advantage 是 group-relative 归一化的,objective 是 clip 过的 surrogate loss。

注意第 5 步那个 gate——只有当前策略在这个 prompt 上"挣扎"的时候才注入 guidance,已经会做的就不打扰。这个设计避免了在简单 prompt 上人为引入 off-policy 噪声。

形式化地,replace 后的 group 是:

\[\mathcal{G}_{\mathrm{NPO}}(x) = \{o_1, \ldots, o_{n-1}, \tilde{o}_n\}\]

其中:

\[\tilde{o}_n = \begin{cases} o_x' & \text{if } \hat{p}(x) \leq \tau_{\mathrm{gate}} \text{ and } o_x' \text{ exists} \\ o_n & \text{otherwise} \end{cases}\]

clipped objective 是标准 GRPO 形式:

\[\mathcal{L}_{\mathrm{NPO}}(\theta) = \mathbb{E}\left[\frac{1}{n}\sum_i \frac{1}{|o_i|}\sum_t \min\left(\rho_{i,t}^q A_i,\; \mathrm{clip}(\rho_{i,t}^q, 1-\epsilon, 1+\epsilon) A_i\right)\right]\]

整个修改只动了 group 的一个 slot,loss 形式、reward shape、KL penalty 都没改。这就是论文反复强调的 "plug-and-play and objective-preserving"——它和现有的 GRPO/DAPO 训练栈是兼容的。

两次手动干预:早期 bootstrapping 和晚期 plateau breakthrough

为了证明"近未来引导"在不同训练阶段都能帮到忙,作者跑了两次手动干预:

早期 bootstrapping:在最早期,rollout 组几乎全错,gradient 信号近乎为零。先训一个短的 scout run(论文中是几十 step),用 scout 的最后 checkpoint 当 \(\pi^{(t+\Delta)}\)。然后从 base 重新启动主训练,用 scout 提供 guidance。因为 scout 只比当前策略稍强一点,分布很接近,但已经能解出一些当前 fresh run 暂时解不出的题——刚好补上稀疏 reward 的缺口。结果是约 2.1× 的收敛加速。

晚期 plateau breakthrough:在 plateau 阶段,先继续训过 plateau 拿到一个明显更强的 checkpoint,然后回滚到 plateau 开始的位置,用这个更强的 checkpoint 作为 guide 重新跑一遍那一段。强 guide 在 plateau 模型解不出的 prompt 上能产出正确轨迹,把 on-policy ceiling 直接顶上去。

这两次手动干预其实是在"探针式"地告诉读者:早期和晚期,近未来引导都有用——只是用法不同。

AutoNPO:把"什么时候干预 + 回滚多远"自动化

图3:NPO 和 AutoNPO 的整体架构。右半边是 NPO 机制:近未来 policy π_F 提供 verified guidance trajectory o'_x,在当前 policy π_θ 在 x 上挣扎时替换 rollout group 的一个 slot;左半边是 AutoNPO controller:用 reward stagnation、entropy drop、mistake pool、capability probe、估计的 effective signal S 等在线信号,联合决定何时干预、回滚多远。

图3:右边的 NPO 机制图很直观——粉色的 \(\pi_F\)(near-future policy)produce 一条 \(o_x'\),作为 group 中的一个 slot 替换上去;左边的 AutoNPO 是一个 controller pipeline,把"何时干预"和"回滚多远"两个手动决策自动化。

手动干预好用,但需要人盯着 training curve 找时机、调参数,对长 run 和多任务场景不友好。AutoNPO 把它工程化成了一个轻量 controller:

Mistake pool \(\mathcal{B}\):每个 batch 里 group accuracy 低于阈值的 prompt,连同失败步号 \(t_{\mathrm{fail}}\) 存进来——只存两个 ID,开销可以忽略。这个池子在三个阶段都会用到。

Trigger(什么时候干预):两段式检查。第一段是零成本的 warning——监测 reward 的 EMA 是否停滞、policy entropy 是否在同一时间下降。这两条曲线本来就在 training log 里,是"exploration collapse"的典型 signature。如果 warning 持续了几个 probe interval,就进入 confirmation:用 \(\pi^{(t)}\)\(\mathcal{B}\) 的小子集上 rollout 一次,得到 pass-rate \(\hat{p}\),超过阈值就触发干预,同一次 rollout 的副产物正好是 \(\hat{Q}(\Delta)\)

Rollback distance(回滚多远):直接最大化经验有效信号:

\[\Delta^* = \arg\max_{\Delta \in \mathcal{D}} \frac{\hat{Q}(\Delta)}{\hat{V}(\Delta)}\]

其中 \(\hat{Q}(\Delta) = \mathrm{pass\text{-}rate}(\pi^{(t)}; \mathcal{B}_\Delta)\) 是当前策略在"\(t-\Delta\) 那个段失败过的 prompt"上的 pass-rate;\(\hat{V}(\Delta)\) 是用 \(\pi^{(t)}\)\(\pi^{(t-\Delta)}\) 之间 per-token KL 估计的方差代理(论文 Appendix B 给出指数上界)。

Execution:选定 \(\Delta^*\) 后,把 \(\pi^{(t)}\) 当 guide,只在 \(\mathcal{B}_{\Delta^*}\) 这个失败子集上生成 cache(不是整段所有 prompt 都做,省 cache 成本),然后回滚到 \(t-\Delta^*\) 重新训那一段,期间命中 \(\mathcal{B}_{\Delta^*}\) 的 prompt 走替换流程,其它走纯 on-policy。回到原 step \(t\) 后进一段 cooldown 再 arm。

这套 controller 漂亮的地方在于:所有信号都来自现有 training log,新增的 forward pass 只有一次 confirmation rollout,几乎没有额外开销。


实验结果:NPO 和 AutoNPO 的真实表现

实验设置

  • 底座模型:Qwen3-VL-8B-Instruct(一个多模态推理模型)
  • 训练数据:MMFineReason-123K,是从 1.8M 大集里按难度过滤出来的——每个样本用 Qwen3-VL-4B-Thinking 跑 4 次,全错的才留下。这种过滤很关键,留下的都是模型还没掌握、但有改进空间的题,正好对齐 NPO 设计的目标场景。
  • 评测:8 个 multimodal benchmark:MathVista、MathVision、WeMath、MathVerse、MMMU-Pro、MMBench、MM-Star、ZeroBench(最难的 stress test,目前 frontier model 都做不全对)
  • 配置:lr=\(1\times10^{-6}\),batch=256,每 prompt \(n=8\) rollouts,\(\epsilon_{\text{low}}=0.2\)\(\epsilon_{\text{high}}=0.28\),没有 KL penalty 也没有 entropy 正则;mix_policy_accuracy_threshold=0.6
  • 算力:4 节点 × 8 张 H200 140GB——这个配置不算小

主表:每个 baseline 都被踩在了 Q-V 平面的某个角落

方法 MMMU-Pro MathVista MathVision ZeroBench WeMath MMBench MM-Star MathVerse Avg.
Qwen3-VL-8B-Instruct (Base) 51.75 73.80 47.37 19.76 54.10 89.79 71.83 54.61 57.88
LUFFY (external teacher) 54.23 73.80 54.00 20.51 52.38 89.49 69.47 55.58 58.68
GRPO (pure on-policy) 55.78 76.20 48.82 22.60 56.57 90.29 72.20 59.52 60.25
ExGRPO (historical replay) 55.49 77.30 55.46 19.01 62.67 90.44 72.00 56.89 61.16
RLEP (far-future) 55.38 78.50 54.23 19.61 62.48 90.45 72.27 58.91 61.48
NPO, early-stage only 56.85 76.60 54.31 26.35 62.76 90.41 70.30 59.38 62.12
NPO, early + late-stage 57.07 76.30 54.61 24.85 66.95 90.30 72.20 60.00 62.84
AutoNPO 57.24 79.20 55.72 24.70 66.00 90.63 72.63 59.11 63.15

几个值得停下来看一眼的点:

LUFFY 居然在 WeMath 上掉到了 base 之下(52.38 vs 54.10)——这是论文 Q-V trade-off 论证的最有力证据。一个号称用更强老师的方法,居然把 base 训"歪"了。说实话第一次看到这个数据我有点惊讶——业界很多人对外部蒸馏类方法的预期都是"再差不会差到哪去",结果这里直接负向。换个角度看:你拿一个跨家族的强老师 trace 直接灌进 RLVR,分布差距大到 importance weight 一爆,整体梯度方向就会被带偏。

NPO early-only 在 ZeroBench 上拿到 26.35,比 GRPO 高 3.75 个点,比所有 baseline 高 5+ 个点。这个 benchmark 是专门做来"留在 frontier model 解不出的 long tail"的,正好对应 NPO 早期干预最擅长的场景:稀疏正例。这条数据相当能说明问题——能在难题上拉开差距,比在简单题上多 0.x 个点要值钱得多。

NPO early+late 在 WeMath 上从 56.57 直接拉到 66.95(+10.38)。WeMath 是数学推理深度型 benchmark,正好是晚期 plateau breakthrough 该发力的地方。这个幅度太大了,大到我会想问一句:是不是 plateau 之前的 GRPO 训练不够充分?但从 entropy collapse 的曲线来看(图 4b),GRPO 确实是已经 collapse 了,所以这个突破是 NPO 真的"撬"出了被压制的能力。

AutoNPO 拿了 5/8 个 best,比手动 early+late 还多一点,平均 +0.31。这个数听起来不大,但意味着自动化 controller 没有打折扣,人手能调出来的 sweet spot,机器也能找到。

训练动态:entropy 的故事比 reward 更关键

图4:(Auto)NPO 与 vanilla GRPO 的训练动态对比。红色阴影区是 AutoNPO 的干预窗口。(a) Training reward:AutoNPO 全程压制 GRPO,每个干预窗口后差距阶梯式拉大。(b) Generation entropy:GRPO 的 entropy 持续 collapse,AutoNPO 的干预反而把探索性"重新打开",维持了显著更高的 entropy。(c) IS-correction 消融:在晚期干预上,带不带 exact IS correction 的两个 NPO 变种都明显高于 GRPO,且彼此几乎重合,说明 IS correction 对 NPO 是冗余的。

图4:三个 panel 讲了一个连贯的故事——AutoNPO 不是"一直猛踩油门",而是"在关键时刻精准踩"。看 (b) 这张 entropy 图最有意思:GRPO 的紫色曲线一路稳定下滑(典型的 exploration collapse signature),而 AutoNPO 的红色曲线在每次干预之后都会重新"鼓起",相当于把模型的探索性救回来一段。

这张 entropy 图其实是整篇论文最有信息量的图,比主表更能说明 NPO 在做什么。RLVR 训到后期会陷入一个怪圈——pass@1 还在涨,但 generation entropy 在塌——意思是模型把 rollout 集中到很窄的几条解题模板上,pass@1 只是在这几条模板里"内卷"。

NPO 的干预之所以能打破 plateau,就是因为它把"未来自己"的不同解题路径塞回当前 rollout 组,相当于强行扩张了探索空间。entropy 重新升起来之后,policy 才有机会探到原本被压制的解法。

我之前在做 reasoning RLVR 的时候也观察到类似现象——entropy collapse 一发生,再加 step 几乎没用,必须用某种方式重新注入多样性。一些做法是直接加 entropy regularization,但那会拖累 reward;另一些做法是加噪 prompt 或换数据集。NPO 这种"用更强自己的解法做扰动"明显更聪明——既扩张了探索,扰动来源还自带"已 verified 正确"的高质量保证。

IS correction 的消融:原来可以省掉

第三个 panel (c) 是个挺重要的工程细节。NPO 既然引入了 off-policy trajectory,按理论应该做 importance sampling correction(保留 \(\rho^q = \pi_\theta / \pi_{\mathrm{off-policy}}\) 的精确比值)。但论文做了个消融——发现带不带 exact IS correction,两条曲线几乎重合,都明显高于 GRPO。

于是可以直接把 guide 的 per-token log-prob 计算省掉,省内存、省 forward。但作者特意强调这个简化只对 NPO 安全:换成 LUFFY 这种远 guide,去掉 IS 直接训崩——因为分布差距大,\(\rho^q\) 偏离 1 太多,没有 clipping 兜不住。

这是个被 NPO 的 "near-policy" 性质保护出来的工程红利——guide 离当前策略足够近的时候,IS correction 本来就不重要。


我的判断:这是一篇值得细读的"框架补完"

亮点

第一,把"自己教自己"的直觉做实了。 ReST、STaR 这些 self-taught 方法很早就在用模型自己的成功 generation 当 SFT 数据,但没人把"未来自己"作为一个可调的 trade-off 参数来研究。NPO 的 \(\Delta\) 就是这个旋钮,理论上有 \(\mathcal{S}(\Delta)\) 的内点最优,实证上 figure 2(c) 证明了 U 型存在,工程上 AutoNPO 自动找峰。整套思路从理论到工程闭环了。

第二,AutoNPO 的工程性比 NPO 本身更值钱。 手动干预这种 trick 看起来很学术——找个机会注入一段,做实验吹一下。AutoNPO 把它产品化了:mistake pool + warning/confirmation 两段触发 + \(\hat{Q}/\hat{V}\)\(\Delta^*\),所有信号都从已有 log 里出,几乎不增加额外训练成本。这种 controller 是真能挂到生产 RLVR pipeline 里的。

第三,对 entropy collapse 给了一个新角度的解释和应对。 RLVR 触顶很大程度是 entropy collapse 导致的,过去主流方案是加 entropy regularization 或调高温度。NPO 用"未来自己的不同解法"作为多样性源,质量和多样性同时给了——这个思路对工业 RL 训练很有借鉴意义。

我有疑虑的地方

第一,cost 的真实开销其实不小。 论文反复强调 NPO segment 是 40 步,cache 一次复用,开销不大。但你想想:要做一次干预,得先继续训 \(\Delta\) 步、做一遍离线 rollout、再回滚 \(\Delta\) 步重训。也就是说同一段被训了两遍。AutoNPO 在长训练里可能要触发多次,整体训练成本是 vanilla GRPO 的 1.5-2×。论文的对比其实是同样训练步数下的 final score,没有报"达到同样性能需要多少 wallclock time"这个更公平的指标。

第二,"近未来"的 \(\Delta\) 范围其实需要预先存好 checkpoint。 AutoNPO 选 \(\Delta^*\) 是在 \(\mathcal{D}\)(保存的 checkpoint 集合)里挑的。如果 checkpoint 间隔太稀,可调空间会很小;间隔太密,存储成本上来了。论文没详细讨论 checkpoint 保存策略对 AutoNPO 的影响,工程落地时这是个绕不开的细节。

第三,benchmark 选择有点偏巧。 WeMath 上 +10 个点的提升,主要来自 plateau 之后的 late-stage 干预——意味着 GRPO 在 WeMath 上其实是被 entropy collapse 卡住了,而不是真的能力到顶。如果 baseline 是配了 entropy regularization 或者 DAPO 那种带 dynamic clipping 的更强 GRPO 变种,差距还会不会有这么大?论文没回答这个问题。说实话我觉得 NPO 在跟 vanilla GRPO 比的时候确实漂亮,但跟 SAPO、GSPO 这些更新一些的 on-policy 优化对照,可能没这么戏剧。

第四,多模态场景的特异性。 整篇论文都在 Qwen3-VL-8B 多模态推理上验证,没有纯文本数学/代码的实验。多模态 RLVR 本身就有更高的方差和更稀疏的正例,NPO 的"近未来引导"在这种场景下天然更有用武之地。在纯文本数学(比如 GSM8K、MATH)上能不能复现这个 +5 个点的幅度,是个值得跟进的问题。

跟同期工作的位置

NPO 和最近几个方向有微妙的关系:

  • on-policy distillation([1] Agarwal et al.、[10] Hübotter et al.)的核心区别在于操作粒度。on-policy distillation 在 token 级别给软目标分布,NPO 在 sequence 级别替换整条 trajectory。两条路线在最近半年都在升温,conclusion 里作者也明确说后续会探索把 NPO 思路嫁接到 on-policy distillation 上。
  • ExGRPO/RePO 的回放思路相比,NPO 不是回放历史,而是"主动用未来自己重新生成"针对当前 prompt 的 guidance。这个差别其实挺大——历史 trajectory 是被锁死的,未来自己的 trajectory 是 freshly generated 针对当前 prompt 的,prompt-aligned 性大幅提升。
  • RLEP 的"far-future"对比正好说明 \(\Delta\) 不是越大越好。RLEP 用 fully-trained model 当 seed,NPO 用近未来 checkpoint,论文实验里 NPO 全面压过 RLEP,是 \(\mathcal{S}(\Delta)\) 内点最优的直接证据。

作者还在 conclusion 里把这篇定位成一个三部曲的第二篇:第一篇研究 "informed self"(带 privileged context 的自己),这一篇是 "temporal self"(未来的自己),下一篇要做 "parallel self"(并行的自己)。这个研究 program 蛮有野心,把 self-taught RLVR 系统化成一个三轴框架——值得持续关注。


工程启发

如果你也在做 RLVR/GRPO 训练,这套思路可以马上试:

最低成本的尝试:在你现有的 GRPO 流程里,每隔一段时间存一个 checkpoint,然后在感觉训练快要 plateau 的时候,手动跑一次"未来 checkpoint 当 guide"的实验——只需要一次 offline rollout + 替换 group 中的一个 slot。改动不超过 100 行代码。这就是手动 NPO,论文证明了即使是手动版也能拿不少收益。

进一步:把 entropy 和 reward 的 EMA 监测加到训练 logger 里——这两个曲线本来就该有,加一个简单的 stagnation detector,就能复现 AutoNPO 的 warning 阶段。

真正的产品化:把 mistake pool 和 \(\hat{Q}/\hat{V}\) 估计器搭起来,就是完整的 AutoNPO controller。

最关键的一个启发:当你的 RLVR 训练触顶的时候,先别急着加数据、加算力——先看看 entropy 是不是塌了。如果是 entropy 塌了,那真正的解法不是更多 rollout,而是更聪明的 rollout 多样性来源。NPO 给了一个高质量、近分布的多样性源——这个 idea 比方法本身更值得记住。


参考文献


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我