对应 Maps to:Stanford CS525 Winter 2026 Training Data for AI,2/9 客座讲座 Data attribution & influence functions:Logan Engstrom(MIT → OpenAI)Data attribution at scale(44 页 slides),Juhan Bae(University of Toronto → Anthropic)Studying Large Language Model Generalization with Influence Functions(41 页 slides);2/18 的学生报告:Datamodels(Simon Guo,slides 改编自 Sam Park 和 Andrew Ilyas)、Data Attribution at Scale(TRAK,Hugo Buurmeijer)、Optimizing ML Training with Metagradient Descent(James Cheng)。阅读:Koh & Liang(2017)、Ilyas et al. Datamodels(2022)、Park et al. TRAK(2023)、Grosse et al.(2023)、Engstrom et al.(2025)、ICML 2024 的 ML & Data 教程。 依据说明:五份 slides 的文字都可读,但 Bae 的 slides 里大部分例子(有影响的训练序列)是图片,我只读到了结论性的文字。各论文的关键数字核对过摘要;学生报告里的数字(例如”100 个模型的 TRAK 相当于 5 万个模型的 datamodels""投毒 2.5% 让准确率从 92% 降到 78%""DataComp 0.13 → 0.22”)讲义里标明是”学生报告”。第 8 节”统一的视角”和第 9 节”延伸与前沿”是我补充的。 配套代码 Code:
code/lecture13/(numpy;3 个脚本 + 1 个模块;最长的约 35 秒) 预计阅读时间:3 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
- 说清楚数据归因要回答的问题,以及 Engstrom 的三种归因:佐证式、博弈论式、预测式。
- 推导影响函数,理解它在凸模型上为什么准、在深度网络上为什么失效。
- 理解 Datamodels:用”在随机子集上训练很多模型”把训练的随机性平均掉,再用线性模型预测输出。
- 理解 TRAK:线性化 + 随机投影 + 集成,用几十到上百个模型达到成千上万个模型的效果;会用 LDS 评价归因方法。
- 了解影响函数怎样扩展到 520 亿参数的语言模型(EK-FAC),以及它揭示了语言模型的哪些泛化模式。
- 理解归因的应用公式(数据选择、模型调试、投毒),以及元梯度:对整个训练过程求导,直接优化训练数据。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲不展开 Not covered |
|---|---|
| 逻辑回归、Hessian、隐函数定理 | EK-FAC、LiSSA 的推导 |
| 第 5 讲:DataComp(固定训练、只换数据) | 稀疏化、软阈值的细节 |
| 第 6、10 讲:数据选择和混合的实验方法 | 机器遗忘(unlearning)的方法;数据投毒的细节(第 18 讲) |
和本目录 CS329T 第 4 讲(训练数据归因) 有重叠:那一讲从可解释性的角度讲,本讲更关心”归因怎样帮我们整理训练数据”。
0.3 本讲地图 Map
§1 数据问题与数据归因:三种归因
§2 影响函数:推导、凸模型上的成功、深度网络上的失效 ← 代码 01 演示 1–3
§3 博弈论式的归因:数据 Shapley ← 代码 01 演示 4
§4 Datamodels:在随机性下预测预测 ← 代码 02 演示 1、3
§5 TRAK:在大规模上做归因 ← 代码 02 演示 2
§6 影响函数遇上大语言模型(Grosse, Bae et al. 2023)
§7 应用:数据选择、模型调试、投毒;元梯度 ← 代码 03
§8 一个统一的视角
§9 延伸与前沿
§10–14 小结、常见误区、练习、延伸阅读、下一讲预告
0.4 关于数字
论文的数字来自论文摘要和 slides。代码的数字来自两个小任务(attrib_lab.py):
- 线性任务:两个高斯类、少量翻转的标签,模型是 L2 正则的逻辑回归(凸,用牛顿法训练到收敛)——影响函数的理想情况。
- 弯曲边界任务:,100 个训练样本,模型是一个 16 个隐单元的小网络(非凸,随机初始化,梯度下降 300 步)。为了做 datamodels,代码能在几秒内并行训练上千个网络。
评价归因方法用 TRAK 论文的线性数据建模分数(LDS,§5.3)。代码固定了随机种子,同一台机器上重复运行输出逐字相同。
1. 数据问题与数据归因
1.1 数据问题
Engstrom 从一串”数据问题”开始——它们都是在问模型的表现和数据之间的关系:
- 我应该用什么数据训练语言模型?
- 模型犯的这个错,该怪哪些训练数据?
- 什么时候能相信模型的输出?
- 应该给内容创作者多少补偿?
- 模型对恶意的训练数据有多鲁棒?
- 模型的输出是否侵犯了版权?
数据归因方法(data attribution)试图把模型在测试时的行为和数据联系起来。具体是什么数据(单个样本?一个数据来源?)、什么行为(一个预测?整体的损失?)、以什么方式联系——不同的问题需要不同的答案。
1.2 三种数据归因
Engstrom 按应用把归因分成三类:
| 类型 | 问的问题 | 例子 | 代表方法 |
|---|---|---|---|
| 佐证式(corroborative,找证据) | 这个输出在某个语料里有没有”证据”? | 引用来源、检查版权(扩散模型生成的图和训练图几乎一样) | 在一个搜索集里,按预先定义的”证据”概念(蕴含、视觉相似度)检索 |
| 博弈论式(game-theoretic,分功劳) | 每个数据来源为结果贡献了多少? | 给数据提供者付费 | 数据 Shapley(§3) |
| 预测式(predictive,datamodeling) | 如果换一个训练集,模型的输出会怎样变? | 模型调试、数据选择、投毒 | 影响函数、datamodels、TRAK(§2、§4、§5) |
佐证式归因不关心因果:一张训练图和生成的图很像,不代表模型”因为”它才生成了这张图(Worledge et al. 2023 把后两类称为”贡献式”归因)。本讲主要讲预测式归因。
预测式归因的定义:有一个数据全集 和训练子集 ;在 上训练得到 ,对样本 的输出是 。预测式归因方法给出一个估计 ,使得
Engstrom 的关键观察:“事实证明,简单的预测器效果很好。”
2. 影响函数
2.1 推导
影响函数是统计学里的经典想法(Hampel 1974),Koh & Liang(2017)把它引入深度学习。
训练是经验风险最小化:。我们想知道:如果把训练样本 的权重增加一点点 ,最优解会怎样变?定义响应函数
最优解满足一阶条件 。对 求导(隐函数定理),在 处:
再用链式法则得到对测试样本 的损失(或任何输出 )的影响:
读法: 表示”增加 的权重会降低测试损失”—— 是有帮助的。去掉 相当于 ,所以”去掉 后测试损失的变化” 。学生报告的说法:影响函数就是一个”线性的 datamodel”。
2.2 凸模型上:几乎就是留一法(代码 01 演示 1)
逻辑回归(200 个训练样本、50 个测试点):对每个测试点,影响函数预测的”去掉 的效果”和精确的留一法(真的去掉、重新训练)的相关系数平均 0.9996。只算一次 Hessian 的逆,就代替了 200 次重新训练。
但组效应不是可加的。对一个测试点,去掉影响最大的 个样本:
| 预测的变化 | 真实的变化 | 比值 | |
|---|---|---|---|
| 1 | +0.113 | +0.121 | 1.07 |
| 5 | +0.470 | +0.522 | 1.11 |
| 20 | +1.553 | +2.254 | 1.45 |
| 40 | +2.435 | +4.320 | 1.77 |
影响函数把各个样本的效果简单相加,而一组样本之间有相互作用;变化越大,一阶近似偏离越多。学生报告把”忽略组效应”列为这类方法的弱点。
2.3 深度网络上:影响函数”脆弱”(代码 01 演示 2)
影响函数的推导假设:目标是严格凸的、 是精确的最优解、去掉一个样本后最优解还在附近。深度网络三条都不满足:损失非凸、训练提前停止、不同的初始化收敛到不同的地方。Basu et al.(2021)的论文标题就是 Influence functions in deep learning are fragile。
小网络(100 个训练样本、30 个测试点)上:
| 量 | 数值 |
|---|---|
| 影响函数 vs 留一法(同一个初始化)的相关系数 | 0.540 |
| 留一法(换一个初始化)vs 留一法的相关系数 | 0.408 |
| 去掉一个样本的效果:|变化| 的平均 | 0.119 |
| 只换随机种子(数据不变):测试输出的标准差 | 0.688 |
更根本的问题在后两行:留一法本身就不稳定。只换随机种子造成的输出波动,比去掉一个样本的效果大好几倍;换一个初始化重新做留一法,结果的相关系数只有 0.41。所以对深度网络来说,“去掉样本 的效果”必须定义成对训练的随机性取平均的效果——这正是 datamodels 和 TRAK 的出发点。
2.4 一个应用:找出标错的样本(代码 01 演示 3)
自影响 衡量”一个样本对它自己的损失有多大影响”——标错的样本通常自影响很大(模型要”扭曲”自己才能拟合它)。Koh & Liang 的一个应用:让人优先检查自影响大的样本。
1000 个训练样本、8% 的标签被翻转,检查前 50 个:按自影响排序,50% 是标错的;随机检查只有 10%。但在逻辑回归上,按训练损失排序还好一点(60%)——自影响主要由损失决定,再乘上”这个样本有多孤立”,孤立但标对的样本也会被排到前面。归因方法不一定胜过简单的基线,要和基线比较。
3. 博弈论式的归因:数据 Shapley
3.1 把训练看成一个合作博弈
博弈论式的归因(Ghorbani & Zou 2019;Jia et al. 2019)把模型训练看成数据点(或数据提供者)之间的合作博弈:效用 是在子集 上训练出的模型的表现。目标是给每个数据点分配”公平的功劳”。
数据 Shapley:
即 加入每一个可能的子集时的边际贡献的加权平均(等价于:在所有加入顺序下的边际贡献的平均)。它是唯一满足以下公理的分配方式:
- 对称性:完全相同的数据点得到相同的功劳;
- 线性:对效用的线性组合做归因 = 归因的线性组合;
- 零效用:总是没用的数据点得到 0;
- (有效性:所有数据点的功劳之和 = 全集的效用 − 空集的效用。)
3.2 和留一法比较(代码 01 演示 4)
20 个训练样本(其中样本 3 的标签是错的),效用 = 测试集的平均对数似然,200 个随机排列的蒙特卡洛估计:
| 留一法 | Shapley | |
|---|---|---|
| 所有样本的价值之和 | 0.039 | 0.208(= 全集 − 空集的效用) |
| 标错的样本 3 | −0.051 | −0.229 |
| 最有价值的样本 8 | 0.057 | 0.131 |
| 把样本 8 复制一份后:原件 / 副本 | 0.030 / 0.030 | 0.085 / 0.109 |
- 有效性:Shapley 值的和恰好等于总效用;留一法的和没有这样的意义。
- 错误样本:Shapley 罚得重得多——在训练集还小的时候加入它,伤害很大;留一法只看”其他 19 个样本都在”的情况。
- 冗余:复制一份样本后,留一法给每个副本的价值几乎减半——另一个副本还在,去掉这一个就没那么要紧了(冗余的数据互相”掩护”);Shapley 的副本价值高得多(按对称性两者应相等,差别是蒙特卡洛的噪声)。
- 代价:这里 200 个排列 × 20 个样本 = 4000 次训练。精确计算要对所有子集求和(指数级);蒙特卡洛和截断近似仍然很贵,只能用于小数据或便宜的模型。
4. Datamodels:在随机性下预测预测
4.1 把”中间”完全抽象掉
Datamodels(Ilyas, Park, Engstrom, Leclerc, Madry 2022)的想法(学生报告的 slides):机器学习分两个阶段——训练(数据 → 算法 → 模型)和推理(模型 → 对 的输出)。何不把中间的一切都抽象掉,直接学”训练数据 → 输出”的映射?
对一个固定的目标样本 ,定义 = 在训练集的子集 上训练(含所有随机性)后,模型对 的输出(例如正确类别的 margin)。 包含了整个训练过程,非常复杂。Datamodel 是一个简单的代理 。
怎样拟合?监督学习:
- 随机抽 个子集 (每个包含训练集的 比例);
- 在每个子集上训练一个模型,记录对 的输出:得到数据 ;
- 拟合一个线性模型:, 是 的指示向量(长度 = 训练集大小):
就是带 L1 正则的线性回归——但每个数据点都是一次完整的模型训练。
学生报告的 slides 描述的 CIFAR-10 实验:重复 50 万次”随机抽训练集的 比例 → 训练一个 ResNet-9 → 记录每张测试图片的 margin”(FFCV 让这成为可能),为 1 万张测试图片各拟合一个 5 万维的 datamodel。评估:抽新的子集,比较 datamodel 的预测和真实训练(100 个模型取平均)的 margin——datamodels 成功地预测了端到端的训练结果。论文公开了 400 万个训练好的网络的预测。
论文列出的应用:预测数据集反事实的效果、识别脆弱的预测、找语义相似的样本、量化训练集和测试集之间的泄漏、把数据嵌入一个特征丰富的表示空间。
4.2 在小网络上(代码 02 演示 1)
| 方法 | LDS | 训练的模型数 |
|---|---|---|
| 影响函数(1 个模型) | 0.456 | 1 |
| Datamodels | 0.583 | 200 |
| Datamodels | 0.750 | 1000 |
| Datamodels | 0.778 | 4000 |
Datamodels 直接用”在随机子集上真的训练”的数据拟合,所以把训练的随机性平均掉了;代价是要训练很多模型。我们只有 100 个训练样本,几千个模型就够;CIFAR-10 有 5 万个,就要几十万个。
4.3 脆弱的预测(代码 02 演示 3)
去掉 datamodel 认为”最支持”某个测试预测的 个训练样本,重新训练(10 个种子取平均),预测翻转了吗?
| 按 datamodel 去掉 | 随机去掉 | |
|---|---|---|
| 5 | 50% 的测试点翻转 | 3% |
| 10 | 70% | 7% |
| 20 | 80% | 17% |
Datamodel 找到了”真正支撑这个预测”的训练样本。这个实验也是对归因的反事实验证:真的去掉、真的重新训练,看预测是否像归因说的那样变。(我们的测试点里有很多离决策边界近的点,所以翻转的比例很高。)
5. TRAK:在大规模上做归因
5.1 动机
影响函数要算 Hessian(大模型上不可行),datamodels 要训练成千上万个模型——都不能扩展。TRAK(Tracing with the Randomly-projected After Kernel,Park et al. 2023)的目标:在大模型、大数据集上做归因,同时保持效果。论文的说法:“只需要很少的模型,就能达到要训练上千个模型的方法的效果”;在 ImageNet 上的图像分类器、CLIP、BERT、mT5 上做了评测。
5.2 五个步骤
学生报告的总结(论文从二分类的逻辑回归出发,再推广):
- 线性化模型的输出函数:在训练好的参数处,把网络看成以 为特征的线性模型;
- 随机投影降维:, 是高斯随机矩阵(Johnson–Lindenstrauss:内积大致保持),把几百万维的梯度压到几千维;
- 用 Gauss–Newton 近似 Hessian,在线性化的模型上算影响:,最后一项是残差(模型已经很有把握的样本影响小);
- 对多个模型取平均(每个在训练集的一个随机子集上训练);
- 用软阈值稀疏化分数。
结果(学生报告):TRAK 在速度和效果的权衡上占优;100 个模型的 TRAK 和 5 万个模型的 datamodels 一样有效;在语言模型上能找出对学会某个事实”反事实地重要”的训练样本(fact tracing);在简单的分类问题上,TRAK 追踪的是决策边界,而不只是最近邻。
优点:因果的(关于数据的反事实,不只是相关);细粒度(单个样本);通用(任何指标:交叉熵、MSE、准确率);有易用的 PyTorch API。缺点:不完全准确(理论只对凸问题成立);忽略组效应。学生报告的建议:“从 TRAK 开始”——datamodels 太贵,元梯度的实现复杂、代码没有公开。
5.3 怎样评价归因:LDS
一个好的预测式归因方法应该能回答反事实问题。线性数据建模分数(linear datamodeling score):
- 抽 个新的随机子集 ;
- 用归因分数预测每个子集上的输出:;
- 在每个子集上真的训练(几个随机种子取平均),得到真实输出 ;
- 对每个测试点,算预测和真实输出在 个子集上的 Spearman 相关,再对测试点取平均。
5.4 在小网络上(代码 02 演示 2)
| 模型数 | TRAK(投影到 32 维) | 不做投影(影响函数的集成) |
|---|---|---|
| 1 | 0.258 | 0.272 |
| 5 | 0.427 | 0.392 |
| 20 | 0.593 | 0.518 |
| 100 | 0.678 | 0.606 |
- 集成是关键:1 个模型时 0.26,100 个模型时 0.68——和 1000 个模型的 datamodels(0.75)相去不远。
- 投影的维数是一个超参数:100 个模型时,k = 8、16、32、64、113、256 的 LDS 分别是 0.632、0.668、0.678、0.556、0.497、0.468。我们的网络有 113 个参数、只有 100 个训练样本, 是病态的,投影到低维相当于正则化。在真实的大网络上,投影首先是为了能算。
6. 影响函数遇上大语言模型
6.1 动机:解释 LLM 的出人意料的行为
Bae 的报告(Grosse, Bae et al. 2023,Anthropic)从一个问题开始:怎样解释大语言模型出人意料的行为?他们的办法是检查模型的泛化模式:一个训练样本的存在怎样影响模型的行为?
两个”预告”的例子(slides 里有影响的训练序列是图片,这里只引用它们的总结):
- 一个关于”关机”的问题:最有影响的训练序列有一个共同的主题——在可能的告别、死亡或终止之前,“希望继续留下 / 活下去 / 运行下去”的愿望;
- 另一个查询:最有影响的训练序列包含讽刺英美政治的文字、假新闻、对公众人物和卡通人物的戏仿。
6.2 把影响函数扩展到 520 亿参数
对一个查询 找有影响的训练样本,分两步,两步都很难:
- 逆 Hessian–向量积(IHVP):Hessian 的维数是参数量的平方,显式计算不可能。用 LiSSA、EK-FAC(特征值修正的 Kronecker 分解近似曲率)等近似。用 EK-FAC,影响函数被扩展到了超过 520 亿参数的语言模型,精度和传统估计相近、求逆快得多。
- 和所有候选训练样本做点积:要算每个训练样本的梯度——对 LLM 的预训练来说,这至少和”训练一个 epoch”一样贵,而且每个查询都要重复一次。论文用 TF-IDF 先筛出候选、把多个查询合成一批来降低成本。
对 LLM,影响定义在”提示 之后生成补全 的对数似然”上:——只有补全的部分算数。直觉:什么样的训练序列会提高这个查询的对数似然?
6.3 发现
- 抽象程度随规模增加:数学、角色扮演、代码等查询上,有影响的序列在小模型上往往只是表面相似(共享关键词),在大模型上更抽象、更”在概念上相关”。
- 跨语言泛化:模型越大,用另一种语言写的相关序列的影响越大。
- 影响的分布:可以定位到层和 token;一个查询的影响分布在训练序列上是稀疏的(重尾)。
- 词序:一个惊人的局限——把关键短语的顺序颠倒,影响就衰减到几乎为零(“A 是 B”的训练序列对”B 是 A”的查询几乎没有影响)。论文只报告了这个模式;后来 Berglund et al.(2023)找到了更全面的证据,称之为反转诅咒(Reversal Curse)。他们的方法论:先在全训练集(超过 1000 万条序列)上扫描、发现现象,再用合成的”训练序列”做受控实验。
6.4 下一步
Bae 的展望:影响函数是我们分析 LLM 高层次”认知”现象的少数工具之一。开放的问题:训练集里关于 AI 的描述,是否构成了 AI 助手”自我概念”的核心部分?预训练和微调怎样相互作用?——微调的泛化模式主要由优化器的隐式偏置决定,而这种偏置来自预训练时学到的关联。
7. 应用与元梯度
7.1 应用预测式归因的公式
Engstrom 的第二部分:预测式归因能解决的远不止”理解模型”。给定一个任务:
- 把问题改写成模型输出的函数;
- 代入预测式归因的估计(然后求解)。
三个应用:
- 模型调试:模型为什么把这张图认成”船”?给每个训练样本一个”重要性”,检查最重要的样本,往往会冒出一个明显的假设(例如背景里都有水)。概念上的问题:怎样验证这些假设、怎样把洞察变成行动。
- 数据集选择:互联网上大部分数据”质量低”,该用什么训练?
原问题每评估一个 都要训练一个模型;代入归因之后,目标变得容易优化和评估。大问题:能否扩展、到底该优化什么。
- 数据投毒:攻击者修改一部分训练数据,让模型在目标任务上变差(例如一个政客上传让模型不喜欢对手的文字)。——通过训练过程很难优化,代入归因的估计、对 求最大(第 18 讲)。
其他应用:数据定价(训练数据值多少钱?)、机器遗忘(怎样”忘掉”一个数据点?)、检索增强(介于”数据选择”和”引用”之间)。
7.2 元梯度:对整个训练过程求导
Engstrom et al.(Optimizing ML Training with Metagradient Descent,2025)走得更远:与其用归因近似”训练集 → 输出”,不如直接对训练过程求导(学生报告的总结)。
形式化:把整个训练看成一个可微的映射 ,其中 是元参数——数据的权重、学习率调度、投毒的模式。外层目标是 ;内层是训练 。元梯度 要穿过整个训练过程反向传播。
两个障碍:
- 内存:反向模式要存下所有中间状态,内存 。REPLAY:递归的 叉检查点——只存稀疏的”锚点”状态,缺的状态从最近的锚点重新跑一小段前向得到。空间 ,时间 :内存从 降到 ,代价是适度的重新计算。 是调节旋钮: 大,内存多、重算少。
- 噪声:元参数的”地形”是锯齿状的、不光滑的,元梯度方差大、不稳定。元平滑(metasmoothing):把训练流程设计成”元光滑”的——用 GELU 代替 ReLU(去掉折点)、平均池化代替最大池化(去掉离散性)、BatchNorm 放在激活之前。
结果:
- 数据投毒:只改 CIFAR-10 的 2.5% 的样本,准确率从 92% 降到 78%(已有的方法通常只能降不到 1%)——摘要的说法是”把准确率的下降提高了一个数量级”;
- 数据选择(CLIP,DataComp-small 的设置):不过滤 0.13,之前最好的方法 EcoDatum 0.18,MGD 0.22——几乎把提升翻了一倍;
- 自动发现的学习率调度和标准的调度相当。
局限:计算开销(“对反向传播再做一次反向传播”,2–3 倍的计算;缺少优化好的算子;常用 float32 / tf32);平滑性是硬约束(标准的 ReLU、MaxPool 架构上效果不好);元过拟合——它会”无情地”优化指定的目标集,可能损害没有被指定的任务(论文的 DataComp 实验里 ImageNet 的分数下降了)。
7.3 在代码里(代码 03)
一个有噪声的数据池:400 个样本,60% 干净、20% 标签翻转、20% 来自决策边界相反的分布;200 个干净的验证样本;在 3000 个干净的测试样本上评估。模型是逻辑回归。
数据选择(保留 60%):
| 选择方法 | 测试准确率 | 保留的:干净 / 翻转 / 别的分布 |
|---|---|---|
| 全部 400 个 | 0.703 | 61% / 21% / 18% |
| 随机保留 240 个 | 0.696 | 61% / 23% / 16% |
| 按训练损失:去掉最高的 40% | 0.708 | 78% / 10% / 11% |
| 按影响函数:保留最帮助验证集的 | 0.789 | 83% / 10% / 8% |
| (神谕)只用干净的样本 | 0.808 | 100% / 0% / 0% |
按训练损失过滤几乎没有帮助(测试对数损失还从 0.609 恶化到 1.384——剩下的数据几乎线性可分,模型变得过于自信);按”对目标任务的影响”选,两类坏数据都被识别出来了。数据的”好坏”是相对于目标任务定义的(第 6 讲”质量是操作性的”)。
元梯度下降:把逻辑回归的 150 步梯度下降展开,对 400 个样本的权重求验证损失的梯度(伴随变量反向传播,只需要 Hessian–向量积)。60 次外层迭代后,测试准确率从 0.703 升到 0.808——和”只用干净数据”的神谕一样,而它不知道哪些样本是坏的。干净样本的平均权重升到 1.29,翻转的降到 0.60,别的分布的降到 0.49;权重最低的 80 个样本里 90% 是坏数据。
元过拟合:验证集只有 30 个样本时,验证损失被压到 0.179(200 个时 0.390),测试准确率却只有 0.737(200 个时 0.808)——400 个权重足够去拟合 30 个验证样本的偶然特点。练习 5 会看到它随验证集变大怎样消失。
8. 一个统一的视角(补充)
| 方法 | 回答什么 | 成本 | 准确性 |
|---|---|---|---|
| 留一法 | 去掉 、重新训练,输出怎样变 | 次训练 | 凸模型上精确;网络上被随机性淹没 |
| 影响函数 | 留一法的一阶近似 | 一次(近似的)Hessian 逆 + 每个样本一次梯度 | 凸模型上很好;网络上脆弱;可以扩展到 LLM(EK-FAC) |
| 数据 Shapley | 公平地分配功劳 | 指数级(蒙特卡洛:排列数 × 次训练) | 有公理保证,但太贵 |
| Datamodels | 随机子集 → 平均输出的线性代理 | 几千到几十万次训练 | 预测随机子集上的输出最准 |
| TRAK | datamodels 的便宜近似 | 几十到上百次训练 + 投影的梯度 | 接近 datamodels,可扩展 |
| 元梯度 | 对训练过程的精确导数 | 训练的 2–3 倍 + 内存技巧 | 能直接优化数据,但会元过拟合 |
一个贯穿的教训:深度学习的训练是随机的,归因必须定义在”平均”的意义上。datamodels 和 TRAK 的集成、元梯度的平滑,都是在处理这一点。另一个教训:归因的价值最终要用反事实来检验——真的去掉、真的重新训练(LDS、代码 02 演示 3)。
和本课其他部分的联系:第 6 讲 DCLM 用”小规模训练 + 下游评测”比较数据集;第 10 讲的混合方法比较数据领域的比例;本讲的方法比较单个样本。它们回答的是同一个问题——“什么数据带来什么行为”——在不同的粒度上。
9. 延伸与前沿 · Beyond the original lecture
本节是我补充的。
- 用归因选后训练数据:LESS(Xia et al. 2024)用投影后的梯度特征(和 TRAK 同一类)衡量每条指令数据和目标任务的相似度,用 5% 的数据训练,往往比用全部数据还好。数据选择是归因目前最实用的方向之一。
- 归因与版权、补偿:如果模型的输出能追溯到具体的训练文档,就可以讨论引用和补偿(Engstrom 的”数据问题”清单)。但佐证式的”相似”和预测式的”因果”是两回事,法律上需要哪一种仍不清楚(第 19 讲)。
- 归因与遗忘:评估”遗忘”是否成功,本质上是一个归因问题——遗忘后的模型和”从没见过这些数据”的模型一样吗?第 12 讲 token 级过滤的论文就用”对抗性微调需要多少数据才能恢复”来衡量。
- 规模的挑战:Engstrom 的观点是”我们到了吗?“——训练数据归因”还不广为人知、也不常被使用”;效果、计算效率、落地都还有很多改进的空间。
10. 小结 · Summary
- 数据归因把测试时的行为和训练数据联系起来。三类:佐证式(找证据)、博弈论式(分功劳,Shapley)、预测式(反事实:换一个训练集会怎样)。
- 影响函数:。凸模型上几乎就是留一法(相关 0.9996);组效应不可加;深度网络上脆弱——更根本地,网络上的留一法本身被训练的随机性淹没。
- 数据 Shapley:满足对称、线性、零效用、有效性的唯一分配;罚错误样本更重、不受冗余”掩护”;但非常贵。
- Datamodels:在随机子集上训练很多模型,用线性回归拟合”子集 → 输出”;能预测端到端训练的结果;可以识别脆弱的预测。
- TRAK:线性化 + 随机投影 + Gauss–Newton + 集成;100 个模型 ≈ 5 万个模型的 datamodels;用 LDS 评价。
- LLM 上的影响函数(EK-FAC,520 亿参数):泛化随规模更抽象、跨语言;影响稀疏;词序颠倒影响消失(反转诅咒)。
- 应用:把任务写成输出的函数、代入归因——数据选择、模型调试、投毒。元梯度直接对训练过程求导:REPLAY 解决内存、元平滑解决噪声;投毒更强、DataComp 0.13 → 0.22;会元过拟合。
11. 常见误区 · Common pitfalls
- “和测试样本最像的训练样本就是最有影响的。” 那是佐证式的相似,不是因果的影响;TRAK 追踪的是决策边界,不只是最近邻。
- “影响函数在深度网络上和在线性模型上一样准。” 非凸、提前停止、随机初始化都会破坏它的假设(代码 01 演示 2)。
- “留一法是金标准。” 在随机训练的网络上,留一法的效果比种子噪声还小,必须对随机性取平均(代码 01 演示 2)。
- “一组样本的影响 = 各个样本影响之和。” 组效应不可加,变化越大偏离越多(代码 01 演示 1)。
- “归因方法一定比简单的基线好。” 找标错的样本时,训练损失就是一个很强的基线(代码 01 演示 3)。
- “投影维数越大越准。” 投影也是正则化,太大时可能更差(代码 02 演示 2)。
- “在验证集上优化数据,测试集一定变好。” 验证集小时会元过拟合(代码 03 演示 3)。
12. 练习 · Exercises
练习 1(线性回归的精确留一法) 对普通最小二乘 ,设 (杠杆值),。(a) 用 Sherman–Morrison 公式证明:去掉样本 后,。(b) 影响函数给出的近似是什么?两者差在哪里?(c) 什么样的样本会让影响函数严重低估留一法的效果?
参考答案
(a) 去掉样本 :,。Sherman–Morrison:。代入、化简即得(中间用到 )。
(b) 影响函数(损失 ,Hessian ,去掉 ≈ )给出 ——少了分母 。
(c) 杠杆值 接近 1 的样本:在特征空间里很孤立、几乎”独自决定”了某个方向的参数。去掉它的真实效果被放大了 倍,影响函数(一阶近似)却看不到。这也解释了代码 01 演示 3 里”孤立的样本自影响大”。
练习 2(手算 Shapley) 三个数据点 A、B、C。效用:,,,,,。(a) 算每个点的 Shapley 值(对 6 个加入顺序取平均)。(b) 算每个点的留一法价值。(c) 解释两者的差别。
参考答案
(a) 列出 6 个顺序里 A 的边际贡献:ABC:0.5;ACB:0.5;BAC:0.1;BCA:0.1;CAB:0.5;CBA:0.1。平均 。B 对称,也是 0.3。C 的边际贡献在每个顺序里都是 0,Shapley 值 0。和 = 0.6 = 。
(b) 留一法:A:;B:0.1;C:。
(c) A 和 B 高度冗余(各自都能带来 0.5,合起来只有 0.6)。留一法只看”另一个还在”的情况,于是两者都只值 0.1——互相”掩护”;Shapley 考虑所有加入顺序,把 0.6 的总功劳在两者之间平分。C 在两种方法里都是 0(零效用公理)。
练习 3(成本的账) (a) Datamodels 的 CIFAR-10 实验训练了 50 万个模型。如果一个 ResNet-9 在一块 GPU 上训练需要 30 秒(FFCV),总共要多少 GPU 小时?(b) TRAK 用 100 个模型,节省了多少倍?(c) 对一个 LLM 的预训练集做影响函数分析,为什么”和所有训练样本做点积”至少和训练一个 epoch 一样贵?怎样降低这个成本?
参考答案
(a) 秒 秒 GPU 小时。
(b) 只看训练:5000 倍(TRAK 还要为每个训练样本算一次梯度并投影,但这比训练便宜)。
(c) 要对每个训练序列算一次梯度(一次前向 + 一次反向),这正是训练一个 epoch 的计算量;而且每个新的查询都要重复。Grosse et al. 的办法:用 TF-IDF 先筛出可能相关的候选序列,只对它们算梯度;把多个查询合成一批,一次扫描同时处理。另一个办法是像 TRAK 一样把训练样本的(投影后的)梯度算一次、存下来,之后每个查询只做低维的点积。
练习 4(REPLAY 的内存) 元梯度要穿过 步训练反向传播。(a) 朴素的做法要存多少个中间状态?(b) REPLAY 取 ,大约存多少个?重新计算的代价大约是训练的几倍?(c) 一个 70 亿参数的模型(bf16,每个状态约 14 GB),两种做法各要多少内存?
参考答案
(a) 个。
(b) 空间 个;时间 ,每一步大约被重算 次——约是训练本身的 20 倍(不同的 在内存和重算之间权衡)。
(c) 朴素: GB = 14 PB,不可能;REPLAY: GB ≈ 560 GB,可以放在几台机器的内存或硬盘里。(真实系统还要存优化器状态,这里只是数量级。)
练习 5(元过拟合怎样消失) 在代码 03 里把验证集的大小换成 30、60、100、200、400,运行元梯度下降。先预测测试准确率怎样变化。
参考答案(实际运行结果:导入代码 03、用不同的验证集调用 mgd,不改动文件)
| 验证集大小 | 最后的验证损失 | 测试准确率 |
|---|---|---|
| 30 | 0.179 | 0.737 |
| 60 | 0.153 | 0.755 |
| 100 | 0.276 | 0.811 |
| 200 | 0.390 | 0.808 |
| 400 | 0.348 | 0.817 |
验证集小于 100 时,验证损失被压得很低、测试准确率明显更差——典型的过拟合;100 个以上就稳定在神谕(0.808)附近。经验法则:被优化的”元参数”越多(这里 400 个权重),需要的验证数据越多。实际做法:把验证集分成”优化用”和”检查用”两部分,用后者早停。
练习 6(讨论:版权诉讼里用哪种归因) 一个图像生成模型生成了一张和某位画家的作品很像的图。原告想证明”模型是因为在这位画家的作品上训练过,才生成了这张图”。(a) 佐证式归因(在训练集里找最相似的图)能证明这一点吗?(b) 预测式归因能回答什么问题?它的结论可靠吗?(c) 你会怎样设计一个更有说服力的实验?
参考答案(要点)
(a) 不能。找到一张很像的训练图,只说明”有证据”,不说明”因为”:模型可能从很多其他作品里学到了同样的风格,没有这张图也会生成类似的结果。(但如果生成的图和某张训练图几乎逐像素一样——记忆——佐证式的证据就很强,第 18 讲。)
(b) 预测式归因估计”去掉这位画家的作品后,生成这张图的概率会降低多少”。它直接回答因果问题,但在大模型上只是近似(TRAK、影响函数都有误差),而且组效应不可加——去掉一位画家的全部作品不等于逐张去掉的效果之和。
(c) 最直接的反事实实验:在去掉这位画家全部作品的数据上重新训练(或微调)一个模型,比较两者生成类似图片的概率。成本高,但对小模型可以做;也可以用 datamodels 式的实验,在很多随机子集上训练小模型,估计”包含这位画家的作品”对输出的平均效应。
13. 延伸阅读 · Further reading
原课阅读与讲座
- Koh & Liang, Understanding Black-box Predictions via Influence Functions(ICML 2017):arXiv:1703.04730。
- Ilyas et al., Datamodels: Predicting Predictions from Training Data(ICML 2022):arXiv:2202.00622。
- Park et al., TRAK: Attributing Model Behavior at Scale(ICML 2023):arXiv:2303.14186。
- Grosse et al., Studying Large Language Model Generalization with Influence Functions(2023):arXiv:2308.03296。
- Engstrom et al., Optimizing ML Training with Metagradient Descent(2025):arXiv:2503.13751。
- Ilyas & Engstrom 等,ICML 2024 教程 Data Attribution at Scale:ml-data-tutorial.org。
slides 里引用的工作
- Hampel, The Influence Curve and its Role in Robust Estimation(1974)。
- Ghorbani & Zou, Data Shapley: Equitable Valuation of Data for Machine Learning(2019);Jia et al., Towards Efficient Data Valuation Based on the Shapley Value(2019)。
- Basu, Pope & Feizi, Influence Functions in Deep Learning Are Fragile(2021)。
- Worledge et al., Unifying Corroborative and Contributive Attributions in Large Language Models(2023)。
- Berglund et al., The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A”(2023)。
本讲补充
- Xia et al., LESS: Selecting Influential Data for Targeted Instruction Tuning(2024)。
和本目录其他课程的联系
- CS329T 第 4 讲(训练数据归因):从可解释性的角度讲同样的方法。
- CS329T 第 2 讲(解释与 Shapley 值):Shapley 值在特征归因里的用法。
14. 下一讲预告 · Next lecture
本讲最后一个演示是一个警告:在验证集上优化得太狠,验证集就不再能代表真正的表现。这其实是一个更大的问题的缩影——评测数据本身也是数据:它怎样构建、会不会泄漏进训练集、标签有多准、多少个样本才够区分两个模型?
第 14 讲:评测数据。 一个好的评测集需要什么(有效性、难度、标签质量、规模与置信区间);测试集污染怎样发生、怎样检测;动态和私有的评测;标签噪声怎样影响排名;评测集同样需要过滤、去重和文档。代码会用 n-gram 重叠检测污染、量化污染对分数的抬高,并计算置信区间和排名的稳定性。