深度!从两策略到三策略:行为策略和参考策略不一致下的 TRPO 扩展

TRPO与PPO算法实战对比:哪个更适合你的强化学习项目? 本文深入对比了TRPO与PPO两种强化学习算法的核心原理、实现细节和适用场景。TRPO通过信任区域机制确保策略更新的安全性,但实现复杂;PPO则通过简化优化策略在保持性能的同时降低实现难度。根据项目需求,TRPO适合安全关键型应用,而PPO更适用于快速原型开发和资源有限的项目。 阅读详情

作者:东水长(已授权)

https://zhuanlan.zhihu.com/p/1973206684907365344

训推不一致和异步框架

最近看到不少关于大模型强化学习中“训推不一致”和“异步训推框架”的讨论,我自己的直觉是:这些看上去复杂多样的问题,很大一部分其实都围绕着一个更基础的矛盾——行为策略(behavior policy)和参考策略(reference policy)不一致。

本文先简单梳理一下我目前看到的相关工作,然后再尝试从“行为策略 vs 参考策略”的角度,把它们串到同一条线上,为读者提供一个补充视角。

在本文中我会用:

  • 行为策略 μ \mu μ:实际负责生成 rollout 的策略,也就是“你在什么分布下采样到了这些数据”。在现代 LLM-RL 系统里,它对应的是推理引擎里的那套实现(vLLM / SGLang 等),在异步框架下往往还是多个 worker 策略的混合分布。
  • 参考策略 π θ old \pi_{\theta_{\text{old}}} πθold​​:训练目标里拿来做重要性采样、clipping 或 KL 约束的策略,典型地就是 PPO / GRPO 里的“旧策略”(old policy)。
  • 目标策略 π θ \pi_\theta πθ​:训练目标里要优化的策略,也就是“你想让模型变成什么样”。典型地就是 PPO / GRPO 里的“新策略”(new policy)。

在最经典、理想化的设定里,我们通常默认 μ = π θ old \mu = \pi_{\theta_{\text{old}}} μ=πθold​​。但在现实系统中,受异步更新、不同推理 / 训练后端、MoE 路由波动甚至硬件数值差异等因素影响,二者往往会出现不同程度的偏离。

相关工作

下面按时间线简单列一下我印象比较深的一些工作(只代表我个人看到的片面子集):

1、Decoupled PPO 率先指出,在信赖域策略优化(TRPO 和 PPO)方法中,“旧策略”(old policy)实际承担了两个不同的角色:

  • 一是用于重要性采样进行异策略修正,在这个目的下,“旧策略”用于代表训练数据集所服从的行为策略(behavior policy);
  • 二是用于限制新策略的更新幅度,在这个目的下,“旧策略”被用于衡量新旧策略的变化程度,称作近端策略(proximal policy,对应本文中的“参考策略”)。

文章指出这两个目的下的“旧策略”可以是不同的策略,从而提出了 Decoupled PPO 更新目标,把“采样用谁”和“对谁做 trust region”在形式上解耦开来。

2、AReaL 关注到了异步训练框架下行为策略与参考策略不一致的问题:rollout 往往由滞后的参数版本或不同 worker 产生。文章在异步框架下采用了 Decoupled PPO 风格的目标,将“行为策略分布”和“参考策略”显式区分开来,从而在异步场景下仍然维持类似 PPO 的优化性质。

3、GSPO 从 GRPO 在长序列和 MoE 模型上的稳定性问题出发,指出 token-level 的 PPO / GRPO 在专家路由高度波动(尤其是新旧策略之间的路由差异)时,会引入巨大的方差与不稳定。

实录精选|通义千问研究员郑楚杰博士:GSPO算法解析与问答

GSPO 提出在 sequence-level 定义 PPO-style 目标与比率约束,用整条序列的比率来约束更新,从而在 MoE 场景下显著缓解由路由不一致带来的训练崩溃问题。

4、 Your Efficient RL Framework Secretly Brings You Off-Policy RL Training 关注到了现有的一些大模型强化学习训练框架(如 VeRL)中,推理框架和训练框架在不少相同的功能模块上有不同的实现(例如 vLLM 和 FSDP / Megatron 等算子上的差异),导致行为策略 μ \mu μ 与参考策略 π θ old \pi_{\theta_{\text{old}}} πθold​​ 不一致。这种不一致使得原本假定为同策略(on-policy)的训练,实际上变成了带有明显偏差的异策略(off-policy)训练。

文章总结了两种处理这一问题的现有方法:PPO-IS 与 vanilla-IS,并提出在 token-level 做截断重要性采样(truncated IS, TIS),以减少训推不一致程度较重的样本在训练中的影响。作者还写了两篇更为基础的分析文章,从原理上分析训推不一致问题:Part I 和 Part II。

5、 Defeating Nondeterminism in LLM Inference 指出,批处理大小不变性(batch-size invariance)的缺失是大模型推理框架随机性的核心来源之一:同一个输入在不同的 batch 组合和 kernel 路径下,得到的概率分布会发生可观差异。

这意味着,即便“名义上”是同一套参数,真实运行时的行为策略 μ \mu μ 也会因为系统负载和调度差异而波动,从而进一步加剧训推不一致。

6、 Small Leak Can Sink a Great Ship—Boost RL Training on MoE with 𝑰𝒄𝒆𝑷𝒐𝒑! 观察到,上述训推不一致问题在 MoE 模型上会进一步加剧:路由本身就对微小扰动高度敏感,再叠加推理 / 训练实现差异和异步采样,很容易放大偏差。

文章提出 IcePop 方法:在 token-level 通过计算重要性采样比率,对过于大或者过于小的比率进行双侧掩码(masking),将这些“噪声较大”的数据从梯度中丢弃,从而稳定 MoE 上的 RL 训练。

7、 When Speed Kills Stability: Demystifying RL Collapse from the Training-Inference Mismatch 系统性分析了训推不一致的各种成因,包括智能体工作流中引入的大量分布外和低概率信息、硬件和内核 / kernel 实现带来的计算不确定性,并分析了在 token-level 进行重要性采样如何在长序列上引入严重的偏差。

文章进一步提出在 sequence-level 计算重要性采样掩码(sequence-level masked IS, sequence-level MIS):只丢弃那些整条序列的重要性采样比率过大的数据,从而在控制偏差的同时,显著抑制由极端样本导致的训练崩溃。文中给出了较为完整的理论推导和丰富的实验支撑。

8、 Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers 聚焦于 MoE 架构下特有的 路由不一致(Routing Inconsistency) 问题。文章发现,推理端和训练端即便在输入完全相同的情况下,由于算子实现或并行的微小差异,Router 选中的专家往往不同。这种“物理路径”上的不一致,使得行为策略 μ \mu μ 和参考策略 π θ old \pi_{\theta_{\text{old}}} πθold​​ 之间的差异远超预期,极易导致训练崩溃。

文章提出了 Rollout Routing Replay (R3):在推理阶段记录下每个 token 实际命中的专家索引,并在训练阶段强制回放这些路由决策,不再重新进行计算。通过这种方式,R3 在 MoE 拓扑结构上强制对齐了训推两端的计算路径。

9、 RL 老训崩?训推差异是基石 则更多从实践角度出发,分享了如何在实现上尽可能靠近“训推一致”的经验,包括如何选用一致的算子和精度配置、如何监控与约束训练端和推理端 log-prob 的偏差等,更着力于从训推框架层面入手,在工程上尽量从根本缓解训推差异问题。

10、 verl Rollout Importance Sampling 在其 rollout correction 模块中引入了 Token Veto(一票否决)机制:在 token-level 计算重要性比率 ρ t ( ref ← beh ) \rho_t^{(\text{ref}\leftarrow\text{beh})} ρt(ref←beh)​,若轨迹中存在任意 token 使得 min ⁡ t ρ t < τ veto \min_t \rho_t < \tau_{\text{veto}} mint​ρt​<τveto​,则将整条序列从训练中剔除。这种"token 粒度检测、sequence 粒度否决"的设计体现了一种"一票否决"的保守策略。

11、 INTELLECT-3 Technical Report 在其异步分布式 RL 训练框架中采用了类似的拒绝采样策略。INTELLECT-3 对每条 rollout 计算 token-level 重要性比率,若任意 token 的比率低于阈值(文中使用 1 0 − 5 10^{-5} 10−5),则对整条轨迹进行 masking。

三策略 TRPO 视角下的最小统一理解

上面列的这些工作,看上去各自解决的是:

  • 算法层:PPO / GRPO 的目标怎么写,token-level 还是 sequence-level,用 clip 还是 mask;
  • 系统层:推理框架和训练框架怎样对齐;
  • 模型层:MoE 模型路由问题如何放大训练不稳定,等等。

但如果我们把“行为策略 vs 参考策略”这条线拉直,会发现相当一部分问题,其实都可以放到一个相对简单的理论框架里理解:三策略 TRPO。

下面这节我会用尽量简单的数学,把这个三策略版 TRPO 摊开——它可以被看作是“TRPO + 三角不等式”的一个小扩展,但在分析大模型 RL 里的训推不一致时非常好用:

  • 一方面让我们重新理解“训推不一致”和“异步训练框架”到底在影响什么;
  • 另一方面,也帮我们统一理解 TIS、IcePop、sequence-level MIS 等,在本文的视角下,它们其实都是在实施下文的“约束 2”。

三个策略

沿用前文的记号,我们在一个折扣 MDP 上工作,折扣因子为 γ ∈ ( 0 , 1 ) \gamma\in(0,1) γ∈(0,1):

  • 状态 s ∈ S s\in\mathcal{S} s∈S,动作 a ∈ A a\in\mathcal{A} a∈A;
  • 策略 π ( a ∣ s ) \pi(a\mid s) π(a∣s);
  • 折扣状态分布:
    d π ( s ) : = ( 1 − γ ) ∑ t = 0 ∞ γ t Pr ⁡ π ( s t = s ) 。 d_\pi(s) := (1-\gamma)\sum_{t=0}^\infty \gamma^t \Pr_\pi(s_t = s)。 dπ​(s):=(1−γ)t=0∑∞​γtπPr​(st​=s)。
  • 回报(episode 视角):
    J ( π ) : = E π [ ∑ t = 0 ∞ γ t r t ] 。 \mathcal{J}(\pi) := \mathbb{E}_\pi\Big[\sum_{t=0}^\infty \gamma^t r_t\Big]。 J(π):=Eπ​[t=0∑∞​γtrt​]。
  • 值函数 / 优势函数:
    V π ( s ) , Q π ( s , a ) , A π ( s , a ) : = Q π ( s , a ) − V π ( s ) 。 V_\pi(s),\quad Q_\pi(s,a),\quad A_\pi(s,a) := Q_\pi(s,a) - V_\pi(s)。 Vπ​(s),Qπ​(s,a),Aπ​(s,a):=Qπ​(s,a)−Vπ​(s)。

稍微赘述一下,在“三策略”设定里,我们有:

  • 行为策略(behavior policy): μ \mu μ,真正用来 rollout 的策略;数据 ( s , a , r , …   ) (s,a,r,\dots) (s,a,r,…) 都是从它来的。
  • 参考策略(reference policy): π θ old \pi_{\theta_{\text{old}}} πθold​​,优化目标里拿来做 ratio、clip 或 KL 约束的那一份“旧策略”。
  • 目标策略(target policy): π θ \pi_\theta πθ​,我们这一步想要优化的策略。

在理想设定里我们默认 μ = π θ old \mu = \pi_{\theta_{\text{old}}} μ=πθold​​;现实系统里二者往往不等,这就是“训推不一致”的数学影子。

两策略 TRPO

熟悉 TRPO 的读者可以直接跳到后面的“三策略 TRPO”小节。

TRPO 的所有理论保证,都是建立在某个“基准策略”的优势函数之上的。既然实际能算清楚的只有 A μ A_\mu Aμ​(数据是按 μ \mu μ 采的),那我们就直接把 μ \mu μ 当成基准。

一个经典的结论是 性能差分引理(Performance Difference Lemma):

对任意两策略 μ \mu μ 和 π θ \pi_\theta πθ​,有

J ( π θ ) − J ( μ ) = 1 1 − γ    E s ∼ d π θ ,   a ∼ π θ [ A μ ( s , a ) ] 。 \mathcal{J}(\pi_\theta) - \mathcal{J}(\mu) = \frac{1}{1-\gamma}\; \mathbb{E}_{s\sim d_{\pi_\theta},\, a\sim\pi_\theta}[A_\mu(s,a)]。 J(πθ​)−J(μ)=1−γ1​Es∼dπθ​​,a∼πθ​​[Aμ​(s,a)]。

直觉非常简单:

  • A μ ( s , a ) A_\mu(s,a) Aμ​(s,a) 就是在说“如果在 s s s 里本来按 μ \mu μ 行动,现在换成动作 a a a,长期回报会多或少多少”;
  • 把所有时刻、所有状态、所有动作的“增益”累积起来,就得到新策略比行为策略总共赚了多少。

TRPO 的问题在于,我们没法准确算

E s ∼ d π θ , a ∼ π θ [ A μ ( s , a ) ] , \mathbb{E}_{s\sim d_{\pi_\theta}, a\sim\pi_\theta}[A_\mu(s,a)], Es∼dπθ​​,a∼πθ​​[Aμ​(s,a)],

因为 d π θ d_{\pi_\theta} dπθ​​ 是“新策略”的状态分布,我们没有在它下面采样过。

于是 TRPO 引入了一个替代目标:把状态分布换成行为策略的:

L μ ( π θ ) : = J ( μ ) + 1 1 − γ E s ∼ d μ ,   a ∼ π θ [ A μ ( s , a ) ] 。 L_\mu(\pi_\theta) := \mathcal{J}(\mu) + \frac{1}{1-\gamma}\mathbb{E}_{s\sim d_\mu,\,a\sim \pi_\theta}[A_\mu(s,a)]。 Lμ​(πθ​):=J(μ)+1−γ1​Es∼dμ​,a∼πθ​​[Aμ​(s,a)]。

L μ L_\mu Lμ​ 的直觉解释是:在行为策略的状态分布下,让新策略试着去选动作,看优势有多大。

从性能差分引理出发,两者之差是:

J ( π θ ) − L μ ( π θ ) = 1 1 − γ    ∑ s ( d π θ ( s ) − d μ ( s ) )   E a ∼ π θ ( ⋅ ∣ s ) [ A μ ( s , a ) ] 。 \mathcal{J}(\pi_\theta) - L_\mu(\pi_\theta) = \frac{1}{1-\gamma}\; \sum_s \big(d_{\pi_\theta}(s) - d_\mu(s)\big) \,\mathbb{E}_{a\sim\pi_\theta(\cdot\mid s)}[A_\mu(s,a)]。 J(πθ​)−Lμ​(πθ​)=1−γ1​s∑​(dπθ​​(s)−dμ​(s))Ea∼πθ​(⋅∣s)​[Aμ​(s,a)]。

如果我们定义

ϵ μ : = max ⁡ s , a ∣ A μ ( s , a ) ∣ , \epsilon_\mu := \max_{s,a} |A_\mu(s,a)|, ϵμ​:=s,amax​∣Aμ​(s,a)∣,

那么有一个直接的上界:

Lemma 1

∣ J ( π θ ) − L μ ( π θ ) ∣ ≤ ϵ μ 1 − γ    ∥ d π θ − d μ ∥ 1 。 |\mathcal{J}(\pi_\theta) - L_\mu(\pi_\theta)| \le \frac{\epsilon_\mu}{1-\gamma}\; \|d_{\pi_\theta} - d_\mu\|_1。 ∣J(πθ​)−Lμ​(πθ​)∣≤1−γϵμ​​∥dπθ​​−dμ​∥1​。

这里出现了第一个关键量:

状态分布偏移 ∥ d π θ − d μ ∥ 1 \|d_{\pi_\theta} - d_\mu\|_1 ∥dπθ​​−dμ​∥1​,也就是“新策略和行为策略看到的世界,到底差了多少”。

我们通常不会直接对 ∥ d π θ − d μ ∥ 1 \|d_{\pi_\theta} - d_\mu\|_1 ∥dπθ​​−dμ​∥1​ 施加约束,反而是对“每一步 action 分布”的差异施加约束,比如 trust region、KL、clip 等。

记总变差距离(total variation):

D T V ( p , q ) : = 1 2 ∥ p − q ∥ 1 。 D_{\mathrm{TV}}(p,q) := \frac{1}{2}\|p-q\|_1。 DTV​(p,q):=21​∥p−q∥1​。

假设存在常数 β \beta β,使得

对所有 s s s,行为策略和目标策略之间的 TV 被 β \beta β 上界:

D T V ( μ ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) ≤ β 。 D_{\mathrm{TV}}\big(\mu(\cdot\mid s), \pi_\theta(\cdot\mid s)\big) \le \beta。 DTV​(μ(⋅∣s),πθ​(⋅∣s))≤β。

直观含义:在任意状态里,“新策略”和“生成数据的策略”选动作的分布都不会离太远。

一个经典结果(可以用 coupling 证明)是:

Lemma 2
在上述条件下有

∥ d π θ − d μ ∥ 1 ≤ 2 γ 1 − γ   β 。 \|d_{\pi_\theta} - d_\mu\|_1 \le \frac{2\gamma}{1-\gamma}\,\beta。 ∥dπθ​​−dμ​∥1​≤1−γ2γ​β。

把它和 Lemma 1 结合:

∣ J ( π θ ) − L μ ( π θ ) ∣ ≤ ϵ μ 1 − γ    2 γ 1 − γ   β = 2 ϵ μ γ ( 1 − γ ) 2   β 。 |\mathcal{J}(\pi_\theta) - L_\mu(\pi_\theta)| \le \frac{\epsilon_\mu}{1-\gamma}\; \frac{2\gamma}{1-\gamma}\,\beta = \frac{2\epsilon_\mu\gamma}{(1-\gamma)^2}\,\beta。 ∣J(πθ​)−Lμ​(πθ​)∣≤1−γϵμ​​1−γ2γ​β=(1−γ)22ϵμ​γ​β。

于是我们得到一个形式上相当简洁的两策略 TRPO 下界(基准为行为策略):

Theorem 1(两策略 TRPO)

J ( π θ )    ≥    L μ ( π θ )    −    2 ϵ μ γ ( 1 − γ ) 2   β 。 \mathcal{J}(\pi_\theta) \;\ge\; L_\mu(\pi_\theta) \;-\; \frac{2\epsilon_\mu\gamma}{(1-\gamma)^2}\,\beta。 J(πθ​)≥Lμ​(πθ​)−(1−γ)22ϵμ​γ​β。

这说明:

  • 真正决定“替代目标 L μ L_\mu Lμ​ 靠不靠谱”的,是行为策略 μ \mu μ 和目标策略 π θ \pi_\theta πθ​ 的差异:

β = max ⁡ s D T V ( μ ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) 。 \beta = \max_s D_{\mathrm{TV}}\big(\mu(\cdot\mid s), \pi_\theta(\cdot\mid s)\big)。 β=smax​DTV​(μ(⋅∣s),πθ​(⋅∣s))。

如果你能直接约束住这个 β \beta β,就能直接把 TRPO 的单调性保证搬到行为策略视角下。

三策略 TRPO

现实问题在于:大模型强化学习训练里我们可能无法直接控制 β \beta β 本身。

在大部分 PPO / GRPO / GSPO / 现有 RLHF 框架里,实际发生的是:

  • rollout 数据是由某个行为策略 μ \mu μ 产生的(推理引擎里的“那一版参数” + 若干系统细节);
  • 更新时,我们希望利用参考策略 π θ old \pi_{\theta_{\text{old}}} πθold​​ 来限制目标策略 π θ \pi_\theta πθ​ 的更新幅度。

也就是说,实际可以“动手”的是两个量:

  1. 参考 vs 目标:我们可以通过 KL / clip 等手段控制

D T V ( π θ old ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) 。 D_{\mathrm{TV}}\big(\pi_{\theta_{\text{old}}}(\cdot\mid s),\pi_\theta(\cdot\mid s)\big)。 DTV​(πθold​​(⋅∣s),πθ​(⋅∣s))。

  1. 行为 vs 参考:我们希望间接控制

D T V ( μ ( ⋅ ∣ s ) , π θ old ( ⋅ ∣ s ) ) 。 D_{\mathrm{TV}}\big(\mu(\cdot\mid s),\pi_{\theta_{\text{old}}}(\cdot\mid s)\big)。 DTV​(μ(⋅∣s),πθold​​(⋅∣s))。

于是自然就定义两个“proxy 差异”:

  • 约束 1:参考 vs 目标

α 0 : = max ⁡ s D T V ( π θ old ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) ; \alpha_0 := \max_s D_{\mathrm{TV}}\big(\pi_{\theta_{\text{old}}}(\cdot\mid s), \pi_\theta(\cdot\mid s)\big); α0​:=smax​DTV​(πθold​​(⋅∣s),πθ​(⋅∣s));

  • 约束 2:行为 vs 参考

α 1 : = max ⁡ s D T V ( μ ( ⋅ ∣ s ) , π θ old ( ⋅ ∣ s ) ) 。 \alpha_1 := \max_s D_{\mathrm{TV}}\big(\mu(\cdot\mid s), \pi_{\theta_{\text{old}}}(\cdot\mid s)\big)。 α1​:=smax​DTV​(μ(⋅∣s),πθold​​(⋅∣s))。

直觉上:

  • α 0 \alpha_0 α0​:新策略到底离“你宣称的那份旧策略”有多远——这就是 trust region 控制的那部分;
  • α 1 \alpha_1 α1​:你用来训练的参考策略,到底跟真实采样时的行为策略差了多少——这就是训推不一致或异步的影子。

现在,可以把这两个量塞回 TRPO 的下界里。

对任意状态 s s s,有

D T V ( μ ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) ≤ D T V ( μ ( ⋅ ∣ s ) , π θ old ( ⋅ ∣ s ) ) + D T V ( π θ old ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) 。 \begin{aligned} D_{\mathrm{TV}}\big(\mu(\cdot\mid s),\pi_\theta(\cdot\mid s)\big) &\le D_{\mathrm{TV}}\big(\mu(\cdot\mid s),\pi_{\theta_{\text{old}}}(\cdot\mid s)\big) \\ &\quad + D_{\mathrm{TV}}\big(\pi_{\theta_{\text{old}}}(\cdot\mid s),\pi_\theta(\cdot\mid s)\big)。 \end{aligned} DTV​(μ(⋅∣s),πθ​(⋅∣s))​≤DTV​(μ(⋅∣s),πθold​​(⋅∣s))+DTV​(πθold​​(⋅∣s),πθ​(⋅∣s))。​

对 s s s 取上确界:

β : = max ⁡ s D T V ( μ ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) )    ≤    α 1 + α 0 。 \beta := \max_s D_{\mathrm{TV}}\big(\mu(\cdot\mid s),\pi_\theta(\cdot\mid s)\big) \;\le\; \alpha_1 + \alpha_0。 β:=smax​DTV​(μ(⋅∣s),πθ​(⋅∣s))≤α1​+α0​。

把这个不等式塞回两策略 TRPO 的结论(Theorem 1)里,记

C : = 2 ϵ μ γ ( 1 − γ ) 2 , C := \frac{2\epsilon_\mu\gamma}{(1-\gamma)^2}, C:=(1−γ)22ϵμ​γ​,

即得到:

J ( π θ )    ≥    L μ ( π θ )    −    C   β    ≥    L μ ( π θ )    −    C   ( α 0 + α 1 ) 。 \mathcal{J}(\pi_\theta) \;\ge\; L_\mu(\pi_\theta) \;-\; C\,\beta \;\ge\; L_\mu(\pi_\theta) \;-\; C\,(\alpha_0 + \alpha_1)。 J(πθ​)≥Lμ​(πθ​)−Cβ≥Lμ​(πθ​)−C(α0​+α1​)。

于是,我们得到一个非常直接的三策略 TRPO 下界:

Theorem 2(三策略 TRPO)
记

ϵ μ : = max ⁡ s , a ∣ A μ ( s , a ) ∣ , C : = 2 ϵ μ γ ( 1 − γ ) 2 , \epsilon_\mu := \max_{s,a} |A_\mu(s,a)|,\quad C := \frac{2\epsilon_\mu\gamma}{(1-\gamma)^2}, ϵμ​:=s,amax​∣Aμ​(s,a)∣,C:=(1−γ)22ϵμ​γ​,

以及

α 0 : = max ⁡ s D T V ( π θ old ( ⋅ ∣ s ) , π θ ( ⋅ ∣ s ) ) , α 1 : = max ⁡ s D T V ( μ ( ⋅ ∣ s ) , π θ old ( ⋅ ∣ s ) ) 。 \alpha_0 := \max_s D_{\mathrm{TV}}\big(\pi_{\theta_{\text{old}}}(\cdot\mid s), \pi_\theta(\cdot\mid s)\big), \quad \alpha_1 := \max_s D_{\mathrm{TV}}\big(\mu(\cdot\mid s), \pi_{\theta_{\text{old}}}(\cdot\mid s)\big)。 α0​:=smax​DTV​(πθold​​(⋅∣s),πθ​(⋅∣s)),α1​:=smax​DTV​(μ(⋅∣s),πθold​​(⋅∣s))。

则对任意目标策略 π θ \pi_\theta πθ​ 有

J ( π θ )    ≥    L μ ( π θ )    −    C   ( α 0 + α 1 ) \boxed{ \mathcal{J}(\pi_\theta) \;\ge\; L_\mu(\pi_\theta) \;-\; C\,(\alpha_0 + \alpha_1) } J(πθ​)≥Lμ​(πθ​)−C(α0​+α1​)​

其中

L μ ( π θ ) : = J ( μ ) + 1 1 − γ E s ∼ d μ , a ∼ π θ [ A μ ( s , a ) ] 。 L_\mu(\pi_\theta) := \mathcal{J}(\mu) + \frac{1}{1-\gamma} \mathbb{E}_{s\sim d_\mu,a\sim\pi_\theta}[A_\mu(s,a)]。 Lμ​(πθ​):=J(μ)+1−γ1​Es∼dμ​,a∼πθ​​[Aμ​(s,a)]。

这个结论的含义其实很直接:

  • 替代目标 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​) 与真实性能 J ( π θ ) \mathcal{J}(\pi_\theta) J(πθ​) 之间的 gap,可以拆成两部分:
    • 参考 vs 目标的偏移 α 0 \alpha_0 α0​;
    • 行为 vs 参考的偏移 α 1 \alpha_1 α1​。

只要这两个量都小,优化 L μ L_\mu Lμ​ 就有希望有效提升 J \mathcal{J} J。

这两个差异各自怎么约束?

现在,我们可以从 Theorem 2 回头看各种实际方法:

  • 绝大多数 “PPO / GRPO / GSPO” 类工作,其实是在控制 约束 1: α 0 \alpha_0 α0​;
  • 绝大多数 “TIS / IcePop / MIS” 类工作,在本文的统一视角下,可以理解为主要是在控制 约束 2: α 1 \alpha_1 α1​。

本文下面只讨论 约束 2。

约束 2 的目标是:保证用来训练的数据,尽可能来自“接近参考策略”的行为策略。

这里通常既有系统层的机制,也有**算法层(importance sampling)**的机制。

1、 系统层:让行为策略别飘太远

  • 异步框架:给每个样本打上策略版本号,只能用与 π θ old \pi_{\theta_{\text{old}}} πθold​​ 相差不大的参数版本采样的数据;
  • 训推对齐:强调训练框架和推理框架用相同精度、相同算子、相近的内核 / kernel 行为。

这些机制的目标是:从“算法外部”让 μ \mu μ 和 π θ old \pi_{\theta_{\text{old}}} πθold​​ 靠近,从而压缩 α 1 \alpha_1 α1​。

2、 算法层:样本修正

在算法层,我们不再试图“纠正整个行为策略”,而是用重要性采样比率在样本层面做筛选和重加权,让“真正参与训练的样本子集”上的行为策略尽量接近参考策略,或者减小差异较大的样本在训练上的权重。

具体来说,就是下面这些方法,它们本质上都可以看作是“实现约束 2 的不同方式”。

重要性采样与掩码:四种约束 2 实现

下面延续前文的记号体系来写这三种方法的目标函数,只聚焦在“行为策略 vs 参考策略”这一维的设计。记 token 级的 PPO / GRPO 风格更新项为

g θ ( t ) = min ⁡ ( r t ( θ ) A t ,  clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A t ) , g_\theta(t) = \min\big(r_t(\theta) A_t,\ \text{clip}(r_t(\theta),1-\epsilon,1+\epsilon) A_t\big), gθ​(t)=min(rt​(θ)At​, clip(rt​(θ),1−ϵ,1+ϵ)At​),

其中

r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) , ( s t , a t ) ∼ μ , A t : = A μ ( s t , a t ) 。 r_t(\theta) = \frac{\pi_\theta(a_t\mid s_t)}{\pi_{\theta_{\text{old}}}(a_t\mid s_t)}, \quad (s_t,a_t)\sim\mu,\quad A_t := A_\mu(s_t,a_t)。 rt​(θ)=πθold​​(at​∣st​)πθ​(at​∣st​)​,(st​,at​)∼μ,At​:=Aμ​(st​,at​)。

也就是说:

  • r t ( θ ) r_t(\theta) rt​(θ) 是 目标 vs 参考 的比率(对应约束 1);
  • A t A_t At​ 基于行为策略采样的数据,是我们能估到的优势函数。

为了把 token 级的 ( s t , a t ) (s_t,a_t) (st​,at​) 与序列级的 ( x , y ) (x,y) (x,y) 记号打通,在以 RLHF(reinforcement learning from human feedback,人类反馈强化学习)为代表的 LLM-RL 设定中,我们约定:

  • prompt 记为 x x x;回复记为 y = ( y 1 , … , y ∣ y ∣ ) y = (y_1,\dots,y_{|y|}) y=(y1​,…,y∣y∣​);
  • token 级状态 s t : = ( x , y < t ) s_t := (x, y_{\lt t}) st​:=(x,y<t​),动作 a t : = y t a_t := y_t at​:=yt​;
  • 因此行为策略和参考策略在序列上的分布可写成

μ ( y ∣ x ) = ∏ t = 1 ∣ y ∣ μ ( a t = y t ∣ s t ) , π θ old ( y ∣ x ) = ∏ t = 1 ∣ y ∣ π θ old ( a t = y t ∣ s t ) 。 \mu(y\mid x) = \prod_{t=1}^{|y|}\mu(a_t=y_t\mid s_t),\quad \pi_{\theta_{\text{old}}}(y\mid x) = \prod_{t=1}^{|y|}\pi_{\theta_{\text{old}}}(a_t=y_t\mid s_t)。 μ(y∣x)=t=1∏∣y∣​μ(at​=yt​∣st​),πθold​​(y∣x)=t=1∏∣y∣​πθold​​(at​=yt​∣st​)。

此外,为了描述“参考 vs 行为”的偏移,统一定义 token 级重要性比率

ρ t ( ref ← beh ) : = π θ old ( a t ∣ s t ) μ ( a t ∣ s t ) , \rho_t^{(\text{ref}\leftarrow\text{beh})} := \frac{\pi_{\theta_{\text{old}}}(a_t\mid s_t)}{\mu(a_t\mid s_t)}, ρt(ref←beh)​:=μ(at​∣st​)πθold​​(at​∣st​)​,

以及其对应的序列级版本

ρ ( y ∣ x ) : = π θ old ( y ∣ x ) μ ( y ∣ x ) = ∏ t = 1 ∣ y ∣ ρ t ( ref ← beh ) 。 \rho(y\mid x) := \frac{\pi_{\theta_{\text{old}}}(y\mid x)}{\mu(y\mid x)} = \prod_{t=1}^{|y|} \rho_t^{(\text{ref}\leftarrow\text{beh})}。 ρ(y∣x):=μ(y∣x)πθold​​(y∣x)​=t=1∏∣y∣​ρt(ref←beh)​。

接下来,TIS / IcePop / MIS 的区别,就体现在“如何利用这些 ρ \rho ρ 来实现约束 2”。

1. TIS:token-level 截断 IS

TIS 直接对上述 ρ t ( ref ← beh ) \rho_t^{(\text{ref}\leftarrow\text{beh})} ρt(ref←beh)​ 做截断,记

w t = min ⁡ ( ρ t ( ref ← beh ) ,   C IS ) 。 \color{blue}{w_t = \min\big(\rho_t^{(\text{ref}\leftarrow\text{beh})},\ C_{\text{IS}}\big)}。 wt​=min(ρt(ref←beh)​, CIS​)。

更新目标写成

L TIS ( θ ) = − E ( s t , a t ) ∼ μ [   w t    g θ ( t ) ] 。 L_{\text{TIS}}(\theta) = - \mathbb{E}_{(s_t,a_t)\sim\mu}\big[\,\color{blue}{w_t}\; g_\theta(t)\big]。 LTIS​(θ)=−E(st​,at​)∼μ​[wt​gθ​(t)]。

  • 蓝色的 w t \color{blue}{w_t} wt​ 是被截断的 IS 权重:极端大的比率被压到常数 C IS C_{\text{IS}} CIS​。
  • 从三策略 TRPO 的角度看,这相当于在 token 分布 上“软削弱”行为策略和参考策略严重不一致的样本,从而在梯度中有效减小那部分样本对 α 1 \alpha_1 α1​ 的贡献。

2. IcePop:MoE 场景下的 token-level 双侧 Mask

IcePop 同样以 ρ t ( ref ← beh ) \rho_t^{(\text{ref}\leftarrow\text{beh})} ρt(ref←beh)​ 为度量,但采用 双侧掩码:

m t = 1 [ C low ≤ ρ t ( ref ← beh ) ≤ C high ] 。 \color{blue}{m_t = \mathbf{1}\big[C_{\text{low}} \le \rho_t^{(\text{ref}\leftarrow\text{beh})} \le C_{\text{high}}\big]}。 mt​=1[Clow​≤ρt(ref←beh)​≤Chigh​]。

更新目标写成

L IcePop ( θ ) = − E ( s t , a t ) ∼ μ [   m t    g θ ( t ) ] 。 L_{\text{IcePop}}(\theta) = - \mathbb{E}_{(s_t,a_t)\sim\mu}\big[\,\color{blue}{m_t}\; g_\theta(t)\big]。 LIcePop​(θ)=−E(st​,at​)∼μ​[mt​gθ​(t)]。

  • 蓝色的 m t \color{blue}{m_t} mt​ 决定某个 token 是否参与更新:比率太大或太小的 token 直接被丢弃。
  • 这相当于硬性裁掉“行为策略和参考策略极度不一致”的 token,只在 ρ t \rho_t ρt​ 适中的区域上优化,从样本集合层面实施更强的“约束 2”。

3. sequence-level MIS:按整条序列 Mask 的重要性采样

MIS 的核心操作是:只保留 IS 比率不超过阈值 C C C 的序列,其余序列的损失直接置零。写成

ρ ( y ∣ x ) ← ρ ( y ∣ x )   1 { ρ ( y ∣ x ) ≤ C } \color{blue}{ \rho(y\mid x) \leftarrow \rho(y\mid x)\,\mathbf{1}\{\rho(y\mid x)\le C\} } ρ(y∣x)←ρ(y∣x)1{ρ(y∣x)≤C}

在统一的损失形式下,可以写成

L MIS ( θ ) = −   E ( x , y ) ∼ μ [ ρ ( y ∣ x )   1 { ρ ( y ∣ x ) ≤ C }    ⋅    ∑ t = 1 ∣ y ∣ g θ ( t ) ] , L_{\text{MIS}}(\theta) =-\,\mathbb{E}_{(x,y)\sim\mu} \Big[ \color{blue}{\rho(y\mid x)\,\mathbf{1}\{\rho(y\mid x)\le C\}} \;\cdot\; \sum_{t=1}^{|y|}g_\theta(t) \Big], LMIS​(θ)=−E(x,y)∼μ​[ρ(y∣x)1{ρ(y∣x)≤C}⋅t=1∑∣y∣​gθ​(t)],

简而言之:

  • 对于 IS 比率较小的序列:保留完整的 ρ ( y ∣ x ) \rho(y\mid x) ρ(y∣x) 权重,正常做 off-policy 修正;
  • 对于 IS 比率超过阈值 C C C 的序列:整个序列的 policy loss 被 mask 掉(权重变成 0 0 0)。

从三策略 TRPO 的角度看,MIS 不再在 token 上做截断,而是直接在序列级筛掉“行为策略和参考策略严重不一致”的轨迹,只在 ρ ( y ∣ x ) ≤ C \rho(y\mid x)\le C ρ(y∣x)≤C 的子分布上优化,从而在 trajectory 粒度上实现对“约束 2”( μ \mu μ vs π θ old \pi_{\theta_{\text{old}}} πθold​​ 偏移)的控制。

4. Worst Token Reject Sampling:按最差 token 拒绝整条序列

verl 中的 veto 机制 与 INTELLECT-3 分别在各自的训练框架中采用了一种可统称为 Worst Token Reject Sampling(WTRS) 的拒绝采样策略:

  • verl Token Veto:在其 rollout correction 模块中,若轨迹中存在任意 token 使得 min ⁡ t ρ t < τ veto \min_t \rho_t < \tau_{\text{veto}} mint​ρt​<τveto​ ,则通过 response_mask 将整条序列剔除。阈值 τ ∗ veto \tau*{\text{veto}} τ∗veto 可由用户配置。
  • INTELLECT-3 Token Masking:在其异步分布式 RL 框架中,若任意 token 的比率低于 1 0 − 5 10^{-5} 10−5,则对整条轨迹进行 masking。

二者的核心操作一致:若轨迹中存在任意 token 的 IS 比率低于阈值 τ \tau τ,则将整条序列从训练中剔除。写成

m ( y ∣ x ) = 1 { min ⁡ t = 1 ∣ y ∣ ρ t ( ref ← beh ) ≥ τ } \color{blue}{ m(y\mid x) = \mathbf{1}\Big\{\min_{t=1}^{|y|} \rho_t^{(\text{ref}\leftarrow\text{beh})} \ge \tau\Big\} } m(y∣x)=1{t=1min∣y∣​ρt(ref←beh)​≥τ}

在统一的损失形式下,可以写成

L WTRS ( θ ) = −   E ( x , y ) ∼ μ [ m ( y ∣ x )    ⋅    ∑ t = 1 ∣ y ∣ g θ ( t ) ] , L_{\text{WTRS}}(\theta) =-\,\mathbb{E}_{(x,y)\sim\mu} \Big[ \color{blue}{m(y\mid x)} \;\cdot\; \sum_{t=1}^{|y|}g_\theta(t) \Big], LWTRS​(θ)=−E(x,y)∼μ​[m(y∣x)⋅t=1∑∣y∣​gθ​(t)],

简而言之:

  • 对于 所有 token 的 IS 比率均不低于 τ \tau τ 的序列:正常参与训练;
  • 对于 存在任意 token 的 IS 比率低于 τ \tau τ 的序列:整条序列的 policy loss 被 mask 掉。

从三策略 TRPO 的角度看,WTRS 采用了"token 粒度检测、sequence 粒度否决"的混合策略:在 token-level 检测极端不一致的信号,一旦发现则在 sequence-level 执行拒绝。

这种"一票否决"的设计体现了一种保守思路——当轨迹中存在"行为策略生成但参考策略几乎不可能生成"的 token 时,整条轨迹的可信度都将受到质疑,从而在 trajectory 粒度上实现对"约束 2"( μ \mu μ vs π θ old \pi_{\theta_{\text{old}}} πθold​​ 偏移)的控制。

MoE 路由回放:它在三策略 TRPO 中到底做了什么?

在 MoE(Mixture-of-Experts)模型上,训推不一致往往首先表现为路由不一致(routing inconsistency):即便参数相同,推理端与训练端也可能因为算子、并行或数值细节的微小差异而路由到不同专家。一个很自然的工程应对是路由回放(routing replay):在 rollout(推理)时记录实际命中的专家路径,训练时强制复用这些路由决策。

这类方法经常被直觉性地理解为“在实现约束 2、压小 α 1 \alpha_1 α1​”。但从三策略 TRPO 的视角看,更准确的说法是:

路由回放并不是在原 surrogate objective 上收紧约束,而是在把 surrogate objective 改写成另一个“带路由条件/替换”的目标。
它让路由不一致在 loss 里“不可见”,但并没有让真实策略距离里的 α 0 \alpha_0 α0​ 或 α 1 \alpha_1 α1​ 变小。

下面用一个尽量简单但足够说明问题的建模来把这件事写清楚。

MoE 下的 surrogate objective:把“路由”和“token 生成”拆开

把 MoE 抽象成两阶段随机决策:“先选专家 z z z,再在该专家条件下生成 token a a a”。
因此目标策略可以分解为

π θ ( a , z ∣ s ) = ω θ ( z ∣ s )   π θ ( a ∣ s , z ) , \pi_\theta(a,z\mid s)=\omega_\theta(z\mid s)\,\pi_\theta(a\mid s,z), πθ​(a,z∣s)=ωθ​(z∣s)πθ​(a∣s,z),

其中:

  • ω θ ( z ∣ s ) \omega_\theta(z\mid s) ωθ​(z∣s) 是路由器(router)的分布;
  • π θ ( a ∣ s , z ) \pi_\theta(a\mid s,z) πθ​(a∣s,z) 是在专家 z z z 条件下的 token 分布。

在三策略 TRPO 中,我们真正想优化的 surrogate objective 为

L μ ( π θ ) = J ( μ ) + 1 1 − γ E s ∼ d μ [ ∑ z ω θ ( z ∣ s )   F θ ( s , z ) ] , L_\mu(\pi_\theta) = \mathcal{J}(\mu) + \frac{1}{1-\gamma} \mathbb{E}_{s\sim d_\mu} \bigg[ \sum_z \omega_\theta(z\mid s)\,F_\theta(s,z) \bigg], Lμ​(πθ​)=J(μ)+1−γ1​Es∼dμ​​[z∑​ωθ​(z∣s)Fθ​(s,z)],

其中我把专家层的优势聚合写成

F θ ( s , z ) : = ∑ a π θ ( a ∣ s , z )   A μ ( s , a , z ) . F_\theta(s,z) := \sum_a \pi_\theta(a\mid s,z)\,A_\mu(s,a,z). Fθ​(s,z):=a∑​πθ​(a∣s,z)Aμ​(s,a,z).

关键点:在原始的 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​) 里,路由分布是当前要更新的 ω θ \omega_\theta ωθ​。也就是说,MoE 的 RL 训练不仅在更新 token 生成分布,也在更新路由器本身。

1)回放行为策略的路由(behavior-router replay / R3 类)

R3 的做法是:rollout 时记录推理端实际命中的专家集合 M μ ( s ) M_\mu(s) Mμ​(s),训练时强制当前策略只在该集合内路由。可以把它写成对路由分布的“条件化投影”:

ω θ R3 ( z ∣ s ) : = ω θ ( z ∣ s )   1 { z ∈ M μ ( s ) } ∑ z ′ ∈ M μ ( s ) ω θ ( z ′ ∣ s ) . \omega_\theta^{\text{R3}}(z\mid s) := \frac{\omega_\theta(z\mid s)\,\mathbf{1}\{z\in M_\mu(s)\}} {\sum_{z'\in M_\mu(s)}\omega_\theta(z'\mid s)} . ωθR3​(z∣s):=∑z′∈Mμ​(s)​ωθ​(z′∣s)ωθ​(z∣s)1{z∈Mμ​(s)}​.

从而训练时实际优化的 surrogate objective 变为

L μ R3 ( π θ ) = J ( μ ) + 1 1 − γ E s ∼ d μ [ ∑ z ∈ M μ ( s ) ω θ R3 ( z ∣ s )   F θ ( s , z ) ] . L_\mu^{\text{R3}}(\pi_\theta) = \mathcal{J}(\mu) + \frac{1}{1-\gamma} \mathbb{E}_{s\sim d_\mu} \bigg[ \sum_{z\in M_\mu(s)} \omega_\theta^{\text{R3}}(z\mid s)\,F_\theta(s,z) \bigg]. LμR3​(πθ​)=J(μ)+1−γ1​Es∼dμ​​[z∈Mμ​(s)∑​ωθR3​(z∣s)Fθ​(s,z)].

和原始 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​) 对比可以看到,R3 并没有让 ω θ \omega_\theta ωθ​ 逼近 ω old \omega_{\text{old}} ωold​ 或 ω μ \omega_\mu ωμ​;它做的是:

  • 把对 z ∼ ω θ z\sim\omega_\theta z∼ωθ​ 的期望,改成了对 z ∼ ω θ ( ⋅ ∣ z ∈ M μ ( s ) ) z\sim\omega_\theta(\cdot\mid z\in M_\mu(s)) z∼ωθ​(⋅∣z∈Mμ​(s)) 的条件期望;
  • 等价地说,把路由的可行 support 缩到了 M μ ( s ) M_\mu(s) Mμ​(s)。

因此 R3 训练的是一个“被行为路由集合条件化后的 surrogate objective”,而不是原来的 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​)。

好处是显著降方差、提升稳定性;代价是在每个状态上都收缩了路由器探索 / 更新的自由度。

2)回放参考策略的路由(reference-router replay)

另一类 routing replay 复用的是参考策略(old policy)的路由器 ω old \omega_{\text{old}} ωold​。这等价于训练一个混合策略

π ^ θ ( a , z ∣ s ) : = ω old ( z ∣ s )   π θ ( a ∣ s , z ) , \hat\pi_\theta(a,z\mid s) := \omega_{\text{old}}(z\mid s)\,\pi_\theta(a\mid s,z), π^θ​(a,z∣s):=ωold​(z∣s)πθ​(a∣s,z),

对应 surrogate objective 为

L μ ref-replay ( π θ ) = J ( μ ) + 1 1 − γ E s ∼ d μ [ ∑ z ω old ( z ∣ s )   F θ ( s , z ) ] . L_\mu^{\text{ref-replay}}(\pi_\theta) = \mathcal{J}(\mu) + \frac{1}{1-\gamma} \mathbb{E}_{s\sim d_\mu} \bigg[ \sum_z \omega_{\text{old}}(z\mid s)\,F_\theta(s,z) \bigg]. Lμref-replay​(πθ​)=J(μ)+1−γ1​Es∼dμ​​[z∑​ωold​(z∣s)Fθ​(s,z)].

这意味着:

  • 在 surrogate objective 中,路由器被固定为旧路由器,路由相关的“参考 vs 目标”差异在 loss 里被直接抹掉;
  • 训练对“新路由器 ω θ \omega_\theta ωθ​ 是否偏离 ω old \omega_{\text{old}} ωold​”不再敏感,于是路由不一致导致的不稳定被绕开。

但注意这同样是换目标:

  • 真实策略空间里的 α 0 \alpha_0 α0​ 并没有因此变小,只是被“用旧路由器重定义目标”而在 loss 中不可见;
  • 路由器的学习被强行冻结或极度削弱。

路由回放只是在改写 surrogate objective

把两类 replay 放在一起看,它们的共同点是:

1、 优化的都不是原始的 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​),而是某个“路由被条件化 / 替换后的 surrogate objective”。

2、 它们没有直接收缩三策略 TRPO 下界里的 α 0 , α 1 \alpha_0,\alpha_1 α0​,α1​。replay 让路由不匹配不再显式出现在 loss 中,但不匹配在真实策略距离里仍然存在。

3、 实践上是在“用偏差换方差”:回放往往显著降低方差、提升稳定性,但也可能限制了 MoE 在 RL 目标下学到更优的路由模式。

所以,从三策略 TRPO 的视角,更准确的理解是:

routing replay 是一种 surrogate objective 的改写,而不是对 α 0 \alpha_0 α0​ 或 α 1 \alpha_1 α1​ 的直接实现。

小结

如果把这篇文章压缩成一句话,就是:

许多“大模型 RL 训推不一致”和“异步训练”问题,在本文的视角下,其实都可以理解为:在 TRPO 框架下,当行为策略 μ \mu μ 和参考策略 π θ old \pi_{\theta_{\text{old}}} πθold​​ 不一致时,二者之间的偏移( α 1 \alpha_1 α1​)被严重低估了。

从两策略到三策略,我们做的事情其实很简单:

1、把 TRPO 的下界从“旧策略 vs 新策略”的叙述,改写成“行为策略 – 参考策略 – 目标策略”三者的关系;

2、显式地拆出了两个 TV 距离:

  • 约束 1:参考 vs 目标 α 0 \alpha_0 α0​,对应 PPO / GRPO / GSPO 等工作里最常见的 KL / clip / trust region;
  • 约束 2:行为 vs 参考 α 1 \alpha_1 α1​,对应异步框架、训推差异、MoE 路由、kernel 非确定性等现实因素;

3、得到了一个非常直接的结论:

  • 替代目标 L μ ( π θ ) L_\mu(\pi_\theta) Lμ​(πθ​) 和真实性能 J ( π θ ) \mathcal{J}(\pi_\theta) J(πθ​) 的 gap 正比于 α 0 + α 1 \alpha_0 + \alpha_1 α0​+α1​。

在这个视角下(当然这只是众多可能视角之一):

1、Decoupled PPO / AReaL 可以被看作是在形式上承认“三策略存在”,并尝试在目标函数上将“行为分布”和“参考策略”解耦;

2、TIS、IcePop、MIS、WTRS 则是通过 IS 或者掩码机制在样本层面实施"约束 2":

  • TIS:用 token-level 截断权重削弱比率过大样本的影响;
  • IcePop:在 MoE 场景下用 token-level 双侧掩码硬性丢弃"极端不一致"的 token;
  • MIS:在 sequence-level 直接屏蔽整条"比率过大"的轨迹;
  • WTRS:在 token-level 检测比率过小的信号,一旦发现则在 sequence-level 拒绝整条轨迹;

3、 routing replay(路由回放)在三策略 TRPO 的视角下更像是“改写 surrogate objective”而非“直接实现约束”:无论回放行为路由(R3 类)还是回放参考路由,它们都把原本的 L μ ( π θ ) L_{\mu}(\pi_{\theta}) Lμ​(πθ​) 改成了一个路由被条件化/替换后的 surrogate objective,用一定的目标偏差与路由学习自由度的收缩换取降低方差与提升稳定性。因此它并不会真正收缩 α 0 \alpha_0 α0​ 或 α 1 \alpha_1 α1​,而是让路由不一致在 loss 中“不可见”;

4、《RL 老训崩?训推差异是基石》、以及前文提到的 Defeating Nondeterminism in LLM Inference 等工程经验,则可以理解为在系统侧和数值实现侧,尽可能把 α 1 \alpha_1 α1​ 压低,让算法层的假设不至于完全失效。

从这个统一视角出发,也许有助于回答几个实际问题(这里只是抛几个开放性问题):

1、在什么条件下,我们还能把“大模型 RL 训练”理解成某种意义上的“近似 TRPO / PPO”?

2、对一个具体的 RL 系统,我们究竟应该把主要精力花在:

  • 收紧 α 0 \alpha_0 α0​(更强的 KL / 更稳的 sequence-level 目标),还是
  • 压低 α 1 \alpha_1 α1​(更一致的训推框架、更激进的 MIS / TIS / IcePop)?

3、在 MoE、异步采样、复杂 agent workflow 这些现实设定下,我们还能安全地假装“ μ ≈ π θ old \mu \approx \pi_{\theta_{\text{old}}} μ≈πθold​​”多久?

本文只是在 TRPO 这个老框架上做了一个非常“最小化”的延展,把“三策略”显式写出来,并用它来整理现有的一些工作。难免有理解偏差或遗漏之处,如果你也关注实际大模型 RL 训练的情况,欢迎把你自己的设定抽象成“ μ , π θ old , π θ \mu,\pi_{\theta_{\text{old}}},\pi_\theta μ,πθold​​,πθ​ 三者的关系”,再回头看看 Theorem 2 里的那条不等式,或许会有不一样的直观感受。

【论文阅读】强化学习—近端策略优化算法(Proximal Policy Optimization Algorithms, PPO) PPO论文阅读笔记 阅读详情

相关推荐

16、深度强化学习算法:TRPO、PPO、DDPG与TD3

本文深入探讨了TRPO、PPO、DDPG和TD3四种主流深度强化学习算法。通过对PPO与TRPO的性能、调优难度对比,分析了策略梯度算法的样本效率与适用场景;介绍了结合策略梯度与Q学习思想的确定性策略梯度(DPG)及其深度扩展DDPG,并详细阐述了其利用回放缓冲区、目标网络和探索噪声的设计;进一步讲解了TD3如何通过双Q网络、延迟策略更新和目标策略平滑来解决DDPG的高方差与高估偏差问题。最后对四类算法进行了系统总结与对比,提供了在不同应用场景下的算法选择建议,为复杂控制任务中的算法选型与优化提供了理论支持

xk7n92h3p5m的博客 127

终极指南:如何彻底解决RL训练中的训推不一致问题

在强化学习(RL)训练中,**训推不一致**是一个长期困扰研究者和工程师的核心难题。即使使用完全相同的模型权重,训练引擎和推理引擎也会为相同的Token序列产生不同的对数概率,这种数值差异可能威胁训练稳定性。本文将为您详细解析Awesome-ML-SYS-Tutorial项目中提供的完整解决方案,帮助您彻底攻克这一技术瓶颈。🎯 ## 什么是训推不一致?🤔 **训推不一致**指的是在RL训练

gitblog_00833的博客 1124

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 671

【清华代码熊】面试官: RL训推不一致的原因 & 解决方案?

📌 今天解析大模型 RL 中的训推不一致的原因 & 解决方案。 📌 各厂在卷的 Reasoning & Agentic 大规模 RL 后训练都是训推分离式架构,不可避免必须解决训推不一致的原因,因此面试必须知道常见解决方案。

thu_dmx的博客 356

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2125

S7-1200控制S120变频器

②:硬件目录下,添加实物S120设备进行组态(其它现场设备--PROFINET IO--DRIVES......②:双击S120进行IP地址和设备名称设置(注:此处要与STATER软件设置S120一致)M10.0接通时,电机开始运行,M10.0断开,电机停止,调试完成。①:将S7-1200与S120进行通讯连线。④:STATER软件下设置与组态一致的报文。①:点击添加新设备,按实物进行设备组态。②:打开OB1,编写启动停止程序。①:查看S120报文地址。②:模块下添加DO矢量。③:子模块下添加报文。

weixin_38261173的博客 4868

RL 训练中的“训练-推理不匹配”难题:根源分析于解决办法(重要性采样IS 、 切回 FP16精度)

为了解决训练不稳定和难以收敛的问题,业界提出了各种复杂的算法补丁(如Token-level Importance Sampling等)。

weixin_36378508的博客 807

实战:如何用MIPI CSI-2高效传输RAW10图像数据(附带宽优化技巧)

本文深入探讨了MIPI CSI-2协议在RAW10图像数据传输中的高效应用,详细解析了4像素5字节打包机制及其带宽优化技巧。通过动态Lane分配、位深度自适应压缩和虚拟通道交错传输等实战方法,显著提升传输效率,适用于IoT摄像头开发等低功耗场景。

css33的专栏 732

告别训练崩溃!小米R3方法解决MoE模型训练推理不一致难题!

本文介绍了小米提出的R3(Rollout Router Reply)方法,用于解决MoE模型在强化学习训练中训练与推理的不一致性问题。研究表明,MoE模型的路由机制微小扰动可导致专家选择差异,引发训练不稳定甚至崩溃。R3通过记录推理阶段的路由分布并在训练阶段回放,显著降低了训练-推理策略的KL散度,有效缓解了极端差异现象。多场景实验证明,R3能稳定RL训练,防止系统崩溃,性能优于现有方法。

2401_84495872的博客 1432

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 783

DXF转G代码是圆弧的方向如何确定?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1188

【论文解读】解读TRPO论文,深度强化学习结合传统优化方法

导读:本论文由Berkeley 的几位大神于2015年发表于 JMLR(Journal of Machine Learning Research)。深度强化学习算法例如DQN或者PG(P...

fengdu78的博客 2461

基于Simulink进行步进电机的重复控制仿真建模

重复控制概述目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。

amy_mhd的博客 268

深度解析Stable-Baselines3-Contrib核心算法:ARS、TRPO与TQC实战指南

Stable-Baselines3-Contrib是一个专注于实验性强化学习(RL)算法的扩展库,为开发者提供了ARS(增强随机搜索)、TRPO(信任区域策略优化)和TQC(截断分位数评论家)等高效算法。本文将深入剖析这三种核心算法的原理特性,并通过实战案例指导你如何在项目中快速应用这些强大工具。 ## 为什么选择Stable-Baselines3-Contrib? 🚀 Stable-Bas

gitblog_00555的博客 841

多物理场光学仿真软件:Lumerical_(15).多物理场耦合仿真案例分析

在多物理场光学仿真中,Lumerical 软件提供了强大的工具来模拟复杂的光学系统,包括光子学、热学、力学和电学等多物理场的耦合。本节将通过具体的案例分析,展示如何在 Lumerical 中进行多物理场耦合仿真的开发和实现。我们将从简单的热光效应仿真入手,逐步深入到更复杂的多物理场耦合场景,如光电效应和光力学效应。每个案例都将包括详细的原理说明和具体的代码示例,帮助读者更好地理解和应用这些技术。

kkchenjj的博客 1022

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习18-C置信域:PPO、TRPO、ACKTR及SA

C置信域:PPO、TRPO、ACKTR及SA

clayhell的博客 1455

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

强化学习:TRPO,PPO,GRPO算法(一文深度解析deepseek中的强化学习算法)——手把手教你入门强化学习(九)

在上期我们介绍了策略梯度(PG算法),这期我们将继续深入PG算法,从TPRO、PPO,到最后最近大火的deepseek中的强化学习算法GPRO。这期我们从TRPO入手,讲了KL散度约束以及在约束下,最大期望优势函数,之后PPO在TRPO的基础上,采用了剪裁概率,进行了计算复杂度的改进,以及引入可自适应的KL惩罚,在这基础之上,GRPO通过组相对策略优化,直接消除了价值函数。希望本文能帮助你自然地理解 TRPO,PPO 以及 GRPO。

wxchyy的博客 3309

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TRPO算法精讲:信赖域策略优化原理、推导与实现

强化学习中的策略梯度方法常因更新步长过大导致训练不稳定。信赖域策略优化(TRPO)通过引入KL散度约束,将每次策略更新限制在可信赖区域内,从理论上保证策略的单调提升。其核心思想是构造替代目标,利用重要性采样修正旧数据偏差,并通过Fisher信息矩阵和共轭梯度法高效近似自然梯度,最后配合线搜索确保约束满足。这一机制显著降低了超参数敏感性,提升了训练稳定性。作为PPO的直接前身,TRPO的信赖域思想被广泛继承,理解TRPO是深入掌握PPO及其后续算法的关键。本文从背景、数学原理、算法推导到核心代码实现全面解析T

weixin_33766805的博客 312

easy-rl 精读系列:Trust Region Policy Optimization(信任域策略优化,TRPO)论文深度解读

> 本篇文章基于 Datawhale 强化学习开源教程《蘑菇书》easy-rl 仓库中 Trust Region Policy Optimization.md 精读笔记,结合 [docs/chapter5/chapter5.md](https://link.gitcode.com/i/dea34d931fe3f0ca5ae5b0a551b7bc91) 中对 TRPO/PPO 的配套讲解与 [PPO

gitblog_00500的博客 200

手撕6大深度强化学习算法(DDPG PPO TRPO SAC TD3 MADDPG):原理+代码+实战

本文系统介绍了六种主流深度强化学习算法的原理与应用。DDPG适用于连续动作空间控制,PPO实现简单且性能稳定,TRPO理论严谨但实现复杂,SAC具有良好探索能力,TD3是DDPG的改进版本,MADDPG则专为多智能体系统设计。文章通过Pendulum-v1环境对比了这些算法的性能,提供了完整的代码实现和训练流程。结果表明,PPO和SAC通常表现最优,而TD3比DDPG更稳定。文章建议初学者从PPO入手,逐步尝试更先进的算法,并给出了扩展研究方向。

AIMoster的博客 1604

推荐项目:PyTorch-TRPO - 强化学习中的高效算法实现

推荐项目:PyTorch-TRPO - 强化学习中的高效算法实现 项目简介 PyTorch-TRPO 是一个由Ivan Kostrikov开发的开源项目,它实现了强化学习(Reinforcement Learning, RL)中的一种优化算法——Trust Region Policy Optimization (TRPO)。该算法在不完全确定的环境中有效地寻找最优策略,适用于复杂的连续动作空间问题...

gitblog_00022的博客 677

PyTorch-RL核心功能解析:TRPO、PPO与A2C算法全对比

PyTorch-RL是一个基于PyTorch实现的深度强化学习框架,专注于策略梯度方法(TRPO、PPO、A2C)和生成对抗模仿学习(GAIL)。本文将深入对比三种核心策略梯度算法的工作原理、优缺点及适用场景,帮助新手快速掌握强化学习实战工具。 ## 🚀 策略梯度算法全家桶:核心功能概览 PyTorch-RL实现了三类主流策略梯度算法,均采用 Actor-Critic 架构,通过直接优化策略

gitblog_00953的博客 431

深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning

A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth, Miles Brundage, Anil Anthony Bharath 文章目录摘要 Abstract1. 引言 Introduction2. 奖励驱动行为 Reward-Driven Behavior2.1. 马尔科夫决策过程 Markov Decision Processes2.2. 强化学习的挑

白水的博客 1万+

基于策略的强化学习方法之近端策略优化(PPO)深度解析

例如,在机器人控制中,先在仿真环境中训练PPO模型,再通过域随机化(Domain Randomization)迁移到真实环境。理论上,当ϵ较小时,PPO的截断操作近似于TRPO的信任区域约束,但计算复杂度显著降低。(因策略更新需保证数据来自相近策略),而是将每个周期收集的轨迹分割为多个小批量(Mini-Batch),在每个小批量上进行多次更新,以模拟SGD的效果,减少内存占用。替代TRPO的信任区域约束,约束新旧策略之间的差异,避免策略突变,既保持了策略更新的稳定性,又显著降低了计算成本。

搏博的专栏 3046

MAML-RL扩展指南:如何基于现有框架实现自定义环境和算法

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks(MAML)是一种强大的元学习框架,能够让智能体通过少量样本快速适应新任务。本指南将带你了解如何在MAML-RL框架基础上扩展自定义环境和算法,解锁更多强化学习研究可能性。 ## 为什么选择MAML-RL框架? MAML-RL框架为快速适应深度网络提供了灵活的实现,

gitblog_00706的博客 747

【PPO系列1】TRPO:让强化学习训练永不翻车的信任域策略优化算法

你有没有过这样的经历:辛辛苦苦调了一周的策略梯度算法,终于看到奖励在缓慢上升,结果手贱把学习率调大了0.001,模型瞬间崩溃,奖励直接归零?步长太难调了。步长太小,训练慢得像蜗牛;步长太大,直接"翻车",之前的努力全部白费。信任域策略优化(Trust Region Policy Optimization, TRPO)。它从理论上保证了每次策略更新都只会让性能单调提升,绝不会下降,而且几乎不需要调参,就能在从机器人控制到Atari游戏的各种任务上取得顶尖结果。

weixin_46200189的博客 567
上一篇: 多模态统一模型的“理解”真的能指导“生成”吗?北大推出 UniSandbox,揭示理解-生成鸿沟与进化之路
下一篇: 周六上午!一起聊聊π_RL,面向流匹配VLA模型的强化学习微调框架
青稞AI
博客等级 码龄2年 599粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值