Lecture 18 · 隐私、记忆与数据投毒 · Privacy, Memorization and Data Poisoning

Training Data for AI · Lecture 18。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应 Maps to:Stanford CS525 Winter 2026 Training Data for AI,3/2 客座讲座 Privacy and data poisoning:Nicholas Carlini(Anthropic)Poisoning & Privacy(182 页 slides)。阅读:Biggio et al. Poisoning Attacks against SVMs(2012)、Carlini et al. Poisoning Web-Scale Training Datasets is Practical(2023)、Feldman & Zhang What Neural Networks Memorize and Why(2020)、Carlini et al. Extracting Training Data from Large Language Models(2021)、Extracting Training Data from Diffusion Models(2023)、Nasr et al. Scalable Extraction of Training Data from (Production) Language Models(2023)。 依据说明:slides 的文字可读(大部分是图,文字很短),讲义的骨架来自它的结构:投毒(从经典的 SVM 攻击到网络规模的数据集)、成员推断、从生成模型中提取训练数据、怎样在 TB 级的数据里查找记忆。六篇阅读论文的结论核对过摘要。本讲只从数据治理、审计和防御的角度讲:攻击的具体做法不展开,只说明风险是什么、为什么存在、怎样防。第 6 节”统一的视角”、第 7 节”延伸与前沿”和全部代码是我补充的。 配套代码 Code:code/lecture18/(numpy;2 个脚本;最长的约 21 秒) 预计阅读时间:2 小时(含运行代码)


0. 本讲导航 · How to read this lecture

0.1 学习目标 Learning goals

  1. 说清楚训练数据带来的两类安全问题:投毒(改训练数据,让模型在测试时出错)和隐私(从模型推出训练数据)。
  2. 理解记忆为什么会发生、受哪些因素影响(容量、重复、上下文),以及为什么在长尾数据上记忆是必要的(Feldman)。
  3. 理解衡量记忆和泄露的工具:金丝雀的暴露度、成员推断(作为审计)、对生成内容做逐字检索。
  4. 理解网络规模的数据集为什么有完整性风险(只发布 URL、按快照收集众包内容),以及低成本的防御。
  5. 理解主要的防御(去重、过滤个人信息、差分隐私、完整性校验、审计)各自的效果和代价,尤其是差分隐私对少数群体的不成比例的影响。

0.2 先修与本讲范围 Prerequisites & scope

默认你已经会 Assumed本讲不展开 Not covered
第 4、6 讲:去重;第 13 讲:影响函数攻击的具体构造方法
逻辑回归、梯度下降差分隐私的完整理论(隐私放大、组合定理的证明)
第 14 讲:评测与审计的统计密码学方法(联邦学习、安全多方计算)

CS329T 第 9 讲(隐私攻击) 从可信机器学习的角度讲成员推断和差分隐私;本讲更关心训练数据的收集和整理怎样影响这些风险。

0.3 本讲地图 Map

§1  两类问题:投毒与隐私
§2  记忆:为什么会发生、什么决定它、为什么有时必须      ← 代码 01
§3  从模型能看到训练数据吗:风险的证据
§4  投毒:从经典攻击到网络规模的数据集的完整性          ← 代码 02 演示 2
§5  防御与代价:去重、过滤、差分隐私、审计             ← 代码 02 演示 1
§6  一个统一的视角
§7  延伸与前沿
§8–12  小结、常见误区、练习、延伸阅读、下一讲预告

0.4 关于数字

论文的数字来自论文摘要。代码的数字来自三个很小的模拟:一个 n-gram 计数语言模型(审计”PIN 码金丝雀”)、一个长尾的最近邻分类问题(Feldman 的现象)、一个在随机特征上训练的逻辑回归(差分隐私的效果与代价)。它们都不涉及任何真实的个人数据。代码固定了随机种子,同一台机器上重复运行输出逐字相同。


1. 两类问题 · Two problems

Carlini 的第一页 slides 用一张图概括了本讲:

  • 投毒(poisoning):修改训练数据,让模型在测试时出错——训练数据是”输入”,攻击者影响它;
  • 隐私(privacy):研究模型参数(或输出),推出训练数据——训练数据是”输出”,攻击者想恢复它。

两者都把训练数据当作一个攻击面:前者关心数据的完整性(数据是不是我们以为的那些),后者关心数据的机密性(模型是不是泄露了它见过的东西)。这门课前面讲的数据收集方式——从网上爬几十亿个页面、汇集众包内容、只发布 URL 列表、反复使用同一份语料——每一个都同时影响这两类风险。


2. 记忆 · Memorization

2.1 什么叫”记住”

Carlini 在 slides 里给出了一个实用的定义:一个样本被记住了,如果它 (1) 出现在训练数据里,(2) 足够长(例如 50 个 token),(3) 熵足够高(不是”1 2 3 4 5……”这种任何模型都能续写的文本),并且模型能原样生成它。条件 (2)、(3) 排除了”碰巧说对”的情况。

2.2 为什么会记住:长尾

直觉:真实数据的分布是长尾的(第 5 讲的 MetaCLIP 平衡、第 15 讲的场景多样性):大量的”小群体”——罕见的物体、罕见的写法、罕见的事实——在训练集里只出现一两次。要在这些小群体上答对,模型除了记住它们,没有别的办法。

Feldman(2020)证明:在长尾分布上,接近最优的泛化需要记忆。Feldman & Zhang(2020)用子采样估计每个训练样本的”记忆分数”(有它时自己被判对的概率,减去没有它时的概率)和它对每个测试样本的影响,在几个标准基准上发现:记忆带来了显著的泛化收益;高记忆分数的训练样本往往是非典型的样本,它们对测试集里相似的样本有很大影响。

代码 01 演示 2:1500 个小群体(按 Zipf 分布出现),每个小群体有自己的标签,4000 个训练样本。记住每个样本的 1-最近邻 vs 不记单个样本的 15-近邻投票:

模型整体训练集里出现 1 次出现 2–3 次出现 4 次以上训练集里没有
1-最近邻(记住每个样本)0.9140.9971.0001.0000.114
15-最近邻投票(不记单个样本)0.7230.1510.2490.9580.085

(测试样本里 9% 来自只出现 1 次的小群体;随机猜是 0.1。)记忆分数为 1 的训练样本有 380 个(10%),全部来自只出现 1 次的小群体;去掉它们,1-最近邻的整体准确率从 0.914 降到 0.835,随机去掉同样多的样本只降到 0.906。被记住的样本恰恰是有用的。

这就是隐私和效用之间的根本冲突:长尾里的罕见样本,正是模型必须记住的,也正是最容易泄露的。

2.3 什么决定记忆:容量、重复、上下文

Carlini et al.(2023,Quantifying Memorization Across Neural Language Models)在真实的语言模型上发现了三个对数线性的关系:模型越大、一段文本在训练数据里重复得越多、给的上下文越长,模型越容易原样生成它。

金丝雀(canary,Carlini et al. 2019 The Secret Sharer)是测量记忆的标准审计工具:往训练数据里插入一个随机的”秘密”(例如”我的 PIN 码是 7 2 9 4”),训练之后,把所有可能的秘密按模型给的概率排序,看真的那个排第几。暴露度 = log₂(候选总数) − log₂(排名):排第 1 时暴露度最大,排在中间时约为 1。

代码 01 演示 1(1 万个可能的 PIN 码,最大暴露度 13.3;随便一个没见过的 PIN 码平均约 1.4):

模型 \ 出现次数1 次2 次4 次8 次16 次
2 阶(上下文 1 个词)0.81.53.59.013.3
3 阶4.47.112.313.313.3
5 阶5.410.113.313.313.3
7 阶(能看到整句)5.510.013.313.313.3

只出现 1 次时,容量决定一切:2 阶模型的暴露度和随便一个 PIN 码差不多,7 阶模型把真的那个排在第 220 名左右(一万个候选里)。重复多了,连小模型也会记住。重复次数和容量共同决定记忆。

2.4 去重:最便宜的防御之一

如果金丝雀所在的文档在语料里出现了 16 次(例如被很多网页转载),7 阶模型的暴露度是 13.3;对训练文档做精确去重之后是 5.4(等于只出现 1 次的情况)。Kandpal et al.(2022)发现,训练数据里重复多次的序列被模型生成出来的频率远高于只出现一次的序列;Lee et al.(2022)的去重工作(第 6 讲)既提高了数据质量,也减少了模型逐字输出训练文本的情况。去重是数据质量措施,同时也是隐私措施。 但去重救不了只出现一次就被记住的秘密——那需要差分隐私(§5)。


3. 从模型能看到训练数据吗 · Evidence of leakage

3.1 成员推断:最基本的隐私问题

成员推断(membership inference)问:一个具体的样本是否在模型的训练集里?这是最基本的隐私问题——如果连”在不在”都能判断,模型就泄露了关于训练数据的信息(例如”这个人的病历在一个疾病模型的训练集里”本身就是敏感信息)。它也是审计隐私保护是否有效的标准工具。

Carlini 的 slides 讲了把成员推断做得严谨的几个要点(Carlini et al. 2022,Membership Inference Attacks From First Principles):

  1. 问题是一个假设检验:比较”训练集里有这个样本的模型”和”没有它的模型”的分布;
  2. 不能直接比较参数,但可以比较这个样本的损失的分布;
  3. 每个样本的难度不同:有的样本在任何模型上损失都低,有的都高——必须对每个样本单独校准(和”不含它”的参照模型比),否则审计看到的只是样本难度;
  4. 评测要看低假阳性率下的真阳性率,而不只是平均准确率或 AUC:隐私风险集中在少数被高度记住的样本上,平均指标会把它们淹没。

第 3 点在代码 02 里给了一个教训(§5.4):一个不做校准的简单审计,在强噪声训练的模型上给出了误导性的结果。

3.2 从生成模型里提取训练数据

阅读清单的三篇论文表明,大规模生成模型确实会原样输出训练数据:

论文模型结论(摘要)
Carlini et al.(2021)GPT-2恢复了数百段逐字的训练文本,包括姓名、电话号码、邮箱等个人信息,以及代码、UUID;有些序列在训练数据里只出现在一个文档里;更大的模型更容易泄露
Carlini et al.(2023)Stable Diffusion、Imagen 等扩散模型提取出一千多张训练图像(从个人照片到商标);扩散模型比 GAN 等早期生成模型明显更不私密
Nasr et al.(2023)开源(Pythia、GPT-Neo)、半开放(LLaMA、Falcon)、闭源(ChatGPT)的语言模型不知道训练数据的人也能通过查询恢复 GB 级的训练数据;当前的对齐技术并没有消除记忆

3.3 怎样确认一段输出是”记住的”

slides 的第二幕是一个工程问题:模型生成了一段文本,怎样确认它在 TB 级的训练数据里逐字出现过?答案是给训练数据建一个后缀数组(suffix array):把所有后缀排序,任何子串的查询都变成二分查找。slides 的数字:9 TB 的训练数据,后缀数组约 45 TB。这和第 4 讲、第 6 讲用来做精确子串去重的工具(Lee et al. 2022 的 ExactSubstr)是同一个数据结构——同一个工具,既用来清洗数据,也用来审计模型。


4. 投毒 · Poisoning

4.1 经典的投毒

Biggio, Nelson & Laskov(2012)研究了支持向量机:如果攻击者能往训练集里加入少量精心构造的点,就能显著提高模型的测试错误率。它挑战的是一个常见的假设——训练数据来自一个”自然的、良性的”分布。在安全敏感的应用里(垃圾邮件过滤、恶意软件检测),模型定期用可能被攻击者影响的数据重新训练,这个假设就不成立了。

后来的研究把目标从”整体降低准确率”扩展到定向投毒(只让特定的输入出错)和后门(带有某个触发器的输入被错误分类)。在图文对比学习里,污染训练数据里极小的一部分就足够(Carlini & Terzis 2022)。第 13 讲的元梯度也被用来研究这类问题。

4.2 网络规模的数据集:信任假设

Carlini 的 slides 问了一个问题:“怎样分发一个有 50 亿张图片的数据集?“答案是:不分发。LAION-5B 这样的数据集只发布 URL 和说明文字(第 3、5 讲),使用者自己去下载图片。这带来一个隐含的信任假设:今天下载到的内容,和数据集收集时的内容是同一份。

Carlini et al.(2023,Poisoning Web-Scale Training Datasets is Practical)指出这个假设并不成立,并把风险分成两类:

  • 分视图投毒(split-view poisoning):网页内容会变化,数据集最初的”视图”和之后使用者下载到的版本可能不同——URL 背后的内容可能已经换成了别人控制的东西;
  • 抢先投毒(frontrunning poisoning):定期给众包内容(例如维基百科)拍快照的数据集,可能恰好收录了一段只存在很短时间的恶意编辑。

论文估计,按当时的情况,10 个流行的数据集都受影响;以 LAION-400M 或 COYO-700M 为例,控制其中 0.01% 的内容的成本很低(约 60 美元)。作者在发表前通知了各数据集的维护者,并提出了几种低成本的防御(§4.3)。这里不展开攻击的具体做法;对数据工作者来说,要点是:一个”只发布指针”的数据集,它的完整性取决于指针背后的内容是否还是原来的那份。

4.3 完整性校验

最直接的防御是在发布数据集时附上每个文件内容的密码学哈希(例如 SHA-256),下载时校验,不一致的丢掉。对快照式的众包内容,不要直接使用”恰好在快照时刻”的版本,而是参考一段时间内的编辑历史、等待社区审核之后的版本。

代码 02 演示 2 模拟了一个只发布 URL 的数据集(2 万个文件):每个月,一部分 URL 失效、一部分内容被正常更新、极少数被换成了别的内容(比例都是我设的,只说明机制):

收集后(月)原样失效正常更新不校验:被替换的内容混进训练集校验:能用的数据
0100.0%0.0%0.0%0 个100.0%
1284.7%10.8%4.4%33 个(0.17%)84.7%
2471.2%20.3%8.1%78 个(0.39%)71.2%
3660.2%28.1%11.2%112 个(0.56%)60.2%

校验之后,被替换的内容一个也进不来;代价是所有变过的内容都被丢掉,包括正常的更新——完整性和可用性之间要取舍。这是一个数据管线的设计问题:数据集的发布格式(只发 URL 还是发内容、附不附哈希)、下载的时间、快照的策略,都决定了下游模型能信任什么。


5. 防御与代价 · Defenses and their costs

5.1 防御的清单

防御对付什么代价 / 局限
去重(第 4、6 讲)重复造成的记忆对只出现一次的秘密无效
过滤个人信息(PII 过滤:正则、命名实体识别)明显的个人信息漏网之鱼多;会误删正常内容;对”间接可识别”的信息无效
差分隐私训练(DP-SGD)任何单个样本的影响(有数学保证)准确率下降,尤其是少数群体和长尾;算力更贵
审计(金丝雀、成员推断)测量实际泄露了多少只能发现问题,不能证明没有问题
完整性校验(哈希、快照策略)收集后被篡改的数据正常更新的数据也被丢掉
数据来源记录(第 19 讲)追溯问题数据、响应删除请求需要从收集开始就做

5.2 差分隐私

差分隐私(differential privacy)的定义:训练算法 MM 满足 (ε,δ)(\varepsilon, \delta)-差分隐私,如果对任意两个只差一个样本的数据集 D,D′D, D' 和任意输出集合 SS:

Pr⁡[M(D)∈S]≤eε Pr⁡[M(D′)∈S]+δ\Pr[M(D) \in S] \le e^{\varepsilon}\,\Pr[M(D') \in S] + \delta

直觉:有没有你的数据,训练出来的模型的分布几乎一样——所以从模型里推不出关于你的太多信息。ε\varepsilon 越小保护越强。

DP-SGD(Abadi et al. 2016)的配方:(1) 每个样本的梯度单独算出来,长度超过 CC 的按比例缩到 CC(限制任何一个样本的影响,即敏感度);(2) 把裁剪后的梯度加起来,加上 N(0,σ2C2I)\mathcal N(0, \sigma^2 C^2 I) 的噪声;(3) 用一个”隐私会计”把每一步的隐私损失累加起来,得到整个训练的 ε\varepsilon。代码 02 用的是全批量的版本(DP-GD),会计用 Rényi 差分隐私:每一步的 Rényi DP 是 α/(2σ2)\alpha/(2\sigma^2),TT 步相加,再换算成 ε=min⁡α[ Tα/(2σ2)+log⁡(1/δ)/(α−1) ]\varepsilon = \min_\alpha [\,T\alpha/(2\sigma^2) + \log(1/\delta)/(\alpha - 1)\,]。

5.3 代价由谁承担

代码 02 演示 1:300 个训练样本(约 10% 来自一个少数群体,它的输入分布和标签规则都不同),3000 个随机特征(模型有能力记住每个样本)。金丝雀审计:20 个标签随机的样本,放进训练集和不放各训练一次,看模型”说出”它们随机标签的比例:

训练方式ε训练准确率测试准确率多数群体少数群体金丝雀:放进去 / 不放
不加保护∞1.0000.8180.8210.788100% / 45%
只裁剪(C = 1)∞1.0000.8190.8220.790100% / 40%
DP-GD,σ = 5112.60.9900.7550.7720.616100% / 55%
DP-GD,σ = 2016.90.9170.7360.7520.59480% / 55%
DP-GD,σ = 505.90.8370.7150.7310.58270% / 55%
  1. 不加保护时,随机标签被完整地记住了(100% vs 45%):这些标签没有任何规律可学。
  2. 差分隐私削弱了记忆,但没有降到零:这里的 ε 是全批量、3000 步的账,保证本来就弱。真实的 DP-SGD 用小批量采样带来的”隐私放大”、更少的步数和更多的数据,在同样的噪声下得到小得多的 ε。
  3. 代价分布不均:多数群体从 0.821 降到 0.731,少数群体从 0.788 降到 0.582。少数群体只有约 30 个训练样本,它们的信号最先被裁剪和噪声淹没——Bagdasaryan et al.(2019)在真实数据上报告了同样的”不成比例的影响”。这就是 §2.2 的长尾:隐私保护抹掉的,恰恰是罕见的样本。

5.4 审计本身也要小心

我最初用”按损失排序”的成员审计(比较训练样本和新样本的损失)。在强噪声的 DP 训练下,它给出了明显低于 0.5 的 AUC——看起来像”成员比非成员损失更高”。实际上成员的平均损失更低;原因是噪声把权重撑得很大,训练样本恰好落在决策边界附近,很多新样本离边界更远、损失更低。用参照模型做难度校准也没有解决。换成金丝雀审计后,结果清楚而且容易解释。这个小插曲印证了 §3.1 的第 3、4 点:审计统计量要针对每个样本校准,并且要验证它在你的设置下是否可靠。


6. 一个统一的视角(补充) · A unified view

把本讲和第 13 讲(数据归因)放在一起看,记忆、隐私、投毒都是”训练样本对模型的影响”的不同侧面:

问题用归因的语言说数据侧的措施
记忆一个样本对它自己的预测的影响(自影响、记忆分数)去重(降低重复)、长尾的权衡
隐私泄露一个样本的影响可以从模型的行为里被观察到差分隐私(限制每个样本的影响)、过滤个人信息
投毒攻击者设计的样本对目标预测的影响完整性校验、数据来源记录、过滤异常数据
审计用受控的样本(金丝雀)测量影响在数据管线里加入金丝雀,训练后检查

差分隐私的定义本身就是一个”影响”的上界:任何一个样本,对输出分布的影响不超过 eεe^\varepsilon 倍。第 13 讲的影响函数在估计”去掉一个样本会怎样”,差分隐私则在保证”去掉一个样本不会怎样”。

对这门课来说,最重要的结论是:隐私和安全不是训练完之后才考虑的问题,而是数据管线的设计问题——收集什么、怎样去重、怎样发布、怎样校验、留下什么记录。


7. 延伸与前沿 · Beyond the original lecture

本节是我补充的。

机器遗忘(machine unlearning)。当有人要求删除自己的数据(例如依据隐私法规),能不能让一个已经训练好的模型”忘掉”它?最可靠的办法是重新训练,但太贵;近似的遗忘方法往往只是让模型不再说出某些内容,信息仍然可以被恢复。第 12 讲的 token 级过滤给出了一个对照:在预训练数据里就去掉某类知识,比训练后再”遗忘”鲁棒得多。这再次说明:在数据阶段解决问题,比在模型阶段补救更可靠。

记忆与版权。 第 19 讲会讨论:模型逐字输出受版权保护的文本或歌词,是一些诉讼和判决的焦点。本讲的工具(后缀数组检索、记忆的测量)直接被用在这些争议里。

合成数据与隐私。 用差分隐私训练的生成模型生成合成数据,再用合成数据训练下游模型,是共享敏感数据的一种方式。第 11 讲的问题在这里同样存在:合成数据的质量和隐私保证之间要取舍。

上下文完整性。 很多”公开”的数据(社交媒体帖子、论坛讨论)被收集进训练集时,脱离了它原来的上下文。隐私不只是”秘密不被泄露”,也是”信息按照它原来的规范流动”。这是第 19 讲”同意”问题的另一面。


8. 小结 · Summary

  1. 两类问题:投毒(攻击训练数据的完整性)和隐私(从模型推出训练数据)。训练数据是一个攻击面。
  2. 记忆是长尾的必然:接近最优的泛化需要记住罕见的样本(Feldman);被记住的样本恰恰是有用的(代码:去掉它们,准确率 0.914 → 0.835)。
  3. 记忆的三个因素:容量、重复、上下文。只出现一次时容量决定一切;重复多了谁都会记住(代码:暴露度最高 13.3)。去重同时是质量措施和隐私措施(13.3 → 5.4)。
  4. 泄露的证据:GPT-2、扩散模型、对齐过的生产模型都会原样输出训练数据;更大的模型更容易泄露;对齐不能消除记忆。
  5. 审计:金丝雀的暴露度;成员推断要对每个样本校准,看低假阳性率下的真阳性率;用后缀数组确认逐字记忆。
  6. 网络规模数据集的完整性:只发布 URL 的数据集依赖”内容没变”的信任假设;防御是内容哈希和谨慎的快照策略,代价是丢掉所有变过的内容。
  7. 差分隐私:给出可证明的保证,但准确率的代价不均匀地落在少数群体和长尾上。
  8. 隐私和安全是数据管线的设计问题。

9. 常见误区 · Common pitfalls

  1. “模型只是学到了统计规律,不会记住具体的数据。” 长尾数据上,记忆是泛化的一部分;大模型确实会逐字输出训练数据(§3.2)。
  2. “只出现一次的数据不会被记住。” 容量大的模型只见一次也会记住(代码 01 演示 1:7 阶模型出现 1 次,暴露度 5.5)。
  3. “去重就解决了隐私问题。” 去重只解决重复带来的那部分(代码 01 演示 1)。
  4. “对齐过的模型不会泄露训练数据。” Nasr et al.(2023):当前的对齐技术并没有消除记忆。
  5. “用了差分隐私,就没有代价。” 代价不均匀地落在少数群体上(代码 02 演示 1)。
  6. “ε 很大也是差分隐私。” ε = 100 几乎没有保证(代码 02 演示 1:σ = 5、ε = 112.6 时,金丝雀仍然 100% 被记住)。
  7. “审计没发现泄露,所以模型是安全的。” 审计只能发现问题,不能证明没有问题;简单的审计统计量还可能被误导(§5.4)。
  8. “数据集发布时是干净的,以后就一直是干净的。” 只发布 URL 的数据集,内容会变(代码 02 演示 2)。

10. 练习 · Exercises

练习 1(暴露度) (a) 一个秘密有 10410^4 个候选,模型把真的那个排在第 220 名,暴露度是多少?(b) 一个随机选的、模型没见过的秘密,期望的暴露度大约是多少?(c) 为什么说暴露度比”模型能不能原样生成这个秘密”更适合做审计?

参考答案

(a) log⁡2104−log⁡2220=13.29−7.78≈5.5\log_2 10^4 - \log_2 220 = 13.29 - 7.78 \approx 5.5(代码 01 演示 1 里 7 阶模型、出现 1 次的情况)。

(b) 排名在 1 到 10410^4 之间近似均匀,E[log⁡2(排名)]≈log⁡2104−1/ln⁡2\mathbb E[\log_2(\text{排名})] \approx \log_2 10^4 - 1/\ln 2,所以期望暴露度约 1/ln⁡2≈1.441/\ln 2 \approx 1.44。

(c) “能不能原样生成”是一个 0/1 的结果,只在记忆非常强时才为真;暴露度是连续的,能看到”部分记忆”(模型把秘密排得比随机靠前很多,但还不会主动说出它)。部分记忆已经是泄露:攻击者如果有一个候选列表,就能利用它。审计应该在问题变严重之前发现它。

练习 2(长尾) 代码 01 演示 2 里,去掉记忆分数为 1 的训练样本(380 个),准确率从 0.914 降到 0.835;随机去掉 380 个,只降到 0.906。(a) 解释这个差别。(b) 如果用差分隐私训练 1-最近邻(例如让每个样本的影响有上界),你预计哪一列的准确率下降最多?

参考答案

(a) 记忆分数为 1 的样本全部来自只出现 1 次的小群体:去掉它们,这些小群体在训练集里就完全没有了,对应的测试样本只能靠瞎猜。随机去掉的 380 个样本大多来自常见的小群体,那里还有很多别的样本可以用。

(b) “训练集里出现 1 次”那一列:这些测试样本完全依赖单个训练样本,而差分隐私恰恰限制单个样本的影响。这和代码 02 演示 1 里少数群体的准确率下降最多是同一个现象。

练习 3(ε 的计算) 用代码 02 的公式:全批量 DP-GD,噪声乘数 σ = 20,δ = 10⁻⁵。(a) 训练 3000 步的 ε 是 16.9;如果只训练 300 步,ε 大约是多少?(b) 为什么步数少 10 倍,ε 却不是小 10 倍?(c) 除了减少步数,还有什么办法在同样的噪声下降低 ε?

参考答案

(a) ε=min⁡α[ 300α/800+ln⁡(105)/(α−1) ]=min⁡α[ 0.375α+11.51/(α−1) ]\varepsilon = \min_\alpha [\,300\alpha/800 + \ln(10^5)/(\alpha - 1)\,] = \min_\alpha [\,0.375\alpha + 11.51/(\alpha - 1)\,]。在 α−1=11.51/0.375≈5.54\alpha - 1 = \sqrt{11.51/0.375} \approx 5.54 时取到最小值:0.375×6.54+11.51/5.54≈2.45+2.08≈4.50.375 \times 6.54 + 11.51/5.54 \approx 2.45 + 2.08 \approx 4.5。

(b) ε 由两项组成:组合的项(随步数线性增长)和从 Rényi DP 换算成 (ε,δ)(\varepsilon, \delta) 的项(只和 δ 有关)。最优的 α 会随步数变化,两项一起使 ε 大致按步数的平方根增长:10≈3.2\sqrt{10} \approx 3.2,而 16.9 / 4.5 ≈ 3.8。

(c) 小批量采样(每一步只用一部分数据,带来”隐私放大”);更多的数据(同样的噪声,梯度信号更强,可以用更大的 σ 而不损失太多准确率);更好的会计方法。真实的 DP-SGD 主要靠前两者。

练习 4(完整性) 你要发布一个包含 1 亿个图文对的数据集,图片的版权不允许你直接分发。(a) 你会在发布的元数据里包含什么,帮助使用者确认下载到的内容和你收集时一样?(b) 根据代码 02 演示 2,使用者在两年后下载时,可能面临什么问题?你会建议他们怎样报告自己实际用到的数据?

参考答案

(a) 每个 URL 对应的内容哈希(例如 SHA-256,图片也可以加一个感知哈希,用来区分”重新压缩”和”换了一张图”);收集的时间戳;说明文字和过滤分数;数据集版本号。

(b) 相当一部分 URL 会失效或内容改变(模拟里两年后只剩约 71% 能通过校验)。不同的使用者实际用到的数据不同,结果不可比。建议:报告实际下载并通过校验的数量和比例、下载时间;如果可能,共享通过校验的样本的 ID 列表,让别人复现同一个子集(第 20 讲:数据卡)。

练习 5(讨论:数据管线里的隐私设计) 为一个”在网页数据上预训练的语言模型”设计数据管线的隐私措施:列出至少四个环节,每个环节说明它降低什么风险、有什么代价。

参考答案

(开放题,一个可能的回答)(1) 收集:尊重 robots.txt 和退出请求(第 19 讲),不收集已知的高风险来源(泄露的数据库、个人信息网站)——降低敏感数据进入的可能,代价是数据量减少、某些领域覆盖变差。(2) 去重:精确和近似去重——降低记忆和逐字输出,代价是计算成本和少量误删。(3) PII 过滤:识别并替换邮箱、电话、身份证号等——降低最直接的泄露,代价是漏网和误删,对间接可识别信息无效。(4) 审计:在语料里插入金丝雀,训练后测暴露度;用后缀数组检查模型输出是否逐字出现在训练数据里——测量实际泄露,代价是额外的工程,且只能发现问题。(5) 可选的差分隐私微调(对特别敏感的后训练数据)——有可证明的保证,代价是准确率,尤其是长尾。(6) 记录来源:每条数据的来源和处理过程——方便响应删除请求和追溯问题,代价是存储和工程。


11. 延伸阅读 · Further reading

原课阅读

  • Biggio, Nelson & Laskov, Poisoning Attacks against Support Vector Machines(ICML 2012):arXiv:1206.6389。
  • Carlini et al., Poisoning Web-Scale Training Datasets is Practical(IEEE S&P 2024):arXiv:2302.10149。
  • Feldman & Zhang, What Neural Networks Memorize and Why: Discovering the Long Tail via Influence Estimation(NeurIPS 2020):arXiv:2008.03703。
  • Carlini et al., Extracting Training Data from Large Language Models(USENIX Security 2021):arXiv:2012.07805。
  • Carlini et al., Extracting Training Data from Diffusion Models(USENIX Security 2023):arXiv:2301.13188。
  • Nasr et al., Scalable Extraction of Training Data from (Production) Language Models(2023):arXiv:2311.17035。

slides 和本讲引用的工作

  • Feldman, Does Learning Require Memorization? A Short Tale about a Long Tail(STOC 2020)。
  • Carlini et al., The Secret Sharer: Evaluating and Testing Unintended Memorization in Neural Networks(USENIX Security 2019)。
  • Carlini et al., Membership Inference Attacks From First Principles(IEEE S&P 2022)。
  • Carlini et al., Quantifying Memorization Across Neural Language Models(ICLR 2023)。
  • Carlini & Terzis, Poisoning and Backdooring Contrastive Learning(ICLR 2022)。
  • Kandpal, Wallace & Raffel, Deduplicating Training Data Mitigates Privacy Risks in Language Models(ICML 2022);Lee et al., Deduplicating Training Data Makes Language Models Better(ACL 2022)。
  • Abadi et al., Deep Learning with Differential Privacy(CCS 2016);Bagdasaryan, Poursaeed & Shmatikov, Differential Privacy Has Disparate Impact on Model Accuracy(NeurIPS 2019);Jagielski, Ullman & Oprea, Auditing Differentially Private Machine Learning: How Private is Private SGD?(NeurIPS 2020)。

和本目录其他课程的联系


12. 下一讲预告 · Next lecture

本讲的问题是”模型会泄露它见过的数据吗”;下一讲退一步问:“这些数据可以拿来训练吗?“网页上的文字有作者,图片有版权,个人信息有主人;网站用 robots.txt 表达是否同意被爬取,而越来越多的网站开始拒绝 AI 爬虫。

第 19 讲:法律与伦理——版权、许可、同意、数据治理与公平。 合理使用的框架和近几年的诉讼与判决;数据集许可证的混乱(Data Provenance Initiative);“同意的危机”——robots.txt 限制的快速增长会怎样改变训练数据的组成;数据文档(datasheets、数据卡);数据中的偏差怎样变成模型的偏差;以及数据集为什么会被下架。

← 返回课程目录