← 返回 2026-03-10

Pass@k 的免费午餐?面向扩散语言模型的低成本多样本采样 Free Lunch for Pass@k? Low Cost Diverse Sampling for Diffusion Language Models

Sean Lamont, Christian Walder, Paul Montague, Amir Dezfouli, Michael Norrish 📅 2026-03-05 👍 1 2026-07-13 08:35
Pass@k 代码生成 扩散语言模型 推理时多样性 数学推理 正交投影

ODD:免训练、顺序正交投影,提升扩散语言模型Pass@k。

前置知识

扩散语言模型 (DLM)

扩散语言模型(如 LLaDA)通过迭代去噪过程同时生成序列中的所有 token,区别于自回归模型逐 token 顺序生成。具体地,模型从完全被 mask 遮蔽的状态 $x_T$ 出发,经过 $T$ 步反向过程逐步还原出 $x_0$,每步根据时间相关的掩码率 $\gamma(t)$ 保留高置信度预测并对其余位置重新遮蔽。

本文核心方法 ODD 正是建立在 DLM 的'全局视图'特性上——每一步都能看到完整序列,从而可在 logit 层面对整个 batch 做干预,这是 AR 模型做不到的。

Pass@k 指标

Pass@k 衡量从模型采样 $k$ 次时至少有一次命中正确答案的比例,常用于代码生成(HumanEval)和数学推理(GSM8K)。注意 Pass@k 与 Pass@1 不同:当 $k$ 较大时即便单个样本质量下降,只要候选足够多样就有机会覆盖到正确答案,反映的是'探索能力'而非'单点精度'。

本文目标正是最大化 Pass@k,因此接受单样本质量(Pass@1)的轻微下降来换取 batch 层面的多样性提升。

Gram-Schmidt 正交化

经典数值线性代数算法,可将一组线性无关向量序列化为两两正交的标准正交基。在本文中用于维护'历史样本子空间的正交基 $B_{<i}$',使得新样本的特征向量 $v_i$ 可被投影到该子空间后取残差。

ODD 的核心几何操作(公式 5 的 $\|v_i - \mathrm{proj}_{B_{<i}}(v_i)\|^2$)直接建立在 Gram-Schmidt 上,是该方法'几何直觉'的数学基础。

DPP (Determinantal Point Process) 多样性目标

一种概率模型,通过矩阵行列式同时建模集合中元素的'质量'与两两'多样性',常用于推荐系统与生成模型的 batch 多样性优化。DiverseFlow 将其从图像扩散扩展到 batch 全局优化:所有样本互相排斥、联合求梯度。

本文的对比基线 LLaDA + DPP 即采用此目标,ODD 在表 1 中显著优于它,是理解本文贡献的关键参照。

研究动机

在代码生成(HumanEval)和数学推理(GSM8K)这类 Pass@k 任务中,需要在候选 batch 中覆盖尽可能多不同的解题路径。然而当前扩散语言模型 LLaDA 在采样时存在严重的'模式坍缩'问题:以温度 $T=1.0$ 在 GSM8K 上 baseline 仅有 81.3%,而 HumanEval 上仅 42.7%。传统手段(温度调节、beam search、独立加噪)都无法让 batch 内 $n$ 个样本真正'分散开'——多个采样常常收敛到同一条错误路径上。例如图 1 给出的案例中,标准采样在 Pass@16 下得到 0 个有效解,因为所有 16 次独立采样都坍缩到同一错误模式;而本文方法在该例中能找出 3 个有效解。这本质上是把算力浪费在了重复失败模式上,对于'正确答案稀疏'的复杂推理任务尤其致命。

本文的目标是本文提出 ODD(Orthogonal Diverse Diffusion),目标是设计一种无需重训练、即插即用的推理时干预,使 LLaDA 类扩散语言模型在 batch 采样时自动避开已生成样本占据的解空间子空间,从而以极低开销显著提升 Pass@k。具体量化目标是在 HumanEval 与 GSM8K 上、batch size=16、8 次独立运行的平均下,相对 baseline 在各温度档都取得稳定提升,并把额外计算开销控制在 5% 量级内。

与已有工作不同的是,现有工作存在三类局限:(1) AR 模型的 diverse beam search 方法(如 [16,6,10,14])依赖序列式解码,无法直接迁移到 DLM 的并行去噪范式,且 beam 管理带来显著延迟;(2) 图像/蛋白扩散中的多样本方法(如 DiverseFlow [11])采用 batch 全局联合优化(如 DPP),作者实验发现这种'所有样本互相排斥'的策略会把高概率优质样本推离最优模态,反而损失质量;(3) 在文本 DLM 内的近期工作(如 [17] 给 embedding 加噪)把每个样本独立对待,没有显式建模 batch 内样本间的依赖关系。本文切入角度是利用 DLM 每步的'全局序列视图',但采用贪心顺序投影——每个新样本只被推离'已完成'前辈样本张成的子空间——既保持了对历史的显式建模,又避免了全局优化的混沌轨迹。

核心方法

ODD 的整体思路可类比为'几何斥力':在每个扩散步 $t$,先用一个轻量特征提取器 $F$ 把 batch 内每个样本 $i$ 的 logits $x_i \in \mathbb{R}^{S \times V}$ 映射为特征向量 $v_i \in \mathbb{R}^{V}$,然后对样本 $i$ 施加一个'正交多样性损失' $\mathcal{L}_{\mathrm{orth}}(v_i, v_{<i}) = -q_i \cdot \|v_i - \mathrm{proj}_{B_{<i}}(v_i)\|^2$,使其特征尽量落在历史样本张成子空间的'法方向'上。最后对 logits 做一步梯度下降 $\hat{x}_i = x_i - \alpha \cdot \nabla_{x_i}\mathcal{L}_{\mathrm{div}}$ 完成干预。由于干预发生在模型前向之后、不修改任何参数,所以是纯推理时的'免费'改进。

ODD 与已有方法的本质区别在于'顺序贪心 + stop-gradient':不同于 DiverseFlow 的全局 DPP 联合优化让所有样本两两排斥(作者实验发现这会把好样本也推走),ODD 采用 Gram-Schmidt 顺序构建历史样本的正交基 $B_{<i} = [b_1, \ldots, b_{i-1}]$,只用投影残差的范数作为多样性目标,并通过 stop-gradient 把历史样本当作'固定超平面'处理,使第 $i$ 个样本的生成轨迹只取决于前 $i-1$ 个前辈。一个直接推论是:样本 $i$ 的输出对 batch size $k \geq i$ 是不变的,这极大提升了实验可控性和复现性。另一关键创新是引入'质量分数' $q_i$(未掩码 token 的平均最大置信度)作为权重,避免模型在高置信位置被强行推向低概率、不连贯的模式。

方法步骤详情

完整算法流程如 Algorithm 1 所示,可分四阶段:(1) 特征与质量计算:对 batch 内每个样本 $i$ 调用 $F(\cdot)$,得到特征向量 $v_i = \max_{s \in S} P_{i,s}$(其中已确定 token 设为 one-hot 分布、掩码位置取 softmax),以及质量分 $q_i = \frac{1}{|U_i|} \sum_{s \in U_i} \max_v P_{i,s,v}$;(2) 初始化正交基 $B_{<2} = [b_1]$,其中 $b_1 = \mathrm{sg}(v_1)/\|v_1\|_2$;(3) 对 $i=2,\ldots,n$ 顺序循环:先计算投影 $p_i = \mathrm{proj}_{B_{<i}}(v_i)$,累计损失 $\mathcal{L}^{(i)}_{\mathrm{orth}} = -q_i \cdot \|v_i - \mathrm{sg}(p_i)\|^2$,再用残差 $r_i = \mathrm{sg}(v_i - p_i)$ 归一化得到新基向量 $b_i = r_i/\|r_i\|_2$ 并入 $B_{<i+1}$;(4) 同步更新所有 logits $X' = X - \alpha_t \cdot \nabla_X \mathcal{L}_{\mathrm{total}}$,其中步长 $\alpha_t = (1 - 1/t) \cdot \alpha$ 随扩散步线性退火,前期强调多样、后期强调保真。所有梯度仅作用于活跃 token 的 logits,历史基向量全程 detach,因此计算图不会随 $n$ 递归膨胀。

技术新颖性

技术新颖性体现在三个层面:(a) 几何层面——首次在文本 DLM 中引入'顺序正交投影'作为推理时多样性机制,把 batch 内样本间的依赖显式编码为子空间几何关系,而不是用隐式噪声;(b) 算法层面——通过 stop-gradient + 顺序构造,ODD 获得了'batch size 不变性'这一优雅性质,意味着样本 $i$ 的行为与后面再补多少个样本无关,这一点 DiverseFlow 类全局优化方法根本不具备;(c) 系统层面——特征提取器 $F$ 直接复用模型自身的概率分布(mask 位置 softmax、已确定位置 one-hot,再 max-pool),无需引入额外的预训练语义编码器或价值模型,因而实现 +5.8% / +3.9% 的极低延迟代价(见表 2),且与模型规模无关,相对开销会随模型变大进一步缩小。

An overview of our proposed diverse sampling framework, using our orthogonal diversity loss.
Figure 2: An overview of our proposed diverse sampling framework, using our orthogonal diversity loss.
ODD: Orthogonal Diverse Diffusion
Algorithm 1: ODD: Orthogonal Diverse Diffusion

实验结果

在表 1 报告的 8 次独立运行的 Pass@16 结果中,ODD 在 GSM8K 与 HumanEval 上对所有温度档、几乎所有步长 $\alpha$ 都稳定优于 baseline 与 DPP 基线。具体数字:在 GSM8K(200 题)上,T=1.0 时 baseline 81.3%,DPP 最佳 82.3%($\alpha=2$),而 ODD 在 $\alpha=64$ 时达到 87.9%,相对提升 +6.6 个百分点;在 HumanEval 上 T=1.0 时 baseline 42.7%,DPP 最佳 46.6%($\alpha=2$),ODD 在 $\alpha=8$ 时达到 51.3%,相对提升 +8.6 个百分点。极端温度档的提升尤为亮眼:T=0(贪心解码,Pass@k=Pass@1)时 ODD 在 GSM8K 把 baseline 的 61.0% 推到 79.0%($\alpha=128$),提升 18 个百分点,说明 ODD 即便在贪心模式下也能通过 batch 多样性找到单一采样永远碰不到的解;T=2.0 高温下 HumanEval 上 baseline 仅 7.7%(过度多样导致完全无法通过编译),ODD 仍能保持 40.2%($\alpha=32$),恢复了一半以上性能,证明质量分数 $q_i$ 权重有效抑制了'为多样而多样'的低概率模式。表 2 的开销测量显示 batch size=16 时 GSM8K 每 batch 仅多 1.3 秒(22.5→23.8 秒,+5.8%),HumanEval 多 1.2 秒(30.8→32.0 秒,+3.9%),相对性能提升而言代价极低。

Pass@16 results (mean ± SE over 8 runs) for GSM8K and HumanEval over various temperatures (θ) and step sizes (α).
Table 1: Pass@16 results (mean ± SE over 8 runs) for GSM8K and HumanEval over various temperatures (θ) and step sizes (α).
Wall time comparison for generation between standard LLaDA (Baseline) and ODD (Batch Size 16).
Table 2: Wall time comparison for generation between standard LLaDA (Baseline) and ODD (Batch Size 16).
查看结构化数据
任务指标本文基线提升
GSM8K(200 题,batch size=16) Pass@16 (%) 87.9 (T=1.0, α=64) / 88.6 (T=1.5, α=128) / 79.0 (T=0, α=128) 81.3 (T=1.0) / 83.4 (T=1.5) / 61.0 (T=0) T=1.0 +6.6pp;T=1.5 +5.2pp;T=0 +18.0pp
HumanEval(164 题,batch size=16) Pass@16 (%) 51.3 (T=1.0, α=8 或 16) / 51.6 (T=1.5, α=8) / 41.5 (T=0, α=16) 42.7 (T=1.0) / 41.8 (T=1.5) / 19.5 (T=0) T=1.0 +8.6pp;T=1.5 +9.8pp;T=0 +22.0pp
推理延迟(batch size=16) 每 batch 平均耗时 (秒) GSM8K 23.8s;HumanEval 32.0s GSM8K 22.5s;HumanEval 30.8s +5.8% (GSM8K) / +3.9% (HumanEval)

局限与改进

作者在文中坦诚指出两点局限:(1) HumanEval 上存在'多样-质量'拐点——$\alpha$ 过大时性能反而下降(如 T=1.0 时 α=8 的 51.3% 在 α=128 降到 46.3%),原因是 HumanEval 要求语法与逻辑同时正确,过度多样会破坏代码结构可编译性;(2) 当前特征提取器只用 vocab 维度的 max-pooling,没有编码位置信息或部分序列语义,可能错失更精细的语义差异。作者还隐含承认:(a) 实验只在 4-bit 量化的 LLaDA-8B-Instruct 一个模型上验证,未在更大的 DLMs(如 LLaDA-70B 或其他扩散架构)上测试推广性;(b) GSM8K 只用前 200 题而非全集,HumanEval 仅 164 题,benchmark 规模有限;(c) 缺乏与近期'RL 后训练融入多样性'方法(如 DPO/GRPO with diversity bonus)的端到端对比,因此 ODD 与 post-training 方法的真正互补性仍有待定量验证。

独立分析的弱点

独立审视可识别出三个可改进点:(1) 步长 $\alpha$ 需要在每个 benchmark 上重新调参,GSM8K 最优 $\alpha=64\text{-}128$,HumanEval 仅 $\alpha=8\text{-}16$ 即饱和,这表明缺乏自适应的'多样-质量'调度器;改进方向是引入基于当前 batch 内多样性饱和度(如残差范数 $\|v_i - \mathrm{proj}_{B_{<i}}(v_i)\|$ 已经小于阈值)自动关闭干预的机制。(2) 特征提取器只用 vocab 维 max-pool,没有利用序列位置信息,导致对'同样几个 token 不同顺序'这种结构差异不敏感;改进方向是加入 positional embedding 或用最后几层的 hidden states 作为补充特征(但要注意保持轻量)。(3) 'batch size 不变性'虽然带来复现性,却也意味着方法无法利用更大的 batch 做更深探索——若想突破此不变性,可对 batch 做分层(k 个 cluster 内做 ODD,cluster 间独立),把多样性提升到指数级。

未来方向

作者明确指出的方向是探索更丰富的特征提取器(位置编码、部分序列的语义嵌入)、对特征空间做降维以进一步降低开销、把 ODD 与 AR 模型上的多样性方法([14,7])做对比融合。基于本文成果还可延伸出几条路径:(a) 把 ODD 嵌入到 RL 后训练的 rollout 采样阶段,让 diversity 真正成为奖励信号的一部分,从而在'推理时多样'与'训练时多样'之间形成闭环;(b) 在 multi-turn 对话或 agent 轨迹采样中应用 ODD,使不同路径覆盖不同决策分支;(c) 与 self-consistency / Best-of-N 结合,用 ODD 生成的多样候选作为投票池,可能进一步提升最终答案的可靠性;(d) 把几何干预扩展到 embedding 空间而非 logit 空间,看是否能更细粒度地控制局部 token 级别的多样性。

复现评估

复现条件非常友好:(1) 代码完全开源在 https://github.com/sean-lamont/odd,作者还配套发布了所有实验日志与数据的 https://sean-lamont.github.io/odd/ 站点,方便逐 run 检查;(2) 算法核心仅依赖 PyTorch 原生操作(Gram-Schmidt、投影、stop-gradient),不依赖任何特殊 kernel;(3) 实验硬件要求不高——只用 4-bit 量化的 LLaDA-8B-Instruct,单卡 A100(甚至更小)即可跑 batch size=16 × 32 diffusion steps;(4) 评测 benchmark 是公开的 HumanEval(164 题)与 GSM8K 前 200 题,无需私有数据;(5) 主要超参仅有温度 $T \in \{0, 0.5, 1, 1.5, 2\}$ 与步长 $\alpha \in \{2,8,16,32,64,128\}$,网格搜索量适中。整体复现难度低,唯一门槛是需要熟悉 LLaDA 的推理 pipeline(来自 https://github.com/ML-GSAI/LLaDA),但作者提供的代码仓库已经封装好了 hook 接口。