SFT, RL, and On-Policy Distillation Through a Distributional Lens

Blog: SFT, RL, and On-Policy Distillation Through a Distributional Lens Author: wh / nrehiew Code: 代码搜索未找到开源实现;已检索标题 + GitHub、sft_rl_opd + GitHub、Minimal Code Editing + nrehiew GitHub,作者公开仓库中未发现与本文实验直接对应的代码仓库。

Cover: distributional view of SFT, RL and OPD

Figure 0 解读:这张封面图给出了全文的直觉入口:语言模型可以看成序列空间上的概率分布,post-training 不是简单地“加能力”,而是在移动、压缩或重塑这个分布。SFT、RL、OPD 的核心差异,不在于它们都能提高某个 benchmark,而在于它们把哪些样本当成训练状态、把什么当成目标分布、以及更新是否被当前 policy 自身的状态分布约束。

1. Motivation(研究动机)

这篇文章想解释一个 post-training 中经常被经验性观察到、但不容易统一理解的现象:为什么 SFT 往往更容易 catastrophic forgetting,RL 尤其是 RLVR 往往能在提升任务能力的同时较少破坏原能力,而 On-Policy Distillation(OPD)明明仍然在模仿 teacher,却会表现出类似 RL 的保守迁移与泛化行为。作者不把这个问题写成严格定理,而是提出一个“distributional lens”:语言模型本质是对 token sequence 的分布,训练算法的差异可以理解为它们如何定义 target distribution,以及 target 与当前 policy distribution 的距离有多远。

传统解释通常把 RL 的抗遗忘能力归因于 KL 正则、trust region、reverse KL 的 mode-seeking 行为,或者 RL 更新更稀疏。但是这些解释各自不完整:第一,RLVR 实践中经常弱化甚至移除显式 KL penalty,抗遗忘现象仍然存在;第二,稀疏参数更新和 token-level gradient 解释能描述 SFT 与 RL 的差异,却很难直接解释 OPD 为什么也像 RL 一样保守;第三,如果只说“reverse KL 比 forward KL 更不容易覆盖所有 mode”,仍然没有解释为什么 on-policy 采样会让学生模型即使从 degraded SFT teacher 蒸馏,也不完全继承 teacher 的遗忘。

本文关注的具体问题是:post-training 的“能力提升 vs. KL 移动/遗忘”权衡到底由什么因素决定?作者的答案不是“RL 这个算法天然更高级”,而是“on-policy data 是 load-bearing ingredient”。换句话说,决定模型是否被拉离原始能力分布的关键,不只是 loss 形状或 teacher 质量,而是训练状态来自哪里。如果状态来自外部固定数据集,模型会被拉向一个可能任意远的外部分布;如果状态来自当前 policy,更新就被限制在模型已经会访问的区域附近,即使 supervision 来自 teacher,也带有隐式的 low-KL 约束。

这个问题值得研究,是因为现代大模型的实际 pipeline 已经不再是单一 SFT 或单一 RL。很多开放模型和闭源模型都走向 Pretrain → SFT → RL → OPD / expert merging 的多阶段流程:SFT 负责格式与 instruction-following 冷启动,RLVR 负责 math/code 等可验证领域的 capability push,OPD 或 self-distillation 负责把多个 expert 能力合并回最终模型。若不能理解这些阶段各自如何移动分布,就很难判断什么时候应该继续 RL、什么时候应该蒸馏、什么时候 SFT 过拟合 specialized behavior 之后仍可通过 OPD 保住通用能力。

2. Idea(核心思想)

核心思想可以压缩成一句话:SFT 追逐一个固定外部分布,RL 追逐当前 policy 附近的高 reward 分布,OPD 则在当前 student 访问的状态上向 teacher 分布靠近,因此 OPD 在 supervision 形式上像 SFT,但在状态分布上像 RL。作者认为,RL 与 OPD 能够较少遗忘的共同点不是“都有 perfect objective”,而是它们的训练数据由当前模型自己生成,更新天然受当前 policy support 约束。

更具体地说,SFT 的 dataset 在训练前已经存在,不管来自人类还是更强模型,cross-entropy 都会无差别地提高 demonstrated tokens 的概率。这个 target distribution 可以离当前模型很远,所以 SFT 很适合 cold-start:例如让 base model 学会 instruction format、tool format、reasoning format。但同一个机制也带来遗忘风险,因为 loss 不知道哪些 token 是任务关键、哪些只是风格或 dataset artifact。

RL 的 target 更隐式。在线 RL 中,模型先从自己当前分布采样 completion,再用 reward 筛选或加权这些 completion。若用 REINFORCE + binary reward 的简化视角看,reward=1 的样本提供正信号,reward=0 的样本没有正信号,这近似 rejection sampling。于是“最优分布”不是任意一个解决任务的分布,而是在当前 policy 生成样本中可到达、且离当前 policy 最近的 task-solving policy。

OPD 的新意在于混合这两种属性:它有 teacher logits 或 teacher distribution,因此不是纯 reward maximization;但它的 prefixes / states 来自 student 自己,因此 teacher 只在 student 当前访问的地方提供建议。这个机制能解释为什么 OPD student 可能比 teacher 表现更好:student 没有在 teacher 自己的 trajectory 上被动模仿,而是在自己的错误和不确定状态上得到 teacher 的局部修正。

与常见观点的根本区别是:本文并不把“RL 优于 SFT”当成算法等级排序,而是把 SFT、RL、OPD 放到“target distribution 的来源与距离”这一坐标系里比较。SFT 的强项是大幅移动分布以实现冷启动;RL 的强项是在 reward 可信时沿着 on-policy reward direction 提升能力;OPD 的强项是在 teacher signal 足够有用时,用 dense token-level supervision 合并或迁移能力,同时利用 on-policy states 减少 distribution shift。

3. Method(方法 / 论证框架)

3.1 Distributional View:把 post-training 看成分布重塑

作者的总体框架是把语言模型 看成给定 prompt 后对 completion sequence 的概率分布。post-training 的问题不是抽象地“训练一个更好模型”,而是回答三个更细的问题:

  1. 当前模型分布在哪里?
  2. 训练算法定义的 target distribution 在哪里?
  3. 每一步更新是否必须从当前 policy 可访问的状态出发?

这三个问题会直接影响遗忘与泛化。若 target 是外部固定数据集 ,训练会最小化 dataset token 的 negative log-likelihood,模型不需要考虑 是否接近原 policy。若 target 由 reward 在当前样本上筛选出来,那么 target 会随模型变化而变化,并且被当前 model support 限制。若 target 是 teacher distribution,但 query states 来自 student,则 teacher 的知识注入发生在 student 自己的前缀空间上。

直觉上,这像是在高维地形上移动概率质量。SFT 像拿一张外部地图强行对齐,地图上哪里有标注就往哪里拉;RL 像让模型在自己常去的区域探索,再把概率质量推向同一区域里 reward 更高的路径;OPD 像让模型走自己的路,但在每个路口问 teacher “这个前缀下你会怎么分配下一个 token 的概率”。因此 OPD 不是传统离线蒸馏:传统蒸馏常常让 student 模仿 teacher 生成或外部收集的 states,而 OPD 的 correction 发生在 student 自己会遇到的 states 上。

3.2 SFT:固定外部 target distribution 与均匀 token pressure

SFT distribution: fixed external target distribution and collateral pressure

Figure 1 解读:图中灰色虚线箭头表示 SFT 对整个模型分布施加的外部拉力,teal 箭头代表对 minimal editing 任务有用的移动,orange / rust 箭头代表 collateral pressure。关键不是 SFT 一定“坏”,而是 cross-entropy 对 dataset 中每个 token 都给出监督,不区分这个 token 是任务必要信息、风格偏好、推理习惯,还是与任务无关的 dataset artifact。

SFT 的目标可以写成: 从分布角度看,它等价于把模型 拉向 fixed dataset distribution 。文章中给出的 forward KL 与 cross-entropy 关系是: \begin{align} D_{KL}(p \| q_\theta) &= \sum_x p(x)\log\frac{p(x)}{q_\theta(x)} \\ &= \sum_x p(x)\log p(x) - \sum_x p(x)\log q_\theta(x) \\ &= -H(p) + H(p, q_\theta) \end{align} 因为 无关,最小化 cross-entropy 就是在最小化 。这解释了 SFT 的两个面向:一方面,forward KL / cross-entropy 能强力覆盖外部数据分布,因此适合 instruction-following、格式遵循、工具调用模板等冷启动任务;另一方面,它没有内置机制去保护原模型已有 mode。如果 很远,优化器会直接让模型追 demonstrated tokens,而不是寻找“离原模型最近且满足任务”的解。

SFT 的另一个问题是 token-level supervision 太密。每个位置都被当作应该上调的 ground-truth token。若 dataset 中包含“therefore”“wait”“we can see that”这样的风格 token,loss 也会像对数学符号、bugfix 关键 token 一样惩罚模型。作者引用 Diao et al. 的观点:SFT 数据里存在低概率、低熵 token,即模型本来很确信自己不会这样写,却被迫拟合一个偏离自身分布的标签,这会冲击已有表示。这个解释与 Figure 1 中的 collateral arrows 一致:SFT 的有用更新和副作用更新混在一起。

3.3 RL:reward-filtered on-policy distribution

RL distribution: on-policy rollouts and high-reward samples

Figure 2 解读:绿色点表示当前 policy 采样出的 on-policy rollouts,橙色圈出的点代表 reward 更高、对更新贡献更大的样本,虚线轮廓表示更新后的 policy。RL 不会像 SFT 那样对外部数据集每个 token 施加压力,而是主要在模型已经访问的高概率区域内移动概率质量。

RL 的基本目标可以写成最大化 expected reward: policy gradient 给出的更新方向近似为: 在 RLVR 场景中,如果 reward 是可验证的,比如数学答案正确、代码测试通过,那么 reward direction 往往是质量方向的较好 proxy。与 SFT 不同,RL 并不要求模型提高某条固定 reference sequence 的概率;它只要求当前 policy 采样出的成功 completion 变得更可能。因此,只要 reward 可信,RL 可以在不大规模改写无关 token 行为的情况下提升任务能力。

作者最偏好的解释来自 on-policy data。用 binary reward 的 REINFORCE 简化理解:reward=1 的 completion 提供正信号,reward=0 的 completion 不提供正信号,reward 像一个 filter。于是 RL 的 target distribution 可以被理解为“当前 policy 附近的最优 policy”:在所有能让 completion reward=1 的 optimal policies 中,on-policy 训练会倾向于选择与当前 policy KL 最小、最容易到达的那个。形式化地说,若 是所有 task-solving policies 集合,训练不是任意跳到某个 ,而是沿着当前 支持集附近的 rewarded trajectories 移动。

On-policy data selects the nearest task-solving policy

Figure 3 解读:图中表达的是“最近可达最优解”的思想。任务可能有多个 optimal policies ,但当前 policy 的采样分布会约束实际更新路径,使模型更可能移动到离自己最近的 。这正是作者认为 RL 与 OPD 抗遗忘的共同根源:训练状态来自当前模型,target 不再是任意远的外部分布。

3.4 OPD:teacher signal + student state distribution

OPD 位于 SFT 与 RL 之间。它像 SFT,因为有 teacher signal,student 被训练去匹配另一个分布;它也像 RL,因为数据来自 student 自己,每一步先由 student 产生 prefixes / states,再在这些 states 上计算 teacher logits 或 teacher distribution。一个简化目标可以写成: 如果按 token 展开,OPD 的信号不是 advantage,而是 student 与 teacher 在当前 token distribution 上的 log-ratio / KL mismatch。它给每个 token 更密的反馈,因此 credit assignment 比 outcome-only RL 更细;但这个反馈也可能有偏,因为 teacher 的高 KL token 未必就是任务关键 token。

OPSD per-token KL: style tokens versus math tokens

Figure 4 解读:OPSD 的 per-token KL 分析显示,style / pivot tokens(如 “wait”“alright”)可能比 math tokens(如 “power”“exponent”“logarithm”)有更高 KL。也就是说,teacher-student 差异最大的 token 不一定是任务最重要的 token。如果不加约束地按 KL 更新,模型可能在风格 token 上过度移动,甚至 collapse。

这解释了为什么 OPSD 更像 RLHF 而不是 RLVR。RLHF 的 reward model 有偏,因此常用 KL penalty、PPO clipping 或 trust region 避免过度优化错误 proxy。OPSD 的 teacher signal 也不是完美任务重要性信号:teacher 与 student 在某些 style token 上差异大,并不代表这些 token 值得大幅更新。相比之下,RLVR 的 verifiable reward bias 更低,因此实践中更敢用 GRPO 等较宽松的 trust-region 设置,甚至弱化显式 KL。作者把这看成一个 tradeoff:OPD 有 dense per-token signal,但 signal bias 和 mode collapse 风险更大;RLVR signal 稀疏,但 reward 更接近任务成功本身。

概念伪代码如下;因为没有找到 released repo,它只对应文章论证,不是源码映射:

def sft_step(model, batch):
    prompt, labels = batch
    logits = model(prompt, labels[:, :-1])
    loss = cross_entropy(logits, labels[:, 1:])
    loss.backward()
    return loss
 
 
def rlvr_step(policy, prompts, reward_fn, group_size):
    completions = policy.sample(prompts, n=group_size)
    rewards = reward_fn(prompts, completions)
    advantages = normalize_within_group(rewards)
    logprobs = policy.logprob(prompts, completions)
    loss = -(advantages.detach() * logprobs).mean()
    loss.backward()
    return loss
 
 
def opd_step(student, teacher, prompts):
    prefixes = student.sample_prefixes(prompts)
    student_logits = student(prefixes)
    with torch.no_grad():
        teacher_logits = teacher(prefixes)
    loss = reverse_kl(student_logits, teacher_logits)
    loss = clip_unreliable_token_updates(loss)
    loss.backward()
    return loss

3.5 为什么 OPD student 可能超过 teacher

作者在文中强调,这不是传统蒸馏里直观的“student 只是压缩 teacher”。在 OPD 中,teacher 的监督更 targeted,因为它发生在 student-generated states 上。student 的错误不一定是 teacher 的错误;如果只在 teacher trajectories 上训练,student 可能学到自己很少访问的区域,而测试时一旦走到自己的错误 prefix,就没有见过对应 correction。OPD 则让 teacher 在 student 自己的 prefix 上提供 logits,相当于把监督放在 student 真正会遇到的局部状态上。

第二,KL matching 不等于 reward maximization。teacher distribution 包含 style、uncertainty、alternative continuations、reasoning structure 等信息。即使 teacher 自己 greedy sample 的最终表现并不更好,它的 soft distribution 仍可能通过 reshaping 改善 student 的采样行为。作者也提醒这一段带有猜测:高维分布塑形很难从单个 token 直觉推断,OPD 与 RL 的 entropy 曲线显示 OPD reward 上升更突然,同时 entropy collapse 更剧烈,这符合 reverse KL / mode-seeking 的 mode collapse 风险。

Reward and entropy curves of OPD versus RL

Figure 5 解读:图中比较了 OPD 与 RL 的 reward / entropy training curves。RL 的 reward 更渐进地上升,而 OPD 的 reward 提升更突然,并伴随明显 entropy collapse。作者把这解释为 OPD 的 reverse-KL-style mode seeking:它能快速把概率质量集中到某些有用模式上,但也可能牺牲 diversity。

3.6 Forward KL / Reverse KL 解释为什么有用但不够

Toy reverse KL versus forward KL forgetting

Figure 6 解读:这个 toy multi-modal 结果来自 Chen et al. 的相关分析,用于说明 reverse KL 相比 forward KL 更不容易遗忘旧 mode。作者承认这个视角有帮助,但认为它过分依赖显式 KL-to-reference 的解释,不能完整解释无强 KL penalty 的 RLVR 实践,也不能自然解释 OPD 的结果。

作者更满意的解释是:forward / reverse KL 是 loss geometry 的一部分,但 on-policy state distribution 才解释了 SFT、RL、OPD 的共同差别。SFT 在外部数据上 dense imitation;RL 在当前 policy 样本上 reward-filtered update;OPD 在当前 student states 上 teacher-matching update。因此,即使 OPD 的 teacher 是经过 SFT 训练且已有一定 forgetting 的模型,student 仍可能不继承全部遗忘,因为 student 的 state distribution 不是 teacher 的外部 SFT dataset,也不是 teacher 自己的 trajectories,而是 student 自己当前会访问的区域。

4. Experimental Setup(实验设置 / 证据来源)

这篇博客不是标准论文,没有完整公开的 training config、硬件、batch size、learning rate 或源码;它的主要证据来自作者的 Minimal Code Editing 个人实验、若干 recent papers / technical reports,以及对现代 post-training pipeline 的横向观察。

4.1 Minimal Code Editing 任务

实验任务来自作者此前的 Minimal Code Editing post:给模型一个被 corrupt 的函数,要求只修 bug,不要重写无关部分。评价目标有两个:

  • Generalization:训练时使用一组 corruption types,测试时使用不同 corruption types,观察模型是否学到“最小编辑”这一 general behavior,而不是只记住训练 corruption 的反向操作。
  • Catastrophic Forgetting:minimal editing 是较小众的 coding behavior,因此可用 LiveCodeBench v6 检查 fine-tuned model 是否损害通用 code generation 能力。

作者先训练两个 teacher:一个用 SFT,一个用 RL。两个 teacher 都学到 minimum editing behavior,但 RL teacher 泛化更好,LiveCodeBench 上没有明显遗忘;SFT teacher 则在 general code generation 上退化。随后作者用 OPD 分别从 SFT teacher 和 RL teacher 蒸馏 student。作者原本预期 RL teacher 蒸馏出的 student 会更强,但结果并非如此。

ModelPass@1 ↑Norm. Levenshtein ↓Added CC ↓LiveCodeBench v6 ↑
Teachers / SFT0.7750.4500.4500.286
Teachers / RL0.7920.0630.2060.320
Students / OPD SFT teacher0.8000.0590.2060.297
Students / OPD RL teacher0.7870.0550.2280.314

这些指标的含义是:Pass@1 越高越好,Norm. Levenshtein 越低代表改动越少,Added CC 越低代表额外复杂度越少,LiveCodeBench v6 越高代表通用 coding 能力保留更好。最关键的观察有三点:第一,两个 OPD students 非常接近;第二,OPD SFT teacher student 的 Pass@1 甚至达到 0.800,超过两个 teacher;第三,SFT teacher 的 LiveCodeBench v6 是 0.286,但从它蒸馏出的 OPD student 是 0.297,遗忘明显少于 teacher 自身。

4.2 相关文献与机制证据

作者引用了几类文献来支撑论证:Chen et al. 用 forward KL / reverse KL 的 toy setting 解释 forgetting 差异;Diao et al. 观察 SFT 中低概率低熵 token 对表示的冲击;Lai et al. 讨论 RL 的 data-dependent regularization;Mukherjee et al. 与 Yuan et al. 观察 RL 参数更新更稀疏、更关键,而 SFT 更新更 dense、更冗余;Shenfeld et al. 则提供作者最认同的 on-policy data 解释;Ross et al. 的 DAgger / on-policy data aggregation 思路解释 autoregressive test-time state mismatch。

这些文献不是被作者当成完整证明,而是拼出一个机制图景:SFT 的 supervision 来自 teacher / dataset states,test-time student 一旦偏离 teacher states,就可能进入未训练区域,产生 compounding errors;RL 与 OPD 则在 student / policy 自己访问的 states 上训练,因此更能覆盖测试时会遇到的 prefix distribution。这一点对 autoregressive LM 特别重要,因为每个 token 都会改变后续 state。

4.3 Full Pipeline 观察

MiMo-V2 Flash Table 7 post-training approaches by domain

Figure 7 解读:MiMo-V2-Flash technical report 的 Table 7 被作者用作现代 pipeline 的参考:不同 domain 的最佳 teacher training approach 不一样,Math / Code 倾向 RL,Creative Writing 和部分 knowledge-heavy benchmarks 更偏 self-distillation 或 distillation-style 方法。作者关注的不是某个表格数值本身,而是“expert 如何训练、最终如何合并”这个 pipeline 设计问题。

作者指出,很多开放模型现在使用 Pretrain → SFT → RL → OPD 的流程。SFT 在 pretraining 后仍然必要,因为没有基本 instruction-following 和格式遵循,RL 很难高效进行。之后,GLM 5 与 DeepSeek v4 这类报告中出现了用 OPD 合并 expert capabilities 的模式:最终 checkpoint 可能没有直接经历 RL,而是通过 OPD / distillation 把多个 expert 的能力合并进 final model。由此产生一个实际问题:expert 本身应该怎样训练?作者的倾向是 domain-dependent:math/code 等 verifiable domain 更适合 RLVR;creative writing / knowledge-heavy domain 中 reward proxy 噪声更大,distillation-style 方法可能更合适。

5. Experimental Results(实验结果 / 结论与局限)

5.1 Minimal Editing 结果的核心解释

Minimal Editing 实验最重要的结果不是某个单项指标,而是 teacher identity 与 data source 的相对重要性。若 teacher distribution 是唯一决定因素,那么 SFT teacher 已经在 LiveCodeBench 上 degraded,从它蒸馏出的 student 应该也显著 degraded;但实际 OPD SFT teacher student 的 LiveCodeBench v6 是 0.297,高于 SFT teacher 的 0.286,虽然低于 RL teacher 的 0.320 和 OPD RL teacher student 的 0.314。更重要的是,它的 Pass@1 最高,为 0.800,Norm. Levenshtein 也降到 0.059,Added CC 与 RL teacher 同为 0.206。

作者据此提出一个实用启发:可以先用比较 aggressive 的方式训练 specialized teacher,甚至允许它因为 SFT overtraining 而牺牲一些通用能力,然后通过 OPD 把特定能力迁移到 student,同时利用 student on-policy states 保留更多原能力。这不是说 teacher 不重要,而是 teacher signal 与 student state distribution 的组合才重要。teacher 决定局部 logits 建议,student 自己决定这些建议发生在哪些 prefixes 上。

5.2 为什么 RL 与 OPD 泛化更好

文章把泛化解释为 state distribution mismatch 问题。SFT 中 student 只看到 teacher / dataset 访问的 states;autoregressive 生成时,一旦 student 某一步出错,它会进入 teacher 从未访问过的 prefix,之后错误会连锁积累。RL 与 OPD 因为使用 on-policy data aggregation,训练时就暴露于模型自己会产生的 prefix distribution,因此更能覆盖测试时真实访问的 states。

这与 DAgger 的经典直觉一致:如果只在 expert trajectory 上做 imitation learning,learner 的微小偏差会导致 distribution shift;如果持续收集 learner 自己的 states 并让 expert 标注这些 states,泛化会更好。OPD 就像 language model 版的这个思想:teacher 不必生成整条 trajectory,它可以只在 student prefixes 上提供 token distribution。

5.3 “最佳算法”的形状

作者最后把问题提升到 capability-KL Pareto frontier:理想 post-training 算法应该在尽量少移动 prior distribution 的同时最大化能力。作者不认为答案是简单地“RL 更优”,也不认为显式 KL penalty 是核心。真正承重的是 on-policy data;而另一个尚未解决的旋钮是 credit assignment。

Outcome reward 太稀疏,所以 RL expensive;Process Reward Models 试图提供更细粒度过程信号,但 scale 上并不容易高效训练;logit distillation 给每个 token 都提供 dense signal,但 teacher bias 会迫使算法引入 clipping、KL control、trust-region 等复杂机制。作者给出的目标形状是:未来算法最好同时具备 distillation 的 dense feedback、RL 的低偏 reward grounding、以及 RL/OPD 共享的 on-policy property。具体算法是什么,作者明确说不知道。

5.4 局限与读者应保留的 caveats

第一,本文是 conceptual blog,不是严格理论论文。distributional view 是有解释力的 mental model,但没有给出完整证明,也没有展示大规模 ablation。第二,Minimal Editing 是一个作者自定义任务,虽然适合观察 generalization 与 forgetting,但结果是否能迁移到数学、代码、多模态、agentic tasks,还需要更多独立验证。第三,OPD 的 teacher logits 可能包含高 bias,尤其在 style token 或 pivot token 上 KL 很高时,dense supervision 可能驱动模型学习不重要的风格差异。第四,OPD 的 entropy collapse 既可能是能力集中化的信号,也可能是 diversity 损失的风险,不能简单理解为“reward 上升更快所以更好”。

我的读后判断是:这篇文章最有价值的地方不是提出一个新算法,而是把 SFT、RL、OPD 放进同一张分布移动图里。它解释了一个实用经验:当任务需要大幅改变输出格式或基础行为时,SFT 仍然是最直接的冷启动工具;当 reward 可信且希望尽量保留 prior 时,RLVR 的 on-policy reward filtering 很强;当已有 specialized teachers、需要合并能力或迁移能力时,OPD 的 teacher signal + student state distribution 可能提供比离线蒸馏更稳的路径。真正要避免的误解是把这些方法排成单调优劣序列。更合理的选择标准是:你的 reward 是否可信、你的 teacher 是否有用、你的目标分布离当前模型多远、以及你是否愿意让训练过程始终停留在当前 policy 可访问的 states 附近。