Curriculum Group Policy Optimization: Adaptive Sampling for Unleashing the Potential of Text-to-Image Generation¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/PRIS-CV/CGPO
领域: 文生图 / 强化学习 / GRPO
关键词: GRPO, 文生图, 课程学习, 自适应采样, 奖励方差
一句话总结¶
针对 GRPO 训练文生图时"均匀采样让一半 prompt 学不动也没增益"的问题,CGPO 用每个 prompt 一组图像的奖励方差当作"模型部分掌握但未稳定掌握"的在线信号,自适应地多采样这些处于学习甜区的 prompt,再配一个比例公平的类别校准,在 GenEval/T2I-CompBench++/DPG Bench 上既涨点又把训练速度提到 2 倍。
研究背景与动机¶
领域现状:文生图(T2I)的强化学习微调正从 PPO 转向 GRPO。GRPO 不需要单独的价值网络,对同一个 prompt 采样一组图像、用组内相对优势来估计梯度,省掉了在高维视觉空间训 critic 的开销,Flow-GRPO 又把它接到了 flow matching 模型上,是当前的主流做法。
现有痛点:这些方法几乎都用均匀采样——每个 prompt 被选中的概率一样。问题是不同 prompt 在当前策略下的"学习增益"差别极大:已经稳定做对的简单 prompt 几乎不再提供新信号,远超能力的难 prompt 又学不动。均匀采样导致一个 batch 里塞满了边际效用很低的样本,样本利用率低、收敛慢。
核心矛盾:最有信息量的 prompt 应该既不太易也不太难,要和模型当前能力匹配——这正是教育学里的"最近发展区"(ZPD)。但难度是动态的:随着模型变强,哪些 prompt 处于甜区一直在变。经典课程学习用预定义难度标签从易到难排序,既难以在大规模数据上可靠定义,又是静态的,无法跟着模型能力演化。
本文目标:在不引入任何额外难度标注的前提下,在线、动态地识别出"仍然可学"的 prompt,并持续向它们倾斜采样预算。
切入角度:理论上当 prompt 的成功概率 \(p(x)\approx 0.5\)(模型表现不一致)时学习信号最强。作者的关键观察是:GRPO 训练本来就对每个 prompt 生成一组图、算一组奖励,那么这组奖励的方差天然就是"prompt 不一致性"的在线代理——方差高 = 有时做对有时做错 = 部分掌握未稳定 = 正落在 ZPD 里。
核心 idea:把组奖励方差当作免费的在线难度信号,给高方差 prompt 提高采样概率,让课程随模型能力自动演化,再用比例公平校准平衡多类别奖励的难度差异。
方法详解¶
整体框架¶
CGPO 把"自适应课程"无缝嵌进 GRPO 训练循环,构成一个每轮迭代自我更新的闭环。系统维护一张 prompt-概率表 \(L_{\text{probability}}=\{(p_1,P_1^{\text{list}}),\dots,(p_N,P_N^{\text{list}})\}\),记录数据集里每个 prompt 当前的采样概率。每一轮训练走四个阶段:①概率采样按当前概率挑一批 prompt;②策略更新对每个 prompt 生成图像组、算 GRPO 优势并更新 T2I 模型;③概率计算用这组奖励的方差换算出"提议概率";④概率更新对选中的 prompt 做历史平滑、对没被选中的做探索补偿,写回概率表,进入下一轮。与此并行,一个类别校准模块周期性地根据各类别平均奖励算出校准系数 \(w_i\),让采样在 prompt 级之外再做一层类别级的难度平衡。
四个阶段中,②是标准 GRPO(脚手架),真正的贡献集中在"方差→采样概率"(①③)、"探索平衡与历史平滑"(④)和"类别校准"三处。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["Prompt 概率表 L"] -->|"按 w_i×P_list 伯努利采样"| B["生成图像组 + GRPO 更新<br/>Â=(R-mean)/std"]
B --> C["方差自适应采样<br/>组奖励方差→提议概率 P_var"]
C --> D["探索平衡与历史平滑<br/>选中取近3次均值 / 未选 +1/N"]
D -->|写回概率表| A
E["类别校准<br/>比例公平闭式解 w_i"] --> A
B --> E
关键设计¶
1. 方差自适应采样:用组奖励方差当 ZPD 的在线代理
这是 CGPO 的核心,直接针对"均匀采样浪费预算在零增益样本上"的痛点。训练时每个 prompt \(p\) 生成一组 \(G\) 张图,奖励模型给每张图打分 \(R_{x_i}\),先算这组奖励的方差作为不一致性度量:
方差高意味着模型对同一 prompt 有时画对有时画错——部分掌握、尚未稳定,正是最有学习余量的样本;方差低则要么已经稳定做对、要么稳定做错,两头都没什么可学。然后在每个 batch \(S_b\) 内把方差线性归一化成一个"提议概率":
采样侧用的是 Poisson/伯努利式采样:把每个 prompt 当作独立的伯努利试验、按各自概率决定是否入选,再叠一层拒绝采样(随机抽候选、按概率做接受检验、被拒就换新候选直到填满 batch)。这样设计是为了避免某个 prompt 的概率被别的 prompt"挤压"掉——比起一次性按整体分布抽 top-k,独立判定能保住高价值 prompt 的入选机会。注意最终入选概率是 \(w_i\times P_i^{\text{list}}\)(\(w_i\) 来自下面的类别校准),不是单看 \(P_i^{\text{list}}\)。整个机制不依赖任何预定义难度标签,纯靠训练中自然产生的奖励算出来,所以课程能跟着模型能力一起漂移——论文的可视化显示高概率 prompt 随训练从 Level 1(3–4 个物体)→ Level 2 → Level 3(9–10 个物体)逐步上移,正是 ZPD 在自动后移。
2. 探索平衡与历史平滑:防止 prompt 被永久冷落、也防灾难性遗忘
只用提议概率更新概率表会有两个隐患:一是被打了低概率的 prompt 可能"永远不再被选",但其中一些难样本会随模型变强而重新变得可学;二是选中 prompt 的概率掉得太快,是灾难性遗忘的前兆。这一设计用一条分段更新规则同时解决:
对被选中的 prompt,不直接用当前提议概率,而是取最近三次 \(P^{\text{var}}\) 的平均做历史平滑,避免概率骤降;对没被选中的 prompt,每轮给一个 \(1/N\) 的小幅自增量(\(N\) 为数据集 prompt 总数),相当于"长期被忽视就慢慢补偿",保证它们最终有机会重新被采样。这条机制让采样焦点能随模型成长平滑地从易往难迁移,而不是卡死在早期判定上。消融里它单独带来 +0.59 的提升(从 +0.73 到 +1.32),说明探索补偿确实捞回了一批"后期才变得可学"的难样本。
3. 类别校准:用比例公平把采样预算偏向弱类别
实际场景里奖励常分多个类别(论文把不同奖励维度称为 "category",如 GenEval 的 Single Object/Counting/Position 等六类),各类别的评测标准和奖励计算机制不同,联合训练时天然存在难度落差,容易让模型偏科。作者用比例公平优化求一组校准系数,目标函数为:
其中 \(\sum\log(q_i)\) 是比例公平项,\(-\lambda\cdot\text{KL}(v\|q)\) 把解约束在参考分布 \(v\) 附近,\(v_i=\frac{1/r_i}{\sum_j 1/r_j}\) 由各类别平均奖励 \(r_i\) 构造——奖励越低的类别 \(v_i\) 越大。用拉格朗日乘子法可得闭式解 \(q_i=\frac{1+\lambda v_i}{c+\lambda}\):\(\lambda=0\) 时退化为均匀 \(1/c\),\(\lambda\to\infty\) 时完全偏向低奖励类别,调 \(\lambda\) 即在"均衡采样"和"靶向强化弱项"之间平滑过渡。实现上转成系数 \(w_i=1+\lambda v_i\) 存表,采样时用 \(P_i^{\text{sampling}}=w_i\times P_i^{\text{list}}\) 做伯努利试验。这样在 prompt 级自适应之上又叠了一层类别级再平衡,把预算往表现差的类别倾斜。
损失函数 / 训练策略¶
策略更新沿用 GRPO:对每个 prompt 的图像组算组内相对优势
再对 GRPO loss 做梯度下降更新 T2I 模型。基线为 SD3.5-Medium,框架用 Flow-GRPO(部分实验用其加速版 Flow-GRPO-Fast,每条轨迹只需 1–2 个去噪步)。用 LoRA 微调(\(\alpha=64,\ r=32\)),每个 batch 含 48 个 prompt、每个 prompt 生成 \(G=24\) 张图,训练用 10 个时间步加速、推理用 40 步保画质,全部在 8 张 H100 上跑。
实验关键数据¶
主实验¶
训练数据与奖励模型都来自 GenEval,在 GenEval、T2I-CompBench++、DPG Bench 三个 benchmark 上评测。
GenEval(同一模型):
| 任务 | SD3.5-M | Flow-GRPO | CGPO |
|---|---|---|---|
| Single object | 0.98 | 1.00 | 1.00 |
| Two object | 0.78 | 0.99 | 0.99 |
| Counting | 0.50 | 0.95 | 0.96 |
| Colors | 0.81 | 0.93 | 0.94 |
| Position | 0.24 | 0.98 | 0.99 |
| Attribute | 0.52 | 0.82 | 0.89 |
| Overall | 0.63 | 0.94 | 0.96 |
CGPO 全任务领先:Overall 比 SD3.5-M 高 0.33、比 Flow-GRPO 高 0.02;尤其在 SD3.5-M 原本最弱的 Attribute Binding 上比 Flow-GRPO 还高 0.07。T2I-CompBench++ 上多数子任务最优,在 Flow-GRPO 反而退化的 Texture 上 CGPO 提升 0.0183(Flow-GRPO 0.7298 → CGPO 0.7521)。DPG Bench 上 Overall 85.5,略超 Flow-GRPO 的 85.4,说明长文本指令下也有效。
训练效率:达到 Flow-GRPO 的峰值 0.944 时,CGPO 只用了 160 GPU 小时,约为 Flow-GRPO 的 2 倍训练速度。
消融实验¶
GenEval 上逐组件累加,baseline 为 Flow-GRPO(94.42%):
| 配置 | Overall (%) | 相对 baseline |
|---|---|---|
| baseline (Flow-GRPO) | 94.42 | – |
| +概率采样(方差自适应) | 95.15 | +0.73 |
| +探索平衡 | 95.74 | +1.32 |
| +类别校准 | 96.10 | +1.68 |
关键发现¶
- 方差自适应采样贡献最大:单组件就带来 +0.73,是整个框架的地基,证明"用奖励方差挑甜区 prompt"这一核心假设确实有效。
- 探索平衡捞回后期难样本:再 +0.59(→+1.32)。没有它,被早期打了低概率的难 prompt 会被永久冷落,而其中一些在模型变强后本可学;探索补偿让采样焦点能动态后移。
- 类别校准做最后一层均衡:再 +0.36(→+1.68),缓解类别间难度/奖励计算的固有差异,让弱类别得到更多关注。
- 课程确实在演化:以物体数分三档难度(Level 1: 3–4 个、Level 2: 6–7 个、Level 3: 9–10 个),高概率 prompt(\(P^{\text{list}}>0.7\))在 step<1100 集中于 Level 1、step 1800–2000 转到 Level 2、step>2300 转到 Level 3——可视化直接验证了 ZPD 随训练后移。
亮点与洞察¶
- 把训练副产品变成免费的难度信号:GRPO 本来就要为每个 prompt 生成一组图、算一组奖励,CGPO 几乎零额外开销地复用这组奖励的方差当在线 ZPD 代理,不需要任何预标注难度——这是最"啊哈"的地方,也是它能同时涨点又提速的根源。
- ZPD↔成功概率 0.5↔奖励方差这条链条把教育学直觉、RL 理论和 GRPO 实现串成了一个可计算量,思路干净且可迁移:任何"一个输入采样多个回答 + 奖励"的 RLHF/GRPO 场景(如 LLM 推理)都能借用方差当难度代理。
- 历史平滑 + 自增量这对组合是个可复用的小 trick:用近三次均值防概率骤降(抗遗忘),用 \(1/N\) 自增量防永久冷落(保探索),两行公式就把探索-利用平衡处理掉了。
局限与展望¶
- 奖励方差作为难度代理的边界未充分讨论⚠️:方差高也可能来自奖励模型本身噪声大或 prompt 本质歧义,而非"部分掌握"。论文没有区分"可学的不一致"与"噪声导致的不一致",在奖励模型不可靠时这个代理可能失真。
- "category"概念偏窄:类别校准在 GenEval 这种带清晰类别标签的数据上自然,但作者把"奖励维度"也称为 category,二者混用;对没有显式类别划分的开放数据如何定义 \(r_i\) 和 \(v_i\) 不明确。
- 绝对增益有限但效率收益大:相比 Flow-GRPO 的 Overall 仅 +0.02,主要价值在 2 倍训练加速而非终点性能;在已接近饱和的 benchmark 上,自适应采样的天花板受限于基线框架本身。
- 超参 \(\lambda\)、平滑窗口(固定为 3)、\(1/N\) 自增量步长等的敏感性没有系统消融,迁移到新数据集时调参成本未知。
相关工作与启发¶
- vs Flow-GRPO:Flow-GRPO 把 GRPO 接到 flow matching 上但仍用均匀采样;CGPO 在其之上只改"采样哪些 prompt",用方差信号重新分配预算,是正交增强——既兼容又能直接拿走 2 倍提速。
- vs 经典/静态课程学习(如 Curri-DPO、DUMP):它们依赖预定义难度排序或预聚类,难度静态、无法随模型能力演化;CGPO 完全在线、无需难度标签,课程随训练自动后移。
- vs PCL(Prompt Curriculum Learning):PCL 从理论上指出成功概率约 0.5 时训练信号最强;CGPO 把这条原则落地为"组奖励方差"这一可直接计算的在线量,省去显式估计成功概率。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把组奖励方差当 ZPD 在线代理、零额外标注地构建自适应课程,思路巧且贴合 GRPO 结构,但单点创新、建立在成熟概念之上。
- 实验充分度: ⭐⭐⭐⭐ 三 benchmark + 累加消融 + 难度演化可视化较完整,但缺关键超参敏感性分析、且只在单一基线/数据上验证。
- 写作质量: ⭐⭐⭐⭐ ZPD→方差→采样的逻辑链清晰,四阶段 pipeline 和公式交代到位。
- 价值: ⭐⭐⭐⭐ 2 倍训练加速 + 即插即用的采样改进,对 RL 微调文生图有直接工程价值。