中文博客 / 研究笔记

模型为什么越走越偏

从 LLM 强化学习到自回归视频,用同一视角理解 Drift。

Zefan Cai · · 中文研究笔记

一个推理模型在强化学习中突然崩溃,一段自回归视频越生成越不像开头,一个量化后的 KV cache 让历史帧“抢走”当前帧的注意力。它们看起来属于不同问题:优化不稳定、时间一致性、数值精度。但它们有一个值得共同研究的结构:模型参与构造自己下一步所处的分布,而训练或更新规则对这个分布的假设并不总是正确。

这篇文章把 Score Centering、Bellman Policy Optimization(BPO)、Maximum Likelihood Reinforcement Learning(MaxRL) 与视频生成中的几类方法放在一起。目的不是给它们贴上同一个标签,而是回答一个更具体的问题:偏差从闭环的哪一处进入,又应当在哪一处修正?

本文的核心区分:Score Centering 修正更新的系统性偏置;Self Forcing 调整训练所见的历史;BPO 重写策略优化目标;MaxRL 改变成功轨迹获得的学习权重。 它们可以互补,但不能互相替代。

两种 drift,两条时间轴

先把“越走越偏”中的“走”说清楚。

在 LLM 强化学习中,训练器产生参数,推理引擎用这些参数生成 rollout,训练器再依据 rollout 更新参数。量化、不同数值 kernel、异步采样和旧 checkpoint,都可能让推理引擎与训练器给同一个 token 的概率不同。偏置一旦进入更新,新的参数又会被送回采样器,形成跨训练步的反馈。

AR 视频还有另一条反馈链:模型根据历史生成下一段,把这一段写入历史,再据此生成后续内容。哪怕权重完全不变,人物形状的一点误差、几何关系的一点偏移,也可能进入后续条件并继续传播。

LLM RL · 训练步 k

参数 θk → sampler → rollouts → 梯度 → 参数 θk+1

变化的状态包括模型参数;有偏更新被反复反馈。

AR 视频 · 生成步 t

历史 ht → 下一段视频 → 写入历史 → ht+1

参数可以固定;变化的是模型随后读取的历史。

两者共享的是闭环结构,累积的对象却不同。Score Centering 中的 drift 是一个有明确定义的梯度分解项;视频中常说的 drift 通常是身份、几何、动作或场景随时间退化。把后者全部归结为前者,会错过真正需要修改的部位。

一个有用的局部分析视角是:

\[e_{n+1}\approx J_n e_n+b_n+\xi_n.\]

这里,\(e_n\) 是选定表示中的扰动,\(J_n\) 描述扰动如何传播,\(b_n\) 是系统性偏差,\(\xi_n\) 是随机扰动。这个式子是理解机制的局部近似,不是所有生成模型共享的 drift 定理。即使存在偏差,系统也不一定发散;传播算子是否放大误差同样重要。

下面的简单模型把这种区别单独拿出来。它只有一个标量状态,起点为 \(e_0=0.2\);实线执行 \(e_{n+1}=a e_n+b\),虚线只去掉 \(b\),保留完全相同的传播系数 \(a\)。

有偏递推与去掉系统偏差后的递推初始误差为 0.2。默认 a 等于 1、b 等于 0.025,40 步后有偏递推为 1.2,去偏递推为 0.2。 有系统偏差:0.2 → 1.2 去掉偏差:0.2 → 0.2 040 步

默认参数下,40 步后的误差分别为 1.2 和 0.2。

交互示意,不是论文实验。去掉系统偏差,并不自动消除初始误差,也不保证传播系数大于 1 时系统稳定。关闭 JavaScript 时仍可阅读默认曲线。

这个例子解释了为什么“校正偏差”与“提高闭环鲁棒性”是两个不同任务。前者处理新注入的 \(b_n\),后者还要关心系统面对已经存在的误差时如何继续运行。

把不一致定位到分布的不同层级

对输入 \(x\)、生成历史 \(h_t\) 和下一生成单元 \(a_t\),可以把实际采样过程写成:

\[x\sim\rho,\qquad h_t\sim d_t^q(\cdot\mid x),\qquad a_t\sim q(\cdot\mid h_t).\]

\(\rho\) 是 prompt 分布,\(d_t^q\) 是采样器运行到第 \(t\) 步时访问的历史分布,\(q\) 是给定历史后的条件采样分布。训练器用于计算梯度的概率记作 \(p_\theta\)。于是,“训练与实际运行不一致”至少有三个不同位置。

层级应当问的问题代表性干预
固定历史下的条件分布同一个 \(h\) 上,sampler 的 \(q\) 与 trainer 的 \(p_\theta\) 是否一致?Score Centering;计算算子的偏置校正
访问的历史分布训练见到的 \(d_t\),是否覆盖模型实际生成的历史?Self Forcing;在实际 rollout 上训练
输入与成功轨迹的权重哪些 prompt、哪些完整输出获得了更多学习信号?MaxRL;成功条件化或奖励加权拟合

BPO 则追问贯穿这张表的另一个问题:实际采用的局部 loss,究竟是哪个整体策略目标的近似? 有时困难来自分布错位,有时来自代理目标的设计,有时两者同时存在。

一个容易混淆的点是:teacher-forced token NLL 的求和,本来就是精确的序列 NLL,

\[-\log p_\theta(a_{1:T}\mid x) =-\sum_t\log p_\theta(a_t\mid x,a_{<t}).\]

所以问题不是“token loss 天生看不到整条轨迹”。问题在于:模型有有限误差时,在真实前缀上学到的条件行为,并不等于它在自己产生的偏离前缀上也能恢复;而本文涉及的视频分布匹配代理目标,也不能直接等同于真实数据上的最大似然目标。

Score Centering:扣掉不该存在的更新

Score Centering 从一个很有力的检验出发:如果所有输出都得到相同的正奖励,模型应不应该继续学习?在标准 on-policy policy gradient 中,答案是不应该,因为环境没有提供区分优劣的信号。

固定历史 \(h\),定义参数 score:

\[g_\theta(a,h)=\nabla_\theta\log p_\theta(a\mid h).\]

在通常的可微与归一化条件下,\(\mathbb E_{p_\theta}[g_\theta\mid h]=0\)。但 token 实际从 \(q\) 采样时,\(\mathbb E_q[g_\theta\mid h]\) 一般可以非零。对当前 action 及其后续 rollout 取条件期望,更新可以拆成:

\[\mathbb E_q[Rg_\theta\mid h] =\underbrace{\mathbb E_q[R\mid h]\, \mathbb E_q[g_\theta\mid h]}_{\text{drift}} +\underbrace{\operatorname{Cov}_q(R,g_\theta\mid h)}_{\text{reward-related signal}}.\]

第一项只通过奖励的均值依赖奖励,不关心哪个 action 导致更好的结果。对于正的条件平均奖励,它会把训练器推向采样器。若采样器是一个固定教师,这类似普通蒸馏;若采样器是训练器的量化或滞后副本,训练器每轮追随它,再把更新后的参数送回去,偏差便可能循环累积。

Score Centering 直接替换:

\[g_\theta(a,h)\longrightarrow g_\theta(a,h)-\mathbb E_q[g_\theta\mid h].\]

完整条件期望下,drift 项被精确消去,留下 \(\operatorname{Cov}_q(R,g_\theta\mid h)\)。但这仍然是 \(q\) 下的 covariance,不是完整恢复了 \(p_\theta\) 下的 on-policy 更新。 论文实际实现还用 sampler 的 top-\(k\) 概率与 trainer 的尾部分布近似这个期望。

这也解释了为什么 prompt 内的 reward/advantage centering 不够。整组 rollout 的 advantage 总和为零,不代表每个中间 prefix 的条件平均 advantage 为零。一个已接近正确答案的前缀与一个已经出错的前缀,条件均值通常不同。

视频对应:KV 量化之后的 attention 偏置

在 Quantized Keys Steal Attention 中,AR 视频的历史 keys 被压缩到低比特,当前 chunk 的 keys 则保持完整精度。即使量化误差在 attention logit 上近似零均值,softmax 中的指数函数也会改变均值:

\[\hat\ell_i=\ell_i+\delta_i,\quad \mathbb E[\delta_i]=0, \qquad \mathbb E[e^{\hat\ell_i}] =e^{\ell_i}\mathbb E[e^{\delta_i}] \ge e^{\ell_i}.\]

历史 keys 的未归一化贡献被系统性放大,注意力因而向 cached tokens 偏移。论文推导出一个逐 attention score 的加性补偿:

\[b_i=\log\mathbb E[e^{\delta_i}],\qquad \tilde\ell_i=\hat\ell_i-b_i, \qquad b_i\approx\tfrac12\operatorname{Var}(\delta_i).\]

在噪声模型成立且使用精确 \(b_i\) 时,\(\mathbb E[e^{\tilde\ell_i}]=e^{\ell_i}\);实际采用二阶近似,且不需要重新训练。论文在 MAGI-1、SkyReels-V2 和 HY-WorldPlay 上验证这一方法。

这与 Score Centering 最像的地方,是同一条因果路线:高效计算引入偏差 → 分析偏差的期望 → 以加性项补偿,而非要求彻底放弃高效计算。 但这里恢复的是未归一化 attention contribution 的期望,不能直接推出归一化后的 softmax 完全无偏,更不能推出任意长视频都不再漂移。

这里有三种容易混淆的 “score”:RL 的参数 score 是 ∇θ log p;attention score 是 softmax 前的 logit;扩散模型的 score 通常是 ∇x log p。名字相同,不意味着可以直接替换公式。

BPO:从轨迹关系推导局部 loss

BPO 的起点不是给现成 GRPO loss 换一个系数,而是 Policy Mirror Descent(PMD)。对于固定的 rollout policy \(\mu\),PMD 在每个状态上权衡 advantage 与偏离旧策略的 KL 代价:

\[\max_\pi\; \mathbb E_{a\sim\pi(\cdot\mid h)}[A^\mu(h,a)] -\frac{1}{\eta}D_{\mathrm{KL}}(\pi\Vert\mu).\]

其理想解满足 \(\pi^+(a\mid h)\propto\mu(a\mid h)e^{\eta A^\mu(h,a)}\)。难点是:语言生成中若要直接使用每个 prefix 的 advantage,通常需要估计大量中间状态的 value。

BPO 利用 token append 的确定性与只有终点奖励的设定。按论文的约定,把终点 reward 写成终点 value,\(V^\mu(h_{T+1})=R\),于是:

\[A^\mu(h_t,a_t)=V^\mu(h_{t+1})-V^\mu(h_t), \qquad \sum_tA^\mu(h_t,a_t)=R-V^\mu(x).\]

中间 value 沿路径抵消,只剩终点奖励和初始 prompt 的期望奖励。后者仍要估计,但可以通过同一 prompt 的 grouped rollouts 完成,不需要单独训练中间状态 critic。

BPO 与 Score Centering 的直接连接

定义 BPO 完整目标中的逐 token 项:

\[u_\theta(a,h)= \log\frac{p_\theta(a\mid h)}{\mu(a\mid h)} +D_{\mathrm{KL}}\!\left(\mu(\cdot\mid h)\Vert p_\theta(\cdot\mid h)\right).\]

在 \(p_\theta=\pi^+\) 时,PMD 的最优性条件让轨迹满足 \(\sum_tu_\theta=\eta(R-V^\mu(x))\)。BPO 因而构造平方残差目标:

\[\delta=\eta(R-V^\mu(x))-\sum_tu_\theta(a_t,h_t), \qquad L=\mathbb E_{x\sim\rho,\,\tau\sim P_\mu(\cdot\mid x)} \left[\frac{\phi(x)}{2\eta}\delta^2\right],\quad\phi(x)>0.\]

在论文设定的策略空间与可达状态上,完整目标与 PMD 具有相同的最优解。这是目标层面的结论,不是任意神经网络与优化器都会达到该解的保证。

从上面的式子还能直接得到一个有意思的联系。固定 \(\mu\) 求导:

\[\nabla_\theta u_\theta(a,h) =g_\theta(a,h)-\mathbb E_{b\sim\mu}[g_\theta(b,h)].\]

右侧正是以实际采样分布为参照的 score centering。 这是从两篇论文公式得到的代数观察:BPO 通过整体策略目标推导出的完整 KL 项,在梯度上包含 SC 的中心化结构。它不意味着两种算法的全部目标与更新完全相同。

实际 BPO 还要做残差线性化、group estimation、binary KL 近似、平滑与 clipping,最后使用互补概率权重:

\[\omega_t= \frac{1+\epsilon-\mu(a_t\mid h_t)} {1+\epsilon-p_\theta(a_t\mid h_t)}.\]

因此,实际 token loss 不能自动继承完整 KL 中心化的精确零均值性质。这一步尤其提醒我们:知道最终 loss 的形式,还不够;也要知道从整体目标走到它时,舍弃了哪些条件。

视频对应:Flow-DPO 的解析消元

Improving Video Generation with Human Feedback 中的 Flow-DPO,也从完整生成分布上的目标出发。对于视频 \(v\) 和条件 \(c\),KL 正则奖励最大化的理想解具有形式:

\[p^*(v\mid c)=\frac{p_{\rm ref}(v\mid c)e^{R(v,c)/\beta}}{Z(c)}.\]

把这个关系反过来,就能用生成概率比表示 reward。同一 prompt 下,preferred 与 rejected 视频的 reward 差会消去 \(\log Z(c)\),从而得到不需要显式 reward 模型参与该训练目标的偏好优化形式。再通过 diffusion/flow 的似然代理,把训练落实到去噪或 velocity prediction 误差上。

两条路线的共同方法论很清楚:

BPO

PMD → Bellman 消去中间 value → 轨迹残差 → token loss

Flow-DPO

KL 正则奖励目标 → 消去 reward 与归一化常数 → 视频偏好 → velocity loss

这是一种推导范式的对应。Flow-DPO 并未使用 BPO 的 Bellman 消元,也没有它的互补概率权重。实际 Flow-DPO 还把推导中的时间相关 \(\beta_t\) 改为常数以改善训练;这里的时间是去噪时间,不是视频帧序号。

如果真要把 BPO 移植到视频,不能直接复制 \((1-\mu)/(1-p)\):它来自离散 token 概率的 binary KL;连续 latent 的概率密度可以大于 1,“一减密度”不再是补事件的概率。需要在具体的视频状态、动作和采样器定义下重新推导。

MaxRL:成功样本应当怎样被计数

MaxRL 讨论的是另一类不一致:平均成功率与成功事件的 log-likelihood 不是同一个目标。令 \(s_\theta(x)\) 表示 prompt \(x\) 的成功概率,便有:

\[J_{\rm RL}=\mathbb E_{x\sim\rho}[s_\theta(x)], \qquad J_{\rm ML}=\mathbb E_{x\sim\rho}[\log s_\theta(x)].\]

两者都鼓励成功,但梯度分配不同。后者的权重是 \(1/s_\theta(x)\):在梯度表达式中,成功稀少的问题获得更大的相对权重。它改变的是怎样分配学习信号,不是校正 sampler 与 trainer 的概率差异。

设 \(\tau\) 是完整轨迹,成功由二值判据决定。在可微与支持条件成立时:

\[\nabla_\theta\log s_\theta(x) =\mathbb E_{\tau\sim P_\theta(\cdot\mid x,\mathrm{success})} [\nabla_\theta\log P_\theta(\tau\mid x)].\]

这让最大似然有了一个简单解释:平均成功轨迹的 score。对一个 prompt,独立地从当前 \(P_\theta(\cdot\mid x)\) 采样 \(N\) 条轨迹,其中 \(K\) 条成功,可以构造纯成功均值估计器:

\[\hat g_N(x)= \begin{cases} \frac{1}{K}\sum_{i=1}^{N}r_i\nabla_\theta\log P_\theta(\tau_i\mid x),&K>0,\\ 0,&K=0. \end{cases}\]

有限采样下,并非每个 prompt 都能观察到成功,所以它不是精确 ML 梯度的无偏估计。MaxRL 的关键结果是:它的期望恰好对应一个截断目标,

\[J_N(x)=-\sum_{j=1}^{N}\frac{(1-s_\theta(x))^j}{j}, \qquad \nabla J_N(x)=\sum_{j=1}^{N}\frac1j\nabla\operatorname{pass@}j(x).\]

\(N=1\) 时退化为标准期望奖励目标(相差常数),\(N\to\infty\) 时趋近 log-likelihood。因此增加 rollout 数,不只降低固定目标的估计方差,还改变了逼近的目标。这里讨论的是纯成功均值估计器;加入 baseline 的实际实现需按其具体形式分析。

视频对应:LiFT 的成功筛选变体

LiFT 的主方法是 reward-weighted learning:生成视频后,用学习到的评价模型打分,让高奖励视频具有更大训练权重,同时混入真实视频的训练损失。它还研究了一个 rejection sampling 变体:仅保留语义一致性、运动流畅度、视频保真度三个维度都被评为 Good 的视频,再对这些样本微调。

“拟合成功条件下的生成分布”与 MaxRL 很接近,但样本怎样归一化会改变结果。设两个 prompt 各生成 10 条视频,A 成功 8 条,B 成功 1 条:

怎样使用这 9 条成功视频?prompt Aprompt B
全部混合,每条成功视频等权贡献 8 条训练样本贡献 1 条训练样本
先在各 prompt 内平均成功轨迹,再平均 prompt先平均 8 条先平均 1 条

第二种正是 MaxRL 估计器的关键结构:成功更多的 prompt 不会仅因留下更多样本而自动占据更大的总系数。这并不保证两个 prompt 的梯度范数相同;\(K=0\) 的 prompt 在该估计器中仍然没有成功学习信号。

因此,“筛好视频再训”不自动等于视频版 MaxRL。更接近它的方案需要在线采样、逐 prompt 的成功归一化,以及明确的终点成功判据。若扩散视频用去噪 loss 代替精确生成 log-likelihood,还增加了一层代理目标。LiFT 的现有结果没有提供这套 MaxRL 等价保证。

回到 AR 视频:让训练进入真实闭环

上述三组对应还没有直接解决 AR 视频最常见的历史分布问题。训练时历史来自真实视频,生成时历史来自模型自己;同一组参数可能在这两种条件下表现截然不同。

Self Forcing 的干预位置最直接:训练时就进行自回归 self-rollout,让后一段依赖先前生成的内容,再用 DMD、SiD 或 GAN 等视频级分布匹配目标训练。这样,训练目标看到的是实际生成过程所产生的视频分布,而非仅仅在真实历史上完成局部预测得到的输出。

相邻的 Diffusion Forcing 通过逐 token/帧的独立噪声水平训练,让模型适应不同可靠程度的历史。这提供了鲁棒性,但对真实历史加噪,并不自动等于采样到了模型实际会产生的错误历史。

Self Forcing 也不保证无限长生成不再退化。它的实用实现使用梯度截断、随机提前结束去噪以及 KV cache 的梯度分离来控制成本;超出训练上下文长度后,仍然可能出现质量下降。它直接缩小了 exposure bias,却没有把所有数值偏置和所有长时误差一起消除。

稳定,还要朝正确的目标稳定

Reward Forcing 给出了一个更具体的例子:长期保留初始帧作为 attention sink,有助于维持历史参照,也可能让模型反复复制初始内容,导致运动减弱甚至视觉回闪。它用 EMA-Sink 更新这部分历史表示,并用 Re-DMD 对运动质量更好的 self-rollout 赋予更大的分布匹配权重。

这说明“更稳定”与“更好的视频”也需要分开。一段几乎不运动的视频可能很容易保持外观一致。Reward Forcing 的奖励加权机制是 MaxRL 的宽泛近邻,但它并没有优化同一个 \(\log P(\mathrm{success}\mid c)\) 目标,也没有相同的逐 prompt 成功归一化。

AR-CoPO 则把注意力放在探索与真实采样器的关系上。对于 few-step AR 视频,改用中间注噪的 SDE 来方便计算 RL loss,可能让训练探索偏离实际 ODE 生成过程。AR-CoPO 在选定的 pivot chunk 扰动初始噪声、分叉候选视频,再通过对比代理策略进行局部更新。这与 BPO 共享“重新审视 policy loss 应怎样构造”的动机,但不包含它的 Bellman 消元。

用这个视角诊断一个新系统

把这些方法放在一起,最有用的结果不是一个统一算法名称,而是一张干预位置图。

观察到的问题先定位什么相关方法不能由此推出什么
同样的前缀,采样与训练概率不一致;更新持续偏移固定历史下的条件分布与平均 scoreScore Centering;BPO 的完整 KL 结构已恢复全部 on-policy 梯度
历史 KV 量化后,注意力向过去倾斜非线性计算把噪声变成了怎样的偏置Quantized Keys Steal Attention所有历史误差或长视频漂移都消失
前几段正常,依赖自生成历史后退化真实与生成历史的访问分布Self Forcing;Diffusion Forcing超出训练长度仍无限稳定
整体奖励提升有限,局部 policy loss 难以解释从整体目标到代理 loss 的推导BPO;Flow-DPO;AR-CoPO三者在数学上等价
容易场景反复成功,困难场景缺少可用候选prompt 与成功轨迹的学习权重MaxRL;LiFT 的筛选变体;Reward Forcingsampler mismatch 或时间误差已被修复

对一个新的 AR 视频系统,我会先做三个相互独立的检查。第一,固定历史与参数,仅改变采样精度、KV 表示或计算引擎,观察条件输出是否发生系统偏移。第二,保持采样器不变,比较真实历史与 self-rollout 历史下的表现,并沿生成长度报告退化曲线。第三,按 prompt 查看成功率与成功样本数,判断训练是否只在已经容易成功的场景上反复强化。

对应的验证也应当分开:偏置校正看它宣称修正的期望量;历史分布训练看真实 rollout 的长期质量;成功重加权看困难 prompt 的覆盖及不同采样预算下的收益。单一的平均 reward 或总视频分数,很难替这些机制逐一作证。

如果要组合这些思想,一个合理的研究方案是:先在实际 AR self-rollout 上训练,使历史分布接近部署;对已经确认的计算偏差增加有针对性的校正;再用有清晰轨迹含义的目标,决定哪些生成获得多少学习信号。这是从文献出发的设计建议,而不是这些论文已经共同验证过的组合系统。

跨 domain 的共同问题,是模型如何与自己产生的状态、数据和学习信号相处。 找到共享的反馈结构,可以帮助我们迁移思路;保留每种方法的干预位置与数学边界,才能判断这种迁移到底修好了什么。

参考论文

本文是公开论文的机制分析与对照,不报告新的模型实验。BPO 与 Score Centering 的梯度联系是由原文公式得到的代数观察;其余跨领域配对按文中说明属于机制或推导范式的类比。

  1. Score Centering Stabilizes Off-policy Reinforcement Learning. Martin Marek, Max Ryabinin. 2026. arXiv:2609.20807。主要依据 §4:drift 分解与 score centering;附录 A:top-\(k\) 实现。
  2. Bellman Policy Optimization. Zhuoqing Song et al. 2026. arXiv:2609.15987。主要依据 §3.1–3.2:完整轨迹目标、PMD 等价性与实用近似。
  3. Maximum Likelihood Reinforcement Learning. Fahim Tajwar et al. 2026. arXiv:2602.02710, v3。主要依据 §3–4:截断目标与成功条件化估计器。
  4. Quantized Keys Steal Attention: Bias Correction for KV-Cache Compression in Video Diffusion. Tuna Tuncer et al. 2026. arXiv:2605.26266。主要依据 §4.1–4.2:Jensen bias 与加性补偿。
  5. Improving Video Generation with Human Feedback. 2025. arXiv:2501.13918, v2。主要依据 §4:Flow-DPO、Flow-RWR 与时间权重设计。
  6. LiFT: Leveraging Human Feedback for Text-to-Video Model Alignment. 2024 / 2025. arXiv:2412.04814, v3。主要依据 §3.4 与 §4.4:reward-weighted learning 和 rejection sampling 变体。
  7. Self Forcing: Bridging the Train-Test Gap in Autoregressive Video Diffusion. 2025. arXiv:2506.08009, v2。主要依据 §3:self-rollout 与视频分布匹配;§5:局限。
  8. Diffusion Forcing: Next-token Prediction Meets Full-Sequence Diffusion. 2024. arXiv:2407.01392。逐 token 噪声训练与长 rollout 的稳定性。
  9. Reward Forcing: Efficient Streaming Video Generation with Rewarded Distribution Matching Distillation. 2025. arXiv:2512.04678, v2。主要依据 §3:EMA-Sink 与 Re-DMD。
  10. AR-CoPO: Align Autoregressive Video Generation with Contrastive Policy Optimization. 2026. arXiv:2603.17461, v2。主要依据 §3:pivot-chunk 探索与对比代理策略。

← 所有博客 · 回到正文