对应 Maps to:CMU 10-423 / 10-623 / 10-723 Generative AI(Aran Nayebi、Matt Gormley),Lecture 22 · Mon 6-Apr · Real-world Issues and Considerations / What can go wrong?(slides:lecture22-practical-considerations;slides 注明取自 Henry Chai 的版本)。 阅读材料:slides 引用的论文——Henderson et al. (2023), Foundation Models and Fair Use;Karamolegkou et al. (2023), Copyright Violations and Large Language Models;Vyas, Kakade & Barak (2023), On Provable Copyright Protection for Generative Models;Zou et al. (2023), Universal and Transferable Adversarial Attacks on Aligned Language Models;Wei, Haghtalab & Steinhardt (2023), Jailbroken: How Does LLM Safety Training Fail?;OpenAI (2023), GPT-4 Technical Report;Huang et al. (2023), A Survey on Hallucination in Large Language Models;Lewis et al. (2020), Retrieval-Augmented Generation;Gallegos et al. (2024), Bias and Fairness in Large Language Models: A Survey;Kotek et al. (2023), Gender Bias and Stereotypes in Large Language Models;Dodge et al. (2022), Measuring the Carbon Intensity of AI in Cloud Instances;Patterson et al. (2022), The Carbon Footprint of Machine Learning Training Will Plateau, Then Shrink。本讲义补充:Carlini et al. (2019, 2021, 2023) 关于记忆和提取的三篇;Kandpal et al. (2022) 关于去重;Shi et al. (2024) 的 Min-K% Prob;Kalai et al. (2025), Why Language Models Hallucinate;Kirchenbauer et al. (2023), A Watermark for Large Language Models。 依据说明:本讲按原课第 22 讲公开的 slides 展开:几个真实的 AI 事故、“修好它也很难”(Gemini 图像生成事件)、MIT 的 AI 风险分类;然后用同一个框架(是什么意思?影响谁?为什么发生?怎样修?)讨论五种风险:版权侵权、对抗攻击、幻觉、偏见与歧视、环境影响。slides 列出了”生成有毒 / 不安全的内容”,但没有展开,本讲也只在 §1 提一句。§3(隐私、成员推断、测试集污染)和 §8(水印)是本讲义补充的。对抗攻击一节(§4)只讲原理和防御,不给出任何攻击提示的写法。 所有实验是本讲义自己设计的,不代表课堂上讲了什么;论文里的数字写成”某某报告”。 配套代码 Code:
code/lecture22/(6 个脚本 + 1 个模块;01 第一次运行约 2 分钟,其余几秒到 1 分钟) 预计阅读时间:2.5 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲,你应该能够:
- 用”是什么、影响谁、为什么、怎样修”的框架分析一种生成式 AI 的风险,并说出 slides 讨论的五种风险各自的要点。
- 解释模型为什么会逐字记住训练数据;会用暴露度、最长公共子序列、成员推断 AUC 度量记忆;说清楚去重能做什么、不能做什么。
- 说出”近访问自由”的定义,以及 CP-Δ 怎样用两个在不相交数据上训练的模型提供可证明的保护。
- 解释为什么安全训练会被绕过(目标冲突、泛化不匹配),以及有哪些防御思路。
- 从数据和统计的角度解释幻觉:为什么只出现一次的事实容易出错,为什么二元评分在奖励瞎猜,RAG 修好了什么、又带来了什么。
- 区分偏见的三类度量,解释”偏见放大”,说出反事实数据增强的用法和代价。
- 会算训练的能耗和碳排放,知道误差主要来自哪里、哪些缓解手段最有效。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲只给直觉,不展开 Previewed only |
|---|---|
| 第 2、3 讲:语言模型、交叉熵、解码(温度、贪心) | 版权法的法律细节(各国不同,本讲只讲技术问题) |
| 第 11、12 讲:RLHF、DPO;第 11 讲的”学着写提示” | 差分隐私训练(DP-SGD)的数学 |
| 第 16 讲:混合专家(MoE) | 对抗攻击的具体算法步骤(只讲原理和防御) |
0.3 本讲地图 Map
§1 会出什么错?风险的分类和分析框架
§2 版权侵权:逐字记忆、怎样度量、可证明的保护 ← 代码 01、02
§3 (补充)记忆的另一面:隐私、成员推断、测试集污染 ← 代码 01
§4 对抗攻击:安全训练为什么会被绕过(只讲原理和防御)
§5 幻觉:分类、原因、统计上的必然、评测的激励、RAG ← 代码 03
§6 偏见与歧视:复现、放大、度量、缓解 ← 代码 04
§7 环境影响:碳排放的账 ← 代码 05
§8 (补充)水印:怎样识别 AI 生成的文本 ← 代码 06
§9–13 小结、误区、练习、延伸阅读、下一讲
所有小模型都在 risk_lab.py 里。它们都是第 2 讲的 GPT,只有几万到一百万参数,训练数据全部由代码生成——我们确切知道模型见过什么、见过几次,所以能把”模型的行为”和”数据里有什么”分开。这是小实验相对大模型实验的最大好处,也是它的局限:结论是”机制上会发生什么”,不是大模型上的定量结果。
1. 会出什么错?· What can go wrong?
slides 的开场是一组真实的事故(数据分析和 AI 的失败案例、生成式 AI 在 2023 年的各种失误、AI 给出的奇怪而错误的回答),标题是”哦,太多了……”。紧接着一句”而修好它们可能很难”,配的是 2024 年 2 月 Google Gemini 图像生成的事件:Gemini 在生成历史场景的人物时出现了明显不符合史实的结果,Google 暂停了这一功能。Google 事后的说明大意是:为了让生成的人物更多样而做的调整,没有考虑到某些场景本来就不应该”多样化”;同时模型变得比预期谨慎得多,拒绝了一些正常的请求。一个为了减少一种问题而做的修正,制造了另一种问题。 这是整讲反复出现的主题(§6.4 会在小模型上看到同样的事)。
1.1 风险的分类
slides 用的是 MIT 的 AI 风险库(AI Risk Repository)的”领域分类”:把 AI 的风险分成 7 个领域、23 个子领域,例如歧视与毒性、隐私与安全、错误信息、恶意使用、人机交互、社会经济与环境、AI 系统自身的安全与局限。slides 展开了其中几格,例如”社会经济与环境”领域里的”经济和文化上对人类劳动的贬值”、“环境危害”,以及和版权有关的”受版权保护作品的提取”。
1.2 分析框架
slides 从中挑了一个”很小的子集”,用同一个框架逐个讨论:
| 风险 | 1. 是什么意思(对生成式 AI 而言)? | 2. 影响谁? | 3. 为什么发生? | 4. 怎样修? |
|---|---|---|---|---|
| 版权侵权(§2) | 生成和受保护作品”实质相似”的内容 | 作者、出版方;模型的提供者和用户(法律风险) | 训练数据里有,模型记住了 | 过滤数据、过滤输出、可证明的保护 |
| 对抗攻击(§4) | 精心构造的输入让模型绕过安全训练 | 所有用户;部署方 | 安全目标和其他目标冲突;安全训练覆盖不到的输入 | 过滤、对抗训练、能力相当的安全机制 |
| 幻觉(§5) | 流畅、自信但不真实 / 不忠实于输入的内容 | 依赖输出做决定的人 | 数据里没有、只出现一次;评测奖励瞎猜 | RLHF、RAG、校准与拒答 |
| 偏见与歧视(§6) | 对不同社会群体的不公平表述或对待 | 被刻板化或被区别对待的群体 | 数据里的偏斜被复现、被解码放大 | 数据增强、训练目标、解码、后处理 |
| 环境影响(§7) | 训练和部署的能耗与碳排放 | 所有人 | 计算量 × 电网碳强度 | 稀疏模型、高效硬件、选地点和时间 |
slides 的清单里还有”生成有毒 / 不安全的内容”,没有展开;它的度量和缓解方法(分类器、RLHF 里的安全偏好)和 §4、§6 有很多重叠。
2. 版权侵权 · Copyright infringement
2.1 是什么意思
slides 引用 Henderson et al. (2023) 的综述:按美国法律,一件作品”从被固定在有形的媒介上的那一刻起”就受版权保护;而目前这一代基础模型的训练数据里,大部分是受版权保护的材料——GPT-3 和 BERT 用的 BookCorpus、The Pile 里的 Books3,以及从网页抓取的 C4、OpenWebText。网上的大多数内容在创作时就带着版权。
“但也许这没关系?“美国的研究者和公司长期依赖”合理使用”(fair use):允许在某些用途下不经许可使用受版权保护的材料,尤其是当最终产品是”转化性的”(transformative)时。Henderson et al. 的分析是:如果训练出来的模型不直接生成原内容,训练很可能属于合理使用;但生成式模型往往能生成和原作品相似的内容,而部署它可能影响原作品的市场——这时合理使用就未必成立了。
slides 接着用了论文里的三个假设情境,让大家讨论”这是合理使用吗?“:一个在手机上部署的助手,用户让它逐字朗读一本童书;一个网站用模型生成某个知名虚构角色的”起源故事”并收费;一个基于某部小说百科训练的问答网站收取费用。三个情境的共同问题是:模型的输出和原作品有多像?它是否替代了原作品的市场?
2.2 怎样度量:逐字记忆(代码 01)
要讨论”模型的输出和原作品有多像”,首先要能度量。slides 展示了 Karamolegkou et al. (2023) 的做法:给模型一本书的开头,让它续写,计算续写和原文的**最长公共子序列(LCS)**的长度。他们的图显示:模型越大,背下的内容越长;一些流行的书被背得特别多。
我们在小模型上复现这个现象,并加上一个更干净的”秘密”度量。01 的训练集:
- 12,000 句”背景文本”:一条随机的稀疏马尔可夫链生成的句子(每个词平均约 1.95 比特的不确定性)——模型要学的”语言”;
- 6,000 句普通的编号句
the code of user u217 is 3 0 8 5 1 .:用户随机、编号每次重新随机——模型由此学会格式,并知道”编号一般是随机的”; - 金丝雀(canary,Carlini et al., 2019):某个用户的固定编号,在训练集里重复 r 次(r = 1, 2, …, 64,每个 r 各 8 条);
- “书”:同一条马尔可夫链上的 48 个词,同样重复 r 次。
训练 6 遍。暴露度(exposure)= :把全部 个候选编号按模型给的概率排序,真秘密排第几。完全记住(排第 1)是 16.6 比特;完全没记住时期望约 1.4 比特。我们可以精确地枚举全部 个编号(按数字一位一位展开,用第 3 讲的 KV 缓存复用前缀),不用采样估计。
| 出现 r 次 | 训练中一共看到 | 小模型(6.4 万参数):暴露度 / 能直接提取 | 大模型(95 万参数) |
|---|---|---|---|
| 0(对照) | 0 | 1.1 比特 / 0/8 | 2.1 / 0/8 |
| 1 | 6 | 5.4 / 0/8 | 12.5 / 0/8 |
| 2 | 12 | 5.8 / 0/8 | 14.4 / 4/8 |
| 8 | 48 | 8.5 / 0/8 | 16.6 / 8/8 |
| 32 | 192 | 14.3 / 2/8 | 16.6 / 8/8 |
| 64 | 384 | 16.5 / 7/8 | 16.6 / 8/8 |
(“能直接提取”= 真秘密就是模型最喜欢的编号,贪心解码就会把它说出来。)只出现 1 次的秘密,大模型已经把它排到了前 17 名左右;从 r = 8 起每一条都能被直接提取。小模型要到 r = 64 才大部分能提取。重复次数和模型大小是记忆的两个旋钮——Carlini et al. (2023) 在真实模型上发现,可提取的记忆随模型大小、重复次数、提示长度大致按对数线性增长。
书更难背:32 个词的续写约有 63 比特的随机内容(金丝雀只有 16.6 比特)。大模型的续写和原文的平均 LCS(满分 32):
| 书出现 r 次 | 0(没见过) | 1 | 8 | 16 | 32 | 64 |
|---|---|---|---|---|---|---|
| 大模型:平均 LCS / 逐字相同 | 4.1 / 0 | 4.1 / 0 | 6.6 / 0 | 10.5 / 1 | 17.1 / 2 | 32.0 / 8 |
| 小模型 | 5.8 | 3.8 | 3.6 | 6.1 | 4.8 | 6.9 |
两个要点:
- 没见过的书也有约 4–6 的 LCS:同一种”文风”写出来的文字本来就会有重合。判断”抄袭”一定要和这个基线比,而不是和 0 比——这也是版权法里”实质相似”难以量化的原因之一:多像才算”太像”?
- 同样重复 64 次,大模型逐字背出全部 8 本,小模型的 LCS 只有 6.9——和 slides 里”模型越大,背下的书越长”是同一个现象。
为什么会背下来? 模型没有被要求”记住”任何东西,它只是在最小化训练损失。对一条反复出现的随机字符串,最小化损失的唯一办法就是背下它:每多背一个词,训练损失就少一点。容量越大,越背得下。
2.3 去重(代码 01 第 4 部分)
既然重复是记忆的主要驱动,最直接的办法是去重:把重复的句子只留一份(Lee et al., 2022;Kandpal et al., 2022 发现去重能显著降低被提取的风险)。我们把训练集去重后重新训练一个大模型:
| 原来出现 r 次 | 金丝雀暴露度:原训练集 | 去重后 | 书 LCS:原训练集 | 去重后 |
|---|---|---|---|---|
| 1 | 12.5 | 5.5 | 4.1 | 4.8 |
| 8 | 16.6 | 6.9 | 6.6 | 6.5 |
| 64 | 16.6 | 5.2 | 32.0 | 4.4 |
去重后没有一条金丝雀能被直接提取,背下来的书也都不见了。有一个我们没预料到的结果:原来就只出现一次的金丝雀,去重后也记得更少了(12.5 → 5.5 比特)。我们的猜测(没有验证)是:原训练集里大量重复的金丝雀让模型练出了”u0xx 用户后面跟着一个固定的编号”这种查找方式,这个本领也帮它记住了只出现一次的那些。
去重的局限也很清楚:只出现一次的东西仍然会被部分记住(5.5 比特 > 对照的 1–2 比特);它只能去掉完全相同或几乎相同的副本,同一段内容换个格式出现两次就看不出来。
2.4 怎样修:slides 的方案和”可证明的保护”(代码 02)
slides(来自 Henderson et al.)把缓解方法分成两类:
- 训练时:过滤数据(不用受保护的内容)、RLHF(教模型拒绝逐字复制的请求)、差分隐私训练(限制任何一条数据对模型的影响);
- 部署时:过滤输出(检测并拦截和受保护内容太像的输出)、实例归因(instance attribution,指出输出受哪些训练数据影响)。
slides 紧接着说”缓解版权侵权可能很难”,用的是论文里的一个例子:用 2023 年 3 月版本的 GPT-4 测试,直接请求一本书的下一段时,模型只输出了几个词就停下了(输出过滤起了作用);但当请求里加上”把某些字母换成数字”这类改变输出格式的要求时,模型输出了大约三章内容。输出过滤看的是”输出长什么样”,换一种表面形式就可能绕过。
可证明的保护:近访问自由。 Vyas, Kakade & Barak (2023) 换了一个思路:不去判断”输出像不像”,而是保证模型的行为和一个从没见过这件作品的模型差不多。
定义(k-近访问自由,k-NAF)。 设 是受版权保护的作品的集合,对每个 , 是一个训练时没有访问 C 的模型。如果对每个提示 和每个 ,都有 ,就说模型 是 -近访问自由的。
取 为最大散度 时,立刻得到:模型生成”和 C 实质相似”的输出(事件 )的概率
也就是说,不管”实质相似”怎样定义,模型生成侵权内容的概率至多是”一个从没见过它的模型偶然写出它”的 倍。
怎样造出这样的模型? 论文的 CP-Δ 算法:把训练数据分成两份不相交的 、,各训练一个模型 、。每件作品至多在一份里(如果它有重复,去重后放进同一份),所以总有一个模型没见过它——它就是 。然后输出
因为 对两个模型都成立,所以 和每一个 的最大散度都不超过 。另一个版本 对 KL 散度给出保证:。
02 按这个构造训练了两个大模型(偶数号的金丝雀和书只给 ,奇数号只给 ),在全部 个编号上精确计算:
| 出现 r 次 | 见过它的模型 | 安全模型 | CP-k:min | CP-KL:√ | 保证值 k(比特) |
|---|---|---|---|---|---|
| 1 | 46 / 1/8 | 46443 / 0/8 | 3337 / 0/8 | 51 / 1/8 | 1.3 – 5.6 |
| 16 | 1 / 8/8 | 37776 / 0/8 | 394 / 0/8 | 1 / 8/8 | 5.5 – 7.0 |
| 64 | 1 / 8/8 | 58545 / 0/8 | 355 / 0/8 | 1 / 8/8 | 6.2 – 7.4 |
(每格是”真秘密排名的中位数 / 能直接提取的条数”。)几个观察:
- min 版本有效:被一方逐字背下的秘密,合成以后排到了几百名,没有一条能被直接提取;保证 在每一条上都成立。
- 保证会变弱:见过它的模型几乎把全部概率都给了秘密,两个模型”意见不合”, 很小, 达到 6–7 比特——合成模型说出秘密的概率至多是安全模型的约 100 倍。保证仍然成立,只是不那么强了。
- √ 版本挡不住逐字记忆:几何平均里,被一方背下的秘密仍然拿到可观的概率(r ≥ 16 时 8/8 都排第 1)。KL 的保证是”平均意义上”的,管不住单个输出。
- 没被背下的内容也会被改变:对普通用户(编号本来就随机), 在 0.7–1.5 比特,合成分布和 的总变差距离 0.23–0.41——两个模型各自对自己见过的随机编号有一点偏好,合成把这些偏好也削平了。
02 第 3 部分把同样的 min 合成逐 token 地用在续写书上(本讲义的简化,论文的保证针对整段输出,逐 token 的约束不能直接累加成整段的保证):r = 64 的书,单个模型逐字背出(LCS 32),合成后降到 12.6——仍然明显高于没见过的书的 5.1,没有完全消除。有趣的是,在没见过的文本上,合成模型的困惑度(5.79)反而比两个单独的模型(6.21、6.14)都低:逐 token 取 min 再归一化有点像”集成”,削掉了各自过度自信的地方。
现实中的困难也很明显:要先知道哪些内容受保护、把数据切开、训练多份模型。这正是 slides 那句”缓解版权侵权可能很难”。
3. 补充:记忆的另一面——隐私、成员推断、测试集污染
同一个”记忆”机制还带来另外两个问题。
隐私。 训练数据里的个人信息(电话、邮箱、编号)和版权内容一样会被记住、被提取。Carlini et al. (2021) 从 GPT-2 里提取出了训练数据中的个人联系方式等内容,其中一些在整个训练集里只出现在很少几个文档里。§2.2 的金丝雀实验就是这个问题的缩小版:只出现一次的秘密,大模型已经排到前 17 名左右。
成员推断(membership inference)。 不用让模型说出秘密,只看模型给一段文本的概率,能不能判断它在不在训练集里?01 第 3 部分对大模型做了这个测试:成员是在训练集里出现过 r 次的书,非成员是 48 本从没见过的书。
| 成员出现 r 次 | AUC:平均对数概率 | AUC:Min-20% 对数概率 |
|---|---|---|
| 1 | 0.70 | 0.72 |
| 2 | 0.87 | 0.92 |
| 4 | 0.99 | 1.00 |
| 8 | 1.00 | 0.99 |
(AUC = 随机取一本成员书和一本非成员书,成员得分更高的概率;0.5 = 分不开。)Min-K% Prob(Shi et al., 2024)只看一段文本里最”意外”的那 k% 个词的平均对数概率:没见过的文本里总有几个低概率的词,见过的文本连这些词也被记住了。在我们的 4 个 r 里,它有 3 个比平均对数概率略好(每组只有 8 本成员书,差别在噪声范围内)。
测试集污染(contamination)。 同样的方法可以用来检查”基准测试的题目是不是混进了训练数据”:被污染的题目,模型给的概率会异常地高。这对评估很重要——如果测试题出现在训练数据里,分数测的就是记忆而不是能力。真实的预训练语料从整个网络抓取,而很多基准测试的题目也公开在网上,所以污染很难完全避免;常见的做法是按 n-gram 重合度把测试题从训练数据里去掉,并在报告里说明。
4. 对抗攻击:安全训练为什么会被绕过 · Adversarial attacks(只讲原理和防御)
4.1 是什么意思
经过安全训练(第 11、12 讲的 RLHF)的模型会拒绝有害的请求。对抗攻击指的是精心构造的输入,让模型绕过这种拒绝。slides 讨论了两篇论文,代表两类攻击:
- 基于优化的攻击(Zou et al., 2023):自动搜索一段附加在请求后面的”后缀”,让模型以肯定的方式开始回答(而不是拒绝)。
- 手工构造的攻击(Wei, Haghtalab & Steinhardt, 2023):利用安全训练的两种失败模式(§4.3)设计的提示。
本节只讲原理和防御,不给出任何攻击提示的写法。
4.2 回忆”学着写提示”:同一套工具
slides 在这里回忆了第 11 讲:学习更好的提示有三种办法——
- 改写提示(paraphrasing):用一个改写模型生成很多版本的提示,挑效果最好的;
- 基于梯度的搜索:用优化去搜索一个离散的提示,让期望的输出概率最大;
- 提示微调(prompt tuning):直接优化输入的嵌入向量,不必对应真实的词。
Zou et al. 的攻击就是第 2 种办法换了一个目标:期望的输出不再是”任务的正确答案”,而是”一个不拒绝的回答的开头”。搜索在离散的 token 上进行(梯度告诉你”换成哪些词可能让目标概率变大”,再实际试一试挑最好的),并且同时在多个请求、多个模型上优化,让找到的后缀尽量通用。他们报告:在开源模型上成功率很高(例如 Vicuna-7B 上,单个请求的成功率 99%;LLaMA-2-7B-Chat 上 56%);而且在开源模型上找到的后缀能迁移到当时的闭源商业模型上。这类后缀往往看起来像一串无意义的符号。
这件事的教训比具体的攻击更重要:让模型”有用”的优化工具,同样可以被用来让它”有害”;只要模型是一个可以被查询的概率分布,就总有人可以搜索它的输入空间。
4.3 为什么会发生:两种失败模式
Wei et al. 把安全训练的失败归为两种:
- 目标冲突(competing objectives):模型同时被训练成”有用”(遵循指令、完成任务)和”无害”(拒绝有害请求)。当一个请求被构造成让这两个目标互相冲突时(例如把有害请求包装成一个必须完成的任务的一部分),预训练和指令遵循的目标可能压过安全目标。
- 泛化不匹配(mismatched generalization):预训练让模型具备了很广的能力(例如读懂各种编码、少见的语言),而安全训练的数据只覆盖了其中一小部分。一个用安全训练没见过的形式(例如某种编码)表达的请求,模型能读懂,但安全行为没有泛化过去。
slides 引用了论文里的一个观察:同样一个用编码表达的请求,较弱的模型读不懂(于是也不会产生有害内容),更强的模型读懂了,却没有拒绝——能力越强,泛化不匹配的面越大。
4.4 怎样修
- 安全机制要和能力相当:Wei et al. 提出”安全—能力对等”(safety–capability parity)——安全机制应该和底层模型一样精巧,否则攻击会利用模型那些安全机制察觉不到的能力。他们也指出,单靠扩大规模解决不了目标冲突(那是训练目标本身的问题),还可能扩大泛化不匹配。
- 输入 / 输出过滤:用另一个分类器检查输入和输出。针对优化出来的后缀,一个简单而有效的基线是困惑度过滤:这类后缀在普通语言模型看来概率极低(Jain et al., 2023 讨论了困惑度过滤、改写输入、重新分词等基线防御,以及它们各自能被怎样的适应性攻击绕过)。
- 对抗训练:把发现的攻击加入安全训练的数据。代价是成本高,而且总是在追赶新的攻击。
- 红队测试(red teaming):在部署前系统地寻找失败案例(第 11 讲)。
slides 最后提醒了一个”军备竞赛”的趋势:Wei et al. 预计模型越强,越能被用来生成绕过安全机制的攻击——他们自己的一些攻击就有一部分是用 LLM 自动生成的。
5. 幻觉 · Hallucinations(代码 03)
5.1 是什么意思
slides 引用 GPT-4 技术报告的定义:模型倾向于”产生无意义的、或者相对于某些来源不真实的内容”;并且模型越可信,幻觉越危险——用户会因为它在熟悉的领域表现好而过度信任它。
Huang et al. (2023) 的综述把幻觉分成两大类(大致对应 OpenAI 所说的”开放域”和”封闭域”幻觉):
- 事实性幻觉(factuality):和世界上可验证的事实不符。又分为事实不一致(答案和事实矛盾,例如把登月第一人说错)和事实捏造(编造根本不存在的东西,例如编出一段子虚乌有的”历史起源”)。
- 忠实性幻觉(faithfulness):和用户的输入或上下文不符。又分为指令不一致(让它翻译,它却回答了问题)、上下文不一致(摘要和原文矛盾)、逻辑不一致(推理步骤前后矛盾)。
5.2 为什么发生
slides 按综述列了数据方面的原因:
- 错误信息和偏见:训练数据里本来就有错(“模仿性错误”);重复的内容让模型过度偏向某些说法;
- 知识的边界:领域知识不足、知识过时(训练数据的截止日期之后的事);
- 对数据的利用不好:知识捷径——模型靠共现而不是真正的事实回答(例如因为某个大城市和一个国家名经常一起出现,就把它当成首都);知识召回失败——长尾的知识(训练数据里很少出现)、需要多步推理的知识。
以及其他原因:Transformer 架构本身的局限、上下文不够或注意力没用好、监督微调时的错位、采样的随机性。
5.3 统计上的必然,和评测的激励(代码 03 第 1、2 部分)
Kalai et al. (2025) 从统计的角度给了一个更尖锐的论证。考虑”任意事实”(例如某个人的生日——没有规律可学,只能记):
- 训练数据里只出现过一次的事实,模型很难可靠地学会;
- 定义单例率 sr = 只出现一次的提示个数 ÷ 训练样本数 N。它正是图灵的”缺失质量”估计:再抽一次,抽到一个”从没见过的东西”的概率约等于 sr;
- 定理:预训练后,模型在这类事实上的错误率至少约等于单例率(减去一个和校准误差、样本数有关的小项)。论文的例子:“如果 20% 的生日事实在预训练数据里只出现一次,就应该预期基础模型在至少 20% 的生日事实上产生幻觉。”
03 造了一个这样的世界:1000 个人,各住在 20 个城市之一(随机分配,没有规律);知名度服从齐普夫分布,训练语料是按知名度独立抽 3000 次的”某人住在某城市”。训练一个 26 万参数的小模型以后闭卷提问:
| 在训练语料里出现 | 人数 | 被问到的概率(µ 之和) | 准确率 | 平均置信度 |
|---|---|---|---|---|
| 0 次(没见过) | 409 | 0.101 | 0.05 | 0.50 |
| 1 次(单例) | 241 | 0.074 | 0.22 | 0.50 |
| 2–3 次 | 204 | 0.108 | 0.65 | 0.63 |
| 4–9 次 | 104 | 0.148 | 0.95 | 0.86 |
| ≥ 10 次 | 42 | 0.569 | 1.00 | 0.98 |
单例率 sr = 0.080(真实的缺失质量是 0.101)。按知名度抽一个人来问,模型答错的概率是 0.196 ≥ 0.080,和下界一致。更值得注意的是”没见过的人”那一行:模型照样给出一个城市,平均置信度 0.50,准确率却只有 0.05。它从没见过”闭卷时说不知道”的例子——训练语料里每个问题后面都跟着一个城市——所以”给出一个城市”就是它学到的唯一行为。这不是 bug,而是最小化交叉熵的直接后果:对训练分布来说,“总是给一个答案”就是最好的模仿。
置信度能用吗? 按置信度分档看准确率(校准):只有 [0.9, 1.0] 那一档基本校准(置信度 0.96,准确率 0.99);其余各档都过度自信,例如 [0.3, 0.5) 那一档置信度 0.40、准确率只有 0.15。尽管如此,置信度仍然能把”知道的”和”不知道的”大致分开。
评测在奖励瞎猜。 Kalai et al. 的第二个论点是社会性的:大多数排行榜按”对 = 1、错或不知道 = 0”打分,在这种二元评分下,说”不知道”永远不如瞎猜一个——就像考试时选择题不倒扣分,学生就会全部填上。只要评测这样打分,训练出来的模型就会被优化成”永远给一个答案”。他们建议在每道题的说明里写明置信度目标:“只有把握超过 t 时才回答:答对得 1 分,答错扣 t/(1−t) 分,不知道得 0 分。“这时,置信度校准的模型的最优策略正是”置信度 > t 就答”。
03 第 2 部分用 1000 个人做了一个”长尾评测”:
| 评分规则 | 答错扣几分 | 总是回答 | 置信度 > t 才回答 | 回答了几题 |
|---|---|---|---|---|
| t = 0(二元评分) | 0 | +0.348 | +0.348 | 1000 |
| t = 0.5 | 1 | −0.304 | +0.007 | 567 |
| t = 0.75 | 3 | −1.608 | +0.111 | 247 |
| t = 0.9 | 9 | −5.520 | +0.141 | 151 |
二元评分下拒答没有任何好处;一旦答错要扣分,“只答有把握的”就远好于”总是回答”。
5.4 怎样修(代码 03 第 3 部分)
RLHF。 slides 引用 GPT-4 技术报告:对于开放域的幻觉,他们收集了被用户标记为不真实的 ChatGPT 数据,构造比较数据训练奖励模型;对于封闭域的幻觉,用 GPT-4 自己生成合成数据:让模型列出回答里的幻觉,如果有就让它改写,再检查,重复直到没有幻觉,然后把(原回答,改写后的回答)作为比较对放进奖励模型的数据。报告说这些缓解让 GPT-4 在 TruthfulQA 上的准确率从早期版本的约 30% 提高到了约 60%。(slides 还提醒:RLHF 也让模型在某些情况下过度谨慎,拒绝了无害的请求。)
检索增强生成(RAG,Lewis et al., 2020)。 先用一个检索器从文档库里找出相关的文档,再让生成模型以文档为条件回答——把”记在参数里的知识”换成”读到的知识”,后者可以随时更新、可以追溯来源。
03 的模型在训练时还见过 28 万条”带文档的问答”:上下文里两篇文档(一篇是答案、一篇是干扰),问的是一群”读者”——他们的城市每次随机,只能从文档里抄。于是模型学会了”按名字在文档里找到对的那一篇、把城市抄出来”(第 11 讲的归纳头;在只有检索问答的预实验里,这个本领大约在第 4500 步突然出现,之前一直停在”随便抄一篇”的 0.5)。然后用它去问前面那 1000 个人:
| 在训练语料里出现 | 正确文档 + 干扰:答对 | 两篇都无关:答对 | 两篇都无关:照抄文档 | 文档写错了:照文档答 |
|---|---|---|---|---|
| 0 次(没见过) | 0.84 | 0.05 | 0.91 | 0.97 |
| 1 次 | 0.85 | 0.06 | 0.93 | 0.98 |
| ≥ 10 次 | 0.93 | 0.12 | 0.88 | 0.93 |
- RAG 把知识的边界往外推了:检索到对的文档时,没见过的人也能答对(0.84,闭卷时只是瞎猜)。
- 但这个模型无条件地相信上下文:检索错了(两篇文档都是别人的),连出现 ≥ 10 次、闭卷能 100% 答对的人,也只有 0.12 答对,0.88 照抄了别人的城市;文档写错时,0.93 照着错的文档回答。
- 原因在训练数据:它见过的每一个”带文档的问题”,答案都在文档里,“抄文档”总是对的。它从没机会学会”文档和问题对不上时,用自己的记忆,或者说不知道”。真实模型在”上下文和记忆冲突”时怎样选择,同样取决于训练数据——不同的研究在不同的模型上得到过相反的结论:有的模型固执地相信自己的参数记忆,有的很容易被上下文里看似可信的证据说服。所以 RAG 系统的质量很大程度上取决于检索的质量,以及模型是否被训练过”识别无关或错误的文档”。
其他方法(slides 列出):整理事实性的数据集、去重(减少重复带来的偏向)、知识编辑(直接修改模型里的某条事实)、思维链提示、验证链(chain-of-verification)解码——先生成回答,再生成一组核查问题、独立回答它们,最后根据核查结果修改回答。
6. 偏见与歧视 · Bias and discrimination(代码 04)
6.1 是什么意思
slides 引用 Gallegos et al. (2024) 的定义:社会群体是共享某种身份特征的人群子集(这种特征可以是固定的、情境性的或社会建构的);受保护属性是反歧视法律保护的特征(如年龄、肤色、残疾、性别认同、国籍、种族、宗教、性别、性取向);社会偏见泛指不同社会群体之间由历史和结构性的权力不对称造成的差别对待或差别结果。在 NLP 里,它带来两类伤害:
- 表征性伤害(representational harms):贬损性的语言、不同群体上的系统性能差异(例如对某种方言的理解更差)、抹除(忽视某个群体的存在和经历)、排他性的规范(把主流群体当作默认)、错误表征、刻板印象、毒性;
- 分配性伤害(allocational harms):资源或机会分配上的差别——直接歧视(明确基于群体身份区别对待)和间接歧视(表面中立的规则对某些群体造成不成比例的影响,例如用于招聘筛选或医疗决策时)。
slides 还展示了 Huang et al. 综述里的一个例子:偏见也是幻觉的一种来源——模型会根据名字里隐含的群体身份”脑补”出原文里没有的信息。
6.2 一个例子:Kotek et al. (2023)
slides 展示的研究用一种 2×2 的设计:每个句子里有两个职业名词和一个代词,问”代词指的是谁”。句子本身是有歧义的(语法上两个职业都可以),然后把代词换成另一个性别再问一次。他们在四个当时的 LLM 上发现:模型选择和刻板印象一致的职业的可能性是另一种的 3–6 倍;模型的选择更接近人们的刻板认知,而不是官方的职业统计,并且超过了两者里的偏斜程度;模型在 95% 的题目上忽略了句子的歧义(明确提示后才承认);模型给出的解释常常和事实不符,像是在为有偏见的选择找理由。
6.3 复现与放大(代码 04 第 1 部分)
04 用抽象的群体”甲""乙”和 8 种抽象的职业 job0 … job7(比例是随手设定的,不对应任何真实人群)。训练数据里,“job4 的人 90% 来自甲组”之类的比例从 0.1 到 0.9 不等。训练以后问”the jobK is from ___”:
| 职业 | 训练数据里的实际比例 | 模型的概率 | 采样 τ = 1 | 采样 τ = 0.5 | 贪心 |
|---|---|---|---|---|---|
| job0 | 0.48 | 0.50 | 0.50 | 0.46 | 0 |
| job1 | 0.58 | 0.57 | 0.58 | 0.62 | 1 |
| job4 | 0.89 | 0.90 | 0.89 | 0.98 | 1 |
| job7 | 0.11 | 0.13 | 0.14 | 0.03 | 0 |
| 离 0.5 的平均距离(8 种职业) | 0.222 | 0.211 | 0.210 | 0.305 | 0.500 |
- 复现:模型的概率和训练数据的实际比例最多差 0.08。最大似然训练的目标就是复现数据的分布——数据里的偏斜原封不动地变成了模型的偏斜。
- 放大:τ = 1 的采样基本保持比例;τ = 0.5 把每个比例推向 0 或 1;贪心解码只会说多数那一组——一个 58/42 的职业,贪心生成的文本里是 100/0。Zhao et al. (2017) 把模型输出比训练数据更偏斜的现象叫偏见放大(bias amplification)。Kotek et al. 观察到的”超过统计数据的偏斜”,在机制上可以有多种来源,“在多个合理选项里总挑最可能的那个”就是其中最简单的一种。
6.4 度量与缓解(代码 04 第 2、3 部分)
三类度量。 slides 列出了 Gallegos et al. 整理的各种度量公式,大致分三类:基于嵌入的(比较词向量或上下文向量之间的距离)、基于概率的(比较模型给不同群体版本的句子的概率)、基于生成文本的(统计生成的文本里的分布)。它们一致吗?
| 概率度量 | 嵌入度量 cos(E_job, E_甲 − E_乙) | 投影掉群体方向后:嵌入度量 | 投影后:概率度量 | |
|---|---|---|---|---|
| 和数据比例的相关系数 | +0.99 | −0.31 | 0(按构造) | +0.99 |
基于概率的度量和数据几乎完全一致;基于嵌入的度量和数据几乎无关——模型并不是靠”职业的嵌入靠近哪个群体的嵌入”来存这条关联的,它在后面的层里另有存法。把群体方向从职业嵌入里投影掉(“硬去偏”,Bolukbasi et al., 2016 的思路)以后,嵌入度量变成了 0,模型的行为却几乎不变。Gonen & Goldberg (2019) 在词向量上把这类现象叫”给猪涂口红”:让某个度量变好看,不等于去掉了偏见。Gallegos et al. 的综述也指出,基于嵌入的度量和下游行为的相关性很弱——度量偏见时,要度量你关心的那个行为。
缓解方法(slides 按 Gallegos et al. 的分类):训练前(数据增强、过滤、重新加权)、训练中(修改损失函数、加正则)、推理时(修改解码)、推理后(改写输出)。04 试了训练前最常用的反事实数据增强(CDA):把每句话里的甲乙互换再加一份。
| 训练数据 | 职业之间 p(甲 | jobK) 的差别 | p(L1 | 甲 people speak) |
|---|---|---|
| 原始数据 | 0.13 – 0.90 | 1.00 |
| CDA:全部互换 | 0.49 – 0.49 | 0.45 |
| CDA:只换职业句 | 0.44 – 0.44 | 1.00 |
两种 CDA 都消除了职业之间的差别(只换职业句的那个模型对所有职业都是 0.44,有一个和职业无关的整体偏移,我们推测是优化没有完全收敛留下的)。但这个世界里还有一条本来就正确的群体知识:“甲组说 L1”。全部互换把它也当成偏见”平衡”掉了(1.00 → 0.45);只换职业句保住了它——前提是有人先决定哪些群体关联是不应该有的偏见、哪些是应该保留的事实。这个决定不是技术问题,没法交给去偏算法自动做。§1 里 Gemini 的事件是同一个教训的真实版本:一个不区分场景的”多样化”调整,在本来就不该多样化的场景里制造了新的错误。
7. 环境影响 · Environmental impact(代码 05)
7.1 这些数字是怎么算出来的
slides 先回忆了训练 Llama 系列花了多少,然后问”好吧,这些数字到底意味着什么?“。账本身很简单:
PUE(电能使用效率)= 数据中心总耗电 ÷ IT 设备耗电,≥ 1(冷却、供电损耗)。05 第 1 部分用这个公式复算 Llama 1 论文的表 15(A100 400 W、PUE 1.1、美国平均碳强度 0.385 kg/kWh),六行全部吻合到个位:LLaMA-65B 用了 1,022,362 GPU 小时,449 MWh,173 吨。论文正文的另一个数字也能对上:65B 模型在 2048 块 A100 上每块每秒处理约 380 个 token,1.4T token 需要约 21 天。
Llama 2(论文表 2)和 Llama 3.1(模型卡:39.3M H100 小时、700 W、按电网位置计算 11,390 吨)公布的数字,反推出的”隐含碳强度”(公布的吨 ÷ GPU 小时 × 功率)都在 0.41–0.42 kg/kWh。11,390 吨约等于 2,500 辆汽车开一年(按美国环保署的典型乘用车每年约 4.6 吨);Llama 3.1 405B 一个模型的 GPU 小时是 LLaMA-65B 的 30 倍。
同一个数字的两种口径。 Llama 3.1 的模型卡同时写了”按市场计算的排放为 0 吨”:公司购买了和用电量相当的可再生能源。两种口径都是真的,回答的是不同的问题——电网上实际发生了什么,和公司在账面上抵消了什么。读这类数字时要先看口径。
7.2 误差棒从哪来
slides 展示了 Dodge et al. (2022) 的图:11 个模型(从微调 BERT 到部分训练一个 60 亿参数的语言模型)在不同地区、不同时间训练的排放,纵轴是对数坐标,误差棒很大。“这些误差棒是什么造成的?“——电网的碳强度。同样的计算,在不同地区、一天中的不同时刻,排放可以差好几倍。slides 还展示了 Google 各地数据中心的无碳能源比例:有的地区接近 100%,有的不到 20%,同一个地区白天和夜里也不同。
05 用 Llama 1 论文里的数字说明这一点:论文为了公平比较,把 OPT-175B 和 BLOOM-175B 也按美国平均碳强度算(137、183 吨);而论文同时指出,BLOOM 实际所在电网的碳强度是 0.057 kg/kWh,按它算只有 27 吨;OPT 所在电网 0.231,按它算是 82 吨。同样的能耗,换一个电网,排放差 4–7 倍。
7.3 怎样减少
选更高效的模型、硬件、地点。 slides 引用 Patterson et al. (2022) 对比 GPT-3 和 GLaM:
| GPT-3(2020,V100) | GLaM(2021,TPUv4) | GLaM / GPT-3 | |
|---|---|---|---|
| 参数(十亿) | 175 | 1162 | 6.6 |
| 加速器·年 | 405 | 144 | 0.36 |
| 能耗(MWh) | 1287 | 456 | 0.35 |
| 排放(吨 CO₂e) | 552 | 40 | 0.07 |
GLaM 是混合专家模型(第 16 讲):总参数是 GPT-3 的约 7 倍,但每个 token 只激活约 8%。能耗少了 2.8 倍,排放少了约 14 倍——多出来的那部分来自更干净的电力(隐含碳强度 0.429 → 0.088)。Patterson et al. 把这些因素总结成”4M”:模型(稀疏模型)、机器(专用加速器)、机械化(PUE 低的云数据中心)、地图(选电网干净的地点),并估计四者合起来能把训练的能耗降低约 100 倍、排放降低约 1000 倍。
选时间。 Dodge et al. 提出两种调度:灵活开始(允许推迟开始最多 N 小时,挑作业期间排放最小的开始时间)和暂停-继续(在 N + 作业时长的窗口里,只在碳强度最低的时段运行)。05 在一条合成的每小时碳强度曲线(白天太阳能多、碳强度低,再加上随机的”天气”)上模拟:
| 作业长度 | 灵活开始 ≤ 24h | 暂停-继续 +24h | 暂停-继续:时长翻倍 |
|---|---|---|---|
| 1 小时 | 48.7% | 48.7% | 5.0% |
| 1 天 | 9.0% | 27.1% | 27.1% |
| 7 天 | 1.3% | 7.4% | 27.9% |
| 30 天 | 0.3% | 2.2% | 28.4% |
(每格是比”立刻开始、不暂停”减少的排放。1 小时作业的”时长翻倍”只允许多等 1 小时,所以省得少。)短作业挑一挑开始时间就能省很多;长作业横跨很多个昼夜,推迟开始几乎没用;暂停-继续对长作业只在允许大幅延长时有用,代价是晚很久才出结果。Dodge et al. 的摘要的结论是:在他们比较的策略里,选一个合适的地区减排效果最大。对大模型的预训练,“在哪里训练”比”什么时候训练”重要得多。
8. 补充:水印——怎样识别 AI 生成的文本 · Watermarking(代码 06)
slides 没有讲水印,但它和本讲的几个风险都有关:版权(输出从哪来)、错误信息(这段文本是不是机器写的)、学术诚信。“事后判断一段文本是不是 AI 写的”(训练一个分类器)很不可靠;水印换了一个思路:生成时就在文本里嵌入一个统计信号,检测时只要知道密钥就能验证。
8.1 绿名单水印
Kirchenbauer et al. (2023) 的做法:
- 生成每个 token 之前,用上一个 token和一个密钥做种子,把词表随机分成”绿名单”(占比 γ)和”红名单”;
- 给绿名单里的每个 token 的 logit 加上 δ,再照常采样——绿词变得更可能,但不是必须;
- 检测时不需要模型:对一段 T 个 token 的文本,用同样的密钥重算每个位置的绿名单,数出绿词个数 。没有水印时,每个 token 是绿的概率是 γ,绿词个数 ~ 二项分布(T, γ),于是
z 很大(例如 > 4,单侧 p ≈ 3×10⁻⁵)就判定有水印。
06 用第 2 讲训练好的农场语言 GPT 来做(直接读第 2 讲的缓存)。这门语言的真实分布是已知的(第 1、3 讲),所以水印的代价可以精确度量。
8.2 检测力和代价
γ = 0.25 时,每篇文档由 k 句组成(每句约 11.5 个 token):
| 文本 | 1 句:平均 z / 判为有水印 | 4 句 | 16 句 | 64 句 |
|---|---|---|---|---|
| 人写的(真实分布的样本) | −0.5 / 0% | −0.9 / 0% | −1.8 / 0% | −3.5 / 0% |
| 模型,δ = 2 | +0.7 / 0% | +1.4 / 3% | +2.8 / 20% | +5.7 / 100% |
| 模型,δ = 4 | +1.4 / 1% | +2.9 / 18% | +5.7 / 92% | +11.5 / 100% |
δ 越大、文本越长越容易检测:绿词比例的偏离是固定的,噪声按 缩小,所以 z 大致随 增长。
代价。 每个 token 在真实分布下的平均负对数概率几乎不变(δ = 0 → 4:0.899 → 0.879 纳特),不合语法的句子从 4.2% 增加到 10.4%。真正的扭曲在”选哪一个”上:真实分布里 16 种主语各占 1/16,人写的文本和真实分布的总变差距离是 0.050(抽样误差),δ = 4 时变成 0.648——“the”后面的绿名单是固定的,绿名单里的主语被系统性地多写了。困惑度这类逐 token 的指标看不出这种扭曲,要看整个分布。
低熵的位置带不了水印。 农场语言里 45% 的位置几乎没有选择(熵 < 0.1 比特:动词必须和主语一致、“at”后面只能是”night”),无论 δ 多大都只能选那个唯一合理的词;水印的证据全部来自高熵的位置(熵 ≥ 2 比特时,δ = 2 下的绿词比例 0.68,远高于 γ = 0.25)。所以水印对代码、简短的事实性回答这类”答案几乎唯一”的文本很难起作用。
8.3 零假设的问题,以及被抹掉
z 检验假设”没有水印时每个 token 独立地以 γ 的概率是绿的”。上表里人写的文本,平均 z 随长度变成 −3.5——明显不是均值 0 的标准正态。原因是农场语言只有 56 个词,“the → 动物""动词 → 宾语”这类词对在一篇文档里重复几十次:它们是绿是红是一起决定的,等于把同一枚硬币的结果数了几十遍。换几个密钥看,问题更明显:8 个密钥里有 2 个会把相当一部分人写的文档误判为”有水印”(16 篇里 4 篇、10 篇)。只数不重复的词对以后,人写的文本的平均 z 回到 0 附近,8 个密钥都不再误判;代价是计入的 token 少了很多,水印文本的 z 也从 +5.65 降到 +2.40。真实的实现同样要处理重复的 n-gram。
改写。 随机替换 10% / 20% / 40% 的词,δ = 4、16 句的文档被检出的比例从 92% 降到 64% / 20% / 2%。随机改词本身就把文本改坏了;更聪明的改写(让另一个模型换个说法)能更干净地抹掉水印——这是水印方法的主要弱点,Kirchenbauer et al. 的后续工作专门研究了改写攻击下需要多长的文本才能可靠检测。
9. 小结 · Summary
- 分析风险的框架:是什么意思、影响谁、为什么发生、怎样修。修正常常带来新问题(Gemini 的例子、§6.4 的 CDA)。
- 版权与记忆:最小化训练损失会让模型背下重复出现的内容;记忆随重复次数和模型大小增长。度量要和”没见过的内容”的基线比。去重有用但不彻底;近访问自由用两个不相交数据上的模型给出可证明的保证,代价是保证在模型分歧大时变弱。
- 隐私、成员推断、污染:同一个记忆机制让秘密可被提取、让”是否在训练集里”可被推断,也让测试集污染虚高分数。
- 对抗攻击:优化提示的工具可以反过来用;安全训练败在目标冲突和泛化不匹配;防御需要和能力相当的安全机制、过滤、对抗训练和红队测试。
- 幻觉:只出现一次的事实很难学会,错误率至少约为单例率;模型从没学过说”不知道”;二元评分奖励瞎猜。RAG 把知识边界往外推,但模型可能无条件地相信检索到的内容。
- 偏见:最大似然复现数据里的偏斜,低温和贪心解码放大它;嵌入度量可能和行为无关;CDA 有效,但要先由人决定哪些关联是偏见、哪些是事实。
- 环境:排放 = GPU 小时 × 功率 × PUE × 碳强度;电网差 4–7 倍;稀疏模型、高效硬件和干净的地点比挑时间重要。
- 水印:生成时偏向绿名单、检测时数绿词;需要足够长、足够高熵的文本;低熵和重复会破坏 z 检验的前提;改写能削弱它。
10. 常见误区 · Common pitfalls
- “模型只学规律,不会背具体的句子。” 对重复出现、无规律可学的内容(秘密、书),背下它就是最小化损失的办法;大模型连只出现一次的秘密都能排到前几十名(§2.2)。
- “续写和原文有重合就说明抄袭了。” 没见过的书也有约 4–6 的 LCS——同一种文风本来就有重合,要和基线比(§2.2)。
- “去重以后就不会记住了。” 只出现一次的内容仍会被部分记住;去重只能去掉相同或几乎相同的副本(§2.3)。
- “输出过滤能挡住逐字复制。” 改变输出的表面形式(例如换字母)就可能绕过(§2.4)。
- “更强的模型更安全。” 能力越强,安全训练没覆盖到的”能理解的输入”越多(泛化不匹配,§4.3)。
- “幻觉是 bug,修好就没了。” 对没见过、只见过一次的事实,任何最小化交叉熵的模型都会犯错;而且二元评分在奖励它瞎猜(§5.3)。
- “有了 RAG 就不会幻觉了。” 检索错了、文档本身错了,模型可能照抄(§5.4)。
- “嵌入里看不出偏见,模型就没有偏见。” 嵌入度量可以和行为完全无关;投影掉群体方向不改变行为(§6.4)。
- “去偏越彻底越好。” 全部互换的 CDA 抹掉了一条本来正确的群体知识(§6.4)。
- “训练排放主要取决于模型大小。” 同样的能耗,电网不同差 4–7 倍;GLaM 的排放比 GPT-3 少 14 倍,大部分来自更干净的电力(§7)。
- “z > 4 时水印的误报率就是 3×10⁻⁵。” 前提是 token 之间独立;低熵、多重复的文本会让误报率完全失控(§8.3)。
11. 练习 · Exercises
练习 1(暴露度)。 候选空间有 个秘密。(a) 完全记住时暴露度是多少?(b) 秘密排在第 1000 名时呢?(c) 为什么”完全没记住”时暴露度的期望约是 比特,而不是 0?
参考答案
(a) 比特。(b) 比特。(c) 没记住时秘密的排名在 1 … N 上大致均匀,(用 )。直觉:排名的对数是凹函数,大部分秘密排得很靠后,但排得靠前的少数几个贡献了很大的暴露度。我们的对照组(r = 0)实测 1.1 和 2.1,8 条的平均有抽样波动。
练习 2(近访问自由)。 两个模型在 4 个候选输出上的概率是 、,输出 1 是只在 的训练数据里出现过的作品。(a) 计算 CP-k 的 min 合成分布和保证值 k。(b) 验证 。(c) 用 √ 合成呢?
参考答案
(a) ,,, 比特。(b) ,等号成立。注意 p(y₁) 反而很大——因为 把其他输出的概率压得太低了, 均匀分布也只给了 0.25。保证只是”不超过安全模型的 倍”,安全模型本身给它 0.25,所以这里保证很弱。(c) ,,。这个例子说明:候选空间很小时安全模型本来就会”偶然写出”受保护的内容,NAF 的保证在候选空间大(像 §2.4 的 个编号)时才有意义。
练习 3(单例率)。 训练语料抽了 N = 10,000 次,其中只出现一次的人有 1,500 个。(a) 单例率是多少?(b) 按 Kalai et al. 的下界,按同样的分布提问时,模型的错误率至少约是多少?(c) 如果把训练语料扩大到 100,000 次,你预计单例率会怎样变化?为什么这不能让幻觉消失?
参考答案
(a) sr = 1500/10000 = 0.15。(b) 约 15%(减去一个小的校准和样本数修正项)。(c) 对齐普夫这类长尾分布,样本越多,单例率越低(更多的人被见到不止一次),但下降得很慢;而且总有新的、更冷门的事实。更重要的是,真实世界的提问不按训练分布来——人们恰恰会问冷门的东西(§5.3 的长尾评测:所有人等概率被问到时,准确率只有 0.348)。
练习 4(置信度目标)。 证明:在”答对 +1、答错 −t/(1−t)、不答 0”的规则下,如果模型对一道题的正确概率是 c,那么”回答”的期望得分 > 0 当且仅当 c > t。
参考答案
期望得分 。它 > 0 ⇔ ⇔ ⇔ 。所以对一个校准的模型(置信度 = 正确概率),“置信度 > t 才回答”是最优策略。t = 0 时退化为二元评分:任何 c > 0 都应该回答。
练习 5(偏见放大)。 一种职业在训练数据里 70% 来自甲组,模型完美复现了这个比例。(a) 温度 τ 采样时,生成的文本里甲组占多少?写成 τ 的函数。(b) τ = 0.5 时是多少?(c) 贪心呢?
参考答案
(a) 。(b) 。(c) 1.0(τ → 0)。04 的 job2(数据 0.74、模型 0.82)τ = 0.5 采样得到 0.96,符合这个公式:。
练习 6(碳排放)。 一个模型用了 500,000 GPU 小时,GPU 功率 700 W,PUE 1.2。(a) 能耗多少 MWh?(b) 分别在碳强度 0.05、0.4 kg/kWh 的电网上训练,排放多少吨?(c) 约等于多少辆汽车开一年(每辆 4.6 吨)?
参考答案
(a) MWh。(b) 21 吨、168 吨。(c) 约 4.6 辆、36.5 辆。换个地点,差 8 倍。
练习 7(水印的长度)。 γ = 0.25,假设水印让每个高熵位置是绿词的概率变成 0.6,而一半的位置是低熵的(绿词概率仍是 γ)。要让期望的 z 达到 4,大约需要多少个 token?如果全部位置都是高熵的呢?
参考答案
平均绿词概率 。期望 ,令它 = 4,得 ,T ≈ 98。全部高熵时 ,,T ≈ 25。低熵文本需要长得多的文本才能检测。
12. 延伸阅读 · Further reading
- 版权与记忆:Henderson et al. (2023), Foundation Models and Fair Use;Karamolegkou et al. (2023);Vyas, Kakade & Barak (2023), On Provable Copyright Protection for Generative Models;Carlini et al. (2019), The Secret Sharer;Carlini et al. (2021), Extracting Training Data from Large Language Models;Carlini et al. (2023), Quantifying Memorization Across Neural Language Models;Lee et al. (2022), Deduplicating Training Data Makes Language Models Better;Kandpal, Wallace & Raffel (2022), Deduplicating Training Data Mitigates Privacy Risks in Language Models;Shi et al. (2024), Detecting Pretraining Data from Large Language Models。
- 对抗攻击与防御:Zou et al. (2023);Wei, Haghtalab & Steinhardt (2023);Jain et al. (2023), Baseline Defenses for Adversarial Attacks Against Aligned Language Models。
- 幻觉:Huang et al. (2023) 综述;OpenAI (2023), GPT-4 Technical Report(2.2 节和 3.1 节);Kalai et al. (2025), Why Language Models Hallucinate;Lewis et al. (2020), RAG;Dhuliawala et al. (2023), Chain-of-Verification。
- 偏见:Gallegos et al. (2024) 综述;Kotek et al. (2023);Zhao et al. (2017)(偏见放大);Bolukbasi et al. (2016);Gonen & Goldberg (2019), Lipstick on a Pig。
- 环境:Dodge et al. (2022);Patterson et al. (2022);Strubell, Ganesh & McCallum (2019), Energy and Policy Considerations for Deep Learning in NLP;各模型的论文和模型卡里的碳排放表。
- 水印:Kirchenbauer et al. (2023), A Watermark for Large Language Models;Kirchenbauer et al. (2024), On the Reliability of Watermarks for Large Language Models。
- 风险分类:MIT AI Risk Repository(airisk.mit.edu)。
13. 下一讲预告 · Next lecture
第 23 讲:代码生成与自主智能体。代码是生成式 AI 最成功的应用之一,一个关键原因是它可以被执行:程序对不对,跑一遍测试就知道——这让评估(pass@k)、训练(以测试结果为奖励)和推理(根据报错修改)都有了可靠的信号。我们会推导 pass@k 的无偏估计、看 BLEU 为什么不适合评估代码、在小模型上训练”填中间”(FIM),并搭一个在沙盒里执行代码、根据测试结果迭代的小智能体。