说明:这篇 blog 在 AI 的辅助下完成。
要点速览
- 扩散策略里有两条 horizon:环境步 \(t\) 和去噪步 \(k=K\dots0\)。比较这些方法时,我主要看三个问题:action 定义在哪一层,likelihood 在哪里算,advantage 又是怎么分到每个去噪步的。
- DDPO / DPOK 把去噪链当成单层 MDP:\(\pi_\theta(x_{k-1}\mid x_k,c)\) 是 Gaussian,log-prob 精确可算;奖励只在 \(x_0\) 上出现,所以每一步拿到的都是同一个终端信号。
- DPPO 把去噪链嵌进环境 MDP:\((t,k)\) 展开成一条长链,奖励只在 \(k=0\) 出现。critic 只看环境状态 \(V(s_t)\);GAE 只在环境层做;同一环境步内所有去噪步共享 \(A_t\),再乘 \(\gamma_{\text{denoise}}^{k}\) 压低早期(高噪声)步的权重。
- PPO ratio 在每个 \((t,k)\) 上单独算、单独 clip;梯度只经过当前步的 \(\mu_\theta(a^{k+1},s_t,k)\),不沿去噪链反传。这是 score-function 估计,与 DRaFT / AlignProp 这类 pathwise(链上反传)方法是两回事。
- Flow / ODE 采样器给定当前状态后,下一步就是确定的,条件单步转移是 Dirac,没法直接拿来算普通的 Gaussian PPO ratio。当然,初始噪声是随机的,最后的输出也仍然可以是随机的。Flow-GRPO、DanceGRPO 的做法是构造 SDE;ReinFlow、πRL Flow-Noise 则加一个可学习的噪声。DDIM \(\eta=0\) 时也有同样的问题。
- 另外三条路绕开“链上 log-prob”:在初始噪声上做 RL(DSRL、Noise PPO),用 flow-matching 损失差构造替代 ratio(FPO),或者用正/负样本加权的 flow-matching 回归(DiffusionNFT)。
0怎么读这一页
下面的图都按同一个格式画。列是环境步:图像生成只有一列,条件是 prompt \(c\);机器人画 3 列 \(t, t{+}1, t{+}2\)。行从初始噪声 \(x_K\) 开始,经过各个去噪转移 \(k=K,\dots,1\),得到输出 \(x_0\) 或 \(a_t\),再经过可选的残差,最后到环境 / 奖励模型。第 \(k\) 行表示 \(x_k\to x_{k-1}\);为了方便画图,50 步也只画 5 行。各张图的颜色、星标、箭头和格内数字含义相同,可以直接对着看。
- 灰色格:冻结的计算(参数不更新,或这一步不进入损失)。
- 实心强调色格:这一格的输出就是 RL 的 action,要算 \(\log\pi\),likelihood ratio 在这里。
- 空心强调色格:可训练,但不作为 RL action(回归 / flow-matching 损失,或 pathwise 梯度经过的地方)。
- 白色格:数据或环境(样本、动作、仿真器、奖励模型)。
- 虚线格:这一列不重新计算,复用之前生成的结果(例如按块重规划)。
- 星标:奖励进入的位置。
- 格内文字:该格分到的 advantage 权重(\(\hat A\) 表示广播同一个值;\(\gamma^k\hat A\) 表示按步衰减;深浅与权重成正比)。
- 红色反向箭头:pathwise 梯度(沿链反传可微奖励,或 \(\nabla_a Q\))。
- 叠放虚线框 + “×G”:GRPO 的组 / 兄弟样本,advantage 在框内比较。
- 青色药丸:critic 挂在哪一层(\(V(s_t)\)、\(Q(s,a)\) 等)。
- 环境行下方的青色箭头:GAE / 折扣回报在环境步之间从右往左递推。
- 右侧括号:作用于一段行的附加项(逐步 KL、滑动窗口、整链乘积 ratio 等),括号旁写明。
- 1初始噪声 \(x_K\sim\mathcal N(0,I)\),这里是白色数据格。若这一格是实心色(Noise PPO、DSRL),说明 RL 的 action 就是噪声。
- 2灰色:前几个去噪步冻结(DPPO 的“只调最后 \(K'\) 步”)。
- 3空心:参数可训练,但这一格不算 \(\log\pi\),例如被 pathwise 梯度经过、或用回归损失训练。
- 4实心:RL action,在这里算 ratio \(\rho\)。格内 \(\gamma\hat A\)、\(\hat A\) 是它分到的 advantage 权重,越淡权重越小。
- 5输出 \(a_t\) / \(x_0\)。
- 6残差行(只有输出残差类方法有)。实心表示残差是 RL action。
- 7环境 / 奖励模型,星标表示奖励在这里进入。
- 8critic 挂载位置。
- 9红色箭头:pathwise 梯度从奖励沿链往回传到哪一步。
- 10叠放虚线框 ×G:同一条件下的一组兄弟样本。
网格下面的“数据流”条带写的是同一件事的时间顺序:rollout 阶段做什么、打分怎么来、更新阶段用什么损失。
1方法谱系图
我按 RL 作用的位置把方法分成四类:噪声空间、链内(likelihood ratio)、likelihood-free / 回归、链外 / 输出。连线写的是两个方法之间改了什么,不一定表示论文的引用关系。点击方法名可以跳到对应小节。
2双层 MDP 推导:两条 horizon
记号约定:环境步 \(t=0,1,\dots\),去噪步 \(k=K,\dots,1,0\)(\(k=K\) 是纯噪声,\(k=0\) 是干净样本 / 动作)。图像生成里只有一条去噪 horizon,条件 \(c\) 是 prompt;机器人里,条件是观测 \(s_t\),每个环境步都要跑一整条去噪链才能得到动作 \(a_t^0\)。
2.1单层 denoising MDP(DDPO / DPOK)
DDPO(Black et al., 2023)和 DPOK(Fan et al., 2023)把一次采样看成长度为 \(K\) 的 episode:
转移是确定性的(下一个状态就是刚采的 \(x_{k-1}\)),唯一的随机性来自策略本身。因为每一步是对角 Gaussian,log-prob 可以精确计算:
由于奖励只在终点出现、中间奖励为 0、折扣取 1,每一步的回报都等于 \(r(x_0,c)\)。DDPO 的两个估计量:
\(\hat A\) 用每个 prompt 的历史 reward 均值 / 标准差做归一化,这样就不用另外训练 critic 了。思路和后来的 GRPO 有些像,但 GRPO 用的是同一批兄弟样本的统计量。DPOK 则在这个 MDP 上加 KL 正则,通过链式上界,把终端分布的 KL 换成逐步 Gaussian KL 的期望之和。后者有闭式解:
DPOK 附录里还可选地学一个 \(V(x_k,c)\approx\mathbb E[r(x_0,c)\mid x_k]\) 作 baseline,也就是定义在去噪状态上的 critic,可以和下面 DPPO 的设计对照着看。
算 Gaussian ratio 的前提是方差大于零。当 \(\sigma_k>0\) 时,普通密度才有定义。DDIM 中 \(\sigma_k(\eta)=\eta\sqrt{\tfrac{1-\bar\alpha_{k-1}}{1-\bar\alpha_k}}\sqrt{1-\tfrac{\bar\alpha_k}{\bar\alpha_{k-1}}}\)。但取 \(\eta>0\) 还不够,端点的方差可能仍然是零,需要检查 DDPM / DDIM 的具体实现,排除这一步或者加方差下界。\(\eta=0\) 时,单步转移是 Dirac,不能代入这里的 Gaussian ratio。不过,这并不意味着最终输出没有概率分布。
2.2DPPO 的双层 MDP
DPPO(Ren et al., 2024)面对的是机器人:每个环境步 \(t\),策略从 \(a_t^K\sim\mathcal N(0,I)\) 出发去噪到 \(a_t^0\),执行 \(a_t^0\)(通常是一个 action chunk),环境转移到 \(s_{t+1}\)。DPPO 把两层展平成一条链,以下用目标状态下标 \(k=K-1,\ldots,0\) 表示转移 \(a^{k+1}\to a^k\),展平下标 \(\bar t(t,k)=tK+(K-k-1)\):
每一步的策略仍然是 Gaussian:\(\pi_\theta(a_t^k\mid s_t,a_t^{k+1})=\mathcal N\big(a_t^k;\mu_\theta(a_t^{k+1},s_t,k),\sigma_{k+1}^2I\big)\),所以 log-prob 可以直接算。接下来的问题是,环境奖励只在 \(k=0\) 出现,怎么给每个 \((t,k)\) 算 advantage?
Advantage 怎么算、怎么传。DPPO 的 advantage 是两层的:
- critic 只依赖 \(s_t\),不依赖中间噪声动作 \(a_t^{k+1}\)。论文的消融显示,让 value 也看 \(a^{k+1}\) 会明显不稳定。
- advantage 是共享的,不是逐步算的。同一环境步里所有 \(k\) 用同一个 \(A_t\),只差一个确定性的系数 \(\gamma_{\text{denoise}}^k\)(公开配置为 0.99)。代码里是
advantages *= gamma_denoising ** (ft_denoising_steps - i - 1),\(i\) 沿链递增,最后一步系数为 1。 - 我的理解是,如果内层折扣取 1,critic 又只看 \(s_t\),那么内层 TD 项就是 \(0+V(s_t)-V(s_t)=0\)。但光凭这一点,还不能说“在展平的链上跑普通 GAE”就等于把环境层 GAE 广播下来,因为 trace 的 \(\lambda\) 和折扣在内层怎么处理也要说清楚。DPPO 的实际做法是先在环境层算 \(A_t\),再乘 \(\gamma_{\mathrm{denoise}}^k\),给早期去噪步更小的权重。
PPO ratio 与 clipping。每个 \((t,k)\) 是一个独立的 PPO 样本:
- \(a_t^{k+1}\) 和 \(a_t^k\) 都是 rollout 时存下来的,更新时把它们当常数。\(\nabla_\theta\log\pi_\theta\) 只经过当前的 \(\mu_\theta(a_t^{k+1},s_t,k)\),不会跨去噪步反传。按步组织 minibatch,就不用一直存着整条链的反传激活了。不过 rollout 轨迹还是要存,总计算量也仍然随 \(K\) 增长,所以不能说显存开销完全与 \(K\) 无关。
- 官方代码里 clip 系数可以随去噪步变化:\(\epsilon_k=\epsilon_{\text{base}}+(\epsilon-\epsilon_{\text{base}})\frac{e^{\beta\tau_k}-1}{e^{\beta}-1}\),\(\tau_k\in[0,1]\) 沿链递增,越接近 \(k=0\) trust region 越宽。公开配置里 Robomimic 是
clip_ploss_coef_base=0.001→clip_ploss_coef=0.01,Gym 两者都是 0.01(等于不调度)。
探索噪声与数值稳定。扩散的后验方差 \(\sigma_k\) 在最后几步非常小,会带来两个问题:探索不够,以及 \(\log\pi\) 对 \(\mu\) 的微小变化极其敏感(ratio 爆炸)。DPPO 用两个下界分别处理:采样时把 \(\sigma_k\) 截到不低于 \(\sigma^{\text{exp}}_{\min}\)(按任务取 0.01–0.1),计算 log-prob 时截到不低于 \(\sigma^{\text{prob}}_{\min}=0.1\)。公开的 Gym / Robomimic 配置里两个下界都是 0.1。
只微调最后几步。复制一份 \(\theta_{\text{ft}}\),前 \(K-K'\) 步用冻结的 \(\theta\),最后 \(K'\) 步用 \(\theta_{\text{ft}}\),只有这部分进 PPO 损失(公开配置 \(K=20,\ K'=10\))。另一种做法是训练时直接换成 \(K_{\text{DDIM}}\approx5\) 步、\(\eta=1\) 的 DDIM(随机),评估时用 \(\eta=0\)。动作是 action chunk(\(T_a\) 步执行后重规划)。
2.3其他切法
(a) 整条链当成一个大 action。链的联合 log-prob 是逐步 log-prob 之和,联合 ratio 是逐步 ratio 之积:
最终动作的边缘 ratio \(\pi_\theta(a^0\mid s)/\pi_{\mathrm{old}}(a^0\mid s)\) 通常不好算,但如果把中间变量都存下来,就能算扩展空间上的 importance weight \(\rho^{\mathrm{chain}}\)。在旧策略处,不加 clipping 和额外步权重时,两种写法给出相同的 score-function 梯度 \(\mathbb E[A\sum_k\nabla\log\pi_k]\)。离开这个点,目标就不一样了:即使每步 ratio 都在 \([1-\epsilon,1+\epsilon]\) 内,乘起来也可能到 \((1\pm\epsilon)^K\) 这个量级。另外,PPO clipping 并不是 ratio 或 KL 的硬约束。整链乘积波动大,也可能更频繁地触发 clipping。OGPO 用的就是整链 ratio。
(b) GRPO 式只看结果的组内比较。对同一条件 \(c\) 采 \(G\) 条链,\(\hat A_i=(r_i-\bar r)/\operatorname{std}(r)\),把同一个 \(\hat A_i\) 广播给链上每一步,然后逐步 ratio + clip(Flow-GRPO、DanceGRPO)。不需要 critic,但每步拿到的仍是同一个终端信号,credit assignment 跟 DDPO 没本质区别;进步主要来自更好的 baseline 和工程(SDE 采样、步数缩减、共享噪声)。
(c) 只在噪声 / latent 空间做 RL。冻结 \(f_\theta\),把它当成环境的一部分,学一个噪声策略 \(\pi_\psi(w\mid s)\),动作是 \(a=f_\theta(s,w)\)(通常配确定性采样器,比如 DDIM \(\eta=0\))。likelihood 就是 \(\pi_\psi\) 自己的 Gaussian log-prob,跟去噪链无关。代表:DSRL(off-policy、SAC),Noise PPO(单步 MDP、PPO)。
(d) 完全绕开链的 likelihood。一类用 ELBO / flow-matching 损失差构造替代 ratio(FPO);一类直接做加权的 flow-matching 回归,比如 DiffusionNFT 的正 / 负隐式策略,以及更早的 advantage-weighted regression 思路:
这些方法不用算 rollout 的链上 likelihood,所以 ODE、高阶 solver 都可以用。但这不代表任意 CFG 设置都能稳定训练,比如 FPO 就报告过 CFG 相关的问题。上式只是 weighted flow matching 的示意;DiffusionNFT 还要构造正 / 负隐式策略,具体看后面的小节,不能直接当成普通的奖励加权 SFT。
2.4ODE → SDE:flow 模型为什么需要它
Flow matching / rectified flow 用 ODE \(\mathrm dx_\tau=v_\theta(x_\tau,\tau)\,\mathrm d\tau\) 采样。给定当前状态,下一步是确定的,也就是 Dirac 转移,没法用普通随机转移的密度来算逐步 PPO;这和最终输出有没有密度是两件事。这里取 \(\tau=1\) 为噪声,\(\tau=0\) 为数据,生成时 \(\mathrm d\tau<0\)。假设速度场 / score 是理想的,并且在连续时间下考虑,我们可以构造一个边缘分布相同的反向 SDE。
本小节的 \(t\) 是插值时间,不是环境步。对 rectified flow,\(x_t=(1-t)x_0+t\varepsilon\),score 可以用速度场表示:\(\nabla\log p_t(x)=-\frac{x+(1-t)v_\theta(x,t)}{t}\)。代入后做 Euler–Maruyama,就是 Flow-GRPO 的更新:
于是每步都是各向同性 Gaussian,log-prob 闭式可算;两个策略之间的逐步 KL 也有闭式:\(\mathrm{KL}=\frac{|\Delta t|}{2}\big(\frac{\sigma_t(1-t)}{2t}+\frac{1}{\sigma_t}\big)^2\lVert v_\theta-v_{\text{ref}}\rVert^2\)。超参数 \(a\) 控制探索强度(生成时 \(\Delta t<0\),噪声协方差与 KL 用 \(|\Delta t|\);有限步离散化不保证完全保持连续时间边缘分布)。
ReinFlow 不推 SDE,而是直接给每步加一个可学习的噪声网络:
这样就得到一个离散时间 Markov 过程,联合 likelihood 是逐步 Gaussian 的乘积。噪声大小交给 RL 学,再加上下界和上界;步数可以很少,只有 1–4 步。但这样一来,就不再保证边缘分布和预训练模型一致了。πRL 两种都试了:Flow-Noise 用 ReinFlow 式的可学习噪声和单层 MDP,Flow-SDE 用 SDE 和 DPPO 式的双层 MDP。
2.5梯度到底走哪条路
| 梯度路径 | 需要什么 | 代表 | 特点 |
|---|---|---|---|
| Score-function,逐步局部 | 每步 \(\log\pi\);随机采样器 | DDPO、DPOK、DPPO、Flow-GRPO、DanceGRPO、ReinFlow | 允许黑盒、不可微奖励;score-function 方差可能较大;不保存跨去噪步的反传激活,但轨迹存储与总计算仍随 \(K\) 增长 |
| Pathwise,沿链反传 | 可微奖励;可微的链 | ReFL、DRaFT、AlignProp | 通常比 score-function 更低方差;显存随反传步数增长;可能 reward hacking;黑盒物理环境奖励不能直接沿该路径反传 |
| Pathwise 链 + Gaussian 输出头 | 存下整条噪声序列 | NCDPO | 把链当成噪声条件下的确定性函数 \(f_\theta(s,a^K,z_{1:K})\),在其输出上放 Gaussian 做 PPO,梯度穿过所有去噪步 |
| 噪声空间策略 | 对 \(f_\theta\) 的黑盒访问 | DSRL、Noise PPO | 不更新 \(\theta\);受限于冻结生成器在允许 latent 域内可达的输出 |
| 替代 likelihood / 加权回归 | flow-matching 损失 | FPO、DiffusionNFT、AWR 类 | 采样器无关;ratio 或权重是近似,存在偏差 / 额外方差 |
2.6通用 on-policy 方法
PPO + GAE
Schulman et al. 2017 · 1707.06347;GAE 2015 · 1506.02438critic \(V_\phi\) 用 value loss(常带 value clipping)训练。clipping 是限制策略更新的 surrogate,并不硬性约束 KL,多 epoch 复用同一批数据。常见实现还包括 clipped value loss、全局归一化 advantage,以及 target-KL 早停。
GRPO
Shao et al. 2024(DeepSeekMath)· 2402.03300不训练 critic,而是用同一条件下 \(G\) 个样本的均值当 baseline。一个样本的 token / 去噪步都用同一个 outcome advantage。上面的 k3 项,在样本来自当前策略且满足支持条件时,是 \(D_{\mathrm{KL}}(\pi_\theta\Vert\pi_{\mathrm{ref}})\) 的无偏估计。如果复用旧策略的数据,采样分布变了,就得另外考虑。这里 KL 直接放进 loss,不放进 reward。写代码时也要处理组内标准差为零的情况。
RLOO / REINFORCE++
Ahmadian et al. 2024 · 2402.14740;Hu et al. 2025 · 2501.03262RLOO:\(\hat A_i=r_i-\frac1{G-1}\sum_{j\ne i}r_j\)。同条件下兄弟样本独立采样时,leave-one-out baseline 不依赖当前 action,因此不改变期望 policy gradient;它不除以 std。REINFORCE++ 不训练 critic,在整个 batch 上归一化 advantage,KL 放入逐 token reward,目的是缓解组内标准化带来的问题。
用在扩散策略上的实际难点
- Likelihood 能否算。确定性 ODE / DDIM 的局部条件转移是 Dirac,不能直接用于普通 Gaussian PPO;随机采样器的正方差转移可算密度,但最终 \(\pi(a^0\mid s)\) 还涉及积分。可改用 SDE、注噪声或替代目标(FPO / NFT)。GenPO 通过可逆构造求精确边缘 likelihood,代价包括动作维度加倍与结构约束。
- 去噪链上的 credit assignment。奖励只在 \(x_0\) 出现。主流做法要么共享(DPPO 乘 \(\gamma_{\text{denoise}}^k\),GRPO 直接广播),要么学去噪状态上的 critic(DPOK 可选的 \(V(x_k,c)\))。SPO、DenseGRPO 一类工作尝试做逐步奖励,但都要额外的模型或采样。
- 方差。\(\sum_k\nabla\log\pi_k\) 一共有 \(K\) 项,方差要看每一项和它们之间的协方差,不能简单说 \(K\) 越大方差就越大。不过链长了,计算和梯度噪声都可能更难处理。DPPO 只训最后 \(K^{\prime}\) 步,DanceGRPO 抽约 60% 的时间步,MixGRPO 只训一个滑动窗口,都是少训一些步的做法。
- 计算成本。每个环境决策要跑 \(K\) 次网络;更新时每个参与训练的步都要再前向 + 反传一次。常见手段是训练时减步数(Flow-GRPO 训 10 步、推理 40 步)、DDIM 5 步、或者 1–4 步的 shortcut / ReFlow 模型(ReinFlow)。
- 探索噪声。扩散后验方差在最后几步趋近 0,PPO 拿不到有效探索,ratio 也会数值爆炸。需要 \(\sigma_{\min}\) 下界(DPPO)、可调 SDE 噪声幅度 \(a\)(Flow-GRPO)或可学习噪声(ReinFlow)。噪声加大又会让样本偏离 prior 的流形。
- 到 pretrained prior 的 KL。先验相同、Gaussian 转移方差为正时,逐步 KL 的期望之和是终端 KL 的上界。DPOK / Flow-GRPO 用了这个正则,DanceGRPO 的实验里则没用 KL。但我觉得不能因此就说 KL 都可以去掉,尤其是 reward model 容易被利用的时候。当然,加了 KL / BC 也不代表 reward hacking 就解决了。
3链内:在去噪转移上算 likelihood ratio
这类方法把部分去噪转移当成 RL action,在图里的实心格上算 \(\log\pi\) 和 ratio。区别主要是哪些步参与更新、advantage 怎么算、critic 放在哪一层。后面统一用这些记号:条件 \(c\)(图像)或 \(s_t\)(机器人),去噪状态 \(x_k\),旧策略 \(\theta_{\text{old}}\),参考模型 \(\theta_{\text{ref}}\),advantage \(\hat A\),ratio \(\rho\)。
DDPO
Black, Janner, Du, Kostrikov, Levine · 2023 · 2305.13301链内- 思路
- policy 是每个去噪转移 \(\pi_\theta(x_{k-1}\mid x_k,c)\),action 是 \(x_{k-1}\),奖励是终端的黑盒标量 \(r(x_0,c)\)(压缩率、美学分、VLM 对齐分)。
- 计算网格
- 训练一步
c ~ prompts; x_K ~ N(0, I) for k = K..1: # DDIM 50 步, η=1(ddpo-pytorch 默认, CFG 5.0) x_{k-1} ~ N(μ_θold(x_k, k, c), σ_k² I); 存 logp_old[k] r = R(x_0, c) Â = clip((r - mean_c) / std_c, -5, 5) # 按 prompt 的 running 统计, 无 critic for epoch, minibatch, k in 全部 K 步: ρ_k = exp(log π_θ(x_{k-1} | x_k, c) - logp_old[k]) L += -min(ρ_k Â, clip(ρ_k, 1-ε, 1+ε) Â) # ε = 1e-4 θ ← θ - η ∇L- 目标函数
- \[\mathcal J_{\text{DDPO}_\text{IS}}=\mathbb E\Big[\sum_{k=1}^{K}\min\big(\rho_k\hat A,\ \operatorname{clip}(\rho_k,1-\epsilon,1+\epsilon)\hat A\big)\Big],\quad \rho_k=\frac{\pi_\theta(x_{k-1}\mid x_k,c)}{\pi_{\theta_{\text{old}}}(x_{k-1}\mid x_k,c)}\]
- 和其他方法的区别
- 相对普通 PPO:
- 把一次采样看成 \(K\) 步 MDP:转移确定、策略是对角 Gaussian、奖励只在终点(§2.1)。
- 没有 critic,baseline 是同一 prompt 的历史 reward 均值 / 标准差(per-prompt stat tracking)。
- 所有 \(K\) 步拿同一个 \(\hat A\);没有 KL。DDPO\(_\text{SF}\) 是同一框架下的 REINFORCE 版本。
- 局限
- 需要随机采样器才有 \(\log\pi\);每个样本存 \(K\) 步;\(K\) 项同权,方差大;无 KL 时 reward over-optimization 明显;clip 范围很小(1e-4),每轮更新保守。
- 变体
- DDPO\(_\text{SF}\);Large-scale RL for diffusion(Zhang et al. 2024,2401.12244)把它扩到百万级 prompt 与多奖励。
DPOK
Fan et al. · 2023 · 2305.16381链内- 思路
- 与 DDPO 相同的单层 denoising MDP,目标里加逐步 KL 到预训练模型,可选学一个定义在去噪状态上的 \(V(x_k,c)\);奖励是 ImageReward。
- 计算网格
- 训练一步
c ~ prompts; 用随机采样器采 x_K..x_0 ~ π_θ; 存每步样本 r = R(x_0, c) # ImageReward for k = K..1: A_k = r - V_φ(x_k, c) # 可选 baseline; 不用时 A_k = r L_pg += -α A_k · log π_θ(x_{k-1} | x_k, c) L_kl += β ‖μ_θ(x_k,k,c) - μ_ref(x_k,k,c)‖² / (2σ_k²) # 闭式逐步 KL L_V = Σ_k (V_φ(x_k, c) - r)² θ ← θ - η ∇(L_pg + L_kl); φ ← φ - η ∇L_V- 目标函数
- \[\min_\theta\ \mathbb E_{c}\Big[\alpha\,\mathbb E_{p_\theta}[-r(x_0,c)]+\beta\sum_{k}\mathbb E_{p_\theta}\big[\mathrm{KL}\big(p_\theta(x_{k-1}\mid x_k,c)\,\Vert\,p_{\text{pre}}(x_{k-1}\mid x_k,c)\big)\big]\Big]\]
- 和其他方法的区别
- 相对 DDPO:
- 加逐步 KL 到预训练模型,是终端 KL 的上界,闭式为 \(\lVert\mu_\theta-\mu_{\text{pre}}\rVert^2/2\sigma_k^2\)。
- 可选 critic \(V(x_k,c)\approx\mathbb E[r\mid x_k]\):不同 \(k\) 的 advantage 因此可以不同。这是 DDPO 和 GRPO 系都没有的东西。
- 奖励换成学到的 ImageReward;其余不变。是否对 ratio 做 PPO 式 clip:我没有在原文中确认,不确定。
- 局限
- 每步多一次冻结参考模型前向;KL 是上界,偏保守;实验规模小(少量 prompt)。
- 变体
- —
Flow-GRPO
Liu et al. · 2025 · 2505.05470链内- 思路
- rectified flow 模型(SD3.5-M)。把 ODE 换成同边缘分布的 SDE,得到逐步 Gaussian 策略;action 是每个 SDE 步;奖励是终端(GenEval、OCR、PickScore);advantage 用组内归一化。
- 计算网格
- 训练一步
c ~ prompts for i = 1..G: # G = 24 x_1 ~ N(0, I) SDE 采样 T = 10 步 (σ_t = a√(t/(1-t)), a = 0.7), 存每步 logp_old r_i = R(x_0^i, c) Â_i = (r_i - mean(r)) / std(r) # 广播到这条链的全部 T 步 for i, t in 组 × 全部 T 步: ρ = exp(log π_θ(x_{t+Δt} | x_t, c) - logp_old) L += -min(ρ Â_i, clip(ρ, 1-ε, 1+ε) Â_i) + β KL_t(θ ‖ θ_ref) θ ← θ - η ∇L # 推理仍用 ODE, T = 40- 目标函数
- \[\mathcal J=\mathbb E\Big[\frac1G\sum_{i=1}^{G}\frac1T\sum_{t}\Big(\min\big(\rho_t^i\hat A^i,\operatorname{clip}(\rho_t^i,1\pm\epsilon)\hat A^i\big)-\beta\,D_{\text{KL}}(\pi_\theta\Vert\pi_{\text{ref}})\Big)\Big]\]
- 和其他方法的区别
- 相对 DDPO:
- 模型从 DDPM 换成 rectified flow,用 ODE→SDE 得到 Gaussian 转移(§2.4)。
- baseline 从 per-prompt 历史统计换成同一 prompt 下 \(G=24\) 个样本的组内归一化。
- 加闭式逐步 KL(\(\beta=0.04\) 用于 GenEval / OCR,0.01 用于 PickScore)。
- Denoising Reduction:训练只采 10 步,推理仍 40 步。
- 局限
- SDE 噪声幅度 \(a\) 要调(太小则探索不足);所有步共享 outcome advantage;每组 \(G\times T\) 次前向,更新时同样多的前向 + 反传。
- 变体
- πRL Flow-SDE(2510.25889):同样的 SDE 用在 \(\pi_0\) / \(\pi_{0.5}\) VLA 上,并与环境耦合成双层 MDP。
DanceGRPO
Xue et al. · 2025 · 2505.07818链内- 思路
- 同样是“SDE + 组内 advantage”,统一 diffusion 与 rectified flow,覆盖 T2I / T2V / I2V(SD、FLUX、HunyuanVideo、SkyReels),用多个奖励模型。
- 计算网格
- 训练一步
c ~ prompts; x_K ~ N(0, I) # 组内共享同一个初始噪声 for i = 1..G: # 图像 G = 12 SDE 采样 (SD 50 步 / FLUX、HunyuanVideo 25 步), 存 logp_old for each 奖励模型 m: A_i^m = (r_i^m - μ^m) / σ^m Â_i = Σ_m A_i^m # 先各自归一化再相加 S = 随机保留 60% 的时间步 for i, k in 组 × S: L += -min(ρ Â_i, clip(ρ, 1-ε, 1+ε) Â_i) # ε = 1e-4, 无 KL θ ← θ - η ∇L # 带 CFG 时 cond 与 uncond 一起优化- 目标函数
- \[\mathcal J=\mathbb E\Big[\frac1G\sum_i\frac{1}{|S|}\sum_{k\in S}\min\big(\rho_k^i\hat A^i,\operatorname{clip}(\rho_k^i,1\pm\epsilon)\hat A^i\big)\Big],\quad \hat A^i=\sum_m\frac{r_i^m-\mu^m}{\sigma^m}\]
- 和其他方法的区别
- 相对 Flow-GRPO(两者几乎同时发表,这里比的是机制,不是继承关系):
- 组内样本共享初始噪声(论文称不共享会在视频上导致 reward hacking 和不稳定)。
- 每次只在随机 60% 的时间步上算损失。
- 多奖励时 advantage 先各自归一化再相加。
- 去掉 KL(论文称影响很小)。
- 有 CFG 的模型需要 cond 与 uncond 联合优化,只训 cond 会发散。
- 局限
- 视频上计算很重;clip 很小;不用 KL 时防过优化只能靠共享噪声等技巧。 共享噪声本身不保证消除 reward hacking。
- 变体
- —
MixGRPO
Li et al. · 2025 · 2507.21802链内- 思路
- GRPO 的效率改进:只在一个滑动窗口内用 SDE 采样并计算 ratio / KL,窗口外用确定性 ODE。
- 计算网格
- 训练一步
窗口 W = [l, l + w), w = 4, 总步数 T = 25 (FLUX.1-dev) c ~ prompts for i = 1..G: # G = 12 窗口前: ODE (Euler) 窗口内: SDE (Euler-Maruyama), 存 logp_old 窗口后: ODE; Flash 版用二阶 DPM-Solver++ Â_i = 组内归一化 L = Σ_{i, k ∈ W} -min(ρ Â_i, clip(ρ) Â_i) + β KL_k θ ← θ - η ∇L 每 25 次迭代: l ← l + 1 # 从高噪声段往低噪声段移动- 目标函数
- \[\mathcal J=\mathbb E\Big[\frac1G\sum_i\frac1{w}\sum_{k\in W}\Big(\min\big(\rho_k^i\hat A^i,\operatorname{clip}(\rho_k^i,1\pm\epsilon)\hat A^i\big)-\beta D_{\text{KL},k}\Big)\Big]\]
- 和其他方法的区别
- 相对 DanceGRPO:
- SDE 噪声和损失都只在窗口 \(W\) 内(默认 4 / 25 步),而不是随机 60%。
- 窗口外是 ODE,可以换高阶 solver(Flash)。
- 窗口按 progressive 调度移动:每 25 次迭代前进 1 步,从低 SNR 段走向高 SNR 段。
- 训练时间比 DanceGRPO 少约 50%(Flash 约 71%)。
- 局限
- 窗口大小和移动调度都是启发式;同一时刻只有少数步得到梯度信号。
- 变体
- MixGRPO-Flash。
DPPO
Ren et al. · 2024 · 2409.00588 · 代码链内- 思路
- 机器人扩散策略。每个环境步跑一条去噪链,action 是每个去噪转移 \(a_t^{k-1}\);奖励来自环境;critic 是 \(V(s_t)\);只训最后 \(K'\) 步(§2.2 有完整推导)。
- 计算网格
- 训练一步
for t = 0..T-1 (并行环境): a_t^K ~ N(0, I) for k = K..1: # 前 K-K' 步用冻结 θ a_t^{k-1} ~ N(μ(a_t^k, s_t, k), max(σ_k, 0.1)²) 执行 a_t^0 (action chunk), 得 r_t, s_{t+1}; 存最后 K' 步 logp_old A_t = GAE(r, V_φ(s)) # 只在环境层 for t, k in 最后 K' 步: Â_{t,k} = γ_denoise^(k-1) · A_t # γ_denoise = 0.99 ρ = exp(log π_θft(a_t^{k-1} | a_t^k, s_t) - logp_old) # σ 下界 0.1 L += -min(ρ Â, clip(ρ, 1-ε_k, 1+ε_k) Â) # ε_k 随 k 调度 L_V = (V_φ(s_t) - R_t)²伪代码用源下标 \(k=K,\ldots,1\),因此最后一步权重是 \(\gamma^{k-1}=1\);上方推导用目标下标 \(k=K-1,\ldots,0\),两种写法需相差一位。
- 目标函数
- \[\mathcal L=-\mathbb E_{t,k}\Big[\min\big(\rho_{t,k}\hat A_{t,k},\operatorname{clip}(\rho_{t,k},1\pm\epsilon_k)\hat A_{t,k}\big)\Big],\quad \hat A_{t,k}=\gamma_{\text{denoise}}^{\,k}\,A_t^{\text{GAE}}\]
- 和其他方法的区别
- 相对 DDPO:
- 把单层去噪 MDP 嵌进环境 MDP,每个环境步一条链,奖励来自环境。
- 加 critic \(V(s_t)\)(只看环境状态)和 GAE。
- advantage 在同一条链内共享,再乘 \(\gamma_{\text{denoise}}^k\)。
- 只训最后 \(K'\) 步(公开 Gym / Robomimic 配置:\(K=20,\ K'=10\))。
- 采样和算 log-prob 各有一个 \(\sigma\) 下界(公开配置均为 0.1)。
- clip 系数随去噪步调度(Robomimic 配置 0.001→0.01;Gym 配置两端都是 0.01,即不调度)。
- 局限
- on-policy,环境步昂贵时样本效率低;超参多(\(K'\)、\(\gamma_{\text{denoise}}\)、两个 \(\sigma\) 下界、clip 调度);墙钟时间约为 Gaussian PPO 的 2 倍。
- 变体
- NCDPO(2505.10482):存下整条噪声序列,更新时确定性重算 \(a^0\),在输出上放 Gaussian 做 PPO,梯度沿全链反传。GenPO(2505.18763):doubled dummy action 构造可逆扩散,拿到精确边缘 likelihood。
ReinFlow
Zhang, Yu, Su, Wang · 2025 · NeurIPS 2025 · 2505.22094链内- 思路
- 少步 flow policy(ReFlow、Shortcut,1–4 步)。每步加一个可学习噪声 \(\sigma_{\theta'}\),让链变成 Gaussian Markov 过程,链的联合 likelihood 精确可算,然后跑 PPO。
- 计算网格
- 训练一步
for t: a^0 ~ N(0, I) for k = 0..K-1: # K = 1..4 a^{k+1} = a^k + v_θ(t_k, a^k, s) Δt + σ_θ'(t_k, a^k, s) · ε 执行 a^K, 得 r_t; 存整链 logp_old A_t = GAE(r, V_φ) log π(chain) = Σ_k log N(a^{k+1}; a^k + v_θ Δt, diag σ_θ'²) # 下式演示整链 surrogate;原整理尚未确认论文实现的 clip 粒度 ρ_chain = exp(log π_{θ,θ'}(chain) - logp_old) L_joint = -min(ρ_chain A, clip(ρ_chain) A) - c_ent · H + L_V 更新 θ, θ', φ 部署: 丢弃 σ_θ', 回到确定性 flow- 目标函数
- \[\pi(a^{k+1}\mid a^k,s)=\mathcal N\big(a^k+v_\theta(t_k,a^k,s)\Delta t,\ \operatorname{diag}\sigma_{\theta'}^2(t_k,a^k,s)\big),\quad \log\pi(a^{0:K}\mid s)=\log p(a^0)+\sum_k\log\pi(a^{k+1}\mid a^k,s)\]
此处 ReinFlow 沿生成方向使用递增下标 a⁰→aᴷ,a⁰ 为初始噪声;与 DPPO 的递减下标约定不同。固定初始噪声先验在策略 ratio 中相消。
- 和其他方法的区别
- 相对 DPPO:
- 模型换成少步 flow,步数 1–4。
- 探索噪声由可学习网络 \(\sigma_{\theta'}(t_k,a^k,s)\) 给出(复用预训练策略的特征),而不是固定后验方差加下界。
- 加熵正则。
- 部署时丢弃噪声网络。
- 论文写的是整链联合概率;ratio 是逐步还是整链 clip,我没有在原文中确认,不确定。
- 局限
- 边缘分布不再保证等于预训练 prior;噪声上下界要按关节设定;需要事先有少步模型。
- 变体
- πRL Flow-Noise:同样思路用于 \(\pi_0\) / \(\pi_{0.5}\)。
OGPO
Patil, Nakamoto, …, Levine, Gupta, Simchowitz · 2026 · 2605.03065链内- 思路
- 仍是双层 MDP,但在环境转移处切开:环境层用 off-policy TD 学 \(Q\);去噪层是纯计算、可以无限重采的 inner MDP,在上面跑 PPO,把 \(Q(s,a_0)\) 当链的终端奖励,ratio 是整链乘积。
- 计算网格
- 训练一步
与环境交互: a_{t,K:0} ~ π_θ(· | s_t), 存 (s, a_0, r, s') 到 replay D critic: Q_φ ← TD on D, target = r + γ · mean_i Q_targ(s', a'^(i)) for s ~ D: 采 N 条链 a^(j)_{K:0} ~ π_θ̄(· | s) # 只算生成器, 不碰环境 V̂(s) = mean_j Q_targ(s, a_0^(j)) Â_j = Q_targ(s, a_0^(j)) - V̂(s) # 可用多 critic 保守化 ρ_j = Π_k π_θ(a_{k-1}^(j) | s, a_k^(j)) / π_θ̄(·) L += -min(ρ_j Â_j, clip(ρ_j, 1-ε, 1+ε) Â_j) OGPO+: L += λ_bc · L_BC(成功轨迹 buffer)- 目标函数
- \[\ell_{\text{PPO}}=\min\big(\rho\hat A,\operatorname{clip}(\rho,1\pm\epsilon)\hat A\big),\quad \rho=\prod_{k=1}^{K}\frac{\pi_\theta(a_{t,k-1}\mid s_t,a_{t,k})}{\pi_{\bar\theta}(a_{t,k-1}\mid s_t,a_{t,k})},\quad \hat A=Q_{\text{targ}}(s_t,a_{t,0})-\hat V\]
- 和其他方法的区别
- 相对 DPPO:
- advantage 来自 off-policy \(Q\) 而不是 on-policy GAE:\(\hat A=Q(s,a_0)-\hat V\),\(\hat V\) 是同一状态下 \(N\) 条链的 \(Q\) 均值,相当于 GRPO 式组内 baseline。
- ratio 从逐步变成整链乘积,整条链一个标量 advantage。
- 去噪链可以在 replay 状态上任意重采,不需要新的环境交互。
- 稳定化:成功 buffer 上的 BC、多 critic 符号一致才更新的保守 advantage、TD target 多采几个 next action 降方差。
- 局限
- critic 会被策略利用(论文专门处理);\(K\) 大时乘积 ratio 很容易被 clip;需要 replay 和多 critic。论文称样本效率约为 DPPO 的 10 倍。
- 变体
- OGPO+(成功 buffer BC)、OGPO+CA(保守 advantage)。
4噪声空间:只把 \(x_K\) 当 action
这一泳道里生成器完全冻结,所有去噪格都是灰色,只有最上面的噪声格是实心。likelihood 就是噪声策略自己的 Gaussian,和去噪链无关。
Noise PPO
Miao, Loh, Poupart, Kothawade · 2025 · 2506.12036噪声空间- 思路
- 冻结扩散模型;policy 是 prompt 条件的初始噪声分布 \(\pi_\theta(x_K\mid c)=\mathcal N(\mu_\theta(c),\Sigma_\theta(c))\);单步 MDP;奖励是美学 / PickScore / HPSv2 加权和。
- 计算网格
- 训练一步
c ~ prompts x_K ~ π_θold(· | c) # 输出头零初始化 ⇒ 初始即 N(0, I) x_0 = Sampler_frozen(x_K, c) # LCM 4 步 / SDXL-Turbo r = 0.2·Aesthetic + 0.4·PickScore + 0.4·HPSv2 Â = r - b # baseline 具体形式: 不确定 ρ = π_θ(x_K | c) / π_θold(x_K | c) L = -min(ρ Â, clip(ρ) Â) + γ1 KL(π_θ(·|c) ‖ N(0,I)) - γ2 H(π_θ(·|c)) θ ← θ - η ∇L- 目标函数
- \[\min_\theta\ -\mathcal J_{\text{PPO}}(\theta)+\gamma_1\,\mathrm{KL}\big(\pi_\theta(\cdot\mid c)\,\Vert\,\mathcal N(0,I)\big)-\gamma_2\,\mathcal H\big(\pi_\theta(\cdot\mid c)\big)\]
- 和其他方法的区别
- 相对 DDPO:
- action 从“每个去噪转移”缩到“只有 \(x_K\)”,去噪链变成冻结的确定性函数。
- MDP 从 \(K\) 步变成 1 步。
- KL 的对象从预训练去噪器换成标准高斯 prior。
- 不需要存轨迹,也不需要穿过扩散模型反传。
- 局限
- 受限于冻结生成器可达的输出;论文观察到更长采样过程下收益明显减小,这是所报告设置中的结果,不是关于所有采样器的定理;初始噪声维度也可能很高。
- 变体
- ReNO(2406.04312):推理时对单个 prompt 用可微奖励做噪声梯度上升,不是 RL。
DSRL
Wagenmaker et al. · 2025 · CoRL 2025 · 2506.15799噪声空间- 思路
- 冻结扩散策略;policy 是 latent noise 上的 \(\pi^W(w\mid s)\);执行 \(a=\pi_{\text{dp}}(s,w)\)(DDIM 确定性采样);off-policy SAC。
- 计算网格
- 训练一步
w ~ π^W_ψ(· | s_t), w ∈ [-b, b]^d # 在线 b ∈ [1, 3] a_t = π_dp(s_t, w) # 冻结, DDIM σ = 0 执行 a_t, 存 (s, a, w, r, s') DSRL-SAC: Q^W(s, w) ← TD; actor 最大化 Q^W - α log π^W DSRL-NA: Q^A(s, a) ← TD # 可用任意来源的 (s, a) 数据 Q^W(s, w) ← 回归到 Q^A(s, π_dp(s, w)) actor: max_ψ Q^W(s, π^W_ψ(s))- 目标函数
- \[\max_\psi\ \mathbb E_{s}\big[Q^W(s,\pi^W_\psi(s))\big],\qquad Q^W(s,w)\approx Q^A\big(s,\pi_{\text{dp}}(s,w)\big)\ \ (\text{NA})\]
- 和其他方法的区别
- 相对 Noise PPO(两者独立提出,比的是机制):
- 从单步 bandit 变成多步环境 MDP,每个环境步选一次噪声。
- on-policy PPO 换成 off-policy SAC。
- 不加到 \(\mathcal N(0,I)\) 的 KL,而是把 \(w\) 截在 \([-b,b]^d\)。
- NA 变体在动作空间学 \(Q^A\) 再蒸馏到噪声空间,利用“多个 \(w\) 映到同一 \(a\)”的结构,而且能吃任意来源的动作数据。
- 局限
- 能改到什么程度,取决于冻结的 BC 生成器和允许的 latent 范围。OGPO 的实验也讨论了 base 覆盖不足时的问题。另外还需要 critic,噪声维度通常和动作块一样大。这里说的是生成器能产生哪些输出,不是高斯分布在数学上的支持集。
- 变体
- DSRL-SAC、DSRL-NA。
5likelihood-free / 回归:不在链上算 \(\log\pi\)
这一泳道的去噪格大多是空心:参数在训练,但用的是回归 / flow-matching 损失或 pathwise 梯度,不是 likelihood ratio。
Diffusion-DPO
Wallace et al. · 2023 · 2311.12908likelihood-free- 思路
- 没有 rollout 奖励;数据是离线偏好对 \((x_0^w,x_0^l)\);用去噪损失差(ELBO 近似)代替 \(\log\pi\) 差做 DPO。
- 计算网格
- 训练一步
(c, x_0^w, x_0^l) ~ 偏好数据集 (Pick-a-Pic) k ~ U(1..K); ε^w, ε^l ~ N(0, I) x_k^w = q(x_0^w, k, ε^w); x_k^l = q(x_0^l, k, ε^l) # 前向加噪 d_w = ‖ε^w - ε_θ(x_k^w, k, c)‖² - ‖ε^w - ε_ref(x_k^w, k, c)‖² d_l = ‖ε^l - ε_θ(x_k^l, k, c)‖² - ‖ε^l - ε_ref(x_k^l, k, c)‖² L = -log σ(-β T ω(λ_k) · (d_w - d_l)) θ ← θ - η ∇L- 目标函数
- \[\mathcal L=-\mathbb E\log\sigma\Big(-\beta T\omega(\lambda_k)\big[d_w-d_l\big]\Big)\]
- 和其他方法的区别
- 相对 DDPO:
- 不采样、不在线打分,数据是固定的偏好对。
- 不需要链上 \(\log\pi\),用去噪损失差近似 log-likelihood 差。
- 到 \(\epsilon_{\text{ref}}\) 的隐式 KL 来自 DPO 推导。
- 每次只训一个随机 \(k\),\(x_k\) 来自前向加噪。
- 局限
- 需要成对偏好;离线数据的分布偏移;ELBO 近似带来偏差。
- 变体
- D3PO(2311.13231,逐步 DPO,假设整链偏好等于终端偏好);SPO(2406.04314,逐步采候选 + step-aware 偏好模型);PhysMoDPO(2603.13228,动作生成 + 全身控制器回路的 DPO,G1 真机)。
DiffusionNFT
Zheng et al. · 2025 · 2509.16117likelihood-free- 思路
- 在前向过程上做 online RL:用任意采样器生成,把奖励归一化成 \(r\in[0,1]\),对加噪后的样本做“正 / 负隐式策略”的 flow-matching 回归,不需要 \(\log\pi\)。
- 计算网格
- 训练一步
c ~ prompts; 采 G = 24 个 x_0 ~ π_θold # 任意 solver (如二阶 ODE 40 步), 无 CFG r_raw = R(x_0, c) r = 0.5 + 0.5 · clip((r_raw - mean_c(r_raw)) / Z, -1, 1) for each x_0: t ~ U; ε ~ N(0, I) x_t = α_t x_0 + σ_t ε; v = α̇_t x_0 + σ̇_t ε v⁺ = (1-β) v_old(x_t) + β v_θ(x_t) v⁻ = (1+β) v_old(x_t) - β v_θ(x_t) L += r ‖v⁺ - v‖² + (1-r) ‖v⁻ - v‖² θ ← θ - η ∇L; θ_old ← η_i θ_old + (1-η_i) θ # EMA- 目标函数
- \[\mathcal L(\theta)=\mathbb E\big[r\,\lVert v^+_\theta(x_t,c,t)-v\rVert^2+(1-r)\,\lVert v^-_\theta(x_t,c,t)-v\rVert^2\big]\]
- 和其他方法的区别
- 相对 Flow-GRPO:
- 不算 \(\log\pi\),不需要 SDE,rollout 可用任意(ODE、高阶)solver。
- 训练在前向加噪的随机 \(t\) 上,不在反向链的转移上。
- 组内 advantage 变成权重 \(r\in[0,1]\),分别拉动正、负隐式策略。
- 没有 ratio clip,稳定性靠 \(\beta\) 和 \(\theta_{\text{old}}\) 的 EMA。
- CFG-free。
- 局限
- 没有显式 trust region;归一化尺度 \(Z\) 要选;按单样本加权,长 horizon 的 credit 要自己构造。论文报告 GenEval 约 1k 步到 0.98,FlowGRPO 5k+ 步到 0.95。
- 变体
- —
FPO
McAllister et al. · 2025 · 2507.21053likelihood-free- 思路
- 单层 PPO:每个环境步一个 action,即整个最终动作 \(a_t\);ratio 由条件 flow-matching 损失差构造;采样器是黑盒。
- 计算网格
- 训练一步
rollout: a_t = Sampler_θold(s_t) # 任意采样器 / 步数, 可确定性 存 N_mc = 8 对 (τ_i, ε_i); 执行 a_t 得 r_t A_t = GAE(r, V_φ) for minibatch: ℓ_θ(i) = CFM 损失 of v_θ at (a_t, τ_i, ε_i) # 插值约定以原文为准 ℓ_old(i) = CFM 损失 of v_θold at 同一 (τ_i, ε_i) ρ̂ = exp(-mean_i (ℓ_θ(i) - ℓ_old(i))) L = -min(ρ̂ A_t, clip(ρ̂, 1-ε, 1+ε) A_t) + L_V- 目标函数
- \[\hat\rho^{\text{FPO}}(\theta)=\exp\Big(-\frac1{N_{\text{mc}}}\sum_{i=1}^{N_{\text{mc}}}\big(\ell_\theta(\tau_i,\epsilon_i)-\ell_{\theta_{\text{old}}}(\tau_i,\epsilon_i)\big)\Big)\]
- 和其他方法的区别
- 相对 DPPO:
- action 从“每个去噪转移”变成“整个 \(a_t\)”,回到单层 MDP。
- ratio 用 CFM 损失差(ELBO 意义)代替精确的逐步 likelihood。
- 采样器任意,可以是确定性的。
- critic 与 GAE 不变。
- 局限
- ratio 有偏;MC 估计带来方差(默认 \(N_{\text{mc}}=8\),论文称 \(N_{\text{mc}}=1\) 也优于 Gaussian PPO);图像微调时 CFG 误差会在 RL 迭代中累积。
- 变体
- —
ReFL / DRaFT / AlignProp(对照)
Xu et al. 2023 · 2304.05977;Clark et al. 2023 · 2309.17400;Prabhudesai et al. 2023 · 2310.03739pathwise- 思路
- 如果奖励可微,可以直接沿采样过程反传 \(\nabla_\theta r(x_0(\theta))\)。这里主要按梯度怎么求,把它和 likelihood-ratio policy gradient 分开讨论。
- 计算网格
- 训练一步
c ~ prompts; x_K ~ N(0, I) with no_grad: 去噪到 k_stop # ReFL: 随机较晚的一步; DRaFT-K: 只留最后 K 步; AlignProp: 随机截断 with grad: 从 k_stop 去噪到 x_0 # ReFL: 一步预测 x̂_0 r = R_diff(x_0, c) θ ← θ + η ∇_θ r # gradient checkpointing / LoRA- 目标函数
- \[\max_\theta\ \mathbb E_{c,\,x_K}\big[r\big(x_0(\theta;x_K,c),c\big)\big],\qquad \nabla_\theta r=\frac{\partial r}{\partial x_0}\frac{\partial x_0}{\partial\theta}\]
- 和其他方法的区别
- 相对 DDPO:
- 梯度估计从 score-function 换成 pathwise,通常能降低方差。
- 不需要 \(\log\pi\),也不需要随机采样器。
- 要求 \(r\) 对 \(x_0\) 可微。
- 三者在反传截断等设计上不同:ReFL 一步,DRaFT-K 最后 K 步(DRaFT-LV 在 K=1 时多次加噪降方差),AlignProp 随机截断。
- 局限
- 显存随反传步数增长;reward hacking 严重;奖励不可微时无法使用。
- 变体
- DRaFT-K、DRaFT-LV。
Off-policy Q 对照:Diffusion-QL / DIPO / QSM / IDQL
2208.06193 · 2305.13122 · 2312.11752 · 2304.10573likelihood-free- 思路
- 先学 \(Q(s,a)\),再用不同方式把扩散策略推向高 \(Q\),都不需要链上 likelihood。
- 计算网格
- 训练一步
Q_φ ← TD on replay D Diffusion-QL: L = L_BC(θ) - α Q_φ(s, a_0(θ)) # 沿链反传 ∇_a Q DIPO: a' = a + η ∇_a Q(s, a); 用 (s, a') 做扩散 BC QSM: 通过 Q-score matching 目标联系 score 与 Q 梯度(示意;噪声 / 温度权重见原文) IDQL: 从 BC 扩散策略采 N 个候选, 按 IQL 隐式权重重采样- 目标函数
- \[\text{Diffusion-QL:}\ \ \min_\theta\ \mathcal L_{\text{BC}}(\theta)-\alpha\,\mathbb E_{s}\big[Q_\phi(s,a_0(\theta;s))\big]\]
- 和其他方法的区别
- 相对 DPPO:
- 不需要 likelihood。
- critic 从 \(V(s)\) 换成 \(Q(s,a)\),而且 \(Q\) 对动作的梯度直接参与更新(Diffusion-QL、DIPO、QSM)。
- on-policy 换成 off-policy。
- 局限
- critic 质量决定上限;高维动作上 \(Q\) 难学;DPPO 论文在难任务上报告这些方法弱于 DPPO。
- 变体
- DACER(2405.15177)、PA-RL(2412.06685)。
6链外 / 输出:在 \(x_0\) 之后加残差
生成器整列冻结,只有残差行是实心。likelihood 是残差 actor 自己的 Gaussian。
Residual RL:ResiP / Policy Decorator
Ankile et al. 2024 · 2407.16677;Yuan et al. 2024 · 2412.13630链外- 思路
- 冻结 base 扩散策略,学一个小 Gaussian 残差 \(\Delta\),执行 \(a^{\text{base}}+\lambda\Delta\);残差是 RL action。
- 计算网格
- 训练一步
for t: 若到重规划点: a^base_{t:t+32} = π_dp(s_t) # 冻结, DDIM 4 步, 执行 8 步 Δ_t ~ π_res(· | s_t, a^base_t) # 每个控制步 执行 a^base_t + 0.1 · Δ_t, 得 r_t A = GAE(r, V_φ) # ResiP: PPO L = PPO-clip(π_res) + L_V # Policy Decorator: Δ = α·tanh(·), SAC; # 以概率 ε 用 base+Δ, 否则只用 base; ε 由 0 线性增到 1- 目标函数
- \[a_t=a_t^{\text{base}}+\lambda\,\Delta_t,\quad \Delta_t\sim\pi_\phi(\cdot\mid s_t,a_t^{\text{base}}),\quad \mathcal L=-\mathbb E\big[\min(\rho_tA_t,\operatorname{clip}(\rho_t,1\pm\epsilon)A_t)\big]\]
- 和其他方法的区别
- 相对 DSRL:
- action 空间从噪声 \(w\) 换成输出偏移 \(\Delta\)。
- 能移动到冻结生成器映射之外的动作,但被缩放系数(ResiP 0.1)或上界 \(\alpha\)(Policy Decorator)限制在局部。
- ResiP 用 PPO,Policy Decorator 用 SAC 加渐进式探索调度。
- 局限
- 有界小残差主要做局部修正;收益保留在残差网络中,不进入 base 参数。残差可以按原始控制步决策,比 base 重规划更频繁。
- 变体
- EXPO(OGPO 论文中的 residual 基线)。
7Image / video 与 robotics:哪些量能直接对照?
看完这些方法,我们再具体比较一下 image/video 和 robotics。主要还是这几个问题:生成什么,奖励从哪里来,ratio 是对哪个随机变量算的,以及怎么做跨时间的 credit assignment? 这里比较的是方法的写法,不把不同 benchmark 的分数拿来排名。
Image / video
一次生成中,条件 \(c\) 是固定的。\(x_0\) 可以是一张图,也可以是一整段视频,生成完再给奖励 \(R(x_0,c)\)。视频当然有时间维度,但如果中间没有执行动作、重新观测和决策,多生成几帧并不会多出一层环境 MDP。
Robotics
去噪链生成动作或动作块 \(A_j\),执行后得到新的状态 \(s_{j+1}\),再用它作为下一条链的条件。也就是说,下一次生成取决于上一次的输出和环境。这里有三个长度要分开:\(K\) 是生成的计算步数,\(H\) 是预测多少个动作,\(h\) 是实际执行多少个动作。
7.1 同一个 score-function 恒等式,两个不同的回报问题
单次图像 / 视频生成可写成下面的终端奖励问题。随机初始噪声的分布固定时,梯度只落在可训练的条件转移上;这里暂不加入 baseline、PPO clipping 和 KL。
机器人里,设最终动作分布是 \(\pi_\theta(A_j\mid s_j)\)。policy gradient 里乘的 advantage,要估计这个决策对之后环境回报的影响。实现时,还可以把 score-function 项展开到去噪层。DPPO 具体用了 \(\gamma_{\mathrm{denoise}}^k A_j\) 这样的估计和加权,所以光把图像的 \(R\) 换成当前步的 \(r_j\),还得不到同一个更新。
上面的状态期望要用和折扣目标对应的访问分布。图像生成里,我们经常把最终分数分给整条链;控制里还要估计这次动作对未来状态有什么影响。critic 帮忙估计的就是这个量,并不是只要做 robotics 就一定得有 critic。
7.2 Action chunking:先写清楚环境一步有多长
设第 \(j\) 次重规划生成长度 \(H\) 的动作块,只执行前 \(h_j\le H\) 步;下次重规划前不再调用生成器。令 \(n_j\) 是该块开始的原始控制步,\(b_j=0\) 表示真正终止,否则为 1。若 \(\gamma\) 按原始控制步定义,则以重规划为单位的奖励和 bootstrap 应为:
这里的 \(\lambda\) 是按每次重规划定义的。也可以把每个 chunk 当作一步来定义折扣,不过时间尺度就变了。算 bootstrap 时,还要区分时间上限截断和真正终止。后面 \(H-h_j\) 个动作没有执行,也就没有给这个 chunk 产生直接的环境奖励,不能把预测出来的动作当作已经执行过来累计回报。这里给出的是一种 chunk-level 写法,具体实现可能用别的约定。
7.3 为什么“同 prompt 组内比较”不能原样搬成“同 batch 比较”
Flow-GRPO / DanceGRPO 在同一个条件 \(c\) 下采一组样本,比较的是这个条件下生成得好不好。但机器人的一个 batch 里,\(s_1,s_2,\ldots\) 可能来自不同难度、不同进度的状态。如果直接把这些回报放在一起归一化,就会混淆“动作选得好”和“起始状态本来就好”。
一种办法是恢复到同一个状态,采几条后续轨迹来比较;另一种是在同一状态采几个候选动作,让 critic 估计它们的回报。前者需要能 reset 或 branching 的环境,后者则要看 critic 准不准,尤其是在分布外动作上。OGPO 的同状态候选链比较走的是后一条路。另外,上面两式的归一化也不一样:只减均值和再除以标准差,会得到不同的更新尺度。
7.4 “有 log-prob”到底是哪个 log-prob?
每步 Gaussian 的密度都能算,并不意味着最终动作的边缘密度也能算。存下整条潜变量轨迹,可以算 joint ratio;但要算最终动作的密度,还得把中间变量积分掉。所以,每步分别 clip、把整链 ratio 乘起来再 clip、对最终动作边缘分布做 PPO,是三个不同的目标。
读 DPPO、ReinFlow、OGPO、GenPO 时,这一点值得到代码里确认。固定的初始噪声先验可以在 ratio 里消掉;如果像 Noise PPO / DSRL 那样连噪声策略也训练,优化的对象就换了。FPO 的 CFM-loss ratio 则是 surrogate,和前面两种精确密度比要分开看。
7.5 对照实验应该对齐什么?
| 比较维度 | Image / video | Robotics |
|---|---|---|
| 采样预算 | prompt 数、每 prompt 样本数 G、分辨率 / 帧数、采样步数 K、reward 调用数 | 环境交互步数、reset 数、执行步长 h、候选动作数、去噪计算量 |
| 优化预算 | 实际更新的去噪步数、前后向次数、reference-model 调用、显存与 wall-clock | 同样的模型计算,加 critic TD / GAE 成本;需单列环境采集时间 |
| 训练 / 推理分布 | SDE 训练与 ODE 推理、CFG、分辨率和采样步数改变 | 移除探索噪声、动作块执行方式、闭环频率及状态分布改变 |
| 结果与失败 | 独立 reward / 人类偏好、prompt 泛化、多样性和 reward hacking | 成功率、回报、完成时间、扰动恢复、越界动作及 critic exploitation |
所以看到“更省”时,我会先看省的是什么:训练 FLOPs、显存、reward 调用,还是环境交互。跑一次图像 reward model,和真实机器人失败后重新复位一次,成本显然不一样。上表列的是我会比较的几个方面,各个方法的具体配置还是看对应论文。
8两两对比器
选两个方法,并排看它们的计算网格,下表逐项列出差异,有差异的行会高亮。默认是 DDPO 对 DPPO:从单层去噪 MDP 到双层 MDP 到底改了哪几处。
DDPO
DPPO
| 维度 | DDPO | DPPO |
|---|
高亮行表示两者在该维度上不同。表中内容与对应卡片一致。
9总对比表
“likelihood”指是否需要策略在去噪链(或噪声 / 残差)上的精确 log-prob。“on/off”指策略更新所用数据。
| 方法 | 领域 | 优化对象 | likelihood | critic | on / off | 奖励 | 主要局限 |
|---|---|---|---|---|---|---|---|
| 链上 likelihood-ratio(score function) | |||||||
| DDPO | 图像 | 整条链(逐步 ratio) | 是 | 否 | on | 黑盒终端标量 | 方差大、无 KL 易过优化 |
| DPOK | 图像 | 整条链 + 逐步 KL | 是 | 可选 \(V(x_k,c)\) | on | 学习的偏好奖励 | 规模小、KL 上界保守 |
| Flow-GRPO | 图像 | 整条链(SDE,减步训练) | 是(SDE) | 否(组内) | on | GenEval / OCR / 偏好 | SDE 噪声需调;outcome-only credit |
| DanceGRPO | 图像 / 视频 | 约 60% 的时间步 | 是(SDE) | 否(组内) | on | 多奖励,advantage 相加 | 计算重;依赖共享噪声等技巧 |
| MixGRPO | 图像 | 滑动窗口内的步 | 是(窗口内 SDE) | 否 | on | 偏好 | 窗口调度是启发式 |
| DPPO | 机器人 | 最后 \(K'\) 步(双层 MDP) | 是 | \(V(s_t)\) | on | 环境稠密 / 稀疏回报 | 样本效率低;超参多 |
| ReinFlow | 机器人 | 整条链 + 噪声网络 | 是(注噪) | 是 | on | 环境回报 | 边缘分布偏离 prior |
| πRL | VLA | 整条链(Noise / SDE) | 是 | 是 | on | 任务成功 | 大模型 rollout 成本 |
| GenPO | 机器人 | 可逆扩散整体 | 是(精确边缘) | 是 | on | 环境回报 | 动作维度加倍;结构受限 |
| OGPO | 机器人 | 整条链(乘积 ratio) | 是 | \(Q\)(off-policy) | 混合 | \(Q\) 作终端奖励 | critic 被利用;需保守化 |
| 链上 pathwise / 混合 | |||||||
| ReFL / DRaFT / AlignProp | 图像 | 整条链或截断的最后 K 步 | 否 | 否 | on(生成即训) | 可微奖励 | 奖励必须可微;显存;hacking |
| NCDPO | 机器人 | 整条链(BPTT)+ 输出 Gaussian | 输出头 | 是 | on | 环境回报 | 显存随 \(K\) 增长 |
| Diffusion-QL / DIPO / QSM / DACER / IDQL / PA-RL | 机器人 | 整条链 / 动作选择 | 否 | \(Q\) | off | 环境回报 | critic 质量决定上限 |
| 不依赖链上 likelihood | |||||||
| FPO | 机器人(图像试过) | 整个模型 | 否(CFM 替代) | 是 | on | 环境回报 | ratio 有偏;CFG 下不稳 |
| DiffusionNFT | 图像 | 整个模型(前向过程) | 否 | 否 | online | 归一化到 [0,1] | 无显式 trust region |
| Diffusion-DPO / D3PO / SPO | 图像 | 整个模型 / 逐步 | 否(ELBO 近似) | 否 | off / 迭代 | 成对偏好 | 需偏好数据;离线分布偏移 |
| 噪声空间 / 输出残差(生成器冻结) | |||||||
| Noise PPO | 图像 | 初始噪声分布(单步 MDP) | 噪声策略的 Gaussian | 原整理未确认 | on | 美学 / 偏好 | 多步推理时收益被洗掉 |
| DSRL | 机器人 | 初始噪声 \(w\) | 噪声策略的 | \(Q^W\) / \(Q^A\) | off | 环境回报 | 受冻结生成器可达输出限制 |
| ResiP | 机器人 | 输出残差 | 残差 Gaussian | 是 | on | 环境回报 | 只能局部修正 |
| Policy Decorator | 机器人 | 有界输出残差 | 残差的 | \(Q\) | off | 环境回报 | 只能局部修正 |
参考文献
文献编号、标题与作者沿用 2026-10-07 的原始整理;年份按 arXiv 首次提交时间计。文中具体数值与配置均为所引论文或代码的设定,不是通用默认值。
- Black et al. Training Diffusion Models with Reinforcement Learning (DDPO). 2023. arXiv:2305.13301
- Fan et al. DPOK: Reinforcement Learning for Fine-tuning Text-to-Image Diffusion Models. 2023. arXiv:2305.16381
- Zhang et al. Large-scale Reinforcement Learning for Diffusion Models. 2024. arXiv:2401.12244
- Wallace et al. Diffusion Model Alignment Using Direct Preference Optimization. 2023. arXiv:2311.12908
- Yang et al. Using Human Feedback to Fine-tune Diffusion Models without Any Reward Model (D3PO). 2023. arXiv:2311.13231
- Liang et al. Aesthetic Post-Training Diffusion Models from Generic Preferences with Step-by-step Preference Optimization (SPO). 2024. arXiv:2406.04314
- Xu et al. ImageReward (ReFL). 2023. arXiv:2304.05977
- Clark et al. Directly Fine-Tuning Diffusion Models on Differentiable Rewards (DRaFT). 2023. arXiv:2309.17400
- Prabhudesai et al. Aligning Text-to-Image Diffusion Models with Reward Backpropagation (AlignProp). 2023. arXiv:2310.03739
- Liu et al. Flow-GRPO: Training Flow Matching Models via Online RL. 2025. arXiv:2505.05470
- Xue et al. DanceGRPO: Unleashing GRPO on Visual Generation. 2025. arXiv:2505.07818
- Li et al. MixGRPO: Unlocking Flow-based GRPO Efficiency with Mixed ODE-SDE. 2025. arXiv:2507.21802
- Zheng et al. DiffusionNFT: Online Diffusion Reinforcement with Forward Process. 2025. arXiv:2509.16117
- Miao et al. A Minimalist Method for Fine-tuning Text-to-Image Diffusion Models (Noise PPO). 2025. arXiv:2506.12036
- Eyring et al. ReNO: Reward-based Noise Optimization. 2024. arXiv:2406.04312
- Ren et al. Diffusion Policy Policy Optimization (DPPO). 2024. arXiv:2409.00588,代码
- Yang et al. Fine-tuning Diffusion Policies with Backpropagation Through Diffusion Timesteps (NCDPO). 2025. arXiv:2505.10482
- Zhang et al. ReinFlow: Fine-tuning Flow Matching Policy with Online Reinforcement Learning. 2025. arXiv:2505.22094
- McAllister et al. Flow Matching Policy Gradients (FPO). 2025. arXiv:2507.21053
- Ding et al. GenPO: Generative Diffusion Models Meet On-Policy Reinforcement Learning. 2025. arXiv:2505.18763
- Chen et al. πRL: Online RL Fine-tuning for Flow-based Vision-Language-Action Models. 2025. arXiv:2510.25889
- Patil et al. OGPO: Sample Efficient Full-Finetuning of Generative Control Policies. 2026. arXiv:2605.03065
- Wagenmaker et al. Steering Your Diffusion Policy with Latent Space Reinforcement Learning (DSRL). 2025. arXiv:2506.15799
- Ankile et al. From Imitation to Refinement: Residual RL for Precise Assembly (ResiP). 2024. arXiv:2407.16677
- Yuan et al. Policy Decorator: Model-Agnostic Online Refinement for Large Policy Model. 2024. arXiv:2412.13630
- Wang et al. Diffusion-QL. 2022. arXiv:2208.06193;Hansen-Estruch et al. IDQL. 2023. arXiv:2304.10573;Yang et al. DIPO. 2023. arXiv:2305.13122;Psenka et al. QSM. 2023. arXiv:2312.11752;Wang et al. DACER. 2024. arXiv:2405.15177;Mark et al. PA-RL. 2024. arXiv:2412.06685
- Schulman et al. PPO. 2017. arXiv:1707.06347;Schulman et al. GAE. 2015. arXiv:1506.02438
- Shao et al. DeepSeekMath (GRPO). 2024. arXiv:2402.03300;Ahmadian et al. RLOO. 2024. arXiv:2402.14740;Hu et al. REINFORCE++. 2025. arXiv:2501.03262
- Han et al. ReinDiffuse. 2024. arXiv:2410.07296;Yue et al. RLPF. 2025. arXiv:2506.12769;PhysMoDPO. 2026. arXiv:2603.13228