GFlowRL:归一化网络真的必要吗?从诊断到轻量分布匹配

GFlowRL 提出一个比“换一个 RL loss”更有辨别力的问题:在仅有几百步的后训练中,一个从零初始化的归一化网络,真的学会了应该归一化什么吗?论文用随机替换实验挑战这一设计,再以组内估计和 flow-gap clipping 重构 TB 型训练;数学平均分提升明确,但关于分布匹配和稳定性的解释仍需要与实现近似分开。

六个关键结论

  • 问题:预训练策略只需细调,归一化网络却从零学起;两者的学习时间尺度可能不匹配。
  • 机制:从同题 rollout 估计一个停止梯度的基线,截断异常 flow gap,再用旧策略样本更新策略。
  • 证据:Qwen2.5-7B 数学 Avg@16 均值为 40.92,对照 GRPO 32.48、FlowRL 35.63;AIME25 并未超过 FlowRL。
  • 实践:辅助网络是否真的提供信息,应通过替换和消融检验,而不能仅因理论存在归一化常数就必须学习一个网络。
  • 代价:有限组、长度归一化、权重与 flow-gap clipping 都引入工程近似,理想固定点不等于实际训练收敛保证。
  • 开放问题:去掉网络与增加 clipping 的收益各占多少,是否跨配置稳定成立?

随机替换是一个机制检验

GFlowRL 承接 FlowRL 的分布匹配路线,但先审查一个容易被理论形式掩盖的实现问题:目标确实存在归一化常数,是否意味着现实训练中一定值得为它另建网络?预训练策略已经具有很强的起点,后训练可能只运行几百步;新的辅助网络却要从零学习每个问题的条件归一化量。两部分训练进度不匹配,就可能让理论上必需的量在代码里成为低质量信号。

这个问题不能靠“网络会学习到”回答。作者用替换实验检查该模块是否被真正利用:若其值包含不可替代的信息,把它换成随机数应当明显损伤效果。这里研究的不是归一化常数数学上是否存在,而是当前训练程序里的那份估计是否提供了可用信息。这是从方法叙述走向机制验证的重要一步。

作者把 FlowRL 的学得 \(\log Z_\phi(x)\) 换为均值 0.5、标准差 1 的独立高斯噪声,其他设置保持不变。数学平均为 36.19,而主表中的原 FlowRL 为 35.63,未明显受损。方法节另写为 35.61,存在轻微文本—表格不一致;本文采用完整主表的 35.63,不凭空补出一个新结果。

这支持“该配置下网络没有提供明显额外信息”,而非“归一化项在任何问题上都无用”。论文还引用 FlowRL 的训练日志诊断巨大梯度;若要把其因果归于特定模块,应在同硬件、精度、梯度统计位置和优化配置下复现,跨实验日志不能当成已经排除所有混杂因素的证据。

组内估计与 flow gap

理想目标仍为 \(p^\star(y\mid x)\propto\pi_{\mathrm{ref}}(y\mid x)e^{\beta r(x,y)}\)。对同题 \(G\) 个旧策略回答,论文定义:

\[\widehat z=\frac1G\sum_i\left[\beta r_i+\log\pi_{\mathrm{ref}}(y_i\mid x)-\log\pi_{\mathrm{old}}(y_i\mid x)\right].\]

它是这个组内量的 Monte Carlo 均值,不是在任意训练阶段都无偏估计真实 \(\log Z\)。当目标分布与策略在理想固定点上满足平衡时,各轨迹的隐式值相同,才与真正归一化常数一致。把“在最优点正确”误写为“全程精确”,会夸大方法。

长度为 \(T_i\) 时,旧策略的 flow gap 为:

\[g_i=\operatorname{sg}(\widehat z)+\frac1{T_i}\log\frac{\pi_{\mathrm{old}}(y_i\mid x)}{\pi_{\mathrm{ref}}(y_i\mid x)}-\beta r_i.\]

原文将其非对称截断为 \(\tilde g_i=\operatorname{clip}(g_i,-\epsilon_{\mathrm{low}},\epsilon_{\mathrm{high}})\),其中 \(0<\epsilon_{\mathrm{low}}<\epsilon_{\mathrm{high}}\)。重要性权重写为 \(w_i=\min(\pi_\theta(y_i\mid x)/\pi_{\mathrm{old}}(y_i\mid x),1+\epsilon)\),只截断上界,不能与 FlowRL 的双边截断混写。再加上当前与旧策略的长度归一化 log 比值:

\[\mathcal L=\frac1G\sum_iw_i\left[\tilde g_i+\frac1{T_i}\log\frac{\pi_\theta(y_i\mid x)}{\pi_{\mathrm{old}}(y_i\mid x)}\right]^2.\]

这把信号拆成“采样时已经观察到的偏差”与“这次更新造成的变化”。clipping 限制异常轨迹支配梯度;它不是 GRPO 的奖励去均值,也不是简单增加 KL penalty。只考察平方残差项,并将权重视为常量时,正残差的局部更新倾向减少该轨迹概率,负残差倾向增加。若代码让 \(w_i\) 对当前参数求导,完整梯度还包含 \((\nabla_\theta w_i)D_i^2\),其中 \(D_i\) 是方括号内残差;不能仅用残差符号概括整个更新,也不能把截断边界名称误当成概率增减方向。

组均值离真正的 log Z 有多远?

暂时不做长度归一化、clip 或奖励组标准化。令真实目标 \(p^*(y)=\pi_{\mathrm{ref}}(y)e^{\beta r(y)}/Z\)。对旧策略采样,组估计的无限样本期望为:

\[ \mathbb E_{y\sim\pi_{\mathrm{old}}} [\beta r(y)+\log\pi_{\mathrm{ref}}(y)-\log\pi_{\mathrm{old}}(y)] =\log Z-D_{\mathrm{KL}}(\pi_{\mathrm{old}}\|p^*). \]

只需把 \(\log p^*=\log\pi_{\mathrm{ref}}+\beta r-\log Z\) 代入 KL 定义就能得到。这个独立展开让“固定点上正确”的含义变得清楚:只有旧策略已经匹配目标时,差项才为零。有限组还会加上 Monte Carlo 误差,所以组均值不是全程精确的 log-partition estimator。

但这不意味着它没有用。它可作为与当前样本难度及概率尺度共同变化的局部参照,避免一个未学好的外部网络提供失准偏移。作为优化 baseline 有用与作为归一化常数估计准确是不同判断;主表主要支持前者,固定点分析刻画后者的理想情况。

flow gap 与概率比 clip 在不同位置工作

flow gap 是采样时就观察到的偏差,反映这条回答相对于目标的质量错配;当前对旧策略的 log 比值则记录本轮更新已经移动多少。将二者拆开,可以先限制异常旧偏差,再让当前策略进行受控修正。

概率比权重修正的是“数据由旧策略生成”,flow-gap clipping 限制的是“这条数据携带的偏差信号过大”。二者都使用截断,却不在同一个位置作用。若只把它们统称成 clipping,就无法解释哪项消融对应采样偏差、哪项对应梯度稳定性,也不能对照 GRPO 或 FlowRL 的具体实现。

长度归一化究竟改变了什么

附录的固定点命题在不做长度归一化、clip 不激活、策略类能够表达目标以及零残差的自洽条件下成立。它是目标固定点的刻画,不是非凸训练必然到达它的证明。

若使用长度归一化,零残差导出 \(\pi_\theta(y\mid x)=\pi_{\mathrm{ref}}(y\mid x)\exp[T_y(\beta r_y-z)]\)。当长度相同,奖励温度变为 \(T\beta\);长度不同时,\(\exp(-T_yz)\) 也不再是所有序列共享的归一化因子。更需注意原文 \(\widehat z\) 估计式用未归一化 log 概率,残差却用了归一化值;两式的尺度关系需要对照代码检验,不能将其无条件称为精确组中心化。

7B 数学完整主表

数学训练数据在附录列为 DAPO-Math-17K;六个表格任务是评估基准,不应因为主文简写而说成在测试集上训练。下表是 Qwen2.5-7B 的 Avg@16 平均正确率(%),保留所有方法。

方法AIME24AIME25AMC23MATH500MinervaOlympiad平均
Base4.382.0830.7854.4722.3824.0323.02
R++11.045.4166.7154.2524.3727.3331.52
PPO9.387.2963.4357.9826.5327.2531.98
GRPO13.549.7964.5357.0523.0626.8832.48
FlowRL15.4110.8354.5366.9631.4134.6135.63
FlowRL RandomLogZ12.089.3862.6669.4426.2937.3036.19
GFlowRL17.299.7967.6676.8933.6240.2540.92

相对 GRPO 提高 8.44 个百分点,相对 FlowRL 为 5.29 个百分点,不能混成相对百分比。论文还展示代码、安全红队和 MoE 的扩展;其中 235B MoE 使用 30 步,对照 GRPO 为 100 步,所以它是不同更新预算的可行性结果,不是严格等算力规模律。

消融与公平性边界

去掉 flow-gap clipping 后,平均从 40.92 降至 37.02;对应梯度均值从 0.095 到 0.601。额外对比 ConstantLogZ 25.34、FOR 型方差目标 29.53,说明并非任何移除网络的目标都一样有效。但这些变体共同涉及基线、截断和数据更新,应进一步用组件交叉实验识别原因。

作者用评审模型评估多样性,得分尺度是 1–5;它不是实际目标分布的距离。主表缺少逐格置信区间,且包含来自既有方法的对照结果,不应把小差距都解释为统计显著。红队 ASR 更高体现攻击评测能力,不直接代表模型更安全。

延伸:如何判断一个辅助模块是信号,还是装饰?

以下是延伸研究建议。随机替换未损伤效果,不一定只说明网络“没有学到”。还有几种可能:目标对一个共享偏移本就不敏感;模块的信息被其他项补偿;当前指标没有捕捉它改变的分布;或者训练噪声掩盖了较小作用。要排除这些解释,应该直接测模块输出与可验证目标的关系,再观察梯度和行为变化。

可在一个能够枚举回答的小任务上精确算 \(\log Z\),分别使用真实值、学习网络、组均值、固定数和随机数,并控制其他设置。如果真实值也没有改善,说明当前代理目标或评价未必需要高质量归一化;如果真实值有效而网络无效,瓶颈才更明确地落在辅助估计的学习进度。

再把这个设计迁移到长序列,做归一化方案、length normalization 与 flow-gap clipping 的交叉实验,同时记录尾部梯度、回答长度和目标分布误差。高准确率可以来自更稳定的优化,而不一定来自更准确的分布匹配;两者都有价值,但理论故事需要对应各自证据。

对 E2S 的启发也应保持精确:组中心化可以消去每题共享常数,但 E2S 的学生正确条件分布不是 GFlowRL 的软奖励倾斜目标。借鉴一个技巧之前,应先检查采样来源、有效性条件和概率归一化是否仍与原推导一致。

最重要的复现步骤

先检查代码中组估计、概率比和长度归一化的确切位置,以及权重是否停止梯度。然后固定同一训练预算,做“学习/随机/组均值归一化项 × 有无 flow-gap clip”的交叉消融,记录多种子准确率、长度分布、梯度异常比例与实际分布误差。它比继续扩大排行榜更能回答论文的核心机制问题。

结论

GFlowRL 的重要贡献是用诊断实验审查辅助网络,并给出更轻量的替代;对 E2S 而言,组内中心化很有启发,但奖励目标、长度处理和严格 on-policy 条件仍应逐项对照。

参考资料

GFlowRL:v1 方法、7B 主表、flow-gap 与归一化项消融、固定点证明、训练设置附录;前置阅读:FlowRL 中文笔记。

Contact

There may be some errors present. If you find any, please feel free to contact me at wangqiyao25@mails.ucas.ac.cn. I would appreciate it!