引言
ChatGPT 和 LLaMa 等大型语言模型 (LLM) 的兴起,将 AI 研究的重心从单纯构建架构转移到了完善这些模型的学习方式上。我们知道,“预训练 (Pre-training) ”赋予了模型庞大的知识库,但“指令微调 (Instruction Tuning, IT) ”才是使其变得有用的关键。IT 这个过程教会了模型遵循特定的用户命令,将其从一个文本预测器转变为一个能干的助手。
然而,在我们目前教导这些模型的方式中,存在一种隐性的低效。标准的指令微调通常涉及使用一个巨大的、多样化的数据集——包含翻译请求、编程问题、创意写作提示和数学问题——并将它们全部混合在一起。模型在同一个训练步骤中,可能会先看到一道数学题,接着是一段法语翻译,然后是一个 Python 脚本。
虽然数据多样性通常是件好事,但随机混合实际上可能会损害模型的专业能力。
在这篇文章中,我们将深入探讨一篇引人入胜的论文,题为 “CommonIT: Commonality-Aware Instruction Tuning for Large Language Models via Data Partitions” (CommonIT: 通过数据分区实现大型语言模型的共性感知指令微调) 。 研究人员提出了一种受人类学习启发的类似方法: 就像学生如果在一段时间内专注于一个科目 (板块式学习) ,而不是快速切换主题,往往能学得更好一样,当训练数据按“共性 (commonality) ”分组时,LLM 的表现也会显著提高。
问题所在: 随机混合带来的困惑
要理解解决方案,我们首先需要直观地看到问题。在传统的指令微调中,训练批次 (batches) 是随机采样的。对模型权重的一次更新,试图最小化完全不相关的任务之间的误差。
这会导致“任务冲突 (task conflict) ”。解决翻译任务所需的特征可能会干扰解决逻辑谜题所需的特征。当模型同时被拉向太多方向时,它就难以理解指令背后的具体意图。

如 图 1 所示,在一个混合数据上训练的模型经常会误解指令。在这个例子中,用户要求模型“翻译以下句子”。然而,由于模型在训练过程中受到了混合信号的狂轰滥炸,它未能识别出翻译命令,而是将输入句子 (“Can I change it?”) 视为一个需要直接回答的问题。
这并非缺乏知识;这是由于随机数据混合的噪声导致的指令遵循 (instruction following) 失败。
解决方案: CommonIT
研究人员引入了 CommonIT , 这是一种基于数据相似性来构建训练过程的策略。其核心理念很简单: 将相似的数据分在一组。
CommonIT 没有向模型灌输混乱的任务组合,而是将数据集组织成不同的组。在训练期间,每个“小批量 (mini-batch) ” (用于一次梯度更新的一小部分数据) 完全由来自一个特定组的数据组成。

如 图 2 所示,该过程分为两个主要阶段:
- 数据集分组 (Group the Dataset, GD) : 原始指令数据根据特定指标 (任务、嵌入或长度) 聚类成组。
- 乱序分区微调 (Fine-tune with Shuffled Partitions, FP) : 模型在这些组上进行训练。关键在于,虽然组的顺序是随机的 (乱序) ,但单个批次内的内容是同质的。
这带来了两个好处: 它保持了批次间的随机性 (防止模型遗忘以前的任务) ,同时确保了批次内的相似性 (允许模型一次专注于学习一种类型的模式) 。
深入探讨: 如何对数据进行分组
这篇论文的一个主要贡献是探索了如何对数据进行分组。你可能认为我们需要为每个任务贴上人工标签,但研究人员发现了有效的自动化方法。他们提出了三个指标:
1. 按任务分组 (Group by Task)
这是最直观的方法。如果数据集带有标签 (例如,“翻译”、“摘要”、“数学”) ,我们就相应地对数据进行分组。这明确地告诉模型一次专注于一种任务类型的特定语言模式。
2. 按嵌入分组 (Group by Embedding)
通常,我们没有清晰的任务标签。在这种情况下,我们可以使用语义嵌入 (semantic embeddings) 。研究人员将指令转换为向量表示,并使用聚类算法 (如 K-近邻算法) 将语义相似的指令归为一组。例如,关于生物学的问题可能会聚在一起,与计算机科学的问题分开。
3. 按长度分组 (统计数据) (Group by Length)
这是最令人惊讶且实用的发现。研究人员发现, 回复的长度是任务类型的有力指征。
- 短回复 通常表示多项选择题、情感分类或简单的事实检索。
- 长回复 通常表示创意写作、代码生成或复杂推理 (思维链,Chain-of-Thought) 。
通过简单地按长度对数据进行分组,CommonIT 实际上隐式地按任务对数据进行了分组,且无需昂贵的嵌入计算或人工标签。
数学上的调整
在标准训练中,我们会计算一个随机批次的损失。在 CommonIT 中,损失函数看起来略有不同,因为它被限制在一个特定的分区内。

在这个公式中,批次 \(t\) 的损失 \(L_t(\theta)\) 是在 \(N\) 个样本上计算的,这些样本都共享特定的特征 (它们来自同一个分区组) 。这允许梯度更新坚定地朝着一个特定的方向迈进 (例如,“提高推理能力”) ,而不是朝着可能无法优化任何特定任务的平均方向迈进。
为什么这行得通: 模型内部透视
分组数据真的会改变模型表示知识的方式吗?研究人员使用 t-SNE (一种将高维数据投影到 2D 点的技术) 可视化了模型的内部状态。

图 3 显示了在 MMLU 基准测试 (一项学术知识测试) 上的结果。
- 左/中: 簇有些分散。模型难以清晰地区分不同的学科 (STEM、人文学科等) 。
- 右 (CommonIT): 簇紧密且清晰。
这种视觉证据表明,CommonIT 帮助模型建立了更有条理的不同领域内部表示。它学会了区分“历史”问题和“物理”问题,从而减少了我们在图 1 中看到的困惑。
实验结果
研究人员在几个流行的模型 (LLaMa-7B, LLaMa-13B, BLOOM) 和数据集上测试了 CommonIT。结果是一致的: 数据分组提高了性能。
综合表现
下表比较了在 LLaMa-7B 模型上使用不同分组策略的标准指令微调 (IT) 与 CommonIT。

表 1 的主要结论:
- CommonIT 始终击败基线。 平均而言,几乎所有基准测试的分数都更高。
- 长度指标很强大。 令人惊讶的是,按长度 (最简单的指标) 分组获得了最高的平均分 (36.3 vs 基线的 35.1) 。这对从业者来说是个好消息,因为按长度分组的计算成本几乎为零,而嵌入聚类则很昂贵。
特定领域微调
虽然“长度”对于通用目的的微调很棒,但如果我们想要一个专才模型呢?研究人员发现,不同的分组策略在不同的领域大放异彩。

如 表 3 所示,当目标是在数学 (GSM) 或编程等特定领域表现出色时,按任务分组提供了最大的提升 (代码方面提升了 +5.7%) 。这表明对于专门的应用,明确的标签是值得投入的。
效率与收敛
CommonIT 最具说服力的论据之一是训练效率。由于模型不需要在每个批次中对抗相互冲突的梯度,它学得更快,并在更低的损失下稳定下来。

图 4 表明,与基线相比,CommonIT 实现了更低的语言建模损失 (左图) 。此外,右侧的柱状图显示,随着训练的进行 (从 Epoch 2 到 Epoch 3) ,CommonIT 继续改进,而基线开始停滞或退化。
现实世界的例子
数字固然好,但这如何转化为实际的用户交互呢?研究人员提供了对比基线模型和 CommonIT 模型的案例研究。

在 图 12 中,我们看到了明显的定性改进:
- 事实性问答: CommonIT 模型正确识别了 1955 年的总统。
- 摘要: 当被要求提供“五个要点”时,CommonIT 模型实际上提供了一个编号列表。基线模型则毫无结构地胡言乱语。
- 语法纠错: 基线模型只是重复错误或添加不相关的文本。CommonIT 模型精确地遵循了指令: 它修正了语法,然后停止。
结论
“CommonIT” 论文给我们上了关于“以数据为中心的 AI (Data-Centric AI) ”宝贵的一课。我们通常认为要获得更好的模型,我们需要更多的数据或更大的神经网络。然而,这项研究证明, 我们如何组织数据同样重要。
通过放弃随机采样,转而采用共性感知分区 , 我们可以减少任务干扰,并帮助模型更有效地组织其内部知识。
给学生的关键启示:
- 类比很重要: “人类学习课程”的类比是理解为什么随机批处理效率低下的好方法。
- 简单即胜利: 你并不总是需要复杂的聚类算法。简单地按输出长度对数据进行排序可能是一种对潜在任务进行分组的高效方法。
- 数据 > 架构: 你可以在不更改模型架构的一行代码的情况下,仅仅通过更改数据加载器 (data loader) ,就获得显著的性能提升 (2% - 5%) 。
随着我们向通用人工智能 (AGI) 迈进,像 CommonIT 这样的策略可能会成为标准实践,确保我们的模型不仅是“万事通 (jacks of all trades) ”,而且是全能大师。
](https://deep-paper.org/en/paper/2410.03077/images/cover.png)