AlignProp
通过端到端奖励反向传播微调 Stable Diffusion,采样效率比 PPO 高 25 倍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过端到端奖励反向传播微调 Stable Diffusion,采样效率比 PPO 高 25 倍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你用 Stable Diffusion 生成一张"一只橙色的猫在阳光下打盹"的图片时,你有没有遇到过这种情况——模型生成的是白猫、阴天、或者干脆是一只狗?这种"文本-图像不对齐"的问题,根源在于扩散模型的训练是弱监督的:模型从海量图文配对中自学,但这种自学无法精确控制模型的输出偏好。
一种思路是强化学习微调(RL Fine-tuning)——给模型设定一个奖励函数(比如 CLIP 分数),然后用 PPO 等策略梯度算法更新模型权重。但这条路有个致命问题:梯度估计的方差太大,导致训练不稳定、样本效率极低。PPO 方法往往需要海量的交互样本才能学会一点新技能。
2023 年,卡内基梅隆大学(CMU)和 Google DeepMind 的研究团队提出了一个更优雅的解决方案——AlignProp(Alignment by Backpropagation)。

图注:AlignProp 将扩散模型的去噪推理过程建模为可微分循环策略,通过端到端反向传播奖励梯度来微调模型权重。图片上方展示了在多种奖励函数(美学、HPSv2、物体数量控制等)上微调后的生成效果对比。
传统方法之所以效率低,是因为它们把扩散模型的去噪推理过程当成一个黑盒——只能通过输入输出间接猜测梯度。AlignProp 的核心洞察是:去噪过程其实是可以求导的。
具体来说,AlignProp 把 DDIM(Denoising Diffusion Implicit Models)采样过程展开为一系列可微分的操作:
整个过程就像在 PyTorch 中做一次普通的反向传播训练,只是"前向过程"恰好是 DDIM 去噪,"损失函数"恰好是奖励模型的输出。
问题来了:完整的扩散模型有数十亿参数,每个参数的梯度都要保存,中间激活值更是爆炸——一个 naive 的反向传播可能需要数百 GB 显存。
AlignProp 的工程解决方案是两个关键技术:
用上这两招,AlignProp 可以在 单张 A100(40GB) 上完成训练。对于显存更小的显卡,可以用 K=1 模式(trunc_backprop_timestep=1)进一步降低到约 16-20GB。
AlignProp 在论文中测试了多种奖励函数:
| 奖励类型 | 目标 | 实验结果 |
|---|---|---|
| 美学评分 | 生成更美观的图像 | AlignProp 奖励值 3.30,DDPO 仅 2.30 |
| HPSv2 | 更符合人类偏好的图像 | AlignProp 显著优于 DDPO |
| CLIP 对齐 | 图像与文本语义更一致 | 原 SD 忠实度 20.8%,AlignProp 达 79.2% |
| 物体数量控制 | 精确控制生成物体数量 | 可稳定生成指定数量物体 |
表注:AlignProp 在各项奖励函数上均大幅超越基于 PPO 的 DDPO 方法。尤其在 CLIP 对齐任务上,AlignProp 将忠实度从 20.8% 提升到 79.2%,提升近 4 倍。
# 1. 创建 conda 环境(Python 3.10 强制要求)
conda create -n alignprop python=3.10
conda activate alignprop
# 2. 安装依赖(accelerate 版本必须严格为 0.17.0)
pip install -r requirements.txt
# 标准美学评分训练(多卡自动并行)
accelerate launch main.py --config config/align_prop.py:aesthetic
# 显存受限?使用 K=1 低显存模式
accelerate launch main.py --config config/align_prop.py:aesthetic_k1
# 使用 HPSv2 奖励模型
accelerate launch main.py --config config/align_prop.py:hps
# 模型评估
accelerate launch main.py --config config/align_prop.py:evaluate
训练过程中,WandB 会自动记录奖励曲线和生成的样本图像,方便实时监控训练进展。
torch==2.0.1
accelerate==0.17.0 # 必须 0.17.0
diffusers[torch]==0.17.1 # Stable Diffusion 推理核心
transformers==4.30.2
wandb # 实验记录
hpsv2 # 人类偏好评分 v2
git+https://github.com/openai/CLIP.git
过优化风险(Over-optimization):当奖励函数不完美时,模型会"刷分"——学会欺骗奖励函数而非真正提升图像质量。比如美学评分器可能被利用生成"过度锐化"的图像。
仅支持可微分奖励:AlignProp 只能优化那些能求导的奖励函数。类似"生成的图像好不好看"这种主观判断,如果无法建模为可微分函数,就无法直接使用 AlignProp。
显存门槛仍然较高:尽管有 LoRA + 梯度检查点优化,单 GPU 训练仍需 16-20GB 显存,不适合普通消费级显卡。
无 Web UI / 无 Docker:所有操作通过命令行进行,对非技术用户不友好。
AlignProp 于 2023 年 10 月发布在 arXiv(2310.03739),已被后续多项研究引用和扩展:
技术标签:扩散模型微调 · 强化学习 · 文生图 · LoRA · 梯度反向传播 · Stable Diffusion · 美学评分
维护状态:活跃更新(2026-08-13 最后提交)