像 GPT-4、Llama 和 Mistral 这样的大型语言模型 (LLMs) 的能力在近年来呈爆炸式增长。我们惊叹于它们编写代码、总结各种文本以及回答复杂问题的能力。然而,尽管它们功能强大,其训练过程在很大程度上仍然是一个“黑盒”。
我们知道,我们向这些模型输入了海量数据集——数万亿个 token——它们便涌现出了智能。但是,如果一个模型特别擅长总结法律文件,究竟是哪些具体的训练样本促成了这种技能的出现?反之,如果一个模型在历史事实产生幻觉,又是哪些糟糕的数据点在作祟?
对于 NLP 领域的学生和研究人员来说,回答这些问题被称为训练数据归因 (Training Data Attribution, TDA) 。 从历史上看,这项工作非常困难,计算成本高昂,且局限于像“损失 (loss) ”这样的简单指标。
在这篇文章中,我们将深入探讨百度公司、中山大学和哥本哈根大学的研究人员发表的一篇题为**“On Training Data Influence of GPT Models”**的论文。他们提出了 GPTfluence , 这是一种新颖的、基于模拟的方法,它不仅能追踪损失,还能预测训练数据如何影响 BLEU 和 ROUGE 等复杂指标,更重要的是,它能够泛化到未见过的数据。
问题: 追溯智能的源头
为了优化训练和调试模型,我们需要理解输入 (训练数据) 与输出 (特定测试用例的性能) 之间的关系。
现有的方法通常分为两类:
- 基于梯度的方法 (例如 TracIn) : 这些方法观察训练期间的梯度 (模型更新权重的方向) 。如果一个训练样本将权重推向了有助于特定测试样本的方向,它就会获得较高的影响力得分。缺点是什么?它需要保存大量的检查点 (checkpoint) 数据并执行昂贵的梯度计算。而且它通常只能预测“测试损失”,而不是实际的生成质量。
- 基于模拟的方法 (例如 Simfluence) : 这些方法试图“模拟”训练过程。它们学习一个函数,根据 \(t-1\) 步的损失来预测 \(t\) 步的测试损失。然而,以前的模拟器通常绑定到特定的数据索引上。如果你引入了一个模拟器以前没见过的训练样本,它就会失效。
GPTfluence 的作者发现了一个主要差距: 我们需要一种方法,它不仅能处理生成指标 (而不仅仅是损失) ,能应对 GPT 模型的规模,还能泛化到新的、未见过的数据。
解决方案: GPTfluence
GPTfluence 的核心创新在于特征化模拟 (Featurized Simulation) 。 GPTfluence 不再将训练样本视为匿名的 ID 号码,而是查看数据的内容 (其特征) 。
该过程分为三个不同的步骤,如下图所示。
第一步: 收集动态
首先,我们需要真值 (ground truth) 数据。研究人员在数据子集上训练实际的 GPT 模型 (参数范围从 14M 到 2.8B) 。在这些训练运行期间,他们追踪测试样本在每一步的性能。这种训练课程 (training curricula) 和由此产生的性能轨迹的集合被称为 GPTDynamics 。

第二步: 训练模拟器
一旦数据收集完毕,我们就不再关注 GPT 模型了。我们训练一个轻量级的模拟器 。 这个模拟器接收测试样本的当前状态和当前的训练数据批次,并试图预测下一步的测试性能会是多少。

第三步: 推理 (模拟)
一旦模拟器训练完成,你可以给它一个新的课程 (一个新的训练数据序列) 和一个新的测试样本。它将自回归地预测该测试样本的性能曲线,而无需再次实际训练庞大的 GPT 模型。

核心方法: 特征化模拟
让我们拆解使这个模拟器工作的数学原理和架构。目标是预测测试样本 \(z'\) 在时间 \(t\) 的指标得分 \(\phi\) (可以是 Loss、BLEU 或 ROUGE) 。
n 阶马尔可夫过程
作者将训练动态建模为 \(n\) 阶马尔可夫过程。这意味着当前步骤的性能取决于前 \(n\) 个步骤的性能,加上当前训练数据批次的影响。
更新规则公式如下:

这里:
- \(\phi_t(z')\) 是第 \(t\) 步的预测得分。
- \(\alpha_j(c_t)\) 是一个乘法因子 (前一状态放大/衰减的程度) 。
- \(\beta(c_t)\) 是一个加法因子 (当前批次的直接贡献) 。
这些因子 \(\alpha\) 和 \(\beta\) 不是随机的;它们是通过聚合当前批次 \(c_t\) 中每个单独训练样本的影响力计算得出的。

“特征化”创新
这是论文中最关键的部分。以前的方法 (如 Simfluence) 是为特定的训练 ID 学习这些 \(A\) 和 \(B\) 因子。GPTfluence 转而使用特征 。
它使用一个预训练的编码器 (如 BERT 或小型 GPT) 将训练样本 \(z_i\) 和测试样本 \(z'\) 转化为向量 (嵌入) 。

因为模拟器是在这些向量 (\(h\)) 上操作的,它能够理解数据的语义。如果模拟器学习到“摘要训练数据”可以改进“摘要测试数据”,它可以将这一知识应用到它从未见过的新摘要样本上,仅仅因为它们的向量表示是相似的。
影响力因子 \(A\) (乘法) 和 \(B\) (加法) 是通过查看训练向量和测试向量之间的交互来计算的:

本质上,模型学习了权重矩阵 (\(W\) 和 \(U\)) ,这些矩阵决定了特定类型的训练数据如何与特定类型的测试用例交互以改变其性能指标。
实验结果
研究人员在参数范围从 14M 到 2.8B 的 Pythia 模型上测试了 GPTfluence,使用了 FLAN 等数据集 (包括 RTE、SST-2、BoolQ 等) 。他们将自己的方法与 TracIn、Grad-Dot 和原始的 Simfluence 进行了比较。
1. 估算测试损失
TDA 方法最基本的健全性检查是预测测试损失曲线。如下面的表 1 所示,在各种模型规模下,与基线相比,GPTfluence 实现了显著更低的均方误差 (MSE) 和更高的相关性 (斯皮尔曼 \(\rho\)) 。

注意 MSE 的巨大差异。对于 410M 参数的模型,GPTfluence 的 MSE 为 0.220 , 而 TracIn 为 1.156 。
我们可以在下面的图表中直观地看到这种表现。“Ground Truth” (蓝线) 代表实际的训练运行。“Ours” (橙线,即 GPTfluence) 几乎完美地追踪了它,而其他方法往往会发散或未能捕捉到训练动态。

2. 泛化到未见数据
该论文最大胆的主张之一是处理未见数据的能力。在实验中,他们模拟了以下场景:
- 训练课程包含新样本。
- 测试样本是新的。
- 两者都是新的。
如下面的图 8 所示,即使模拟器遇到了它未曾训练过的数据,GPTfluence (橙色) 依然紧跟 Ground Truth (蓝色) 。这证实了“特征化”方法的威力——模型学习的是数据影响的一般原则,而不是死记硬背具体的例子。

3. 预测生成指标 (BLEU & ROUGE)
大多数 TDA 方法止步于损失 (Loss) 。但损失并不总是与生成质量完美相关。你想知道一份文档是否提高你的模型翻译 (BLEU) 或摘要 (ROUGE) 的能力。
GPTfluence 能够直接模拟这些指标。

在表 3 中,观察 WebNLG 数据集上的 Pythia-2.8B 模型,GPTfluence 实现了 5.56 的 BLEU 预测 MSE,远低于 Simfluence 的 15.08 。 这种能力使研究人员能够专门为高质量生成 (而不仅仅是低困惑度) 来优化数据集。
4. 跨规模的鲁棒性
当模型变大时,该方法会失效吗?作者在高达 2.8B 参数的 Pythia 套件上对此进行了测试。

上面的图表显示,虽然随着模型变大任务变得更难 (错误率普遍上升) ,但无论模型规模如何,GPTfluence (蓝色柱) 始终保持比 Simfluence (粉色柱) 更低的错误率和更高的相关性。
用例: 清洗错误标记的数据
这为什么重要?除了理论兴趣外,TDA 是数据卫生的实用工具。
研究人员设置了一个实验,他们故意翻转 SST-2 (情感分析) 数据集中的标签,破坏了 40% 的数据。然后,他们使用不同的方法来识别这些“坏”数据点。
他们计算了训练样本对模型损失的影响。按照逻辑,错误标记的数据应该具有很高的负面影响 (或对损失有很高的贡献) 。

在图 7 (左) 中,观察测试准确率 (Test Accuracy) 。当他们移除被 GPTfluence (红线) 识别为“坏”的数据时,模型的准确率比使用 TracIn 或随机选择时上升得更快。这证明 GPTfluence 可以有效地查明有害的训练数据,充当清洗数据集和提高模型性能的过滤器。
结论
LLM 训练的“黑盒”正在慢慢打开。 GPTfluence 代表了向前迈出的重要一步,它摆脱了昂贵的梯度追踪和死板的基于 ID 的模拟。
通过使用特征化模拟器 , 作者创造了一个工具,它能够:
- 理解语义: 它将数据视为向量,使其能够泛化到未见过的样本。
- 超越损失: 它预测用户真正关心的指标,如 BLEU 和 ROUGE。
- 扩展性: 即使目标 GPT 模型规模增长,它仍然有效。
对于研究这一领域的学生来说,这篇论文强调了“元建模 (Metamodeling) ”的重要性——使用较小的模型 (模拟器) 来理解较大模型 (GPT) 的行为。随着 LLM 的不断发展,像 GPTfluence 这样的工具对于策划训练下一代 AI 所需的海量数据集将至关重要。
](https://deep-paper.org/en/paper/2404.07840/images/cover.png)