对应 Maps to:Stanford CS324 Winter 2023 Advances in Foundation Models,2/6 Lecture: Security + Privacy(Tatsu Hashimoto);Syllabus 阅读清单 “Security and Privacy”(课程笔记 Security and Privacy;Extracting Training Data from Large Language Models、Fair Learning、Large Language Models Can Be Strong Differentially Private Learners、Can Foundation Models Help Us Achieve Perfect Secrecy?)。 依据说明:W23 课程网站没有提供这次讲座的 slides。阅读清单里的 “Security and Privacy” 课程笔记指向 Winter 2022 同名讲座,它的 slides 是公开的 PDF(41 页:CIA 三要素、数据投毒、隐私风险、“公开数据也有隐私问题”、训练数据提取、差分隐私与 DP-SGD、“预训练让 DP 变得可行”)。本讲的主线依据这份 slides 和阅读清单里的论文全文(Carlini et al. 2021;Li et al. 2022,Hashimoto 是作者之一;Arora & Ré 2022),并补充了 Secret Sharer、成员推断、去重等相关论文。W23 的讲座具体讲了什么,我无法确认。slides 的前半部分(数据投毒)放到第 17 讲;Fair Learning 讨论的是训练数据的版权与合理使用,放到第 19 讲。§8”2023 年之后”是我补充的。 配套代码 Code:
code/lecture16/(PyTorch;2 个脚本 + 1 个模块。代码 01 第一次约 90 秒、之后约 25 秒;代码 02 约 80 秒) 预计阅读时间:3 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲,你应该能够:
- 说清基础模型的隐私问题为什么不一样:数据规模巨大、来源无法逐条审核、模型被成千上万的应用共享;以及为什么”数据是公开的”并不等于”没有隐私问题”(聚合与可及性)。
- 区分记忆、泛化、过拟合;写出 Secret Sharer 的 exposure 定义,解释它为什么能在”攻击还没成功”时就量化记忆。
- 描述 Carlini et al. 2021 的训练数据提取攻击(大量生成 → 按可疑度排序 → 检查),并解释为什么”按困惑度排序”不好用、“和参考模型比”好用。
- 解释成员推断、AUC 与”低误报率下的真阳性率”;说出去重为什么是最便宜的隐私措施,以及它的局限。
- 写出 (ε, δ)-差分隐私的定义,解释 DP-SGD 的三步(逐样本裁剪、加噪声、记账),以及采样率、噪声、步数怎样决定 ε;说清”组隐私”——为什么 DP 的单位必须和要保护的对象一致。
- 解释 Li et al. 2022 的发现:预训练让差分隐私微调变得可行;以及 Arora & Ré 的另一条路:用本地模型 + 上下文学习得到”完美保密”。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲只给直觉,后面几讲再展开 Previewed only |
|---|---|
| 第 1 讲:迷你世界与 base model;第 3 讲:语言模型的训练目标 | 数据投毒、后门(第 17 讲) |
| 第 2 讲 §5:去重;§6.2:模型怎样”背诵”重复的数据 | 版权与”合理使用”(第 19 讲) |
| 第 5 讲 §3:上下文学习;第 6 讲 §3:全量微调 | 隐私法规(GDPR 等)的细节(第 19 讲) |
| 概率的基本概念(条件概率、对数) |
0.3 本讲地图 Map
§1 为什么基础模型的隐私问题不一样:单点故障、数据饥渴、"公开数据"的隐私
§2 记忆:怎样量化"模型背下了多少"——Secret Sharer 的 exposure ← 代码 01 演示 1
§3 训练数据提取攻击:生成 → 排序 → 检查(Carlini et al. 2021) ← 代码 01 演示 2
§4 成员推断与去重 ← 代码 01 演示 3、4
§5 差分隐私:定义、DP-SGD、隐私账本 ← 代码 02 演示 1
§6 预训练让 DP 变得可行(Li et al. 2022) ← 代码 02 演示 2、3
§7 另一条路:不训练——本地模型 + 上下文学习(Arora & Ré 2022)
§8 2023 年之后
§9–13 小结、常见误区、练习、延伸阅读、下一讲预告
0.4 记号 Notation(只列本讲新增的,其余见第 1 讲 §0.4)
| 符号 / 术语 | 含义 | 例子 |
|---|---|---|
| 金丝雀 canary | 人为插进训练数据的、随机生成的”秘密”,用来测量记忆 | “the random number is 281265017” |
| exposure | :真实秘密在全部候选里排第几 | 满分 |
| 成员推断 MIA | membership inference attack:判断一条数据在不在训练集里 | |
| TPR@FPR | 误报率为 FPR 时的真阳性率 | TPR@5%FPR |
| 相邻数据集:只差一个样本 | ||
| 差分隐私的两个参数:概率之比不超过 ,失败概率 | , | |
| 、 | DP-SGD 的裁剪范数、噪声倍数(噪声标准差 ) | , |
| 、 | 采样率(每个样本每步被选中的概率)、步数 | , |
| RDP、 | Rényi 差分隐私及其阶数 | 账本用的中间量 |
0.5 关于数字 · About the numbers
讲义里的实验数字都来自 code/lecture16/ 的实际输出(固定种子、PyTorch 单线程,同一台机器上重复运行逐字相同;代码 01 训练的 3 个模型缓存在本目录的 checkpoints/,删掉后重新训练得到相同的结果)。实验用的”隐私数据”是合成的 PIN 记录,例如 feto from varno has pin 31379.:前两位是由城市决定的区号(一条可以学的群体规律),后三位是只属于这个人的秘密(没有任何规律,只能背)。这样我们能精确地分开”学到了有用的知识”和”泄漏了个人信息”。几处结果和我写代码前的预想不一样:参考模型校准在成员推断里基本没帮上忙;zlib 排序在这个世界里无效;只裁剪梯度、不加噪声,模型反而记住了更多秘密(练习 6)。完整清单在代码 README 的”关于实验结果”里。
1. 为什么基础模型的隐私问题不一样 · Why privacy is different for foundation models
1.1 安全的三要素,和”单点故障”
W22 的 slides 用安全领域的 CIA 三要素来组织这一讲和下一讲:
| 要素 | 含义 | 对语言模型来说 |
|---|---|---|
| 机密性 Confidentiality | 信息不被未授权的人看到 | 训练数据里的隐私不被模型”说出去”(本讲) |
| 完整性 Integrity | 输出是准确的、没被篡改 | 训练数据不被投毒、模型没有后门(第 17 讲) |
| 可用性 Availability | 系统能被正常使用 | 服务不被打垮(本课程不讨论) |
为什么语言模型值得专门讨论,而不是”和其他生成模型一样”?slides 的回答是:基础模型是单点故障(single point of failure)。第 1 讲说过”同质化”:成千上万的应用建立在同一个模型上。存进模型里的数据,任何一个下游应用都可能把它说出来;一个被植入后门的模型,会把后门带给所有下游应用。
1.2 数据饥渴与隐私的冲突
第 4 讲的规模定律告诉我们:数据越多,模型越好。于是开发者有强烈的动机去收集更多数据——公开的网页量大但质量参差,人工标注的数据质量高但贵,而用户产生的数据(聊天记录、邮件、病历)又多又好,却是私人的。
slides 举的例子是韩国的聊天机器人 Lee Luda(2020 年底上线)。开发公司用自己的”恋爱分析”应用收集到的大量 KakaoTalk 聊天记录训练它;韩国个人信息保护委员会后来认定,公司使用了约 60 万人的约 94 亿条消息,没有获得用户同意,也没有删除或处理其中的姓名、电话号码和住址。聊天机器人上线后引发了仇恨言论和隐私两方面的争议(用户发现它会说出看起来是真实的个人信息),约三周后下线,公司在 2021 年 4 月被罚款约 1 亿韩元。这是”数据饥渴”直接变成隐私伤害的例子。
1.3 “公开数据”也有隐私问题:聚合与可及性
一个常见的说法是:“预训练数据都是公开的网页,谈不上隐私。“slides 用 Solove 的隐私分类(A Taxonomy of Privacy, 2006)反驳这一点:隐私伤害不只是”把秘密公开”,还包括:
- 聚合(aggregation):把分散在各处的公开信息拼在一起。一个人的住址在一处、工作单位在另一处、日常行踪在社交网站上——每一条单独看都是公开的,拼在一起就是一份档案。语言模型的本职工作恰恰就是聚合和概括全部训练数据。
- 可及性(accessibility):让原本难以获得的公开信息变得唾手可得。一个 API 密钥不小心被提交到了 GitHub 的公开仓库,“技术上公开”,但只有很少的人会去翻;如果一个代码模型把它补全出来,任何人都能拿到。
美国最高法院在 1989 年的 DOJ v. Reporters Committee for Freedom of the Press 一案中表达过同样的想法(slides 引用了判决原文):散落在各地法院档案、警察局记录里的公开记录,和”集中在一个地方的电脑化汇总”,在隐私上有巨大的差别——这被称为”实际上的模糊性(practical obscurity)”。
此外还有推断:模型可能根据公开的文字推断出一个人没有公开的属性(例如性取向、健康状况),哪怕推断是”准确”的,也可能造成伤害。
1.4 威胁地图
把这些问题按”攻击者想知道什么”整理一下:
| 攻击 | 攻击者想知道 | 需要的访问 | 本讲 |
|---|---|---|---|
| 训练数据提取 extraction | 训练数据的原文(电话号码、代码、聊天记录) | 能采样 / 查询概率 | §3 |
| 成员推断 membership inference | “这条数据在不在训练集里” | 能查询概率(或只能采样) | §4 |
| 属性推断 attribute inference | 某人没有公开的属性 | 能查询 | §1.3 |
| 推理时泄漏 | 用户发给模型的提示(病历、合同) | 掌握服务器 / 日志 | §7 |
前两种是本讲的重点,因为它们直接回答”模型本身是不是一份训练数据的拷贝”。
2. 记忆:怎样量化”模型背下了多少” · Measuring memorization
2.1 记忆、泛化、过拟合
- 泛化:学到了规律,对没见过的数据也成立。例如”varno 的区号是 31”。
- 记忆(memorization):记住了只属于某一条训练数据的细节,这个细节无法从规律推出来。例如”feto 的 PIN 后三位是 379”。
- 过拟合:训练误差远低于测试误差。
传统的观点是:隐私泄漏来自过拟合;大模型在海量数据上训练、验证集损失很好,所以不会泄漏。Carlini et al. 2021 的开篇就指出这是错误的:一个模型可以在整体上泛化得很好,同时在个别样本上逐字记住。验证集的平均损失量不到这种记忆——它只占数据的极小一部分。
2.2 Secret Sharer:用”金丝雀”测量记忆
Carlini et al. 2019(The Secret Sharer)提出了一个干净的测量方法:
- 生成一个随机的”秘密”,例如
the random number is 281265017,作为**金丝雀(canary)**插进训练数据(可以插 1 次或多次)。 - 训练模型。
- 对所有可能的秘密(这里是全部 个九位数)计算模型给的概率,看真实的那个排第几。
定义 exposure:
是候选的总数。如果模型对秘密一无所知,真实秘密的排名大约在中间,exposure 很小(随机的期望约为 比特);如果模型把它排在第 1,exposure 达到满分 ——这时贪心解码就能直接”说出”秘密。
exposure 的好处是不需要攻击成功:哪怕真实秘密只排第 5,也说明模型已经”偏向”了它,而且 exposure 告诉你偏了多少。Google 用这个方法测试了 Smart Compose(在数百万用户的邮件上训练的补全模型)。论文的另一个发现:记忆在训练早期就出现,早停、dropout 这类常规正则化都挡不住;只有差分隐私(§5)能消除它。
2.3 在迷你世界里测 exposure
代码 01 造了 480 个人的 PIN 记录,混进第 1 讲的语料(记录占全部字符的 18%),像一次”网页抓取”那样继续预训练 base model(1500 步,语料约过了 14 遍)。不同的人的记录重复不同的次数 :408 人只出现 1 次,另有 6 组、每组 12 人,分别重复 2、4、…、64 次。秘密是 3 位数字,候选 1000 个(exposure 满分 9.97)。每组看 12 个人:
| 重复次数 | 平均 exposure | 中位数 | 贪心解码说出秘密 | base model 的 exposure |
|---|---|---|---|---|
| 0(留出,从没见过) | 1.12 | 0.92 | 0/12 | 0.93 |
| 1 | 1.52 | 1.12 | 0/12 | 1.62 |
| 2 | 2.69 | 1.98 | 0/12 | 1.15 |
| 4 | 4.71 | 4.58 | 0/12 | 1.31 |
| 8 | 5.57 | 5.63 | 0/12 | 1.51 |
| 16 | 8.70 | 8.67 | 3/12 | 1.12 |
| 32 | 9.42 | 9.47 | 6/12 | 1.55 |
| 64 | 9.97 | 9.97 | 12/12 | 1.10 |
而第 1 讲验证集(不含任何记录)上的 bit/字符只从 0.409 变到 0.416。读这张表:
- 剂量—效应:只出现 1 次的秘密,exposure 和从没见过的人差不多;重复 16 次,真实秘密已经排在 1000 个候选的前两三名;64 次时 12 个人的秘密全部能被贪心解码直接说出来。
- 记忆不等于过拟合:验证集的损失几乎没变,模型却记住了重复的秘密。练习 5 把训练延长到 3000 步: 时 11/12 的秘密被说出,而验证集的 bit/字符反而降到了 0.411——泛化更好了,记忆也更多了。
- base model 一列都在随机水平:它从没见过这些记录。exposure 量的是训练带来的变化。
2.4 记忆的三条规律
我们的模型只有 11 万参数,只出现 1 次的秘密基本记不住。真实的大模型不一样。Carlini et al. 2023(Quantifying Memorization Across Neural Language Models)在 GPT-Neo / GPT-J 系列上测量”给一段训练数据的前缀,模型能不能逐字续写出后缀”,发现记忆随三个因素按对数线性增长:
- 模型规模:参数越多,记住的越多。6B 参数的 GPT-J 至少记住了训练集(The Pile)的 1%。
- 重复次数:在训练集里出现的次数越多,越容易被记住(我们的表的规律)。
- 提示的长度:给的前缀越长,越容易”引出”记住的内容。
第 1 条最令人担心:规模是基础模型进步的主要来源(第 4 讲),而它同时让记忆更严重。
3. 训练数据提取攻击 · Training data extraction
3.1 Carlini et al. 2021:只靠查询,从 GPT-2 里提取训练数据
exposure 需要知道”秘密长什么样”(要枚举候选)。真实的攻击者不知道训练数据里有什么。Carlini et al. 2021 设计了一个无目标的攻击,只需要能从模型里采样:
- 大量生成:从 GPT-2(1.5B)采样 20 万个、每个 256 个 token 的样本。三种生成策略:从空白开始的 top-n 采样;先高温度、再降温的采样(增加多样性);用网上抓来的文本片段做开头(“Internet” 策略)。
- 按可疑度排序:给每个样本打一个”像是背下来的”分数(成员推断,§4),六种指标:
- Perplexity:GPT-2 XL 的困惑度,越低越可疑;
- Small / Medium:GPT-2 XL 和 GPT-2 Small / Medium 的对数困惑度之比;
- zlib:GPT-2 XL 的对数困惑度和 zlib 压缩后的熵之比;
- Lowercase:原文和全部小写之后的困惑度之比;
- Window:任意 50 个 token 的滑动窗口里的最小困惑度。
- 检查:3 种生成 × 6 种指标 = 18 种配置,每种从前 1000 名里挑 100 个,共 1800 个候选;请 GPT-2 的作者在原始训练数据里核对。
结果:1800 个候选里确认了 604 个不重复的、逐字记住的训练样本(总体精确率 33.5%,最好的配置 67%)。其中有真实的人名、电话、邮箱、住址,IRC 聊天记录,代码,以及 128 位的 UUID——有些内容在整个训练集里只出现在一篇文档里。另一个发现:更大的模型更容易被提取。
3.2 为什么”按困惑度排序”不好用
论文表 2 里一个醒目的对比(每种配置的 100 个候选里确认为记忆的个数):
| 指标 | Top-n | Temperature | Internet |
|---|---|---|---|
| Perplexity | 9 | 3 | 39 |
| Small | 41 | 42 | 58 |
| zlib | 59 | 46 | 67 |
只用困惑度时,排在最前面的大多是本来就容易预测的文本:重复的许可证声明、数字序列、常见的模板。这些文本损失低,不是因为模型背下了某一篇文档,而是因为它们本身没有信息量。所以需要一个对照:把”这段文本本身有多容易”减掉——用一个小模型(Small、Medium)的困惑度,或者用 zlib 压缩长度,或者用全小写版本。剩下的才是”这个模型特别熟悉、而一般的模型不熟悉”的部分。
3.3 在迷你世界里复现
代码 01 演示 2 从继续预训练后的模型里采样 4000 行:40 个字符以内写完的 2645 行,去重后 1857 行;其中 470 行符合记录的格式,20 行和某条训练记录一字不差(重复 16 次的 1 行、32 次的 8 行、64 次的 11 行)。攻击者不知道哪 20 行是真的,于是按四种指标排序,看最可疑的 k 行里真实记录的比例:
| 排序指标(越小越可疑) | 前 10 | 前 20 | 前 50 | 最可疑的一行 |
|---|---|---|---|---|
| 困惑度(目标模型的损失) | 0.00 | 0.00 | 0.20 | the pilot was tired, so she sat down. |
| zlib 比值 | 0.00 | 0.00 | 0.20 | the pilot was tired, so she sat down. |
| 和 base model 的损失比值 | 0.90 | 0.75 | 0.38 | fukir from sirok has pin 26496. |
| 和参考模型的损失比值 | 0.90 | 0.60 | 0.32 | fesir from quila has pin 74726. |
“参考模型”是攻击者自己训练的:同样的做法,但用的是另一批人的记录——它熟悉记录的格式和区号规律,唯独没见过训练集里的人。
- 困惑度排序完全失败:最前面的全是模板化的故事句子——和论文的观察一致。
- 和对照模型比,精确率从 0 跳到 0.9:普通文本两个模型都熟悉,损失比值接近 1;目标模型背过的记录,比值特别小。
- zlib 在这里无效:我们的模板句子既容易压缩、损失也低,zlib 和困惑度给出了几乎一样的排序。论文里 zlib 有效,是因为它能排除”重复的字符串、数字序列”这类文本。哪个指标好用,取决于数据长什么样——这本身是一个教训。
- 用 base model 做对照和专门训练的参考模型差不多(前 20 行甚至更好):base 连记录的格式都没见过,“记录格式的行”整体被排到前面,而其中背下来的又最靠前。
- 先被提取的是重复最多的数据。
3.4 为什么启发式的防御不够
面对这些攻击,很多人提出过”不需要数学证明”的防御:在数据里加扰动、把多个样本混合”加密”(InstaHide,以及它的文本版 TextHide)、过滤掉”看起来像隐私”的字符串……slides 的态度很明确:即使是设计良好的启发式方法也会被攻破。InstaHide 提出后不久就被 Carlini 等人攻破(Is Private Learning Possible with Instance Encoding?,2021)。PII 过滤(用正则表达式删掉电话、邮箱)有用,但它不知道什么是”隐私”:一段聊天记录里的家庭矛盾、一份病历里的诊断,都不是固定格式。
我们需要的是可证明的保证——§5 的差分隐私。在此之前,先看另一种更”弱”、也更普遍的攻击。
4. 成员推断与去重 · Membership inference and deduplication
4.1 成员推断:隐私的”最低门槛”
**成员推断(membership inference, MIA;Shokri et al. 2017)**问的是:给一条数据 ,它在不在训练集里?
为什么这算隐私问题?因为”在不在”本身可能就是敏感信息:如果一个模型是在某家医院的癌症病人病历上训练的,知道”某人的病历在训练集里”就等于知道他得了癌症。成员推断也是更强攻击的基础:§3 的提取攻击,第 2 步”按可疑度排序”本质上就是成员推断。反过来,如果一个模型连成员推断都挡不住,就谈不上保护隐私——这是”最低门槛”。
最简单的攻击是损失攻击:训练集里的样本,模型的损失通常更低;设一个阈值,损失低于阈值就判为成员。
4.2 指标:AUC 与低误报率
成员推断常用 AUC(随机取一个成员和一个非成员,成员得分更高的概率;0.5 = 瞎猜)。Carlini et al. 2022(LiRA,Membership Inference Attacks From First Principles)指出 AUC 会误导:一个攻击可能 AUC 不错,却没法有把握地认出任何一个人。攻击者真正在乎的是:在误报率很低的时候(例如只冤枉 0.1% 的非成员),能认出多少成员。他们用很多个参考模型给每个样本做校准(“这个样本本来就容易 / 难”),在低误报率下把攻击能力提高了一个数量级。
代码 01 演示 3:非成员是留出的 160 个人,成员是训练集里重复 次的人。每格是 AUC / 误报率 5% 时认出的成员比例:
| 攻击 | 2 | 4 | 8 | 16 | 32 | 64 | |
|---|---|---|---|---|---|---|---|
| 损失 | 0.77/0.16 | 0.91/0.42 | 0.99/0.92 | 1.00/1.00 | 1.00/1.00 | 1.00/1.00 | 1.00/1.00 |
| 参考模型校准 | 0.72/0.20 | 0.82/0.08 | 0.97/0.83 | 0.97/0.92 | 0.99/1.00 | 1.00/1.00 | 1.00/1.00 |
- 成员推断比提取容易得多:重复 4 次的记录,秘密还说不出来(贪心 0/12),但 92% 已经能被认出”在训练集里”。只出现 1 次的记录,AUC 也有 0.77。
- 参考模型校准在这里基本没帮上忙:只在 的低误报率下略好一点(0.20 vs 0.16),其余几列反而更差。这和我写代码前的预期相反。原因是:校准的作用是减掉”这一行本来有多好预测”,而我们的记录全是同一个模板、随机的名字和数字,难度差不多,没有什么可减的,减法只是多引入了参考模型自己的噪声。真实数据的难度差别很大(一句常见的问候 vs 一串随机字符),校准就很重要。
4.3 评测成员推断的陷阱
成员推断的结果强烈依赖于怎样选非成员。我们的非成员连名字都没在训练语料里出现过——这让攻击变容易了。Duan et al. 2024(Do Membership Inference Attacks Work on Large Language Models?)在 Pythia(训练集是公开的 The Pile)上做了严格的对照,发现大多数成员推断攻击在大语言模型上几乎和随机一样;很多论文报告的”成功”,来自成员和非成员之间的分布差异(例如非成员是训练截止日期之后才写的文本,主题和用词都不同),而不是真的识别出了成员。原因之一:大模型在海量数据上只训练 1 遍左右,单个样本的影响很小。
这不是说大模型没有隐私问题——§2.4 的记忆、§3 的提取都是真实的——而是说:被重复的数据风险最高,只出现一次的数据在大规模训练里相对安全,以及评测攻击时要非常小心对照组。
4.4 去重:最便宜的隐私措施
既然风险集中在重复的数据上,一个直接的办法是去重(第 2 讲 §5)。Kandpal et al. 2022(Deduplicating Training Data Mitigates Privacy Risks in Language Models)发现:
- 在训练集里出现 10 次的序列,被模型生成出来的频率平均是只出现 1 次的序列的约 1000 倍(超线性);
- 现有的检测”记忆”的方法,在没有重复的训练序列上几乎是随机水平;
- 去重之后,模型对这些攻击安全得多。
Lee et al. 2022(第 2 讲讲过)则发现去重后的模型输出背诵内容的频率降低到约 1/10,而且训练更快、效果更好。
代码 01 演示 4:同样的人,每条记录只保留 1 份,再训练一次。原来重复 2–64 次的那些组,exposure 都回到了 1.44–2.82(和 的 1.53 相当;每组只有 12 人,所以有起伏);采样 4000 行,一条训练记录都没提取出来;验证集的 bit/字符也从 0.416 降到了 0.400。
但去重只是降低风险,不是保证:
- 大模型能记住只出现一次的数据(§2.4、§3.1 的 UUID);
- “近似重复”很难找全:同一个电话号码出现在一千个不同的句子里,逐字去重删不掉它;
- 有些重复是数据本身的性质(一个公众人物的信息本来就到处都是)。
要有可证明的保证,需要差分隐私。
5. 差分隐私 · Differential privacy
5.1 定义与直觉
差分隐私(differential privacy, DP;Dwork et al. 2006)是对一个随机算法 (这里是”训练算法”)的要求。设 和 是相邻的数据集——只差一个样本。 满足 -DP,如果对任何可能的输出集合 :
直觉:“你的数据在不在训练集里,训练出来的模型的分布几乎一样。“所以无论攻击者看到模型的什么——参数、采样、概率——他能推断出关于你的东西,和你不参与时几乎一样多。这是一个关于算法的保证,和攻击者有多聪明、知道多少背景知识都无关。
- 越小越安全: 意味着完全没有影响;,—— 是很强的保证, 在理论上已经很弱(但实践中仍能挡住很多攻击)。
- 是”保证失效”的概率,要远小于 ( 是数据集大小),通常取 或更小。
一个最简单的例子:随机回答(randomized response)。调查”你有没有作弊过?“每个人先偷偷抛硬币:正面就如实回答;反面就再抛一次,正面答”有”、反面答”没有”。真作弊的人答”有”的概率是 3/4,没作弊的人答”有”的概率是 1/4,两者之比是 3,所以这个协议满足 的 DP:任何一个人都可以说”我答’有’是硬币决定的”。但对一大群人,调查者仍然能估计出作弊的比例(练习 3)。保护个人、保留统计——这正是 DP 的精神。
DP 是统计学的”金标准”:美国 2020 年人口普查就用差分隐私发布数据。但把它用到深度学习上很难。
5.2 两个工具:敏感度 + 噪声,以及组合
高斯机制:要发布一个统计量 ,先看它的敏感度 ——改动一个样本, 最多变多少;然后加上标准差 的高斯噪声。敏感度越大,要的噪声越多。
组合(composition):做了 次 DP 的操作,隐私损失会累加。朴素地把 相加太悲观;更精细的”账本”(moments accountant、Rényi DP)给出紧得多的界。
5.3 DP-SGD
训练神经网络就是做很多步梯度下降,每一步”发布”一次梯度。Abadi et al. 2016 的 DP-SGD 把每一步变成一个高斯机制:
每一步:
1. 采样:每个样本以概率 q 独立地被选进 batch(Poisson 采样)
2. 对 batch 里的每个样本 i,单独算梯度 g_i
3. 裁剪:g_i ← g_i · min(1, C / ‖g_i‖) ← 每个样本的影响 ≤ C(敏感度有界)
4. 加噪声:g = (Σ_i g_i + N(0, σ²C² I)) / (qN) ← 噪声盖住任何一个样本的痕迹
5. 用 g 更新参数(SGD 或 Adam 都可以:对加过噪声的梯度做什么处理都不影响隐私)
记账:根据 q、σ、T 算出 (ε, δ)
几个”为什么”:
- 为什么要逐样本梯度?普通训练只需要 batch 的平均梯度。但要限制”一个样本的影响”,必须先看到每个样本自己的梯度。这让 DP-SGD 又慢又费内存(代码里用
torch.func.vmap一次算出 batch 里每个样本的梯度)。 - 为什么裁剪?神经网络的梯度没有上界,一个异常样本可能产生巨大的梯度——敏感度是无穷大,加多少噪声都不够。裁剪把它限制在 。
- 为什么要随机采样?“隐私放大(privacy amplification by subsampling)“:每一步只有 的概率用到你的数据,攻击者连”这一步有没有用到你”都不确定,隐私损失大大降低。练习 4:同样的噪声,每步用全部数据()时 约 312,Poisson 采样()时只有 4.89。
Abadi et al. 用 DP-SGD 在 MNIST 上达到 90% / 95% / 97% 的准确率,对应 = 0.5 / 2 / 8();CIFAR-10 上 = 2 / 4 / 8 时是 67% / 70% / 73%。
5.4 隐私账本
代码 02 用 Rényi DP 的账本(Mironov et al.)计算 。对 Poisson 采样的高斯机制,整数阶 的一步 RDP 是
步直接相加得到 ,再换算:,在所有 上取最小。数据集 1920 个样本、期望 batch 64()、300 步、:
| 噪声倍数 | 0.5 | 0.7 | 1.0 | 1.5 | 2.0 | 3.0 |
|---|---|---|---|---|---|---|
| 28.87 | 11.41 | 4.89 | 2.43 | 1.64 | 1.02 |
时, 随步数增长:100 步 3.36,300 步 4.89,1000 步 8.45,3000 步 15.09。注意这个账本不看数据、不看模型:它是对”任何一个样本、最坏情况”的保证。(这里用的换算公式比较保守,Opacus 等库用的更紧的公式会给出略小的 。)
5.5 保护的是”一个样本”——组隐私
DP 的定义里,“相邻”指的是差一个样本。如果一个人的数据在训练集里出现了 次( 条记录、 封邮件),对这个人的保证会退化:粗略地说变成 ( 也随之变大)。 时, 约 20, 约 78, 约 313——基本没有保护。
所以 DP 的”单位”必须和”要保护的对象”一致:保护一个用户,就要按”一个用户的全部数据”来计数——用户级 DP(user-level DP)。Google 的键盘模型等联邦学习系统用的就是用户级 DP。代码 02 演示 2 会看到组隐私问题的实际后果。
6. 预训练让差分隐私变得可行 · Pretraining makes DP practical
6.1 “维度诅咒”假说
slides 讲了 DP 在 NLP 里长期”不好用”的历史。一个例子(Kerrigan et al. 2020):在 Reddit 数据上用 DP 训练生成模型,输入 “Bob lives close to the..”,不加隐私时输出通顺的句子;(几乎没有保护)时,输出已经是一串乱词。
当时流行的解释是维度假说:DP-SGD 的噪声加在每一个参数上,总噪声随参数量 增长;理论上 DP 的误差随 变差。语言模型有上亿参数,所以 DP 注定失败;成功的 DP 方法大多只发布低维统计量。
6.2 Li et al. 2022:三个要素
Li, Tramèr, Liang, Hashimoto(Large Language Models Can Be Strong Differentially Private Learners,ICLR 2022)发现这个假说在微调时不成立。他们的三个要素:
- 从大的预训练模型出发:预训练模型已经学会了语言的通用结构(句法等),私有数据只需要教它”这个任务”。slides 的说法:把宝贵的私有数据花在学习”公开的语言知识”上是浪费。
- 为 DP 重新调超参数:DP 下最优的是大 batch、大学习率(噪声被大 batch 平均掉;固定训练轮数时,大 batch 意味着更少的步、更少的隐私损失)。slides 说,沿用不加隐私时的”常规”超参数,差了将近 100 倍。
- 微调目标和预训练目标对齐:例如分类任务写成”填空”的形式,让模型用它已经会的方式回答。
外加一个工程贡献 ghost clipping:不显式算出逐样本梯度,也能得到每个样本梯度的范数,内存和普通训练差不多。
结果:在 E2E(餐厅信息 → 一句描述)上,从零开始用 DP 训练只有约 15 BLEU(不可用),DP 微调预训练的 GPT-2 有约 61.5 BLEU;而在不加隐私时,预训练只带来约 5 BLEU 的提升(slides 的数字)。分类任务上,RoBERTa-large 在 下 MNLI 86.4%、SST-2 93.0%。而且模型越大,DP 下效果越好——和维度假说的预测相反。
6.3 在迷你世界里复现
代码 02 的隐私数据集只有记录本身:1920 行(480 人按代码 01 的方式重复),每行是一个样本。效用:给 160 个从没见过的人写区号(100 个两位数里选 1 个,随机 1%)——答对只能靠”城市 → 区号”的规律,不可能靠背。隐私:各重复组的平均 exposure(随机约 1.44,满分 9.97)。300 步、期望 batch 64、裁剪 、学习率 3e-3(Adam);区号准确率的两个数字是两个种子:
| 设置 | 区号准确率 | |||||
|---|---|---|---|---|---|---|
| 不加保护 | ∞ | 1.000 / 1.000 | 2.61 | 6.70 | 9.80 | 9.97 |
| DP | 11.4 | 1.000 / 1.000 | 1.22 | 1.41 | 2.99 | 9.80 |
| DP | 4.9 | 0.950 / 1.000 | 1.49 | 1.73 | 2.46 | 9.36 |
| DP | 2.4 | 0.812 / 0.931 | 1.37 | 1.90 | 1.86 | 7.48 |
| DP | 1.6 | 0.569 / 0.694 | 1.36 | 1.62 | 1.69 | 5.83 |
- 学统计,不学个人:DP 下,重复 4 次以内的人的秘密回到了随机水平,重复 16 次的从 9.80 降到 2–3;而区号这条群体规律在 时几乎没有损失。原因很直观:区号由同城的 60 个人共同”投票”,每个样本的梯度被裁剪、被噪声盖住,但 60 个样本朝同一个方向的信号加起来远大于噪声;一个人的秘密只有他自己那几行支持。
- 隐私—效用的取舍: 越小,效用越差, 时只剩约六成,两个种子的差别也变大。
- 组隐私的后果:重复 64 次的人,在 下 exposure 仍有 9.36。账本保护的是”一行”,这些人每人有 64 行。数据里的重复会直接削弱 DP——所以 DP 训练前仍然要去重,或者改用用户级 DP。
演示 3 用同样的 DP 训练,从随机初始化出发:
| 出发点 | 不加保护 | DP () |
|---|---|---|
| 第 1 讲 base model | 1.000 / 1.000 | 0.950 / 1.000 |
| 随机初始化 | 0.994 / 0.988 | 0.250 / 0.163 |
不加保护时,从零训练也能学会这个简单的规律;但在 DP 噪声下只剩两成左右,预训练过的模型几乎不受影响。这就是 Li et al. 的核心发现的微缩版:预训练模型已经会”读写”,DP 微调只需要朝一个已经很接近的方向调整一点,噪声的伤害小;从零训练需要学的东西多得多,每一步都被噪声打折扣。
6.4 “公开数据”有多公开?
“公开数据预训练 + 私有数据 DP 微调”的范式有一个前提:预训练数据是”公开的”,不需要保护。但 §1.3 和 §3 已经说明,网页里有大量个人信息,模型会记住并泄漏它们。Tramèr, Kamath & Carlini(Considerations for Differentially Private Learning with Large-Scale Public Pretraining,2022)专门讨论了这一点:
- “公开”不等于”同意被用来训练”;预训练数据里的隐私没有任何 DP 保护。
- 用公开数据上的表现来宣传”DP 模型效果很好”,可能高估了 DP 在真正私密、和公开数据分布很不一样的数据上的效果。
- 如果私有数据和预训练数据有重叠,“DP 保护了私有数据”的说法就打了折扣。
所以这个范式保护的只是微调数据。
7. 另一条路:不训练——本地模型 + 上下文学习 · Perfect secrecy via in-context learning
DP 给的是统计意义上的保证( 不为 0)。有没有办法做到”零泄漏”?
Arora & Ré(Can Foundation Models Help Us Achieve Perfect Secrecy?,2022;Ré 是本课程的教师之一)的思路是:根本不要用私有数据去训练任何共享的模型。场景是个人任务(例如给自己的邮件分类):
- 每个用户只有很少的标注数据(论文的评测任务里平均每个用户 149 个,标准差 191),单独训练一个模型效果很差;
- 传统做法是联邦学习(federated learning, FL):大家的数据不出本地,但共同训练一个共享模型。FL 本身不提供隐私保证,需要再加 DP,而且有很多针对 FL 的攻击;
- 他们提出的基线:一个公开的预训练模型放在用户本地,用户把自己的少量例子放进提示里做上下文学习(第 5 讲)。用户的数据从不离开本地,也不改变任何共享的东西——满足香农意义上的完美保密(perfect secrecy):系统的交互不会增加任何人关于用户私有数据的知识。
结果:在隐私文献常用的 7 个基准中的 6 个上,上下文学习和强的 FL 基线相当;不需要设置任何隐私参数。
它的代价和限制:
- 需要在本地运行一个足够强的模型(成本、设备);如果把提示发给云端 API,隐私就取决于服务商(§1.4 的”推理时泄漏”)。
- 公开模型本身的预训练数据里的隐私问题仍在(§6.4)。
- 上下文长度有限,用户数据多时放不下。
这个思路在 2023 年之后变得很现实:开放权重的小模型越来越强,“在手机 / 笔记本上本地运行”成为隐私敏感场景的常见选择。
8. 2023 年之后 · Since 2023
- 对齐不等于不记忆:Nasr et al. 2023(Scalable Extraction of Training Data from (Production) Language Models)发现,对齐过的 ChatGPT(gpt-3.5-turbo)在正常聊天时几乎不吐出训练数据,看起来比之前的任何模型都”私密”约 50 倍;但一个简单的”发散攻击”——让它无限重复一个词(例如 “poem”)——会让它在重复几百次后”跑偏”,开始逐字输出训练数据,速率是正常情况的约 150 倍。他们只花了约 200 美元的查询费,就提取出了一万多个不重复的、逐字记住的样本。教训:对齐改变的是行为,不是模型里存了什么(第 7 讲)。
- 成员推断在大模型上很难做对:Duan et al. 2024(§4.3)之后,“用成员推断检测某本书 / 某个测试集是否在训练数据里”的研究必须非常小心地构造对照组。
- 差分隐私的预训练:Google 在 2025 年发布 VaultGemma,一个从零开始用 DP 训练的 10 亿参数开放模型(序列级保证 、,一个序列 1024 个 token)。它的效果大约相当于几年前同规模的非 DP 模型——DP 的代价仍然可观,但从零开始的 DP 预训练已经可行。
- 机器遗忘(machine unlearning):法规(例如 GDPR 的”被遗忘权”)要求删除个人数据,但从训练好的模型里”删掉”一条数据很难。各种近似遗忘方法和评测(例如 TOFU 基准,2024)出现了,但研究反复发现:很多方法只是让模型”不说”,信息仍然能用别的方式提取出来。2023 年 3 月,意大利数据保护机构曾以隐私为由暂时限制 ChatGPT 在意大利的服务,约一个月后恢复。
- 记忆与版权:同样的提取技术被用来研究模型是否记住了受版权保护的书籍、新闻(第 19 讲)。
- 推理时的隐私:随着用户把越来越多的私人数据(文档、邮件、病历)发给模型和智能体,隐私的重心部分地从”训练数据”移到了”推理时的数据”:本地模型、可信执行环境(confidential computing)、数据保留政策、提示注入导致的数据外泄(第 17 讲)。
9. 小结 · Summary
- 基础模型是隐私的单点故障:数据规模大、来源无法逐条审核、被所有下游应用共享。“公开数据”也有隐私问题:聚合、可及性、推断。
- 记忆 ≠ 过拟合:验证集损失几乎不变(0.409 → 0.416),重复 64 次的秘密却能被直接说出。exposure 量化记忆:只出现 1 次 1.52(随机 1.44),重复 16 次 8.70,64 次 9.97(满分)。记忆随模型规模、重复次数、提示长度按对数线性增长。
- 提取攻击 = 大量生成 + 按可疑度排序 + 检查。只按困惑度排序会选出”本来就容易”的文本(精确率 0.00);和一个没见过这些数据的对照模型比,精确率跳到 0.90。Carlini et al. 从 GPT-2 里确认了 604 个逐字记住的样本。
- 成员推断比提取容易(重复 4 次时秘密说不出来,但 92% 能被认出);看低误报率,小心构造非成员。去重是最便宜的措施:去重后 exposure 回到随机水平,提取不出任何记录。
- 差分隐私:相邻数据集上输出分布之比不超过 。DP-SGD = 逐样本裁剪 + 高斯噪声 + 记账;采样放大隐私(同样的噪声, 时 约 312, 时 4.89)。 保护的是一个样本:重复 64 次的人在 下 exposure 仍有 9.36——单位要选对(用户级 DP)。
- 预训练让 DP 可行:DP 下区号准确率 0.950 / 1.000(),从零训练只有 0.250 / 0.163。Li et al. 2022:大模型 + 合适的超参数 + 对齐的目标。但预训练数据本身没有保护。
- 完美保密的另一条路:本地的公开模型 + 上下文学习,私有数据不改变任何共享的东西。
10. 常见误区 · Common pitfalls
- “模型泛化得好,所以不会泄漏训练数据。” 记忆发生在个别样本上,验证集的平均损失量不到它(代码 01 演示 1)。
- “训练数据是公开网页,所以没有隐私问题。” 聚合、可及性、推断都是隐私伤害;“公开”也不等于同意。
- “困惑度低的生成就是背下来的训练数据。” 困惑度低的多半是本来就容易预测的文本;要和对照模型比(代码 01 演示 2)。
- “AUC 高的成员推断攻击就是强攻击。” 要看低误报率下的真阳性率;还要检查成员和非成员是否只是分布不同。
- “去重之后就安全了。” 大模型会记住只出现一次的数据;近似重复很难找全。去重降低风险,不提供保证。
- “只要裁剪梯度(或加一点噪声)就算差分隐私。” DP 是对算法的数学保证,必须按账本计算 ;只裁剪不加噪声没有任何保证(练习 6 里它甚至记住了更多)。
- ” 的模型保护了每个人。” 保护的是”一个样本”;一个人的数据出现多次时,保证按次数变弱(代码 02 演示 2 的 )。
- “DP 在大模型上一定不好用,噪声随参数量增长。” 从预训练模型出发微调时不成立;模型越大,DP 下效果反而越好(Li et al. 2022)。
- “对齐过的聊天模型不会吐出训练数据。” 对齐改变行为,不删除记忆;发散攻击能绕过(Nasr et al. 2023)。
- “用了 DP 微调,整个系统就是隐私的。” 预训练数据、推理时的提示和日志都不在这个保证里。
11. 练习 · Exercises
练习 1(exposure 的算术) 候选有 1000 个。(a) 真实秘密排第 4,exposure 是多少?(b) 如果模型对秘密一无所知(排名在 1 到 1000 之间均匀分布),exposure 的期望大约是多少?(c) 代码 01 里 的平均 exposure 是 8.70,相当于大约排第几?
参考答案
(a) 。(b) 。由斯特林公式,,所以期望约为 比特。(c) ,,大约排第 2–3 名(平均意义上;实际上有的人排第 1,有的排得更后)。
练习 2(为什么要对照模型) 用一句话解释:为什么”按目标模型的困惑度排序”会把 the pilot was tired, so she sat down. 排在真实的 PIN 记录前面?“和参考模型的损失比值”为什么能纠正它?
参考答案
模板化的故事句子在训练语料里有成百上千个近似的副本,任何在这份语料上训练过的模型都觉得它很好预测——它的损失低是因为”本身容易”,不是因为目标模型背下了某一条数据。参考模型也在同类语料上训练过,对它同样不惊讶,所以比值接近 1;而一条被背下来的 PIN 记录,目标模型很熟悉、参考模型(没见过这个人)很惊讶,比值特别小。比值把”本身有多容易”这个因素除掉了。
练习 3(随机回答) (a) 证明 §5.1 的随机回答协议满足 的差分隐私(只看一个人)。(b) 调查了 1000 人,有 400 人回答”有”。估计真实的作弊比例 。(c) 如果改成”抛硬币,正面如实回答,反面一律答’有’“,这个协议还是差分隐私的吗?
参考答案
(a) 输出只有”有”和”没有”两种。,,比值 3;,,比值也是 3。所以任何输出的概率之比都不超过 。(b) ,得 。(c) 不是:,而 ——一旦回答”没有”,就确定这个人没作弊,比值是无穷大。DP 要求每一种输出在两种情况下的概率都可比。
练习 4(采样放大隐私) 用 privacy_lab.rdp_epsilon 计算:、300 步、 时,(a) (每步用全部数据)和 (b) 的 。(c) 如果坚持每步用全部数据,大约要多大的 才能得到 ?这对效用意味着什么?
参考答案
我运行的结果:(a) ;(b) 。(c) 时 , 时约 9.84,所以大约要 。这时每步的信号是 1920 个样本梯度的和、噪声标准差约 ,和”、“(信号约 64 个样本、噪声 )在同一个量级,但每步的计算量大 30 倍。采样放大的本质是:每一步只有 的概率碰到你的数据,攻击者对”这一步有没有用到你”本身就不确定。
练习 5(训练更久,记得更多) 把代码 01 的继续预训练从 1500 步改成 3000 步(其余不变)。预测各重复组的 exposure 和验证集的 bit/字符会怎样变化。
参考答案
我在一份拷贝里运行的结果:exposure(括号里是 1500 步):2.31(1.52),:4.05(2.69),:6.95(4.71),:8.38(5.57),:9.88(8.70),、64:9.97;贪心解码说出秘密: 2/12, 11/12, 起 12/12。验证集 bit/字符 0.411(1500 步是 0.416)——验证集更好了,记忆也更多了。这再一次说明记忆和过拟合是两回事;也和 Carlini et al. 2023 的”记忆随训练量 / 重复次数增长”一致(真实的大模型通常只训练 1 遍左右,部分原因正是成本,但这也限制了记忆)。
练习 6(只裁剪不加噪声) 在代码 02 里调用 pl.dp_finetune(base, lines, 0.0, private=True)(裁剪,但 )。你预测 exposure 会比”不加保护”低吗?
参考答案
我运行的结果(两个种子):区号准确率都是 1.000;exposure :5.74 / 4.50,:9.58 / 9.20,、64:9.97——比不加保护时(2.61、6.70、9.80、9.97)记住的更多。这和我的预期相反。我没有深究原因;一个可能的解释是:逐样本裁剪让每个样本对更新的贡献一样大,还没学会的”难”样本(包括秘密)相对地得到了更多权重。无论原因是什么,结论都很清楚:裁剪只是让敏感度有界,保证来自噪声和账本; 时 是无穷大,没有任何保护。
练习 7(概念:组隐私与用户级 DP) 一家公司想用用户的聊天记录微调一个模型,并宣传” 的差分隐私”。你应该问他们哪两个问题,来判断这个保证对一个用户意味着什么?
参考答案
(1)“相邻”的单位是什么:一条消息、一段对话,还是一个用户的全部数据?如果是一条消息,一个发了 500 条消息的用户得到的保证粗略是 ,几乎没有意义;用户级 DP 才对应”保护一个用户”。(2) 是多少、训练了多少步、用的是什么账本(以及预训练数据和其他数据源是否包含同一批用户的数据)—— 只有在这些条件下才有意义。还可以问:这个保证覆盖了哪些环节(训练数据、日志、推理时的提示是否也被保护)。
练习 8(概念:公开的电话号码) 一个代码模型补全出了一个真实的电话号码,这个号码出现在某个公开网页上。这是隐私问题吗?用 §1.3 的概念回答。
参考答案
可能是。按”秘密 vs 公开”的二分法,它不算泄漏;但按 Solove 的分类,模型提高了它的可及性(原来要在某个角落的网页里才能找到,现在任何人用一个提示就能得到),而且可能把它和别的信息聚合在一起(名字、地址、职业)。这个号码当初被公开的语境(例如一个社区活动的联系人)和现在被使用的语境(任何人、任何目的)也不同——Nissenbaum 的”语境完整性”(contextual integrity)理论正是从这个角度定义隐私的。
练习 9(概念:完美保密的边界) Arora & Ré 的方案里,用户把自己的例子放进本地模型的提示里。列出两种情况,在这些情况下用户的隐私仍然可能泄漏。
参考答案
(1)模型不在本地:如果把提示发给云端 API,服务商(以及它的日志、员工、被攻破时的攻击者)能看到全部私有数据;完美保密只在”模型和推理都在用户控制下”时成立。(2)模型的输出被共享:例如分类结果被同步到云端、被别的应用读取,输出本身可能泄漏信息。其他可能:提示注入(第 17 讲)让模型把上下文里的数据发出去;用户的数据以后又被用来训练新的公开模型。
12. 延伸阅读 · Further reading
原课阅读清单(Security and Privacy)
- Stanford CS324 Winter 2022. Security and Privacy(slides PDF). stanford-cs324.github.io
- Carlini et al. Extracting Training Data from Large Language Models. USENIX Security 2021. arXiv:2012.07805
- Li, Tramèr, Liang & Hashimoto. Large Language Models Can Be Strong Differentially Private Learners. ICLR 2022. arXiv:2110.05679
- Arora & Ré. Can Foundation Models Help Us Achieve Perfect Secrecy? 2022. arXiv:2205.13722
- Lemley & Casey. Fair Learning. Texas Law Review 2021(第 19 讲). SSRN 3528447
记忆与攻击
- Carlini et al. The Secret Sharer: Evaluating and Testing Unintended Memorization in Neural Networks. USENIX Security 2019. arXiv:1802.08232
- Carlini et al. Quantifying Memorization Across Neural Language Models. ICLR 2023. arXiv:2202.07646
- Shokri et al. Membership Inference Attacks Against Machine Learning Models. IEEE S&P 2017. arXiv:1610.05820
- Carlini et al. Membership Inference Attacks From First Principles(LiRA). IEEE S&P 2022. arXiv:2112.03570
- Kandpal, Wallace & Raffel. Deduplicating Training Data Mitigates Privacy Risks in Language Models. ICML 2022. arXiv:2202.06539
- Lee et al. Deduplicating Training Data Makes Language Models Better. ACL 2022. arXiv:2107.06499
- Nasr et al. Scalable Extraction of Training Data from (Production) Language Models. 2023. arXiv:2311.17035
- Duan et al. Do Membership Inference Attacks Work on Large Language Models? COLM 2024. arXiv:2402.07841
差分隐私
- Dwork & Roth. The Algorithmic Foundations of Differential Privacy. 2014(免费的教科书). PDF
- Abadi et al. Deep Learning with Differential Privacy(DP-SGD). CCS 2016. arXiv:1607.00133
- Mironov, Talwar & Zhang. Rényi Differential Privacy of the Sampled Gaussian Mechanism. 2019. arXiv:1908.10530
- Tramèr, Kamath & Carlini. Considerations for Differentially Private Learning with Large-Scale Public Pretraining. 2022. arXiv:2212.06470
- Google Research. VaultGemma: The world’s most capable differentially private LLM. 2025(博客). research.google
隐私的概念
- Solove. A Taxonomy of Privacy. University of Pennsylvania Law Review 2006. SSRN 667622
- Brown et al. What Does it Mean for a Language Model to Preserve Privacy? FAccT 2022. arXiv:2202.05520
13. 下一讲预告 · Next lecture
这一讲关心 CIA 三要素里的机密性:模型会不会把训练数据说出去。下一讲转向完整性:如果有人故意往训练数据里放东西呢?
第 17 讲:安全——网络规模数据集的投毒、后门与对抗提示(2/22 客座 Nicholas Carlini:Poisoning Web-Scale Training Datasets is Practical)。网络规模的数据集(LAION、Common Crawl、Wikipedia 快照)是用”URL 列表”或”定期快照”的方式分发的——这让攻击者花几十美元买下过期域名、或者掐准快照时间编辑维基百科,就能控制一部分训练数据。代码会模拟”过期域名”和”抢在快照之前”两种投毒,并在迷你世界里给模型植入触发词后门,测量”需要多少条毒数据”。我们还会从防御的角度讨论越狱和提示注入。