GFlowRL: Scaling Distribution-Matching RL to Large Language Models
一句话:微软研究院把GFlowNet中那个"学不会又爱捣乱"的配分函数网络直接砍掉,用批次内蒙特卡洛估计替代,让分布匹配RL首次在235B MoE上稳定训练,顺便在14B规模就追平了o3-mini的做题水平。
一、论文元信息
| 字段 | 内容 |
|---|---|
| 标题 | GFlowRL: Scaling Distribution-Matching RL to Large Language Models |
| 作者 | Xiaodong Liu†‡*, Michael Xu*, Jack W. Stokes, Paul Smolensky, Doug Burger, Jianfeng Gao‡(Microsoft Research;†项目负责人,‡通讯作者,*同等贡献) |
| 发布日 | 2026年7月15日 |
| 发表平台 | arXiv:2607.13394 |
| 代码 | https://github.com/microsoft/gflowrl(即将发布) |
| 相关方法 | FlowRL (Zhu et al., 2026, ICLR), FOR (Yu et al., 2025, ICML), GRPO (Shao et al., 2024) |
二、摘要与核心发现
2.1 一句话总结
GFlowNet风格的RL因一个"学不会的配分函数网络"而无法扩展到大规模LLM后训练。作者干脆把这个网络删掉,用批次内MC估计替代,结果不仅稳定性大幅提升,性能还全面超越此前方法,首次在MoE架构上实现稳定训练。
2.2 问题诊断(全篇最有价值的部分)
作者做了两个关键诊断实验:
-
把学习到的配分函数 Zϕ 替换为纯随机噪声 → 性能不变甚至略好。
- FlowRL标准训练:35.63% 平均准确率
- FlowRL-RandomLogZ(Zϕ 替换为 N(0.5, 1) 噪声):36.19%
- 结论:Zϕ 根本没学到有用的东西,它只是个噪声源。
-
梯度爆炸对比:
- FlowRL 梯度范数均值:3.2 × 10¹⁴(55/421步超过10⁶)
- GFlowRL 梯度范数均值:0.07
- GRPO 梯度范数均值:0.24
- 结论:Zϕ 是训练不稳定性的罪魁祸首。
2.3 三大核心贡献
- 删掉配分函数网络:用in-batch MC估计 log Z = (1/G) Σ βr + log(πref) - log(πold),无需额外参数。
- 两个稳定器:重要性采样校正(纠正rollout/trainer分布偏移)+ 非对称flow-gap裁剪(正方向比负方向宽容)。
- 跨架构扩展:密集模型14B达Codeforces 2048 ELO(超o1 157分,距o3-mini仅25分);MoE 30B-A3B达1999 ELO;MoE 235B-A22B稳定训练。
三、背景
3.1 GFlowNet与Trajectory Balance
GFlowNet(Bengio et al., 2021, 2023)的核心思想是学习一个策略,使采样轨迹的概率正比于奖励,而非单纯最大化奖励。对LLM后训练,这意味着模型会覆盖所有高分推理路径,而非坍缩到单一最优解。
Trajectory Balance(TB)目标函数:
L T B ( θ , ϕ ; x , y ) = ( log Z ϕ ( x ) + log π θ ( y ∣ x ) π r e f ( y ∣ x ) − β r ( x , y ) ) 2 L_{TB}(\theta, \phi; x, y) = \left( \log Z_\phi(x) + \log \frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)} - \beta r(x, y) \right)^2 LTB(θ,ϕ;x,y)=(logZϕ(x)+logπref(y∣x)πθ(y∣x)−βr(x,y))2
其中 Z ϕ ( x ) Z_\phi(x) Zϕ(x) 是学习到的配分函数,在FlowRL中用三层MLP(基于prompt的最后隐藏状态)参数化。
3.2 从GRPO到GFlowNet:为什么需要分布匹配
#mermaid-svg-Xx9yueLOCw64y6ji{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Xx9yueLOCw64y6ji .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Xx9yueLOCw64y6ji .error-icon{fill:#552222;}#mermaid-svg-Xx9yueLOCw64y6ji .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Xx9yueLOCw64y6ji .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Xx9yueLOCw64y6ji .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Xx9yueLOCw64y6ji .marker.cross{stroke:#333333;}#mermaid-svg-Xx9yueLOCw64y6ji svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Xx9yueLOCw64y6ji p{margin:0;}#mermaid-svg-Xx9yueLOCw64y6ji .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Xx9yueLOCw64y6ji .cluster-label text{fill:#333;}#mermaid-svg-Xx9yueLOCw64y6ji .cluster-label span{color:#333;}#mermaid-svg-Xx9yueLOCw64y6ji .cluster-label span p{background-color:transparent;}#mermaid-svg-Xx9yueLOCw64y6ji .label text,#mermaid-svg-Xx9yueLOCw64y6ji span{fill:#333;color:#333;}#mermaid-svg-Xx9yueLOCw64y6ji .node rect,#mermaid-svg-Xx9yueLOCw64y6ji .node circle,#mermaid-svg-Xx9yueLOCw64y6ji .node ellipse,#mermaid-svg-Xx9yueLOCw64y6ji .node polygon,#mermaid-svg-Xx9yueLOCw64y6ji .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Xx9yueLOCw64y6ji .rough-node .label text,#mermaid-svg-Xx9yueLOCw64y6ji .node .label text,#mermaid-svg-Xx9yueLOCw64y6ji .image-shape .label,#mermaid-svg-Xx9yueLOCw64y6ji .icon-shape .label{text-anchor:middle;}#mermaid-svg-Xx9yueLOCw64y6ji .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Xx9yueLOCw64y6ji .rough-node .label,#mermaid-svg-Xx9yueLOCw64y6ji .node .label,#mermaid-svg-Xx9yueLOCw64y6ji .image-shape .label,#mermaid-svg-Xx9yueLOCw64y6ji .icon-shape .label{text-align:center;}#mermaid-svg-Xx9yueLOCw64y6ji .node.clickable{cursor:pointer;}#mermaid-svg-Xx9yueLOCw64y6ji .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Xx9yueLOCw64y6ji .arrowheadPath{fill:#333333;}#mermaid-svg-Xx9yueLOCw64y6ji .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Xx9yueLOCw64y6ji .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Xx9yueLOCw64y6ji .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Xx9yueLOCw64y6ji .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Xx9yueLOCw64y6ji .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Xx9yueLOCw64y6ji .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Xx9yueLOCw64y6ji .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Xx9yueLOCw64y6ji .cluster text{fill:#333;}#mermaid-svg-Xx9yueLOCw64y6ji .cluster span{color:#333;}#mermaid-svg-Xx9yueLOCw64y6ji div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Xx9yueLOCw64y6ji .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Xx9yueLOCw64y6ji rect.text{fill:none;stroke-width:0;}#mermaid-svg-Xx9yueLOCw64y6ji .icon-shape,#mermaid-svg-Xx9yueLOCw64y6ji .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Xx9yueLOCw64y6ji .icon-shape p,#mermaid-svg-Xx9yueLOCw64y6ji .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Xx9yueLOCw64y6ji .icon-shape .label rect,#mermaid-svg-Xx9yueLOCw64y6ji .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Xx9yueLOCw64y6ji .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Xx9yueLOCw64y6ji .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Xx9yueLOCw64y6ji :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} GRPO/PPO: 最大化奖励
模式坍缩
所有概率坍到单峰
GFlowNet: 匹配奖励分布
保留多样性
覆盖所有高分路径
GRPO和PPO本质上是奖励最大化的------它们将概率质量集中到最高奖励模式上。这在代码和数学竞赛中看似有效(只需求一个正确答案),但在需要覆盖多种解空间(如安全红队攻击、创意生成)时暴露结构性缺陷。
3.3 为什么FlowRL扩展不动
FlowRL(Zhu et al., 2026)是第一个将TB目标引入LLM推理的规模化尝试,但存在根本性不对称:
| 组件 | 初始状态 | 训练需求 |
|---|---|---|
| Policy πθ | 预训练数十亿参数 | 仅需微调 |
| Partition Zϕ | 随机初始化 | 从头学习复杂量 |
这种不对称导致:Zϕ 在整个训练过程中基本是个噪声源,而它的梯度贡献可以比策略梯度大十几个数量级。在MoE模型中,稀疏路由的随机性进一步放大了这个问题。
四、方法论:GFlowRL
4.1 核心公式
In-batch MC估计 log Z:
Z ^ t ( x ) : = 1 G ∑ i = 1 G β r ( x , y ( i ) ) + log π θ r e f ( y ( i ) ∣ x ) π ϕ o l d ( y ( i ) ∣ x ) \hat{Z}t(x) := \frac{1}{G} \sum{i=1}^{G} \left \\beta r(x, y\^{(i)}) + \\log \\frac{\\pi_{\\theta_{ref}}(y\^{(i)}\|x)}{\\pi_{\\phi_{old}}(y\^{(i)}\|x)} \\right Z^t(x):=G1i=1∑Gβr(x,y(i))+logπϕold(y(i)∣x)πθref(y(i)∣x)
这个估计量的巧妙之处:它直接从GRPO已有的rollout group中计算,零额外成本。
GFlowRL训练损失:
L G F l o w R L ( θ ; x ) = 1 G ∑ i = 1 G w ( i ) ( g ~ ( i ) + 1 ∣ y ( i ) ∣ log π θ ( y ( i ) ∣ x ) π o l d ( y ( i ) ∣ x ) ) 2 \mathcal{L}{GFlowRL}(\theta; x) = \frac{1}{G} \sum{i=1}^{G} w^{(i)} \left( \tilde{g}^{(i)} + \frac{1}{|y^{(i)}|} \log \frac{\pi_\theta(y^{(i)}|x)}{\pi_{old}(y^{(i)}|x)} \right)^2 LGFlowRL(θ;x)=G1i=1∑Gw(i)(g~(i)+∣y(i)∣1logπold(y(i)∣x)πθ(y(i)∣x))2
其中 w ( i ) = min ( π θ / π o l d , 1 + ϵ ) w^{(i)} = \min(\pi_\theta / \pi_{old}, 1+\epsilon) w(i)=min(πθ/πold,1+ϵ) 为重要性采样权重, g ~ ( i ) = clip ( g ( i ) , − ϵ l o w , + ϵ h i g h ) \tilde{g}^{(i)} = \text{clip}(g^{(i)}, -\epsilon_{low}, +\epsilon_{high}) g~(i)=clip(g(i),−ϵlow,+ϵhigh) 为非对称裁剪后的flow gap。
4.2 公式推导关键点
| 步骤 | 说明 |
|---|---|
| 1. 定义flow gap | $g^{(i)} = \text{sg}\\hat{Z}_t(x) + \frac{1}{ |
| 2. 非对称裁剪 | 正方向 ϵ h i g h \epsilon_{high} ϵhigh > 负方向 ϵ l o w \epsilon_{low} ϵlow,因为正确解在训练早期被欠采样,需要更强的正反馈 |
| 3. 长度归一化 | 除以响应长度 $ |
| 4. 重要性采样 | 纠正 π o l d \pi_{old} πold 与 π θ \pi_\theta πθ 之间的分布偏移(off-policy correction) |
4.3 与FlowRL的本质区别
| 维度 | FlowRL | GFlowRL |
|---|---|---|
| Z估计 | 学习型MLP网络 Zϕ(x) | In-batch MC估计(无参数) |
| 额外参数 | 需要(MLP + 优化器状态) | 零 |
| 分布式开销 | 跨模块同步 | 无 |
| 梯度规模 | 均值 10¹⁴ | 均值 0.07 |
| MoE兼容性 | 发散 | 稳定收敛 |
五、实验设计
5.1 模型与数据集
| 领域 | 模型 | 数据集 | 指标 |
|---|---|---|---|
| 数学 | Qwen2.5-7B/32B, Qwen3-30B-A3B, Qwen3-235B-A22B | AIME24/25, AMC23, MATH-500, Minerva, Olympiad | Avg@16 |
| 代码 | DeepSeek-R1-Distill-Qwen-7B/14B | LiveCodeBench, Codeforces, HumanEval+ | Avg@16 / Rating |
| 安全 | SEMA框架 | AdvBench, HarmBench | ASR@1 |
5.2 对比基线
- 分布匹配线:FlowRL
- 奖励最大化线:GRPO, GRPO+, PPO, REINFORCE++
- 安全专用线:SEMA(多轮越狱攻击SOTA), X-Teaming
5.3 关键诊断实验
- RandomLogZ实验:将Zϕ替换为N(0.5,1)噪声------性能不降反而微升
- 合成高斯混合:三维高斯混合目标,FlowRL和RandomLogZ均产生接近均匀的采样,未能捕获多模态结构
- 梯度范数对比:FlowRL vs GFlowRL vs GRPO,揭示稳定性差异
六、实验结果
6.1 数学推理(Qwen2.5-7B)
| 方法 | AIME24 | AIME25 | AMC23 | MATH500 | Minerva | Olympiad | Avg |
|---|---|---|---|---|---|---|---|
| Backbone | 4.38 | 2.08 | 30.78 | 54.47 | 22.38 | 24.03 | 23.02 |
| GRPO | 13.54 | 9.79 | 64.53 | 57.05 | 23.06 | 26.88 | 32.48 |
| FlowRL | 15.41 | 10.83 | 54.53 | 66.96 | 31.41 | 34.61 | 35.63 |
| FlowRL-RandomLogZ | 12.08 | 9.38 | 62.66 | 69.44 | 26.29 | 37.30 | 36.19 |
| GFlowRL | 17.29 | 9.79 | 67.66 | 76.89 | 33.62 | 40.25 | 40.92 |
GFlowRL较GRPO提升 +8.44 平均分,较FlowRL提升 +5.29。
6.2 代码(DeepSeek-R1-Distill-Qwen-7B/14B)
| 方法 | LiveCodeBench | Codeforces Rating | HumanEval+ |
|---|---|---|---|
| Backbone | 30.68 | 886.68 | 80.90 |
| GRPO | 32.75 | 1313.82 | 80.13 |
| FlowRL | 37.43 | 1549.47 | 83.28 |
| GFlowRL | 38.62 | 1646.21 | 84.93 |
14B规模:GFlowRL-14B 达 Codeforces 2048 ELO,超过 o1 (+157)、DeepCoder-14B (+112)、FlowRL-14B (+144),距 o3-mini (2073) 仅差 25 分。
6.3 安全红队
| 攻击者 / 受害模型 | AdvBench Avg ASR@1 | HarmBench Avg ASR@1 |
|---|---|---|
| X-Teaming | 36.0 | 37.3 |
| SEMA(此前SOTA) | 80.1 | 75.0 |
| GFlowRL | 82.5 | 79.5 |
FlowRL在此场景下发散,无法产生可用攻击者。GFlowRL不仅收敛,还超越此前SOTA多轮攻击者SEMA。
6.4 MoE扩展
| 模型 | 配置 | 结果 |
|---|---|---|
| Qwen3-30B-A3B | 30B总参/3B激活 | Codeforces 1999 ELO(超o1 +108);Math Avg +3.80 |
| Qwen3-235B-A22B | 235B总参/22B激活 | Math Avg +2.06(仅30步训练,GRPO用100步) |
FlowRL在两个MoE配置上均发散。
6.5 消融实验
| 消融项 | GFlowRL | 消融版本 | 差值 |
|---|---|---|---|
| Flow-gap裁剪 | 40.92 | 37.02(no-clip) | -3.90 |
| 多样性评分(1-5) | 3.93 | GRPO:1.21, PPO:1.15, FlowRL:2.64 | 3.2× GRPO |
| β敏感度 | 38.2 peak | β∈1,10内波动≤0.5 | 低敏感 |
七、实验结论
核心结论
| 结论 | 证据强度 |
|---|---|
| 学习型配分函数Zϕ是GFlowNet扩展瓶颈 | 强(RandomLogZ实验 + 梯度统计) |
| In-batch MC估计是可行替代 | 强(全benchmark超越FlowRL) |
| GFlowRL可跨密集/MoE架构稳定训练 | 强(7B→235B均验证) |
| 分布匹配在数学/代码/安全上均优于奖励最大化 | 强(vs GRPO/PPO全胜) |
方法本质
GFlowRL做的事情本质上并不复杂------它发现了GFlowNet的标准recipe中有一个"做无用功还捣乱"的组件(Zϕ),把它砍掉后用已有的rollout信息做估计,再加上两个稳定器。与其说这是一次算法创新,不如说是一次工程诊断+减法设计的成功。
八、实验规模
| 维度 | 估算/说明 |
|---|---|
| 模型参数规模 | 7B → 14B → 32B 密集;30B-A3B / 235B-A22B MoE |
| 训练步数 | 数学100步,代码100-200步,MoE-235B仅30步(因GPU限制) |
| Rollout group size | GRPO标准配置(G≈8-16),论文未明确调整 |
| 计算资源 | 微软内部GPU集群,235B训练暗示大规模分布式 |
| 框架 | verl + deepcoder + FlowRL + SEMA,PyTorch |
九、数学公式汇总
| 编号 | 公式 | 含义 |
|---|---|---|
| (1) | L T B = ( log Z ϕ + log π θ / π r e f − β r ) 2 L_{TB} = (\log Z_\phi + \log \pi_\theta/\pi_{ref} - \beta r)^2 LTB=(logZϕ+logπθ/πref−βr)2 | Trajectory Balance 原始目标 |
| (2) | Z ^ t = 1 G ∑ β r + log π r e f − log π o l d \hat{Z}_t = \frac{1}{G}\sum\\beta r + \\log\\pi_{ref} - \\log\\pi_{old} Z^t=G1∑βr+logπref−logπold | In-batch MC 估计(核心创新) |
| (3) | g ( i ) = sg Z \^ t + 1 ∣ y ∣ log π o l d π r e f − β r g^{(i)} = \text{sg}\\hat{Z}_t + \frac{1}{|y|} \log\frac{\pi_{old}}{\pi_{ref}} - \beta r g(i)=sgZ\^t+∣y∣1logπrefπold−βr | Flow gap |
| (4) | g ~ ( i ) = clip ( g ( i ) , − ϵ l o w , + ϵ h i g h ) \tilde{g}^{(i)} = \text{clip}(g^{(i)}, -\epsilon_{low}, +\epsilon_{high}) g~(i)=clip(g(i),−ϵlow,+ϵhigh) | 非对称裁剪 |
| (5) | w ( i ) = min ( π θ / π o l d , 1 + ϵ ) w^{(i)} = \min(\pi_\theta/\pi_{old}, 1+\epsilon) w(i)=min(πθ/πold,1+ϵ) | 重要性采样权重 |
| (6) | L G F l o w R L = 1 G ∑ w ( i ) ( g ~ ( i ) + 1 ∣ y ∣ log π θ π o l d ) 2 \mathcal{L}{GFlowRL} = \frac{1}{G}\sum w^{(i)}(\tilde{g}^{(i)} + \frac{1}{|y|}\log\frac{\pi\theta}{\pi_{old}})^2 LGFlowRL=G1∑w(i)(g~(i)+∣y∣1logπoldπθ)2 | GFlowRL 最终损失 |
十、争议与局限
10.1 论文自身承认的局限
| 局限 | 说明 |
|---|---|
| MC估计方差 | 小group size时Z的MC估计方差可能更大,依赖两个稳定器控制 |
| 泛化性未验证 | 仅在数学/代码/红队上验证,Agent/多模态场景未知 |
| 理论保证弱 | Proposition B.1仅保证固定点性质,不保证有限batch下非凸优化的收敛 |
10.2 未言明的局限
| 局限 | 分析 |
|---|---|
| 创新高度有限 | 本质上是一个"砍组件+换估计器"的工程优化,算法新颖性低于FlowRL和FOR的原始TB引入 |
| 与GRPO的边界模糊 | 当flow-gap裁剪活跃时,GFlowRL的更新方向与GRPO有本质差异吗?论文未做系统对比分析 |
| MoE-235B训练仅30步 | "资源受限只训了30步"的声明削弱了大规模结论------30步的改进可能来自学习率热身而非算法优势 |
| Zϕ=噪声的诊断逻辑链 | "Zϕ≈噪声"这个诊断虽然漂亮,但可能过于简化------如果换一种初始化或更大容量MLP,Zϕ是否仍无用?论文未消融 |
10.3 社区关注点
- FlowRL作者对"Zϕ无用论"的回应值得关注------FlowRL在某些场景(如小规模、长训练)下Zϕ是否仍有价值?
- Kimi K3 (2.8T) 和 DeepSeek-R1 的后训练pipeline是否会采用分布匹配路线?
十一、批判性分析(五维度)
11.1 一句话核心吐槽
GFlowRL的"创新"本质上是在说:FlowRL精心设计的配分函数网络从头到尾都在摸鱼,把它删了反而训练更稳、性能更好。这就像你买了一台高端咖啡机,发现磨豆功能总是卡住,最后你直接买现成咖啡粉倒进去,咖啡反而更好喝------问题解决了,但你开始怀疑自己为什么要买那台机器。
11.2 假设挖掘
假设1:批次内rollout group是Z的充分统计量。
GFlowRL假设同一prompt的G个rollout足以提供Z的准确估计。现实反例:当奖励信号极其稀疏(如Agent任务中100步才有一次反馈),G个rollout的Z估计方差会极大,而此时一个训练有素的Zϕ(如果它能学会)反而可能更稳定。
假设2:长度归一化是安全的近似。
论文假设推理任务的response长度大致均匀(Remark B.4),因此除以长度不扭曲分布匹配的目标。现实反例:在开放式创意写作中,好答案的长度可能从50到5000 tokens不等,长度归一化会系统性地偏袒短答案。
假设3:非对称裁剪不会改变最优不动点。
论文声称在最优解附近flow gap为零所以裁剪不活跃(Remark B.3)。现实反例:在非凸优化中,"附近"的定义取决于当前参数到最优解的距离------如果训练早期或中期正处于一个偏远的鞍点区域,非对称裁剪可能将优化推向完全不同于TB目标的方向,且无法恢复。
11.3 基线公平性检测
问题:如果我拿到了GFlowRL的代码,但把GRPO的KL惩罚系数、学习率、warmup步数、rollout temperature全部调到最优,GFlowRL还能赢吗?
答案:在数学和代码上,大概率仍然能赢,但差距会显著缩小。
理由:
- GFlowRL在Codeforces上的1904→2048提升,有相当一部分来自分布匹配带来的解决方案多样性------这在竞赛编程中尤其有价值,因为多个测试用例需要不同路径覆盖。
- 但在Avg@16这种采样后投票的指标上,GRPO如果调得足够好(尤其是temperature和采样策略),可以通过大量采样来模拟多样性。GFlowRL的优势在于用更少样本获得同等多样性------这在实际部署中是真正的效率优势,但在公平对比中可能被缩小。
- 安全红队场景是GFlowRL最稳固的优势------GRPO从根本上不适合这个任务(需要多模态攻击策略),超参调整无法弥补目标函数的结构性差异。
11.4 消融实验补刀
恶意消融设计:移除flow-gap裁剪,同时将G减小一半(从默认的8到4),观察性能下降。
预期结果:计算量减少约50%(小G → 更少的前向传播 + 更简单的loss计算),性能可能从40.92掉到约35-36(无裁剪的37.02再减去G减半的噪声惩罚)。
论证:作者的消融只证明了"有裁剪比没裁剪好",但未证明"这个裁剪的设计(非对称 + 特定阈值)是最优的"。他们应该额外消融:(a) 对称裁剪 vs 非对称裁剪;(b) 不同(ϵ_low, ϵ_high)组合的敏感性分析;© 用更简单的裁剪替代方案(如直接基于分位数的winsorization)。这些缺失表明作者在"证明自己的设计选择最优"上投入不足。
11.5 未来终结者
终结方向:直接训练一个"内在多样化"的基座模型------即通过预训练数据配方和退火策略,使得SFT后的模型本身就能以reward-proportional的概率覆盖多条推理路径,无需任何显式的分布匹配RL。
为什么这会终结GFlowRL:如果基座模型已经自然具备GFlowNet想要诱导的多样性,那么后训练只需要简单的GRPO就能同时获得高准确率和高多样性。在这种情况下,GFlowRL的核心贡献("砍掉Zϕ、用MC估计替代")就变成了解决一个本不存在的问题。近期Kimi K3和Gemma 4的进展暗示,足够好的预训练数据配方确实能显著提升模型的内在推理多样性------如果这个趋势持续,分布匹配RL可能从"必要组件"降级为"历史注脚"。
十二、五阶段深度分析
第一阶段:定位与动机
1. 问题定义
RL后训练中的分布匹配问题:如何让LLM的策略覆盖所有高分推理路径,而非坍缩到单一最优解。这个问题在数学推理(需要多种解法)、代码竞赛(需要多测试用例覆盖)和安全红队(需要多样的攻击策略)中均有实际意义。
2. 动机批判
论文的动机建立在FlowRL"扩展失败"的观察上,但诊断过程过于依赖经验观察:Zϕ≈噪声 → 所以Zϕ是瓶颈。这个逻辑链漏了一个关键问题:Zϕ是不是因为FlowRL的实现不够好才表现得像噪声? 如果Zϕ用更好的初始化(如从πref的log-likelihood预训练)、更大的容量、或单独的学习率调度,它能否从"噪声源"变成"有用组件"?论文用一个固定的随机噪声替换实验就宣布Zϕ无用,说服力不足------这相当于说你用一台坏的咖啡机磨了豆,得出结论是"磨豆这个步骤本身没用"。
3. "奥卡姆剃刀"质问
GFlowRL声称自己比FlowRL"更简单"------砍掉了Zϕ网络。但仔细检查损失函数(Eq. 8),你会发现它引入了至少三个新的超参:ϵ_low、ϵ_high、ϵ(重要性采样上限),外加β、G(group size)。相比之下,GRPO的核心超参只有clip_epsilon和β。所以GFlowRL真的更简单吗?它只是把参数从"网络权重"变成了"超参"------这更像是复杂度转移而非真正简化。
第二阶段:方法论拆解
4. 输入与输出
- 输入:prompt x, rollout group {y^(1), ..., y^(G)} from π_old, rewards r(x, y^(i)), reference policy π_ref
- 输出:更新后的policy π_θ,目标分布为 π_ref(y|x) · exp(βr(x,y)) / Z(x)
- 信息流:rollout → Z估计(无梯度) → flow gap计算 → 非对称裁剪 → IS加权 → 平方损失 → 梯度回传
5. 核心假设清单
| # | 假设 | 脆弱性评估 |
|---|---|---|
| 1 | G个样本足以估计Z | 中(稀疏奖励时失效) |
| 2 | Response长度≈均匀 | 低(推理任务确实如此) |
| 3 | 非对称裁剪不影响最优解 | 中(非凸优化中可能偏航) |
| 4 | IS权重在0, 1+ε内 | 低(标准TRPO/PPO实践) |
| 5 | π_old与π_θ的KL有界 | 中(依赖rollout频率) |
6. 冗余性分析
GFlowRL的损失函数(Eq. 8)可以拆解为三个部分:
- Z估计(stop-gradient, 纯baseline)
- 策略项(log π_θ/π_old,携带梯度)
- 裁剪+IS(稳定化trick)
如果去掉裁剪和IS,GFlowRL退化为REINFORCE with a fancy baseline。如果再去掉Z估计,退化为REINFORCE with reward baseline。这意味着GFlowRL的创新增量主要集中在第一项(Z估计方式),而二三项是已知trick的组合。论文声称"分布匹配"是核心贡献,但工程上使它能用的其实主要是裁剪+IS------这两者恰恰与分布匹配的目标无关,而是通用的RL稳定技术。
第三阶段:实验逻辑审判
7. 基线的公平性
GRPO使用了默认配置,FlowRL使用官方配置。但GRPO的超参(尤其是KL惩罚系数和temperature)在数学vs代码vs安全上应该不同------论文没有为每个任务单独调GRPO。同样,FlowRL在安全红队下发散,但这是否通过降低学习率或使用gradient clipping能够解决?论文宣称FlowRL发散,但只跑了"标准配置"一次------这对FlowRL不公平。
8. 消融实验的灵魂拷问
现有消融只覆盖了β值和flow-gap裁剪。至少应该补充:
- 不同G值(group size)对Z估计质量的影响
- 对称 vs 非对称裁剪
- IS权重的作用(去掉IS后性能下降?)
- 长度归一化的必要性(去掉后是否不稳定?)
- 不同Z估计器(中位数 vs 均值,trimmed mean等)
缺少这些消融,论文的"设计选择"更像"碰巧work"而非"精心设计"。
9. 统计显著性欺骗
论文未报告任何标准差、置信区间或统计检验。在数学Avg@16指标上,不同方法在单个benchmark上的差异(如AIME24的17.29 vs 15.41)是否显著?考虑到AIME只有30道题,2分的差距可能就是1-2道题的波动。在MoE-235B上,GFlowRL仅训练30步v.s. GRPO的100步------在训练步数不同的情况下比较是不公平的。
第四阶段:边界与失效模式
10. 极端压力测试
以下场景GFlowRL可能失败:
- 单样本推理(G=1):Z估计退化为单样本目标,方差极大
- 极长horizon(Agent >100步):rollout代价过高,无法获取多样本
- 连续奖励(如RLHF偏好分):βr在连续空间下Z估计的解释性存疑
- 多轮对话:每轮独立的Z估计忽略对话状态
11. 失败案例的自我曝光
论文展示了FlowRL在红队上发散,但未展示GFlowRL自身的失败案例。按常理,非对称裁剪(ε_high > ε_low)在以下情况会出错:当大部分rollout是错误解但恰好有一两个高奖励解时,正方向的宽容裁剪可能过度推高这些罕见好解的概率,导致policy过度锐化------这恰恰是分布匹配想要避免的模式坍缩。
12. 资源与现实鸿沟
- O(d²)的Jacobian计算不存在,但分布式训练中rollout-trainer的同步开销依然存在
- 235B MoE训练仅30步------这个规模的RL训练成本对大多数学术实验室是不可企及的
- 代码未开源("即将发布"),复现难度未知
第五阶段:延伸与重构
13. 逆向应用
GFlowRL的核心技巧(in-batch MC估计替代学习型归一化器)可以反向用于其他需要归一化常数的场景:
- 对比学习:InfoNCE中的partition估计
- 能量模型训练:噪声对比估计的替代
- VAE:ELBO中KL项的batch估计
核心前提是"rollout group already exists"------任何已经有grouped sampling的设置都可以尝试这个技巧。
14. 拼接可能性
| 拼接方向 | 可能性 |
|---|---|
| GFlowRL + QuasiMoTTo(QMC采样) | 用QMC生成更少但更有信息量的rollout,降低Z估计方差 |
| GFlowRL + Ring-Zero(1T verifiable RL) | 在万亿参数规模用分布匹配替代奖励最大化 |
| GFlowRL + SEMA框架 | 将GFlowRL作为SEMA的攻击者生成模块 |
| GFlowRL + J-lens监控 | 用J-space检测分布匹配RL是否真的诱导了内部推理多样性 |
15. 改写摘要挑战
原标题摘要风格:GFlowNets offer a promising alternative... remains difficult... We address these challenges through systematic analysis... Our main finding is that the learned partition function... can be replaced by an in-batch Monte Carlo estimate...
改写后(更坦诚版):我们想用GFlowNet做LLM后训练,但发现FlowRL那个"学出来的配分函数"既不干活还捣乱(梯度爆炸10¹⁴级别)。我们试了试把它换成随机噪声------性能居然没降。于是干脆删了它,用在GRPO本来就要采样的rollout group算个均值来替代。再加两个稳定trick,我们就得到了GFlowRL:一个更简单、更稳、性能更好的分布匹配RL,在数学/代码/安全上全面超越此前方法,首次在235B MoE上跑通。论文的实质贡献是"识别出一个可删除的冗余组件",而非"发明了一个新组件"。
十三、个人评注
13.1 方法论价值
GFlowRL的诊断方法比方法论本身更有价值。RandomLogZ实验------"把组件换成噪声看看性能变不变"------是一种低成本、高信息量的诊断手段,应该成为RL算法开发的标配。但论文本身的方法学新颖性有限:砍掉Zϕ并用batch statistics替代,这在思路上与GRPO用组内均值做baseline是同构的。
13.2 与RL后训练全景的关系
2026年RL后训练正经历从"单一最优"到"多样性"的范式转变。GFlowRL代表分布匹配路线,Ring-Zero代表verifiable-reward极大规模路线,QuasiMoTTo代表采样效率优化路线。这三者不是互斥的------理想的后训练pipeline可能同时使用QMC采样 + GFlowRL分布匹配 + Ring-Zero的稳定trick。
13.3 需要跟进的方向
- 等待代码开源 → GitHub
- 对比\[2026-06-17_FlowTracer_精读笔记\|FlowTracer]中的flow-based方法与GFlowRL的异同
- 关注FlowRL作者对"Zϕ无用论"的回应
- 在Qwen3-8B上复现RandomLogZ诊断实验,验证Zϕ≈噪声的结论是否模型/任务相关
- 关注αXiv上是否出现改进版Zϕ(如从πref初始化、使用更复杂的架构)
13.4 开放问题
- 如果Zϕ真的是纯噪声,为什么FlowRL在某些benchmark上(如AIME24的15.41 vs GRPO的13.54)仍然有增益?分布匹配的目标函数本身(即使带上噪声Zϕ)是否已经在提供不同于奖励最大化的梯度方向?
- GFlowRL在数学和代码上的增益,有多少来自"分布匹配",多少来自flow-gap裁剪的正则化效果?
- 如果GFlowRL本质上是GRPO + fancy baseline,它与REINFORCE with learned baseline的边界在哪里?