基于噪声追踪配对的整流流离线偏好优化 Offline Preference Optimization for Rectified Flow with Noise-Tracked Pairs
PNAPO:把 prior noise 一并存进偏好数据集,用直线插值估计轨迹,并动态调节正则化,把 T2I 偏好对齐训练成本砍到 1/12。
前置知识
Rectified Flow (整流流)
一种连续正则化的生成模型,把数据 $x_0$ 和标准高斯噪声 $x_T$ 之间通过 ODE $\frac{dx_t}{dt}=v_\theta(x_t,t)$ 直连,前向路径可写成 $x_t=(1-t)x_0+tx_T$。其关键特性是采样轨迹近似一条直线,因此可以用端点插值近似中间状态,而不像传统扩散需要跑反向 SDE。
整篇 PNAPO 的理论根基就是「直线轨迹可插值」,没有这个前提,prior noise–image 插值估计中间 latent 就毫无根据。
DPO (Direct Preference Optimization)
Rafailov 等人 2023 年提出的 RLHF 替代方案,直接把 Bradley-Terry 偏好似然作为损失函数,无需单独训练 reward model 和 PPO。损失形如 $-\log\sigma\bigl(\beta\bigl(s_\theta(x_w,c)-s_\theta(x_l,c)\bigr)\bigr)$,其中 $s_\theta$ 是隐式奖励。
PNAPO 是 diffusion/RF 版本的 DPO,所有目标函数都是从 DPO 目标出发改写,必须理解 DPO 才能看懂为何 PNAPO 把数据集从三元组扩到六元组。
Diffusion-DPO (Wallace et al., 2024)
把 DPO 推广到扩散模型的方法。它对 (prompt, winner image, loser image) 三元组采样一个独立噪声 $\epsilon\sim\mathcal{N}(0,I)$,再用前向加噪 $q(x_t|x_0)$ 估计反向过程 $p_\theta(x_t|x_0)$,构成 DPO 损失。但因为扩散反向轨迹是弯曲随机的,这种「独立前向估计」与推理时的真实反向路径有失配。
PNAPO 直接对标 Diffusion-DPO,作者论证了 Rectified Flow 场景下,Diffusion-DPO 的估计方差更大,而 PNAPO 用保留的 prior noise+直线插值能得到更紧的上界。
研究动机
现成的 T2I 偏好数据集(如 Pick-a-Pic、HPDv2、RichHF、OPDv1)几乎都只存最终 winner/loser 两张图,把生成这张图所用的 prior noise 当作无关信息丢弃了。这对扩散类模型是致命的:扩散/RF 的生成天然是「一条从 $x_T$ 到 $x_0$ 的轨迹」,不同 prior noise 走完全不同的轨迹、产出完全不同的图。一旦 prior noise 丢了,Diffusion-DPO 这类方法就必须独立采一个新噪声、用前向加噪规则估计中间 latent——而扩散反向轨迹本来就是随机弯曲的,前向加噪估计和真实反向路径严重失配,带来三个具体后果:训练不稳定、credit assignment 低效、reward 的「决策空间」被人为放大。具体到工程上,Diffusion-DPO 在 SD3-M 上要花 ~249.6 GPU-hours、FLUX 上要 ~422.4 GPU-hours,门槛极高。
本文的目标是本文提出 PNAPO(Prior Noise-Aware Preference Optimization),目标是把偏好对齐做成:1)纯离线,无需在线 RL rollout,工程简单;2)轨迹忠实,利用 Rectified Flow 的近线性轨迹,端点条件化后用插值就能精确还原中间状态;3)训练高效,通过动态正则化同时处理「样本难度不均」和「训练进度不同步」两个 DPO 长期痛点。最终在 FLUX.1-dev 和 SD3-M 上把 GPU 训练时间降到 35.2 和 20.8 小时,约为 Diffusion-DPO 的 1/12,同时在 HPSv2.1、PickScore、ImageReward、Aesthetic、CLIP 和 GenEval 六个指标上全面领先。
与已有工作不同的是,作者切入角度是把「prior noise」从数据集构造阶段就纳入并保留,让数据集从 (prompt, winner, loser) 三元组升到 (prompt, winner-image, winner-noise, loser-image, loser-noise, reward-gap) 六元组。配合 Rectified Flow 的近线性轨迹,端点条件化下用 $x_t=(1-t)x_0+tx_T$ 即可近似反向中间 latent,KL 散度意义上比 Diffusion-DPO 的独立前向估计更紧。再加上 $\beta(\delta_r, n)$ 形式的动态正则化,把「reward gap 大的样本加速、训练后期拉回参考模型」两条机制合在一起,这是已有 diffusion-DPO 工作都没有同时解决的。
核心方法
PNAPO 整体思路分三步:先重新构造一个「带 prior noise」细粒度偏好数据集,再在 Rectified Flow 上把 DPO 目标用端点条件化 + 直线插值重新表达,最后引入依赖 reward gap $\delta_r$ 和训练步数 $n$ 的动态正则化系数 $\beta(\delta_r, n)$。直觉上:把生成图像时真正用到的那个 $x_T$ 留下来,比临时重新采一个独立噪声靠谱得多;RF 轨迹近线性意味着 $x_T\to x_0$ 的中间点几乎就是直线插值,可以直接代入 RF 速度场 $v_\theta$;正则化系数则根据「这一对比 winner 比 loser 好多少」和「训练到哪一步」来调节梯度幅度,既不让容易样本浪费更新,也不让训练后期把模型拉离参考太远。
核心创新有两点:1)数据集层面,把 prior noise 作为一等公民写入偏好样本,使轨迹身份 (trajectory identity) 不再丢失。2)优化层面,用 $D_{\mathrm{KL}}\bigl(q(x_{1:T-1}|x_0,x_T)\|p_\theta(x_{1:T-1}|x_0,x_T)\bigr)\le D_{\mathrm{KL}}\bigl(q(x_{1:T}|x_0)\|p_\theta(x_{1:T}|x_0)\bigr)$ 这一不等式严格证明了端点条件化估计在 KL 意义上更紧,进而推导出带 prior noise 的插值型 DPO 损失。已有的 diffusion-DPO 把 $p_\theta(x_T|x_0)$ 当作独立标准高斯,相当于把轨迹信息全丢;D3PO 用 DDIM 反向迭代估计,代价是大量前向推理。PNAPO 既保留轨迹又只做廉价插值。
方法步骤详情
**Step-1 数据准备**:从 DiffusionDB (180 万 prompt) 出发,先用 Detoxify 做 NSFW 过滤(阈值 0.1,保留 83.67%),再做 Jaccard 文本去重 + ViT-H/CLIP 语义去重(相似度阈值 0.8),最后用 KNN 聚类(K=100,每簇 200 prompt)平衡语义覆盖,得到 2 万条干净多样的 prompt。 **Step-2 生成 noise-image pair**:把 prompt 喂进待微调的 RF 模型本身 (FLUX.1-dev 或 SD3-M),Euler scheduler、CFG=1、50 步采样,对每个 prompt 从 $\mathcal{N}(0,I)$ 采一对噪声 $(x_T^w,x_T^l)$,生成两张图 $(x_0^w,x_0^l)$。和传统数据集的关键差异:把这对 prior noise 一起存下来,于是样本变成 (prompt, $x_0^w$, $x_T^w$, $x_0^l$, $x_T^l$, $\delta_r$) 六元组 $\mathcal{D}_{\mathrm{PNAPO}}$。用模型自己当基础是为了稳定偏好对齐。 **Step-3 打分**:用预训练 HPSv2.1 计算 $\delta_r=r_\theta(x_0^w)-r_\theta(x_0^l)$ 作为连续奖励差,既是伪标签也是数据清洗器。 **训练目标**:在 $\mathcal{D}_{\mathrm{PNAPO}}$ 上最小化 $L_{\mathrm{PNAPO}}(\theta)=-\mathbb{E}\log\sigma\bigl(-\beta(\delta_r,n)\bigl(s_\theta(x_0^w,x_T^w,c)-s_\theta(x_0^l,x_T^l,c)\bigr)\bigr)$,其中 $s_\theta(x_0^*,x_T^*,c)=\|(x_T^*-x_0^*)-v_\theta(x_t^*,t,c)\|_2^2-\|(x_T^*-x_0^*)-v_{\mathrm{ref}}(x_t^*,t,c)\|_2^2$,$x_t^*=(1-t)x_0^*+tx_T^*$。 **动态正则化**:$\beta(\delta_r,n)=\beta\cdot f(\delta_r)\cdot g(n)$,其中 $f(\delta_r)=2\sigma(\delta_r)-1\in[-1,1]$ 随奖励差单调逼近 1,$g(n)$ 在 $n\le n_1$ 取 1、$n\ge n_2$ 取 $1/2$,中间用余弦退火。直觉:margin 为负(winner 还不够好)时,$\delta_r$ 越大 $f$ 越大 $\beta$ 越大,梯度更激进;训练后期 $g$ 减小,把模型拉回参考防止漂移。
技术新颖性
技术新颖性体现在三处:1)数据 schema 升级到六元组,使得 trajectory identity 不再被丢弃,这是和所有 diffusion-DPO 数据集的根本区别;2)严格证明了端点条件化估计的 KL 上界更紧(式 12),并由此导出基于插值的 score 函数 $s_\theta$——这个 $s_\theta$ 用 $x_T-x_0$ 作「速度目标」、$x_t$ 作「查询点」,是 RF 专享的写法;3)把 reward-gap-aware 动态正则化从算法层面嵌入损失,让 PNAPO 同时获得「按样本难度缩放梯度」和「按训练进度缩放正则化」两项功能,相比固定 $\beta$ 在 FLUX 上 PickScore 从 22.97 提升到 23.19,HPSv2.1 从 30.84 提升到 31.71(表 4/5)。
实验结果
**主表 2**:在 HPDv2 (3200 prompt) 和 OPDv1 (7459 prompt) 两个测试集、五种 reward model 上,PNAPO-FLUX 在 PickScore 达到 23.19(FLUX 基线 22.95,DPO-FLUX 22.97)、HPSv2.1 达到 31.71(基线 30.50,DPO-FLUX 30.84)、ImageReward 1.217(基线 1.175)、Aesthetic 6.475(基线 6.299)、CLIP 34.71(基线 34.05)。PNAPO-SD3-M 类似全面领先,HPSv2.1 从 30.75 提升到 31.62,ImageReward 从 1.306 提升到 1.387。**win-rate**:在 OPDv1 上 PNAPO-FLUX 对 DPO-FLUX 的 HPSv2.1 win rate 84.6%,对 IPO-FLUX 81.1%,对 SFT 90.9%,对 FLUX 基线 84.7%。 **GenEval 表 3**:PNAPO-SD3-M overall 0.73(SD3-M 0.68,DPO 0.69,CaPO 0.71),相对提升 +7.4%;PNAPO-FLUX overall 0.69(FLUX 0.65,DPO 0.66),相对提升 +6.2%;细分到 Count(计数)维度提升最大:SD3-M 0.56→0.71,FLUX 0.72→0.76。 **算力表 1**:PNAPO-FLUX 仅需 35.2 H800 GPU-hours,Diffusion-DPO 需要 422.4,节省 12 倍;PNAPO-SD3-M 20.8 vs Diffusion-DPO 249.6,同样约 12 倍。FLUX 用 LoRA (rank=32),SD3-M 用全参数微调。 **消融表 4**:单加 prior noise(去掉动态正则化)PickScore 23.06、HPSv2.1 31.08;单加动态正则化(去掉 prior noise)PickScore 23.00、HPSv2.1 30.96;两者结合(完整 PNAPO)PickScore 23.19、HPSv2.1 31.71;DPO 基线 PickScore 22.97、HPSv2.1 30.84。证明两个创新点都能独立贡献。 **正则化消融表 5**:固定 $\beta$ PickScore 23.06;$\beta\cdot f(\delta_r)$ 23.16;$\beta\cdot g(n)$ 23.09;完整 $\beta(\delta_r,n)$ 23.19。 **超参表 7**:$(n_1,n_2)=(1000,2000)$ 最优,PickScore 23.19;调到 $(500,2000)$ 退到 23.01,证明训练进度调度需要适度退火而非激进提前。 **用户研究图 4**:10 名参与者、每人对 20 对随机抽样的图做总偏好、视觉吸引、文本对齐三项评估。PNAPO-FLUX 对 FLUX 基线在整体偏好上 56%、视觉吸引 72%、文本对齐 52% 胜出。 **附加表 8**:在 Diffusion-DB 自建测试集(3000 prompt)上 PNAPO-FLUX 几乎所有 reward 中位数/均值都拿第一,HPSv2.1 median 34.327 vs FLUX 33.716、Aesthetic 6.473 vs 6.286。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| HPDv2 PickScore | PickScore median | 23.19 | 22.95 (FLUX base), 22.97 (DPO-FLUX) | +0.24 over FLUX, +0.22 over DPO-FLUX |
| HPDv2 HPSv2.1 | HPSv2.1 median | 31.71 | 30.50 (FLUX), 30.84 (DPO-FLUX) | +1.21 over FLUX, +0.87 over DPO-FLUX |
| OPDv1 HPSv2.1 | HPSv2.1 median | 32.10 | 30.74 (FLUX), 30.79 (DPO-FLUX) | +1.36 over FLUX, +1.31 over DPO-FLUX |
| OPDv1 Aesthetic | Aesthetic median | 6.692 | 6.550 (FLUX), 6.548 (DPO-FLUX) | +0.142 over FLUX, +0.144 over DPO-FLUX |
| GenEval (SD3-M backbone) | Overall | 0.73 | 0.68 (SD3-M), 0.71 (CaPO) | +7.4% relative over SD3-M, +2.8% absolute over CaPO |
| GenEval (FLUX backbone) | Overall | 0.69 | 0.65 (FLUX), 0.66 (DPO-FLUX) | +6.2% relative over FLUX, +4.5% absolute over DPO-FLUX |
| FLUX 训练算力 | H800 GPU-hours | 35.2 | 422.4 (Diffusion-DPO) | 12x reduction |
| SD3-M 训练算力 | H800 GPU-hours | 20.8 | 249.6 (Diffusion-DPO) | 12x reduction |
| 用户研究 | Overall preference | 56% | 44% (FLUX) | 10名评估者 × 20对随机抽样 |
局限与改进
作者在附录 D.2 明确承认两点:1)只能优化「用自己生成的 noise-image pair」,所以 FLUX 生成的数据不能拿来微调 SD3-M,反之亦然——因为不同模型的 prior noise 分布不同。这等于把 PNAPO 限定为「on-distribution self-improvement」,对跨模型迁移是封闭的。2)Diffusion-DB 的 prompt 缺乏连贯性,会限制高质量生成的天花板,作者打算用 MLLM 做 prompt 改写。我自己的观察还有:3)实验只覆盖 FLUX 和 SD3-M 两个 RF 模型,没有在 SD3.5-L、Wuerstchen、Stable Cascade 等其他 RF/flow-matching 架构上验证泛化性;4)虽然 GenEval 上的提升在 Count、Two-object 等维度很显著(SD3-M 0.56→0.71),但 Position 维度几乎不动(0.32→0.32),说明 PNAPO 在空间关系理解上的贡献有限;5)reward 模型完全依赖 HPSv2.1,而表 6 显示换成 Aesthetic 反而美学指标高(6.509)但 PickScore 下降,存在 reward hacking 风险;6)β_FLUX=2000、β_SD3-M=5000 这种超参是手工调的,没有自动搜索,跨模型迁移需要重新调。
独立分析的弱点
**弱点 1:跨模型不可迁移**。如附录 D.2 所述,FLUX 生成的 noise-image pair 不能用于 SD3-M 微调,反之亦然。这意味着每次换基础模型都要重新跑 Step-2 生成数据,浪费算力。改进方向:可以借鉴 distribution matching 的思路,先把不同模型的噪声分布用一个 normalizing flow 或 adversarial 对齐模块映射到统一空间,再共享数据。 **弱点 2:Position / spatial reasoning 改进有限**。表 3 中 PNAPO-SD3-M 的 Position 从 0.32 到 0.32 没动,FLUX 从 0.20→0.24 也只动 0.04。说明现有数据集中「空间关系偏好」样本不够。改进方向:在 prompt 筛选阶段加入空间关系关键词的过采样,或在 reward model 里混合一个专门的空间打分器。 **弱点 3:reward model 选择敏感**。表 6 显示 HPSv2.1 训练后 PickScore 23.19,Aesthetic 训练后 PickScore 23.10、但 Aesthetic 6.509 比 HPSv2.1 的 6.475 还高——典型的 reward hacking 征兆。改进方向:引入多奖励 ensemble 或对抗性 reward shaping,避免单一 reward 主导优化方向。 **弱点 4:固定超参 $(n_1, n_2)$ 不能自适应**。表 7 显示 $(500,2000)$ vs $(1000,2000)$ vs $(1000,3000)$ 之间 PickScore 波动 0.18,说明这个调度很脆。改进方向:让 $n_1,n_2$ 随 loss 曲率或 reward 饱和度自动调节,类似 cosine warmup with restarts。
未来方向
作者明确提到的方向:1)扩展到 online 范式,把 PNAPO 当作 offline initializer 再接在线 RL 微调;2)用 MLLM 做 prompt 对齐和改写,把低质 prompt 重写后再喂给 pipeline;3)把动态参数 $(n_1,n_2,\beta)$ 做成自适应而非人工设定。基于本文成果可延伸的方向还包括:4)把「prior noise tracking」思想推广到视频 RF 模型(Step-Video-T2V、Wan 等),那里轨迹长度更长、reward 更稀疏,可能收益更大;5)把 RF 直线特性作为归纳偏置,结合 RLHF 做 on-policy 校正,看能否进一步提升 alignment;6)扩展到 discrete diffusion / masked generative models(BORSO 等已迈出第一步),研究 trajectory identity 概念在离散状态空间下的等价物;7)作为安全对齐工具,把 reward gap 大且方向相反(人类偏好 vs HPSv2.1)的样本用于 red-teaming。
复现评估
**开源情况**:论文未给出代码链接,但附录 E.1 详细列出了全部超参:8×H800 GPU、AdamW、lr=1e-6、500-step linear warmup、CFG=1、50 sampling steps、FLUX LoRA rank 32、SD3-M 全参数微调、gradient accumulation 8。**数据**:从 DiffusionDB (180万 prompt) 经 Detoxify (阈值 0.1) + Jaccard (0.8) + CLIP cosine (0.8) + KNN (K=100, 200/簇) 处理后保留 20k prompt,每 prompt 采一对噪声生成两张图。**算力门槛**:FLUX LoRA 35.2 GPU-hours ≈ 不到 5 块 H800 跑一天,比 Diffusion-DPO 的 422.4 GPU-hours 友好得多;SD3-M 全参数 20.8 GPU-hours 更轻量。**复现难度**:中等偏易。RF 公式和 DPO 损失都是经典组件,插值估计的代码量不大;数据集构造需要写完整的 prompt 清洗 + 配对生成 pipeline,但因为只跑一次(offline),整体可以接受。最大的不确定性是 HPSv2.1 评分在不同实现下的微小差异,以及 KNN 聚类随机种子对 prompt 覆盖的影响。建议复现时先在小规模 2000 prompt 上做 sanity check,再扩展到 20k。
论文图表
左侧图展示 PNAPO vs 已有方法的对比概念:Diffusion-DPO 用固定距离 (Fixed Distance) 和独立 prior noise,PNAPO 既保留 paired prior noise 又使用动态距离 (Dynamic Distance) 调节更新。右侧生成示例「Steampunk city street with people by junji ito trending on artstation」展示 PNAPO 风格化生成的画面。
这是论文的 teaser 图,把核心 idea(prior noise + 动态正则化)压缩在一页展示,是读者第一眼理解 PNAPO 关键差异的关键。
4 组 FLUX vs PNAPO-FLUX 对比图,prompt 包括「An orange and white off-road vehicle with large tires」、「The planet Jupiter」、「A punk rock squirrel in a studded leather jacket shouting into a microphone」、「A shiba inu wearing a beret and black turtleneck」等。每组上方 FLUX、下方 PNAPO-FLUX。
补充定性结果,进一步验证 PNAPO 在多种 prompt 类别下的稳定性。
5 个 reward × Median/Mean 共 10 列 × 5 行(FLUX/SFT/DPO/IPO/PNAPO)。PNAPO-FLUX 在几乎所有列第一:HPSv2.1 median 34.327、ImReward mean 1.699、Aesthetic median 6.473、CLIP median 39.686。
在第三个测试集(Diffusion-DB 3000 prompt)上的补充验证,增加结论鲁棒性。
同样格式,PNAPO-SD3-M 全面领先:HPSv2.1 median 34.748、ImReward mean 1.714、Aesthetic median 6.212、CLIP median 40.489。
SD3-M 在 Diffusion-DB 测试集上的补充验证。