Diffusion-DRF: Differentiable Reward Flow for Video Diffusion Fine-Tuning

Authors: Yifan Wang, Yanyu Li, Sergey Tulyakov, Yun Fu, Anil Kag Affiliations: Northeastern University, Snap Inc. arXiv: 2601.04153

1. Motivation(研究动机)

现有方法的问题

文本到视频(T2V)生成领域的 post-training 对齐方法(DPO、RLHF 等)依赖非可微的偏好信号,具体体现在两类缺陷:

  1. 信号质量差:现有奖励来自人工标注的成对偏好数据,或从偏好数据中学出的代理奖励模型(surrogate reward model)。这些信号通常只给出全局单一分数,缺乏帧级别、token 级别的精细定位,无法指出”哪一帧、哪一时刻出了问题”。
  2. 奖励黑客(reward hacking)与训练崩溃:由于奖励模型本身有偏且易被利用,模型会学到走捷径(shortcut)以刷高奖励分,而不是真正改善视频质量。典型失效模式包括:语义/物理反馈单独使用时,模型倾向”洗掉细节”让画面模糊以规避惩罚;PickScore 等图像奖励在 4000 步后视频质量严重退化。

本文要解决的问题

  • 如何在不依赖任何单独训练的奖励模型,也不需要人工偏好数据集的情况下,对视频扩散模型进行有效的可微奖励微调?
  • 如何提供帧级别、token 感知的时序梯度,让优化信号更细粒度、更稳定,从而同时提升文本-视频对齐度和物理真实性,同时抑制奖励黑客?

为什么值得研究

VLM(视觉语言模型)具有广泛的、组合式的视频语义理解能力,天然可作为”零样本奖励源”。将其 logit 级别输出转化为可微梯度,是将 LLM RLAIF 范式迁移到视频扩散领域的关键缺失环节。


2. Idea(核心思想)

核心洞见:冻结的 off-the-shelf VLM 可以充当视频扩散微调的无参数批评者(training-free critic)。通过将 VQA 式问答的 logit 概率差作为损失,并沿扩散去噪链反向传播梯度,可以直接优化视频扩散模型,无需任何奖励模型微调或偏好数据集。

关键创新(3 句话)

  1. 将 VLM 的 logit 级别响应(“Yes”/“No”词元概率)转化为可微 VQA 损失,实现从 VLM 到扩散模型参数的端到端梯度流。
  2. 设计了一个结构化、多维度的自动提示管道(TA / Phy / VQ 三维),将抽象的”质量评估”分解为一系列明确的二值问答,从而提供稳定、可聚合的多维反馈。
  3. 采用梯度检查点(gradient checkpointing)+ 截断反向传播(仅对最后 个去噪步骤)实现在有限 GPU 显存下的高效训练。

与现有方法的根本区别:Flow-GRPO 等 RL 方法依赖非可微的标量奖励信号;DPO 类方法依赖成对偏好数据;Diffusion-DRF 是第一个将可微 VLM 反馈直接反向传播穿越扩散去噪链的文本到视频对齐框架。


3. Method(方法)

3.1 整体框架

Figure 3 解读:该图展示了 Diffusion-DRF 的完整训练框架。文本提示经 Text Encoder(冻结)处理后输入 DiT(可训练),DiT 进行完整去噪生成视频潜变量序列 。解码后的视频帧和参考真实视频帧一起送入冻结 VLM,VLM 根据提示管道中的问答对输出 logit,计算 。梯度仅从最后 个去噪步骤反向传播,通过 DiT 更新其参数。图中清晰展示了”Reference answers 来自真实视频,Questions 来自提示管道,References 与 Questions 共同送入 VLM”的关键设计。

3.2 预备知识:视频扩散模型

表示一段有 帧的视频,经 VAE 编码为潜变量 (时间压缩比 4,空间压缩比 )。

采用整流流(rectified flow)公式,前向插值过程定义为:

其中 为标准高斯噪声, 为干净潜变量。

去噪网络 为参数,训练目标为最小化重构误差:

其中 采用 logit-normal 噪声调度, 为文本条件嵌入。

3.3 结构化 VLM 反馈

Figure 2 解读:该图展示了结构化提示管道。以参考视频和视频 caption 为输入,首先用 Qwen2.5-LM 将 caption 分解为多个细粒度属性(Environment、Object(s)、Object Location 等),然后基于这些分解构造三类问题(TA/Phy/VQ),每个问题以 Yes/No 格式提问,最后用 Qwen2.5-VL 同时处理生成视频和真实视频来得到问答结果。参考答案来自真实视频,作为 teacher forcing 的目标序列。

直接向 VLM 询问标量分数(“这个视频和文本对齐吗?“)会产生噪声大、与人类偏好相关性差的结果。Diffusion-DRF 设计了三个互补的问答维度:

Text-Video Alignment(TA)

  • 用 off-the-shelf LLM(Qwen2.5-7B)将 caption 分解为原子级关键点(环境、物体、运动、位置、颜色等 8 个维度)
  • 对每个关键点构造最小化、无歧义的 Yes/No 问题
  • 响应格式受约束,避免主观或模糊回答

Physical Fidelity(Phy)

  • VLM 单独判断物理合理性时因”生成视频偏见”而不稳定
  • 解决方案:同时向 VLM 提供生成视频同 caption 的真实参考视频,以对比形式问”生成视频是否显示物理异常,而参考视频没有?”
  • 评估五类物理缺陷:液流不规则、异常形变、纹理异常变化、异常运动、非自然穿插

Visual Quality Inspection(VQ)

  • 防止模型通过”磨平细节”规避语义/物理惩罚
  • 同样采用参考对比策略:VLM 对比生成帧与同 caption 真实帧,判断是否有明显视觉质量缺陷
  • 评估维度:模糊/散焦、压缩伪影(块效应/振铃/蚊噪)、噪声/颗粒、色带、频闪、滚动快门、过平滑等

3.4 可微奖励流(VQA 损失与反向传播)

VQA 损失公式

给定生成视频 、参考视频 、文本条件 、以及 个问答对 ,定义通用 VQA 风格损失(与视觉指令微调的语言建模目标一致):

其中:

  • 为冻结的 VLM(参数 不更新)
  • 为第 个问题目标答案序列 中的第 个 token
  • 为前缀(teacher forcing)
  • 为答案长度

反向传播路径:梯度从 经 VLM(冻结,只传梯度)→ 解码后视频帧 → VAE 轻量解码器 → 潜变量 → 最后 个去噪步骤的 DiT 激活 → DiT 参数

3.5 高效反向传播机制

由于 DiT 和 VLM 均为数十亿参数模型,朴素的全链路反向传播会导致显存爆炸。Diffusion-DRF 采用三项关键效率措施:

1. 轻量 VAE 解码器:使用 H3ae(高压缩、高速度的自编码器)镜像原始 VAE 结构但采用紧凑 backbone,减少 VLM 侧的显存占用。在送入 VLM 前均匀采样帧(10 帧)进一步降低计算量。

2. 跨去噪步骤的激活检查点

  • 前向传播:每个去噪步骤仅保存输入潜变量,DiT 激活在反向传播时重算
  • 反向传播:激活在反向过程中实时重建,用时间换显存

3. 截断反向传播(Truncated Backpropagation)

  • 完整链路差异化虽然允许,但仅将梯度流限制到最后 个去噪步骤
  • 实验发现 在效率与优化稳定性之间取得最佳权衡
  • 好处:信用分配仍然有效(最终步骤对最终视频质量贡献最大),同时避免跨 步 DiT 的指数级显存增长

3.6 完整算法流程

伪代码 1:Diffusion-DRF 训练主循环

# 初始化
video_diffusion = DiT_model(pretrained="Wan2.1-1.3B-T2V")  # 可训练
vlm = VLM(pretrained="Qwen2.5-VL-7B")                       # 冻结
vae_decoder = LightweightDecoder(pretrained="H3ae")          # 冻结
llm_decomposer = LLM(pretrained="Qwen2.5-7B")               # 冻结
optimizer = AdamW(video_diffusion.parameters(), lr=1e-5)
 
for batch in dataloader:
    prompt_c, ref_video_X = batch["caption"], batch["real_video"]
 
    # Step 1: 提示分解 (LLM)
    decompositions = llm_decomposer.decompose(prompt_c)
    qa_pairs = build_qa_pairs(
        decompositions,          # -> TA questions
        ref_video_X,             # -> Phy/VQ reference
    )  # N 个 (q_i, a_i) 对
 
    # Step 2: 视频生成 (扩散去噪)
    x_T = torch.randn(latent_shape)
    trajectory = []
    with torch.no_grad():
        for t in range(T, K, -1):   # 前 T-K 步不需要梯度
            x_t = video_diffusion(x_t, t, c=prompt_c)
            trajectory.append(x_t)
 
    x_k = trajectory[-1].detach().requires_grad_(True)
 
    # Step 3: 最后 K 步带梯度去噪
    for t in range(K, 0, -1):       # 梯度检查点激活
        x_t = checkpoint(video_diffusion, x_t, t, prompt_c)
 
    x_0 = x_t  # 最终干净潜变量
 
    # Step 4: 解码 + 采帧
    video_frames = vae_decoder(x_0)         # [T', H, W, 3]
    sampled_frames = uniform_sample(video_frames, n=10)
    ref_frames = uniform_sample(ref_video_X, n=10)
 
    # Step 5: VQA 损失计算
    loss = 0
    for q_i, a_i in qa_pairs:
        log_probs = vlm.forward_loss(
            generated=sampled_frames,
            reference=ref_frames,
            question=q_i,
            target_answer=a_i,
        )
        loss += -log_probs.sum()  # teacher forcing NLL
 
    # Step 6: 反向传播 + 更新
    optimizer.zero_grad()
    loss.backward()            # 梯度流经 VLM -> 帧 -> VAE -> 最后K步DiT
    optimizer.step()

伪代码 2:结构化提示管道(TA / Phy / VQ 问答构建)

def build_qa_pairs(decompositions, ref_video):
    qa_pairs = []
 
    # --- Text-Video Alignment (TA) ---
    for aspect, content in decompositions.items():
        # 例: aspect="Environment", content="kitchen setting"
        question_ta = (
            f"Does the 'Environment' of the video satisfy that "
            f"'{content}'?"
        )
        # 参考答案来自真实视频上的 VLM 回答
        answer_ta = vlm.answer(
            video=ref_video,
            question=question_ta,
        )
        qa_pairs.append((question_ta, answer_ta))
 
    # --- Physical Fidelity (Phy) ---
    phy_aspects = [
        "liquid flow irregularity",
        "abnormal deformation",
        "abnormal texture change",
        "abnormal motion",
        "unnatural interpenetration",
    ]
    for aspect in phy_aspects:
        question_phy = (
            f"Does the AI-generated video (first 10 frames) show "
            f"'{aspect}' defects that the real video (last 10 frames) "
            f"does NOT show?"
        )
        # 参考答案: 真实视频不应有物理缺陷 -> "No"
        answer_phy = "No"
        qa_pairs.append((question_phy, answer_phy))
 
    # --- Visual Quality Inspection (VQ) ---
    vq_defects = [
        "defocus blur / motion blur",
        "blocking / ringing / mosquito noise / grain noise",
        "banding / flicker / rolling shutter / aliasing / over-smoothing",
    ]
    question_vq = (
        "Compare the test video (first 10 frames) to the reference "
        "(last 10 frames): does the video show obvious visual-quality "
        "defects?"
    )
    answer_vq = "No"   # 参考视频无明显质量缺陷
    qa_pairs.append((question_vq, answer_vq))
 
    return qa_pairs

伪代码 3:激活检查点 + 截断反向传播

import torch
from torch.utils.checkpoint import checkpoint
 
def truncated_backprop_denoising(model, x_T, prompt_c, T, K):
    """
    前 T-K 步: no_grad 推理
    最后 K 步: gradient checkpoint 反向传播
    """
    x_t = x_T
 
    # 阶段1: 非梯度去噪 (T -> K)
    with torch.no_grad():
        for step in range(T, K, -1):
            t_val = step / T
            x_t = model(x_t, t_val, prompt_c)
 
    x_t = x_t.detach().requires_grad_(True)
 
    # 阶段2: 梯度检查点去噪 (K -> 0)
    # 每步只存储输入潜变量,反向时重算激活
    for step in range(K, 0, -1):
        t_val = step / T
        x_t = checkpoint(model, x_t, t_val, prompt_c)
        # checkpoint: 前向时不存中间激活,反向时重新运行前向
 
    return x_t  # x_0: 最终干净潜变量

3.7 代码与论文对应表

论文概念代码组件说明
(去噪网络)video_diffusion = DiT唯一可训练模块,基于 Wan2.1-1.3B-T2V
(VLM)vlm = Qwen2.5-VL-7B完全冻结,仅传梯度
loss = -log_probs.sum()Teacher forcing NLL,对所有 N 个问答对求和
提示分解llm_decomposer = Qwen2.5-7B将 caption 分解为 8 维原子描述
TA 问答question_ta / answer_ta从真实视频获取参考答案
Phy 问答question_phy / answer_phy="No"期望生成视频无物理缺陷
VQ 问答question_vq / answer_vq="No"防止模型刷语义但牺牲画质
截断反向传播truncated_backprop_denoising(K=3)仅最后 K 步参与反向传播
轻量解码器vae_decoder = H3ae减少显存;均匀采 10 帧送 VLM
激活检查点torch.utils.checkpoint用重算换显存
LoRArank=32 LoRA on DiTFlow-GRPO baseline 用,Diffusion-DRF 全参数微调 DiT

4. Experimental Setup(实验设置)

训练配置

配置项
基础模型Wan2.1-1.3B-T2V
VLMQwen2.5-VL-7B(作为奖励)/ Qwen2.5-VL-3B(mini 版本)
提示分解 LLMQwen2.5-7B
优化器AdamW,lr=1e-5
批大小1(每 GPU)
GPU32 × A100 80GB
反向传播步数 K3
视频分辨率,49 帧
训练去噪步数25 步
推理去噪步数30 步
送入 VLM 帧数 10
训练数据5K 提示 + OpenVid-1M 真实视频,构建 24K 问题-提示-参考视频/答案四元组
VAE 时间压缩比4
VAE 空间压缩比
Text Encodergoogle/umt5-xxl,序列长度 512

详细 Wan2.1-1.3B-T2V 架构配置(附录 Table 3)

  • Text Encoder dim: 4096,dim_attn: 4096,dim_ffn: 10240,heads: 64,layers: 24
  • Scheduler: num_train_timesteps=10000,shift=5.0,max_shift=1.15,base_image_seq_len=256,max_image_seq_len=4096

基准方法

  • Pre-trained:Wan2.1-1.3B-T2V 原始预训练模型(baseline)
  • Flow-GRPO:基于 online RL 训练流匹配模型,用 32 rank LoRA 微调,相同提示集
  • PickScore:用 PickScore 图像奖励模型替换 VLM 作为可微奖励信号
  • VideoAlign:用 VideoAlign 视频奖励模型替换 VLM
  • Flow-DPO:DPO 方法应用于 Wan2.1-1.3B-T2V(附录对比)
  • CogVideoX (CVX):在 CogVideoX backbone 上验证方法泛化性(附录)

评估指标

VBench-2.0(主要 benchmark,1013 个提示):

  • 总体(Overall)、创造力(Creativity)、常识(Common Sense)、可控性(Controllability)、人类保真度(Human Fidelity)、物理(Physics)、材质(Material)、动态属性(Dynamic Attribute)、运动合理性(Motion Rationality)、复杂场景(Complex Landscape)、摄像机运动(Cameras Motion)

VBench(用于消融,关注视觉质量子维度):

  • 成像质量(Imaging Quality)、美学质量(Aesthetic Quality)、运动流畅度(Motion Smoothness)

VideoGen-Eval(配对评估,400 条指令密集型提示):

  • Text Alignment(TA)、Visual Quality(VQ)、Motion Quality(MQ)、Overall(OA)
  • 使用 VideoAlign 评分,配对比较 win/tie/loss 率

5. Experimental Results(实验结果)

5.1 VBench-2.0 主要量化结果(Table 1)

方法OverallCreativityCommon SenseControllabilityHuman FidelityPhysicsMaterialDynamic AttributeMotion RationalityComplex LandscapeCameras Motion
Pre-trained52.9953.7955.5226.5980.6548.4036.2337.0037.3617.3320.68
Flow-GRPO50.6444.7150.8525.4877.8054.3769.0736.6336.2114.8919.32
PickScore*49.6235.9755.2321.8881.8951.1366.6739.1936.7816.8922.84
VideoAlign*52.8449.8755.8127.4178.4752.6665.2641.7637.9318.4423.15
Diffusion-DRF-mini53.7253.9357.5325.9576.7454.4270.0042.4941.3818.2223.15
Diffusion-DRF55.3854.5856.9627.9880.5156.8575.8242.8640.2321.5624.69

*注:PickScore 和 VideoAlign 用自定义奖励模型替换 VLM,在相同框架下训练。加粗为最高,下划线为第二高。

关键发现

  • Diffusion-DRF 在 Overall(55.38 vs 52.99,+2.39)、Controllability(27.98 vs 26.59,+1.39)、Physics(56.85 vs 48.40,+8.45)、Material(75.82 vs 36.23,+39.59)等维度取得显著提升
  • 物理和可控性维度提升最为突出,说明 VLM 反馈有效捕捉物理合理性
  • 升级 VLM 从 3B 到 7B(mini→full)带来一致的性能提升,表明方法随 VLM 能力扩展

5.2 VideoGen-Eval 配对评估(Figure 4)

Figure 4 解读:该图展示了 VideoGen-Eval 上的配对评估结果,分为两组对比(左:Diffusion-DRF vs Base Model;右:Diffusion-DRF vs Flow-GRPO)。每行代表一个评估维度(TA/VQ/MQ/OA),颜色分别表示各方法获胜、平局的比例。

对比组维度Diffusion-DRF 胜率
vs Base ModelTA47.0%
vs Base ModelVQ49.5%
vs Base ModelMQ37.5%
vs Base ModelOA53.3%
vs Flow-GRPOTA48.0%
vs Flow-GRPOVQ54.0%
vs Flow-GRPOMQ59.5%
vs Flow-GRPOOA56.7%

Diffusion-DRF 在两组对比中均取得更高整体胜率,尤其在运动质量(MQ)和视觉质量(VQ)方面对 Flow-GRPO 有显著优势。

5.3 定性对比(Figure 5)

Figure 5 解读:该图展示了两个代表性 prompt 下,Base Model、Flow-GRPO、PickScore、VideoAlign 和 Diffusion-DRF 生成视频的第一帧对比。左侧 prompt 要求”快速缩放至一朵红玫瑰”,右侧 prompt 要求”老人旁边坐着他的好奇孙辈”。可以观察到:PickScore 训练后视频质量严重退化(出现黑色伪影);VideoAlign 无法正确生成运动或人物关系;只有 Diffusion-DRF 在左侧生成了清晰的缩放运动,在右侧正确生成了孙辈陪伴老人的场景。

5.4 训练动态分析(Figure 6)

Figure 6 解读:该图以 VBench-2.0 Controllability 分数为纵轴、训练步数(0-4000)为横轴,对比四种方法的训练曲线。Diffusion-DRF(蓝色)持续提升且无崩溃迹象;VideoAlign(橙色)在中期达到峰值后大幅下降;PickScore(绿色)早期过拟合后快速崩溃;Base Model(虚线)保持不变。说明可微 VLM 反馈比学习出的奖励模型具有更稳定的训练动态。

5.5 视觉崩溃分析(Figure 7)

Figure 7 解读:该图提取了 4 种方法在 Step 0、Step 2000、Step 4000 生成的第一帧(相同 prompt”Chimneys in the setting sun”,相同噪声种子)。PickScore 和 VideoAlign 在 Step 4000 时出现严重伪影(色彩失真、细节丢失);Diffusion-DRF(最右列)在训练全程保持清晰、细节丰富的输出,仅引入轻微伪影。

5.6 消融实验(Table 2)

Figure 8 解读:附录中的 Overall、Physics、Commonsense、Creativity、Human Fidelity 五维度训练曲线。在 Overall 和 Commonsense 上,只有 Diffusion-DRF 能在整个训练过程中持续提升而不过拟合;在 Physics 上所有方法均有提升但 Diffusion-DRF 提升最大;对于未直接优化的 Creativity 和 Human Fidelity,Diffusion-DRF 仍表现出最稳定的学习曲线。

问题维度消融(Table 2 上半部分)

方法配置CreativityCommon SenseControllabilityHuman FidelityPhysicsImaging QualityAesthetic QualityMotion Smoothness
Baseline53.7955.5226.5980.6548.4060.8745.3897.81
TA only49.4153.8027.0374.8855.6460.3548.5598.08
TA + Phy50.5660.1225.7275.5755.2857.1546.0597.75
TA + VQ52.3455.8127.8079.0254.6561.6750.9898.00
TA + VQ + Phy (full)54.5856.9627.9880.5156.8560.6450.4598.10

关键发现:

  • 仅 TA 会导致模型过度优化 Controllability 和 Physics,但牺牲 Human Fidelity(过拟合语义维度)
  • 加入 VQ 有效防止视觉质量退化(Imaging Quality 61.67 > TA only 60.35)
  • 三维组合取得最佳整体 VBench-2.0 分数

截断步数 K 消融(Table 2 下半部分)

KCreativityCommon SenseControllabilityHuman FidelityPhysicsOverall
K=152.9552.9325.4579.4954.99
K=252.4557.2427.4578.5056.18
K=3 (full)54.5856.9627.9880.5156.8555.38

K=3 综合最优,K=1 信用分配不足,K 更大受 VRAM 限制。

输入帧数 消融(附录 Table 5)

CreativityCommon SenseControllabilityHuman FidelityPhysicsOverall
248.4348.1027.5080.9654.1450.83
443.2253.5127.6478.454.4551.45
643.8555.2329.2578.8853.7552.19
846.5055.8128.1079.6156.0353.21
1046.5055.8127.9880.5156.8555.38

更多帧让 VLM 有更可靠的物理评估基础; 在 VRAM 约束下取得最优。

5.7 方法局限性

  1. VLM 能力上界:Diffusion-DRF 的性能上界受制于所用 VLM(Qwen2.5-VL-7B)的理解能力。论文指出因算力限制无法使用 14B+ 的 VLM,这限制了进一步的性能提升。
  2. VQ 引入轻微伪影:加入视觉质量监督后,模型仍可能引入轻微伪影(Figure 7),但程度远轻于 PickScore/VideoAlign。
  3. 显存瓶颈:反向传播穿越 VLM 和 DiT 双大模型的计算图,即使有检查点机制,显存仍是主要瓶颈,限制了批大小和 K 的增大。
  4. 数据集规模:仅用 5K 提示 + OpenVid-1M 子集,规模相对有限。

5.8 总体结论

Diffusion-DRF 证明了冻结 VLM 可以作为视频扩散微调的有效、可微的奖励源。通过结构化的三维提示管道(TA + Phy + VQ)和梯度检查点驱动的截断反向传播,该方法在不需要任何额外奖励模型训练或人工偏好标注的情况下,实现了比 Flow-GRPO、PickScore、VideoAlign 等方法更好的综合性能和训练稳定性。方法的模型无关性(在 CogVideoX backbone 上同样有效)和 VLM 可插拔性(随 VLM 能力提升性能持续提高)是其重要的工程价值。