FlowBalance: 数学题上解法多样性是GRPO的2.16倍

自己教自己,为什么常常教歪?

FlowBalance 要解决的,是自我改进中谁能可信地判定对错。

同一个模型,先出一份答案,再给自己打分,根据分数修改下一份答案——这是 LLM 后训练最近两年最主流的训练范式。GRPO 是这条路最简洁的代表:让模型在同一个问题上采多条(如 DeepSeekMath 原实验 G=64)推理轨迹,verifier 给每条一个 0/1 的最终对错分,再把同组内的分数归一化((r_i − mean)/std)当作 advantage。整个过程没有 value model,rollout 之后一次性更新 policy。算力便宜,工程上跑得动,几乎所有做数学推理 RL 的团队都在用它 DeepSeekMath。

但这条路有一个结构性的尴尬——verifier 只能看到终点。它只知道一整条 2000 token 的推理链最后答案对不对,对中间那一长串推理,既不能说哪一步有效,也不能说哪一步胡扯。这就像让学生做数学题只批改最终答案,推理过程完全靠学生自己回头批改。

既然终点信号太稀,就再加一条稠密的。一批人就想到一个便宜的办法:让模型拿到答案之后回头看看自己刚才的推理,用 privileged context(比如 reference solution)重新评估刚才每一步到底合不合理。这就是 dense same-model self-guidance——比 verifier 稠密多了,每一个 token 都有评分;也便宜,不需要再训练一个模型 OPSD。

可这条更稠密的信号也有自己的尴尬:评分视角在推理时拿不到 privileged info。模型看到答案后再回头,常会给自己「自信但错」的轨迹打出虚假高分,形成一种自我确认。FlowBalance 把这件事点得很清楚:on-policy self-improvement 内循环的脆弱性,根源不在某一种 RL 算法的细节,而在「谁来给 ground truth」——verifier 只看终点,self-guidance 的视角又不可信。

PPO 与 GRPO 流程对比

图注:左半 PPO 流程含 policy + value + reward → advantage (GAE);右半 GRPO 流程只剩 policy + group rewards → group-relative advantage。FlowBalance 直接复用 GRPO 的 group-relative advantage 作为它 verifier 信号的入口。

这件事 GRPO 的设计图能看出来:右半边没有 value model,靠 group rewards 算 baseline。整个 LLM RL 的算法谱系中,DeepSeek-R1 等大规模 reasoning RL 系统都沿用了 GRPO 的 group-relative advantage 形式。但批改只有最终答案。

FlowBalance 的核心思想:让 verifier 锚方向,让 hindsight 给出「对的哪里」

FlowBalance 重新表述了这个问题:给定 on-policy 经验 + 稀疏 verified outcome + 密集但不可信的 self-guidance,下一个策略应该学一个什么样的归一化响应分布?

答案分三件事,每件各管一段。

第一件:让 verifier 决定方向。FlowBalance 直接借用 GRPO 的 group-relative advantage 作为 A_i,verifier 告诉 policy 哪条轨迹在组里相对更好。

第二件:让 hindsight 给出 dense 证据。让模型拿到 privileged context(reference solution)后,重新对刚才自己采样的 token 打 log-prob——这一步叫 self-guidance score G_H。它是对「中间推理合不合理」的密集评分。

第三件:用 sign 把两者粘起来。FlowBalance 的核心 energy 公式是:

E = η_A · A_i + β_G · G_H · sign(A_i)

sign(A_i) 是这个公式的灵魂。它把 hindsight 的密集信号切成三态:

  • A_i > 0:verifier 觉得这条比组内平均水平好。sign 为正,hindsight 的正反馈被保留,反向加强 verified 响应。
  • A_i < 0:verifier 觉得这条比组内平均水平差。sign 为负,hindsight 的正反馈被反转——如果 hindsight 还给被 verifier 否掉的轨迹打高分,那是 hindsight 自己在犯傻,必须把这份信号反向撤掉。
  • A_i = 0:组内所有轨迹 verifier 给分相同,没有方向偏好。这一项整段置零,不强行加 dense 指导。

这就是 FlowBalance 与所有「同模型当老师」路线的最关键差异。OPSD / RLSD 同样用 privileged hindsight,但它们做的是 token-level 的 teacher-student KL 蒸馏——把 student 的 next-token 分布硬拉到 teacher 给出的分布上 RLSD。而 FlowBalance 不做 imitation loss,它把 hindsight 当成 校准信号,由 verifier 决定这个信号该保留还是该反转。这是加法 vs 模仿的根本差别。

FlowBalance 五步 verifier-grounded self-improvement cycle

图注:横向五步循环:(1) 当前策略 π_θ 生成 on-policy 推理经验;(2) verifier 提供 terminal outcome feedback(稀疏但可靠);(3) 冻结的 privileged-hindsight view π_H 给同样的 sampled tokens 打 self-guidance score(密集但视角不可信);(4) sign gating 用 verifier advantage 的 sign 决定 G_H 该保留、反转还是禁用;(5) profiled trajectory balance 把复合 energy 重加权为归一化分布。回到 snapshot θ⁻ ← θ 重复整个 inner loop。

三件套里归一化这一环是这个公式的下游:复合 energy 用来给一条 reference policy 做指数重加权,得到的 target 分布再用 trajectory balance 拟合归一化。verifier 锚方向,hindsight 给幅度,trajectory balance 做归一化——这是 FlowBalance 把 RL 谱系上两条线索正面合一的关键 FlowBalance。

方法骨架:self-guidance 怎么算、trajectory balance 怎么拟合

Self-guidance score 的构造分两步。

第一步是 token-level 的 clipped log-prob 增益。模型在推理时(也就是 inference 视角)对某个 token 的 log-prob 是 log π_ref(y_t | s_t)。把同一个模型冻结起来,给它喂上 privileged context c(reference solution),让它对 student 已经采样出来的同一 token 重新打 log-prob:log π_H(y_t | s_t, c)。两者一减,再 clip 到 [−B, B] 范围里:

δ_t^H(y; x, c) = clip(log π_H − log π_ref, −B, B)

这一步很重要:student 采样出的 token 一个都不重采样,π_H 的梯度也完全 stop-gradient。hindsight 只是事后打分,不参与更新,不影响 student 的 rollout。

第二步是把 T 个 token 的 δ 求平均,得到 trajectory-level 的 self-guidance score G_H。它是 hindsight 视角对整条轨迹的整体评估——平均 log-prob 增益越大,说明 hindsight 越觉得 student 刚才的推理在 privileged 信息下更合理。

Trajectory balance 这一层,FlowBalance 直接借用了 GFlowNet 2022 年的端点对齐思路:把一整条轨迹的 forward log-prob 与 backward log-prob 的乘积对齐到终止状态的奖励。FlowBalance 把它替换成 verifier + hindsight 的复合 energy E,然后在 group 内做归一化。这里最关键的省算力一招是 profiled log-partition:

log Ẑ_i = E_i / τ − log(π_θ(y^(i)) / π_ref(y^(i)))
log Ẑ = (1/N) Σ_i log Ẑ_i

每个 rollout group 只估计一个标量 log-partition,不需要学一个 MLP。具体说,对同组里 N 条轨迹,每条各自用一次当前 energy 与 log-prob 之差算出自己的 log Ẑ_i,再求平均。整个估计只用 group 内的 N 次前向计算,比 FlowRL 那种学一个 3 层 MLP 表示 partition function 的做法轻得多 FlowRL。

最终 policy 更新走的是 trajectory balance 残差的平方损失:

Δ_TB = τ log Z + τ log(π_θ / π_ref) − E
L = E_(x,c)[ (1/2N) Σ_i Δ_TB² ]

只有 policy log-prob 接收梯度,reward、advantage、G_H、log Z、sampled responses 全部 stop-gradient。

四个理论性质:sign gating + profiled balance 不是巧合

FlowBalance 给这套机制配了四个可证明的命题(Proposition 1–4),让 sign gating 和 profiled balance 不只是工程 trick,而是各有精确定量。

Proposition 1:profiled balance 损失为零,等价于组内所有 N−1 个相对对比都满足 π(y^(i))/π(y^(j)) = (π_ref(y^(i))/π_ref(y^(j))) · exp((E_i − E_j)/τ)。也就是说,group-level log-partition 只吸收公共偏移,N−1 个相对差异完整保留给 policy 训练。profiled 估计没有把组内的相对对比吞掉。

Proposition 2:在 reference 被 restricted 并 renormalized 到 realized rollout group、且 composite-energy level 不低于 p* 的所有 group distribution 中,FlowBalance 的 target 是从 reference 出发的最小 reverse-KL 位移。具体地,对任意 group distribution p,有 KL 分解 KL(p‖π_ref) = KL(p*‖π_ref) + KL(p‖p*) + (1/τ)(Σp_i E_i − Σp_i* E_i)。FlowBalance 走的不是 reward maximization 的 greedy 路径,而是「在不超出 composite self-improvement energy level 的前提下,从 reference 出发走最短一步」——这正是 reverse-KL mode-seeking 的几何 Malkin et al. 2022 Appendix C。

Proposition 3:固定 G_H 与 realized group,提升 η_A 单调提升 target reward:∂E_{p*}[R]/∂η_A = Var_{p*}(R) / (τ(σ_R(x)+ε)) ≥ 0。即使 hindsight 的 dense 信号在场,verifier 仍然是显式的 control knob,不会被 hindsight 的噪声稀释掉。

Proposition 4:sign gating 把 false-positive 自我指导修正为对 verified 响应的概率比修正。具体公式:p*_gated(y_+)/p*_gated(y_-) = [p*_ungated(y_+)/p*_ungated(y_-)] · exp(2β_G · G_H(y_-|x,c)/τ)。当 hindsight 给 verifier 否掉的 y_- 打高分(G_H(y_-) > 0),相对 ungated guidance,对 verified response 的概率比被乘以 exp(2β_G · G_H(y_-) / τ) 倍——把假阳性自我强化精确转成对真阳性的概率比修正,不是 hack,是有精确公式的修正。

四个命题合起来说明一件事:FlowBalance 在「保留组内对比」「最小 KL 位移」「verifier 仍可控」「false-positive 可修正」四个维度上各有可证明的性质/保证;其中「最小 KL 位移」仅在 Proposition 2 的设定下(即 reference 被 restricted 并 renormalized 到 realized rollout group,且 composite-energy level 不低于 p*)成立。

在 Qwen3-4B/8B 上的实验:答得对、解法也多样

实验 backbone 是 Qwen3 系列:4B(36 层 / 32-8 Q-KV heads / tied embedding / 32K context)与 8B(同样深度但非 tied embedding、128K context)Qwen3 Technical Report。五个推理 benchmark 是 AIME24、HMMT25、MATH500、OlympiadBench、Minerva。

先看平均分。step-180,5 seeds,Qwen3-4B 上 FlowBalance 五基准均值 64.26,Qwen3-8B 上 67.61。核心四基准(AIME24 / HMMT25 / MATH500 / OlympiadBench)上对比最强 baseline FlowRL,4B 高 1.67 分,8B 高 1.98 分。对比 GRPO,4B 高 2.60 分,8B 高 2.44 分。对比 RLSD,4B 高 5.83 分,8B 高 4.18 分。OPSD 的数字是全场最差(4B 54.12,8B 41.16)——同模型 token-level 自蒸馏在 Qwen3 这种强 base 上很难撑住。

再看训练动力学。在 Qwen3-8B 上,FlowBalance 约 100 step 让 AIME24 验证准确率达到 0.5,GRPO 约 143 step,1.43 倍加速。更重要的稳定性差异:400 step 内 FlowBalance 一直维持 peak,GRPO 在约 180 step 后开始 sharp degradation。

Qwen3-8B 上 AIME24 训练动力学

图注:横轴是训练步数(0–400),纵轴是 AIME24 验证准确率。FlowBalance 曲线约 100 step 到达 0.5 后维持 plateau;GRPO 曲线约 143 step 到达 0.5 后在约 180 step 处急剧掉头向下。1.43 倍加速和 400 step 不退化这两件事在这张图上同时成立。

但真正兑现标题承诺的是策略多样性。AIME24 上,答对的题目的解法种类用 Simpson 指数衡量:D = 1 − Σ p_k²,其中 p_k 是 correct trajectories 在第 k 个 strategy cluster 中的占比,LLM judge 按数学表示与工具把每个 trajectory 归到不同 cluster。FlowBalance 0.2194,GRPO 0.1017,RLSD 0.1456。FlowBalance 是 GRPO 的 2.16 倍(0.2194 / 0.1017 = 2.157,四舍五入到 2.16)。

AIME24 correct-only Simpson strategy diversity

图注:三个柱状条从左到右:GRPO 0.1017、RLSD 0.1456、FlowBalance 0.2194。纵轴是 correct-only Simpson strategy diversity,数值越大代表答对题目的解法种类越分散。这是标题「2.16 倍」钩子的具体数字来源。

多样性不是一个装饰性的诊断指标。论文给了一个 AIME24 Problem 23 的具体案例:GRPO 走 Cayley-Menger 行列式这条标准解法,FlowBalance 通过识别 41=4²+5², 80=4²+8², 89=5²+8² 发现一个 hidden 4×5×8 box embedding,最后用 scalar triple product 算 volume。两条路殊途同归到 r=20√21/63, m+n+p=104,但数学表示完全不同。这才是「答对 + 多样」的具体含义:不是表面文字风格不同,是底层数学结构不同。

在 LLM RL 谱系里的位置,以及它还没解决的边界

把 FlowBalance 放回最近两年的 RL 谱系,能看清它到底新在哪。从「verifier × self-guidance × 归一化」三个维度看:

方法verifierself-guidance归一化更新粒度
GRPOoutcome-only无group-relativetrajectory
FlowRLoutcome-only无learnable Z + length norm + IStrajectory
OPSD无privileged teacherper-token KLtoken
RLSDdirectionteacher evidence ratiomultiplicative weighttoken
FlowBalance三态 sign gatinghindsight dense evidenceprofiled log-partitiontrajectory

GRPO 是最朴素的 verifier-only 路线 DeepSeekMath。FlowRL 把 trajectory balance 搬到 LLM RL 上,但只用 outcome reward,不用 hindsight FlowRL。OPSD / RLSD 走同模型当老师的路线,OPSD 用 token-level KL,RLSD 拆成方向(verifier)和幅度(teacher evidence ratio)做乘法重加权 OPSD RLSD。

FlowBalance 的位置在右下角那一格:verifier 三态 sign gating + hindsight dense evidence + profiled trajectory balance 归一化。这是「加法 + 归一化」而非「乘法 + 分布匹配」——sign gating 不是作用在 token-level 的 advantage 上,而是作用在 trajectory-level 的 energy 上;最终通过 profiled balance 完成分布意义上的归一化匹配。

它的优势在 response length 上看得最清楚:direct OPSD 在约 100 step 后急剧塌缩到 500 tokens 以下,FlowBalance 维持 2000 tokens 以上。

Response length 对比

图注:横轴训练步数(0–400),纵轴平均 response length(tokens)。direct OPSD 曲线在约 100 step 处急剧塌缩到 <500 tokens;FlowBalance 曲线维持 >2000 tokens。这一对照显示两条训练路线在该实验设置下呈现显著长度差异。

但边界也很清晰,不能不点。

第一,依赖 terminal verifier。FlowBalance 的 A_i 来自最终答案的 0/1 信号,对有明确对错标准、能机械判定的任务(数学、代码、形式化证明)天然合用;对开放性写作、对话质量这类没有 ground truth 的任务,verifier 本身就是噪声源。

第二,privileged hindsight context 假设。G_H 来自 reference solution——真实部署时大多数题目没有 ground truth,这条信号就拿不到了。论文自己也声明这是 privileged info。

第三,非数学任务迁移未验证。大规模实验只覆盖数学推理,agentic / multimodal / long-horizon / 代码都是开放问题。

第四,还有一个元层级的隐患值得警觉。最近一篇同期工作 Verifier-Induced Support Reshaping 指出:verifier-grounded training 即使让 pass@1 上升,也可能让 best@32 显著下降——IFEval Qwen3-8B-Base 上 pass@1 上升 6.5pp 但 best@32 下降 9.8pp。机制是 RLVR 主要 rerank 开头 token,把概率质量集中到少数几个开口模板上,未来可触及的策略空间反而被悄悄压缩。FlowBalance 改善了 AIME24 上的策略多样性,但它的 target 仍然锚定在单个 verifier 上——这个结构性的隐患,对任何 verifier-grounded 训练都成立,FlowBalance 也不例外。

收口

FlowBalance 的贡献不在于又一种 RL 算法。它把「policy update」从局部优化信号(PPO 的 ratio + clip、GRPO 的 advantage 重加权、OPSD 的 token-level KL、RLSD 的乘法重加权)重新表述为「在模型自己的推理轨迹上的显式归一化分布」。verifier 锚方向、hindsight 给幅度、trajectory balance 做归一化——这是该表述的具体实现。它在 Qwen3 数学推理上比 FlowRL 平均高 1.67/1.98 分,比 GRPO 在 AIME24 上的策略多样性高 2.16 倍,1.43 倍训练加速且不塌缩。

它打开的是这样一条路:on-policy self-improvement 不必依赖外部大模型打分、不必依赖 process supervision、不必依赖人为多样性惩罚——只要 verifier 给对错、reference solution 给 hindsight,再用 trajectory balance 把两者用 sign gating 粘起来,模型就能在「答对题」的同时保持「用更多方式答对题」。下一步要看的,是这套机制能不能跨出数学这一格,走进代码、agentic 与多模态。

想深入可以读原文:FlowBalance: Verifier-Grounded Self-Improvement from On-Policy Reasoning Experience — arXiv:2609.03241

参考文献

FlowBalance: 数学题上解法多样性是GRPO的2.16倍