大语言模型 (LLMs) 的时代彻底改变了我们进行机器学习的方式。我们已经从一个“匮乏思维”——即标注数据昂贵且稀缺的时代,迈入了一个“富足思维”的时代——像 GPT-4 或 Mixtal 这样的模型可以生成无限量的文本。这催生了 知识蒸馏 (Knowledge Distillation) 的兴起: 利用一个庞大的“教师”LLM 生成合成数据集,然后用这些数据来训练针对特定任务的更小、更高效的“学生”模型 (如 BERT 或 DistilBERT) 。

然而,这台机器中潜伏着一个幽灵。虽然 LLM 生成的文本流畅通顺,但它们很容易出现模式坍塌 (mode collapse) 。当你要求 LLM 生成 1000 条电影评论时,它倾向于重复使用相同的老梗、词汇和句式结构。它只是在反刍其概率最高的路径。由此产生的数据集虽然规模庞大,但缺乏人类生成数据所具备的 多样性丰富性 。 在这些重复数据上训练出来的学生模型,往往泛化能力较差。

在这篇文章中,我们将探讨 CorrSynth , 这是由亚马逊研究人员 (Kowshik 等人) 提出的一项新颖研究成果。CorrSynth 引入了一个用于 相关采样 (correlated sampling) 的数学框架,通过实时地将生成的示例相互“对比”,强制 LLM 生成多样化且独特的示例。

问题所在: 独立采样与同质化

要理解为什么合成数据经常失败,我们必须看看它是如何生成的。标准的方法是 少样本生成 (Few-Shot Generation, FewGen)

在 FewGen 中,你给 LLM 提供一个提示词 (Prompt) 和几个示例 (上下文学习) ,并要求它生成一个新的实例。如果你需要一个包含 1000 个示例的数据集,你只需将这个过程重复 1000 次。关键在于,每一次生成都是 独立 的。模型在生成第 6 个实例时,并不知道它在第 5 次迭代中生成了什么。

从数学上讲,如果我们想根据提示词生成一个序列 \(\mathbf{w}\),其概率是自回归分解的:

标准自回归概率分布方程。

由于模型总是试图最大化概率 \(P(\mathbf{w}|\text{prompt})\),且提示词基本保持不变,模型会倾向于潜空间中相同的高概率区域。这导致数据“扎堆”——成千上万个示例听起来都大同小异。

解决方案: CorrSynth

研究人员提出了一种从独立采样向 相关采样 的转变。CorrSynth 不是孤立地一次生成一个示例,而是同时生成一批示例,并强制它们产生交互。

核心直觉很简单: 如果我同时生成示例 A 和示例 B,我应该确保示例 A 与示例 B 是截然不同的。

图 1: 少样本生成 (独立) 与 CorrSynth (相关) 的比较。

如上图 1 所示,在标准的少样本生成 (左) 中,输入被独立处理。在 CorrSynth (右) 中,一个示例的生成在数学上会受到其他示例的影响。这引入了示例之间的 反相关 (anti-correlation) , 将它们在语义空间中推开。

对比的数学原理

这在 Token 层面是如何工作的呢?CorrSynth 通过引入一个“对比”项来修改下一个 Token 的概率分布。

让我们看看二分类的情况。假设我们要同时生成两个示例:

  1. 针对标签 \(\mathbf{y}\) 的 \(\mathbf{x}\) (例如,“正面情感”)
  2. 针对标签 \(\bar{\mathbf{y}}\) 的 \(\bar{\mathbf{x}}\) (例如,“负面情感”)

CorrSynth 在为 \(\mathbf{x}\) 采样下一个 Token 时,会提升那些对 \(\mathbf{y}\) 来说概率高的 Token,同时 惩罚 那些对 \(\bar{\mathbf{y}}\) 来说概率高的 Token。

显示二元对比修改后采样概率的方程。

在这些方程中:

  • 分子 \(P(\cdot|\text{prompt}(\mathbf{y}), \mathbf{x}_{< i})^{\gamma}\) 鼓励模型遵循正确的提示词 (正面) 。
  • 分母 \(P(\cdot|\text{prompt}(\bar{\mathbf{y}}), \bar{\mathbf{x}}_{< i})^{\gamma - \delta}\) 惩罚那些对于竞争序列 (负面) 来说概率很高的 Token。
  • \(\gamma\) 控制整体引导强度。
  • \(\delta\) 控制对比强度。

通过除以另一个序列的概率,我们本质上是在告诉模型: “选择对正面评论有意义的词,但要避开负面评论目前可能会使用的词。” 这迫使两个序列分道扬镳,确保更好的类别分离。

广义 M 路对比

该方法可以扩展到二分类之外。如果我们同时生成 \(M\) 个不同的序列 (可以是不同的类别,也可以是同一类别的不同示例) ,该公式同样适用。

第 \(m\) 个序列的下一个 Token 的概率以其自身的历史为条件,但会根据当前正在生成的所有其他 \(M-1\) 个序列的概率进行归一化。

M 路相关采样的通用方程。

研究人员将此分母解释为竞争分布的 几何平均数 (Geometric Mean) 。 模型将与所有其他序列的“平均”行为进行对比。

对比分母的几何平均数解释。

标签内 vs. 跨标签多样性

CorrSynth 的一个关键创新在于它如何定义“竞争”序列。研究人员介绍了三种策略:

  1. 跨标签对比 (Cross-Label Contrast) : 你同时生成一个正面评论和一个负面评论。对比确保它们在语义上是独特的。这提高了 类别可分离性 (Class Separability)
  2. 标签内对比 (Intra-Label Contrast) : 你同时生成两个正面评论。通过将它们相互对比,你迫使模型找到表达“正面”的 两种不同方式。这提高了 词汇多样性 (Lexical Diversity)
  3. 混合模式 (Hybrid) : 两者兼顾。你生成包含多个正面和多个负面评论的批次,将每个序列与所有其他序列进行对比。

混合方法在数学上表现为将分母拆分为两个几何平均数: 一个用于同类 (\(GM_{intra}\)) ,一个用于其他类 (\(GM_{cross}\)) 。

分离标签内和跨标签引导的混合 CorrSynth 方程。

为什么不直接使用无分类器引导 (CFG) ?

熟悉扩散模型或高级 LLM 采样的学生可能会问: “这不就是无分类器引导 (Classifier-Free Guidance, CFG) 吗?”

CFG 是一种流行技术,通过将有条件提示词与无条件提示词进行对比来引导模型输出。虽然精神相似,但 CFG 在应用于生成长篇合成数据集时存在两个主要缺陷:

1. 信号衰减: 在 CFG 中,通常需要将生成的序列反馈到“负面”提示词中以计算对比。然而,随着序列变长,“负面”上下文变得与“正面”上下文越来越相似,导致引导信号消失。

2. 计算成本: CFG 需要对每个 Token 运行两次模型 (一次针对正面提示词,一次针对负面提示词) 。而 CorrSynth 是 并行 生成序列的。

研究人员通过实验证明了“信号衰减”问题。在下方的图 2 中,他们绘制了随时间推移正负 Logits 之间的差异。

图表比较 CFG 与 CorrSynth 随 Token 长度变化的信号强度。

注意 左图 (CFG) : 差异 (彩色线条) 保持低平。对比信号很弱。 注意 右图 (CorrSynth) : 差异激增并保持高位。因为 CorrSynth 是与一个 不同的、并行的生成过程 (该过程正在积极地分化) 进行对比,所以对比信号在整个段落中都保持强劲。

此外,在效率方面,对于 K 类数据集,CFG 需要更多的前向传播,因为它无法在不重新计算负面提示词的情况下有效地批量处理对比操作。CorrSynth 则可以在单个批处理推理步骤中完成所有操作。

实验结果

研究人员在四个数据集上评估了 CorrSynth: AG News (主题) 、ToI Headlines (主题) 、Humor (二元分类) 和 IMDb (情感) 。他们使用 Phi-3 MiniMixtal 作为教师模型, DistilBERT 作为学生模型。

1. 内在质量: 多样性与可分离性

为了可视化 CorrSynth 对生成数据的影响,研究人员使用热图展示了类别之间的 余弦相似度

在理想的数据集中,对角线 (自相似性) 应该很高,而非对角线 (跨类相似性) 应该很低。

显示不同对比设置下标签间余弦相似度的热图。

  • 左图 (FewGen) : 我们看到显著的颜色从对角线向外“渗透”。类别之间有些混杂。
  • 右图 (CorrSynth) : 随着对比参数的增加 (向右移动) ,非对角线元素变浅 (相似度降低) 。类别在嵌入空间中被推开,使学生模型更容易学习决策边界。

2. 聚类分析 (UMAP)

使用 UMAP 在 2D 空间中可视化数据,进一步说明了 \(\delta\) (对比强度) 参数的威力。

显示聚类分离的 UMAP 散点图。

  • 最右侧 (\(\delta=0.0\) / 无对比) : 聚类 (代表不同主题) 重叠且混乱。
  • 最左侧 (\(\delta=0.9\) / 高对比) : 聚类清晰紧凑。这种分离减少了混淆学生模型的“困难负样本”和模棱两可的示例。

3. 学生模型性能

最终目标是训练出更好的学生模型。研究人员将 CorrSynth 与标准的 FewGen 以及几个最先进的基准 (如 ReGen 和 SunGen) 进行了比较。

关键指标包括:

  • 准确率 (Accuracy) : 学生在真实测试数据上的表现。
  • MAUVE: 衡量合成文本分布与人类文本接近程度的指标。
  • Self-BLEU: 衡量多样性的指标 (越低越好,表明重复越少) 。
  • 实体熵 (Entity-Entropy) : 衡量生成的命名实体的多样性 (越高越好) 。

发现: CorrSynth 始终优于基准。例如,在使用 Phi-3 教师模型的 AG News 数据集上:

  • FewGen 准确率: 83.8%
  • CorrSynth 准确率: 85.1%
  • Self-BLEU (多样性) : 从 33.9 (重复) 降至 12.1 (多样) 。

实体熵 的提升尤为显著。FewGen 倾向于反复提及相同的著名实体 (如“Google”、“Apple”) 。CorrSynth 通过惩罚并行序列中最可能的 Token,迫使模型深入挖掘其词汇表并检索“长尾实体” (不太常见的公司、地点或名称) ,从而产生更丰富的数据集。

4. 学习动态 (数据集地图)

最后,研究人员使用 数据集地图技术 (Dataset Cartography) 分析了学生模型 如何 学习。该技术根据模型的置信度以及训练期间置信度的变化情况来映射训练示例。

比较学习动态的数据集地图。

FewGen 地图 (左) 中,我们看到“简单”示例 (高置信度,低变异性) 十分集中。在 CorrSynth 地图 (中) 中,分布散开了。CorrSynth 生成了更多“模棱两可”和“难以学习”的示例 (中间区域) 。在机器学习课程中,这些“困难”示例通常对于推动泛化最有价值,因为它们迫使模型学习鲁棒的特征,而不是浅层的启发式规则。

结论与启示

CorrSynth 代表了合成数据生成领域向前迈出的重要一步。它承认了 LLM 的一个根本弱点——倾向于回归均值——并用一个强制多样性的几何框架来应对它。

主要收获:

  1. 相关采样有效: 批量生成示例并将它们相互对比可以防止模式坍塌。
  2. 效率很重要: 与 CFG 不同,CorrSynth 在长序列上保持强引导信号,并且由于并行化而具有计算效率。
  3. 多样性等于准确率: 通过优化词汇多样性 (标签内对比) 和类别可分离性 (跨标签对比) ,我们生成的数据集可以训练出明显更好的学生模型。

随着我们继续依赖合成数据来训练下一代 AI 模型,像 CorrSynth 这样的技术将至关重要,它能确保我们的 AI “学生”是从多样化、高质量的教科书中学习,而不是一遍又一遍地阅读同一页内容。