← 返回 2026-04-20

后训练中输出多样性在何处崩塌?基于 Olmo 3 三条谱系的系统溯源 Where does output diversity collapse in post-training?

Constantinos Karouzos, Xingwei Tan, Nikolaos Aletras 📅 2026-04-17 👍 22 2026-07-13 08:36
CoT 蒸馏 LLM 后训练 偏好优化 可解释性 推理时缩放 输出多样性

Olmo 3 三系谱追踪揭示多样性崩塌由训练数据驱动而非算法本身

前置知识

后训练三阶段 (SFT→DPO→RL)

现代大语言模型在预训练后通常经历三个阶段的微调:监督微调 (SFT) 用高质量示范数据训练指令遵循;直接偏好优化 (DPO) 用偏好对精调倾向;强化学习 (RL, 如 GRPO/RLHF) 用奖励信号进一步优化。理解这条流水线是分析多样性崩塌的前提。

本文的核心实验设计就是在这三个阶段的每个 checkpoint 上测量多样性,从而定位崩塌发生在哪一步。读者必须清楚每个阶段的目标函数差异(SFT 用 MLE、DPO 用 reverse-KL 隐式奖励、RL 用策略梯度),才能理解为何同样的方法在不同数据上产生不同的崩塌轨迹。

思维链 (Chain-of-Thought, CoT)

CoT 让模型给出最终答案前先显式生成中间推理步骤。Think 类模型在 SFT 阶段用 (prompt, CoT 推理轨迹, answer) 三元组训练,使用 QwQ-32B 与 DeepSeek-R1 两位教师蒸馏约 230 万条 CoT 数据。区分'生成格式'与权重承载的分布差异是本文关键。

区分 CoT 这种'生成格式'与模型权重本身承载的分布差异是本文第二大贡献的基石。Think-not-thinking 干预(强制模型跳过 CoT 直接作答)正是用来剥离格式影响、验证多样性崩塌是否真的内嵌在参数里。

多样性度量 (EAD / SBERT / NLI / Vendi)

本文沿四条互补轴度量多样性:EAD 是词汇级 n-gram 期望熵 (n=1..5);SBERT 是 K=16 个样本句向量两两余弦距离均值 (0=相同);NLI 多样性用推理分类器判定逻辑关系;Vendi Score 用 SBERT 核特征值熵衡量有效模式数 (1=坍缩, K=正交)。

多维度度量让作者能够区分'词汇多样但语义坍缩'与'逻辑多样但表达单一'等细粒度模式,是论文 §4.1 结论'崩塌是语义而非词汇级'以及 Figure 2、3 解读的依据。

推理时缩放 (Inference-Time Scaling)

推理时缩放是在固定模型下通过增加采样数或测试计算量提升性能的技术,包括 self-consistency 多数投票、pass@k 采样、温度调节。其前提假设是模型能给出多个独立正确解,多样性是这类方法的命脉。

本文最终落点 (§4.3、Figure 8) 就是分析多样性崩塌如何限缩多数投票和 pass@k 的提升空间。Think 在 GSM8K 上 pass@16 仅 +0.4%,而 Base 高达 +24%,正是多样性坍缩使 16 个样本几乎同质的结果。

研究动机

后训练让大语言模型在 helpfulness、安全性、指令遵循上提升的同时,也普遍观察到一个副作用——输出多样性崩塌 (output diversity collapse)。具体来说,post-trained 模型对同一 prompt 的多次采样结果在语义层面高度雷同,远不如 base 模型丰富。文献已记录这一现象在摘要生成 (Kirk et al., 2024b)、推理 (Dang et al., 2025) 和开放式生成 (Jiang et al., 2025) 上普遍存在,甚至出现对齐后的模型输出多样性比一次普通网页搜索还低。多样性崩塌会直接削弱所有依赖多样化采样的推理时缩放方法:self-consistency $f_{\text{maj}}(x) = \arg\max_a \sum_{i=1}^{K} \mathbb{1}[y_i = a]$、pass@k、test-time compute scaling 的理论基础都依赖模型能给出多个独立候选。本文用 SBERT 余弦距离度量语义多样性:$D_{\text{SBERT}} = \frac{1}{\binom{K}{2}} \sum_{i<j} (1 - \cos(v_i, v_j))$,平均从 0.32 (Base) 跌至 0.12 (Think)。

本文的目标是本文的具体目标是回答两个开放问题:第一,多样性崩塌究竟由后训练方法 (SFT/DPO/RL) 本身导致,还是由训练数据的组成 (composition) 决定?第二,崩塌是由 chain-of-thought 这种'生成格式'施加在采样上的,还是已经内嵌 (embedded) 在模型权重里、无法通过推理时格式变更恢复?论文试图通过一套控制变量的实验设置——同时比较数据不同但方法相同 (Think vs. Instruct) 和方法完全不同 (RL-Zero) 的三条后训练谱系——给出可量化的归因。

与已有工作不同的是,已有研究普遍把崩塌归因到某一个具体算法:Peeperkorn et al. (2025) 归咎 DPO 在叙事生成上的影响、O'Mahony et al. (2024) 归咎奖励模型、Dang et al. (2025) 归咎 SFT 在推理任务上的影响。但所有这些工作都没有把'训练数据组成'和'训练方法'这两个因素隔离开,也没有把'生成格式'和'模型权重'这两个因素隔离开。本文的核心切入点是 Olmo 3 家族同时释放了 SFT/DPO/RL 各阶段的 checkpoint,并且有三条平行谱系:Think 与 Instruct 共用相同三阶段流程但 SFT 数据来源截然不同 (双教师 CoT 蒸馏 vs. GPT-3.5/4/4.1 多源指令),RL-Zero 则完全绕过 SFT 和 DPO 直接在 base 上跑 RL——这种独特的资源让作者第一次能在控制数据的同时控制方法、剥离格式的同时隔离权重。

核心方法

整体思路是构建一个'时间-空间'网格:在三个后训练谱系 (Think, Instruct, RL-Zero) 上,沿 SFT→DPO→RL 时间轴在 13 个 checkpoint 采样,用四个多样性度量 (SBERT 语义、EAD 词汇、NLI 逻辑、Vendi 模式数) 在 15 个任务上测量输出分布。核心直觉是'控制变量'——Think 与 Instruct 共享三阶段方法 (SFT→DPO→RL) 但 SFT 数据不同,因此两者在哪个阶段崩塌就直接指向数据 vs. 方法的归因;RL-Zero 没有 SFT 和 DPO,给出'不走监督路径'的反事实基线。第二组核心实验是 Think-not-thinking 干预:在所有 Think checkpoint 上强制 prefill 空 \n\n 块抑制 CoT,剥离'格式'混淆变量;保持模型权重不变,直接对比 Think 与 Think-not-thinking 在同一任务上的多样性。第三组是质量过滤分解 (quality-filtered decomposition):在六个有可验证答案的任务上区分 Da (全部 K=16 个输出的 SBERT) 与 Dc (仅 Kc 个正确输出的 SBERT),差值 Da−Dc 反映'去错过滤'带来的多样性下降,Vc 反映正确输出之间是否真正同质化。

核心创新是把 Olmo 3 家族当作一个'天然消融实验场'。具体来说:(1) 谱系内部比较——Think vs. Instruct 共享方法学,差异在数据,所以观察到的崩塌轨迹差异必然归因于数据组成;这是过去任何研究都做不到的,因为此前没有同时释放三阶段 checkpoint 的开源模型族。(2) Think-not-thinking 干预——用强制空 CoT 块来保持模型权重不变而改变生成格式,这是控制'格式 vs. 权重'混淆变量的最干净办法;之前 Ma et al. (2025b) 也抑制 CoT 但只测了准确率,本文填补了这一空白。(3) 质量过滤分解——把整体多样性损失拆为'过滤错误答案的质量控制成分'与'正确答案之间的真实同质化成分',直面了 Lake et al. (2025) 与 Shypula et al. (2025) 之间的争论。本质上,本文把后训练多样性研究从'现象描述'推进到'因果归因 + 成分分解'的层面。在数学上,Vendi Score 形式化为 $\text{VS}(\mathbf{K}) = \exp\left(-\sum_{i=1}^{K} \lambda_i \log \lambda_i\right)$,其中 $\lambda_i$ 是 SBERT 相似度核矩阵的归一化特征值。

方法步骤详情

实验流程分四步。第一步是模型与谱系梳理:以 Olmo 3 base (Dolma 3 Mix 6T 词预训练 + Dolmino Mix 100B 词中训练 + 65K 上下文) 为起点,沿三条平行谱系收集中间 checkpoint:Think 谱系产生 Think-SFT (Qwen-32B 与 DeepSeek-R1 双教师 2.3M CoT 轨迹)、Think-DPO (200K Delta Learning 对)、Think (GRPO 无 KL 惩罚,105K 提示);Instruct 谱系以 Think-SFT 为起点,先做 2.2M 多源 SFT (GPT-3.5/4/4.1),再做 260K 对 DPO,最后用相同 RL 收尾;RL-Zero 谱系跳过 SFT/DPO 直接对 base 跑 RL,6 个变体针对 Math/Code/IF/General。第二步是任务准备:覆盖 15 个任务分六类 (摘要、代码、推理、指令、创意、价值多元),用 C13 13-gram 检查训练-评估污染。第三步是采样与度量:每对 (模型, 任务) 在 T=0.6、top-p=0.95 下生成 K=16 个样本,对 Think 系剥离 ... 后再算度量;SBERT 用 all-mpnet-base-v2、UniXcoder 专门用于代码、NLI 用 roberta-large-mnli。第四步是质量过滤分解:在 6 个可验证任务上计算 acc@1、pass@16、majority@16,并将多样性分解为 Va (全部样本) 与 Vc (仅正确样本),代码任务额外报告 AST 子树 Jaccard 距离。

技术新颖性

技术新颖性体现在三个层面。第一是实验设计的天然因果隔离:之前所有多样性研究都受困于'数据与方法共变',因为不同论文的 SFT 数据集、训练方法、模型架构全都不同,无法做干净对比;本文利用 Olmo 3 同时释放三阶段 checkpoint 的稀缺资源,第一次实现'同方法不同数据' (Think vs. Instruct) 与'同数据不同方法' (Instruct vs. RL-Zero) 的双重控制,过去任何单一研究都做不到。第二是 Think-not-thinking 干预的精巧:用 prefill 空 CoT 块强制直接作答,是一种完全保持权重不变的 OOD 干预,比简单的'移除推理痕迹再算分'更彻底 (后处理无法改变生成时的概率分布)。第三是质量过滤分解的细致:把整体多样性损失拆为质量控制与真实同质化两个分量,并配合 AST 子树和 UniXcoder 给出代码上的结构性证据 (Think 在 HumanEval 正确输出上的 AST Jaccard 仅 0.53 而 Base 高达 0.89),这一粒度的归因在以往文献中从未出现过。

研究设计:追踪 Olmo 3 三条后训练谱系 (Think, Instruct, RL-Zero) 的输出多样性
Figure 1: 研究设计:追踪 Olmo 3 三条后训练谱系 (Think, Instruct, RL-Zero) 的输出多样性

实验结果

实验围绕三个核心问题展开。**问题一 (崩塌位置)**:Think 与 Instruct 共用三阶段流水线却在不同阶段崩塌——Think-SFT 平均损失 Base 多样性的 62%,远高于 Instruct-SFT 的 38%,且这种差异在 15 个任务上均匀出现,呼应'两教师 SFT 数据的低熵本质'。DPO 阶段相反:Instruct-DPO 损失 23%,Think-DPO 仅 4%,因 Think 在 SFT 后已触底。RL-Zero 绕过两个瓶颈,平均保留 93% 的 Base 多样性 (中位数 94%)。**问题二 (CoT 是不是元凶)**:Think-not-thinking 干预显示,强制抑制 CoT 在所有任务-阶段组合上都没能恢复多样性,IFEval 上仅 +0.025 的 SBERT 微小回升;但质量却明显下降 (HumanEval −32%、MATH-Algebra −28%、WildBench Score 4.6→1.4)。这证实多样性崩塌内嵌在模型权重里。**问题三 (质量过滤占比)**:IFEval 上 83.4% 的 Da 下降在 Dc 中持续 (真实同质化),MBPP 上 38%,HumanEval 上不到 10%。在正确输出上,Base 平均 1.7 个有效 Vendi 模式,Think/Instruct 收敛到 1.3-1.6 个。这解释了 Figure 8 的多数投票收益:Think 在 GSM8K 上 majority@16 仅 +0.4%,Base 高达 +24%。附加发现:多样性崩塌是语义而非词汇层 (SBERT 0.32→0.12、Vendi 3.4→1.8);价值多元任务受创最深 (PRISM −78%)。

各阶段 SBERT 损失 (相对 Base 的百分比,15 任务平均)
Table 1: 各阶段 SBERT 损失 (相对 Base 的百分比,15 任务平均)
SBERT、EAD、Vendi Score 跨后训练阶段的表现
Figure 2: SBERT、EAD、Vendi Score 跨后训练阶段的表现
NLI 多样性 (逻辑多样性) 跨模型比较
Figure 3: NLI 多样性 (逻辑多样性) 跨模型比较
Think、Think-not-thinking、Instruct 跨阶段生成质量
Figure 4: Think、Think-not-thinking、Instruct 跨阶段生成质量
WildBench Score (WB-Score) 跨模型与阶段
Figure 5: WildBench Score (WB-Score) 跨模型与阶段
六个可验证任务上质量过滤 Vendi Score
Figure 6: 六个可验证任务上质量过滤 Vendi Score
Accuracy@1 vs. 多数投票增益 (MV gain)
Figure 8: Accuracy@1 vs. 多数投票增益 (MV gain)
查看结构化数据
任务指标本文基线提升
GSM8K (数学推理) SBERT 语义多样性 (相对 Base 的保留率) Think-SFT 36% / Instruct-SFT 较高 / RL-Zero 接近 100% Olmo 3 base 100% 多样性崩塌最深 (近 100% 损失),16 个样本几乎等价于 1 个
GSM8K majority@16 相对 acc@1 的增益 Think +0.4% / Base +24% / RL-Zero +22-26% acc@1 约 56% (Base) / 93% (Think) / 49-61% (RL-Zero) Think 因同质化几乎无投票增益,Base 与 RL-Zero 获得大幅提升
MATH-Algebra 正确输出 Dc (SBERT) 与多数投票增益 Think-not-thinking 与 RL-Zero-Math acc@1 ≈49%,RL-Zero-Math Dc 高 2 倍,MV +15% vs +7% Think +7% MV 增益 在相同准确率下,RL-Zero-Math 凭借更高正确输出多样性获得 2 倍投票增益
HumanEval (代码) AST 子树 Jaccard 距离 (正确输出) Think 0.53 / Base 0.89 / RL-Zero 0.89 Base 0.89 Think 在正确代码上结构性同质化严重,pass@16 采样增益被压缩
HumanEval pass@16 与 pass@1 Instruct pass@16=98.2 vs pass@1=81.2;Think pass@16=95.7 vs pass@1=87.7 pass@1: Think 87.7 优于 Instruct 81.2 Instruct 因分布更宽反而在 pass@16 反超 2.5 个百分点
WritingPrompts (创意写作) SBERT 语义多样性 / LLM-judge 胜率 Base Vendi=6.9 模式,Think/Instruct 收敛到 ~2.6 模式 (-63%),但 LLM-judge 胜率 >97% Base SBERT 0.54 / 50% 胜率 质量大幅提升但多样性崩塌最严重,质量-多样性张力最明显
PRISM (价值多元) SBERT 语义多样性 Think 损失 78% / Instruct 也显著下降;NLI 仍 >1.0 (含矛盾),Instruct 跌至 <1.0 Base 100% 价值多元任务上多样性崩塌最深,但 Think 因 CoT 保留部分逻辑多样性
TruthfulQA majority@16 相对 acc@1 所有模型 majority@16 < acc@1 (投票反而有害) Base acc@1 较高 多样性崩塌放大错误:当主流模式错误时,置信坍缩放大错误
IFEval (指令遵循) SBERT 语义多样性 + 准确率 Think-not-thinking 强制后 SBERT 仅 +0.025 (vs Base→Think 跌 0.153);准确率 −8% Think SBERT 0.12 (相对 Base 0.32) CoT 抑制无多样性恢复,质量损失 8 个百分点
WildBench (复杂帮助性) WB-Score Instruct 6.1 / Think 4.6 / Think-not-thinking 1.4 / Base −2.0 Base −2.0 CoT 抑制导致复杂任务得分从 4.6 暴跌到 1.4,证明 CoT 是可靠性机制

局限与改进

作者坦承六项局限。(1) 多样性度量是分布性而非代表性:捕获统计意义上的输出分散度 (lexical/semantic/logical spread),但无法直接判定哪些视角或立场被丢失;PRISM 上 NLI 仍 >1.0 含矛盾,无法区分真实立场多元还是内部不一致。(2) 仅测最终答案多样性,未度量 ... 推理路径多样性。(3) 部分基准存在训练-评估污染:C13 13-gram 检测显示 HumanEval、CRUXEval、IFEval、MATH-Algebra/Geometry、WildBench 六个任务与 Dolci 训练集有 7-30% 重叠,作者论证'污染任务模式与清洁任务一致'但未彻底排除。(4) 质量评估依赖 LLM-as-judge:六个非可验证任务用 gpt-4.1-mini 单裁判,可能引入与训练分布相关的偏差,缺乏多模型一致性检验。(5) Olmo 3 单一系列外部有效性存疑:13 个 checkpoint 全部来自同一 7B 基础模型与同一三阶段配方,未在 Llama-3、Qwen 等其他系列上复现,结论能否推广到更大规模或 PPO 等其他 RL 配方仍待验证。(6) 奖励域离散:RL-Zero 仅覆盖 Math/Code/IF/General 四个奖励域,对创意写作等内在多样性需求高的任务无专门奖励信号。

独立分析的弱点

独立观察到的弱点有五处。**弱点 1:Think-not-thinking 的 OOD 干预未控制计算量**。prefill 空 CoT 块强制直接作答虽然保留权重,但模型并未在'直接作答'模式上训练过,进入 OOD 区域,质量下降中有多大概率来自分布偏移、多少来自 CoT 真正缺失,无法干净分离;改进方向是加入'在 instruct-style 数据上微调 Think 但保留 SFT 权重'的反事实实验。**弱点 2:质量过滤分解仅覆盖 6 个可验证任务**。GSM8K/MATH/HumanEval/MBPP/IFEval 全是结构化任务,无法直接套用到创意写作与价值多元这些多样性最值得关注的任务上。**弱点 3:多样性度量仍依赖成对语义相似性**。SBERT、Vendi、UniXcoder 对长文本池化敏感、对代码结构等价不够鲁棒。**弱点 4:NLI 多样性解读含歧义**。PRISM 上 Think 的 NLI 仍 >1.0 含矛盾,无法判定真实立场多元还是内部不一致。**弱点 5:缺少 RL 阶段的细致解构**。RL-Zero 内部分 6 个变体但 Think/Instruct 的 RL 只用单一 GRPO,未探索不同 RL 算法与 KL 强度对多样性 floor 的影响。

未来方向

作者明确提出三个延伸方向。**方向 1:推理路径多样性的独立度量**。本文只测最终答案层面多样性,Think 模型生成的 ... 推理轨迹本身是否多样化尚未研究,这是 self-consistency 增益的真实来源。**方向 2:训练数据组成干预的直接验证**。本文是观察性研究——观察到多教师数据崩塌更慢——但没有反事实实验:人为构造不同教师数 (1/2/4/8) 的 SFT 数据集,验证多样性保留是否单调。**方向 3:偏好优化目标的范式转换**。观察到的多样性 floor 在 1.3-1.6 个 Vendi 模式上似乎无法通过更多数据突破,需要算法层面 (forward-KL 而非 reverse-KL、移除 KL 惩罚、加入熵正则) 才能真正抬高 floor。基于本文成果可延伸:(a) 把三谱系分析扩展到 70B+ 规模验证 floor 是否随模型规模变化;(b) 把多样性度量从分布性扩展到表征性,针对 PRISM 等任务设计'视角覆盖度'评估;(c) 研究多轮对话场景下多样性崩塌的累积效应;(d) 把 RL-Zero 的'无 KL 惩罚'思想与 SFT/DPO 结合,探索新型后训练范式。

复现评估

**代码与数据开源情况极佳**。作者公开了 GitHub 仓库 https://github.com/ckarouzos/where-diversity-collapses/,包含评估 pipeline、采样脚本、metric 实现。Olmo 3 本身由 Allen AI 公开提供:13 个 checkpoint (base、Think-SFT/DPO/Final、Instruct-SFT/DPO/Final、6 个 RL-Zero 变体) 全部开源,训练数据 Dolci 也公开。**复现所需算力**:评估一组 (模型, 任务) 需在 T=0.6、top-p=0.95 下生成 K=16 个样本,对 7B 模型 15 个任务 13 个模型,全量复现大约需要数十到数百 GPU 小时;单一对照实验可在单张 A100/H100 上完成采样。**数据污染检测**也有公开脚本 (C13 13-gram 匹配)。**复现难度中等**:实验逻辑清晰、变量隔离干净、metric 都有现成实现 (HuggingFace 提供 SBERT、UniXcoder、NLI 模型);主要门槛是同时维护 13 个模型与 6 个 RL-Zero 变体的推理环境配置。**潜在偏差**:LLM-as-judge 用 gpt-4.1-mini,需 OpenAI API;采样温度 0.6 是匹配各 checkpoint 的折中选择,与 base 推荐的 T=1.0 不同,复现者需注意这会略微压低所有模型的绝对多样性,但不改变相对排序。