你想过一个问题吗:你随手发给AI的一段对话,后来去了哪里?

多数人以为,这段对话只存在于你和AI之间,用过即焚。但现实是,你的输入完全可能被记录、清洗、拼进训练集。更麻烦的是,模型不只是从中学习语法和知识——它可能把里面出现的手机号、身份证号、家庭住址原样背下来,然后在一个你从未见过的陌生人面前,被几句话套出去。
2023年,Google DeepMind等团队发布了一篇论文,演示了如何从 ChatGPT 中提取出真实存在的个人邮箱和手机号。他们发现,只要告诉模型某个电话号码的前几位,模型就可能把完整号码补全出来——这个号码不是模型编的,而是训练数据里真实出现的。来源:Extracting Training Data from ChatGPT
模型不是过拟合,是记忆——我第一次看到这个结果时,第一反应是“这不就是过度拟合吗”。但仔细一想,不对。过度拟合指模型在训练集上表现好、在测试集上差,是整体统计现象。而这里模型把某个具体样本完整复现出来,涉及的可能是在语料中只出现一两次的片段。
这背后的技术概念叫记忆(memorization),和泛化(generalization)是两回事。泛化是模型学会了规律,比如“号码是11位数字,以1开头”;记忆是模型记住了具体的值,比如“13800138000”。
| 维度 | 泛化 | 记忆 |
|---|---|---|
| 产出 | 模型根据上下文生成合理的、从未见过的新文本 | 模型原样复现训练集中出现过的文本 |
| 触发条件 | 大量类似样本,学到模式 | 样本出现次数多,或熵值高、难以预测 |
| 隐私风险 | 低 | 高 |
为什么模型能记住一个随机手机号?因为神经网络本质上是个压缩器。它把成千上万的样本压进参数里,对于出现次数多、或信息量极大的异常字符串,网络会专门分配参数去“保存”它们。这就像你背书时,押韵的句子容易记,但一串无规律的密钥可能也会因为特别奇怪而被记住。
怎么把记忆钓出来?最直接的方法叫前缀补全攻击(prefix attack)。给定一个和敏感数据相邻的前缀,让模型继续输出。例如给模型看“身份证号码是 ”,后面可能接的就是训练数据里的真实号码。
- 构造一个前缀,使其和目标文本在训练数据中常出现在一起。比如“手机号码是”。
- 让模型基于这个前缀做生成,保留若干个高概率候选。
- 对大量候选做筛选:如果某个候选看起来像完整个人信息(比如11位数字、18位身份证号),就进一步验证它是否真实存在。
我最早以为,模型只会记住那些被重复千百遍的常见信息,比如“床前明月光”。但读Carlini团队2021年的论文时,我彻底改观了。他们用GPT-2做实验,成功提取出上千条训练集中的真实文本,其中不少是只出现过一次的随机字符串。来源:Extracting Training Data from Large Language Models 这让我意识到:模型的记忆不是缓存,更像一种无法精确控制的肌肉记忆。
删除训练数据可行吗?既然模型会记,能不能在训练前把敏感数据全部删掉?想法很好,但有两个现实问题:第一,训练语料规模以TB计,做不到100%清洗干净;第二,很多敏感信息并不是以裸形式出现的,而是藏在上下文里。比如“我上次见到的号码是139……”——即使号码本身被删,模型仍可能从语境中推断出来。
去重能解决吗?一个常见的建议是去重:把训练数据里重复的片段删掉,模型就记不住了?但Carlini的工作恰恰发现,模型对只出现过一次的高熵字符串记忆得更深。因为高熵字符串无法从周围文本中预测,模型必须额外花费参数去“记住”它。去重能降低记忆重复数据的风险,但无法阻止模型记住一次性输入的敏感信息。
差分隐私能兜底吗?目前唯一能提供严格数学保证的防御是差分隐私(Differential Privacy)。原理是在训练时给梯度加噪声,使得任意一个训练样本的存在与否,对模型输出的影响都不超过一个可控阈值ε。这样,即使攻击者成功提取出某条记录,也无法确定它是否真的来自训练集——因为一个没看过这条数据的模型也可能生成它。
2016年,Abadi等人发表了《Deep Learning with Differential Privacy》,首次把差分隐私引入深度学习。但在当时,加噪声带来的精度损失非常明显。直到今天,大规模语言模型上的差分隐私训练仍然没有普及。来源
机器遗忘,听起来很美。另一种思路是训练结束后,如果发现模型记住了不该记的内容,就尝试删除那段“记忆”。这个想法很直接,但神经网络不是数据库,没有DELETE FROM weights WHERE… 的语法。目前主流做法是在权重空间做梯度上升,试图让模型对某个样本失去反应。但研究陆续表明,这类方法的可靠性有限——有时模型只是“假装忘记”,换一个提示词,记忆又回来了。来源:Machine Unlearning
法律与技术的鸿沟。GDPR赋予用户“被遗忘权”,要求系统删除个人数据。但当一个模型已经吸收了包含个人信息的样本,删除意味着什么?如果模型还在运行,它仍然可能复现那些信息;如果要把模型推倒重来,成本高到企业无法承受。这个沟壑,目前还没有桥。
模型知道哪些信息敏感吗?
不知道。模型内部没有“隐私”这个概念。它只是把手机号、身份证号当作可学习的模式来存储,敏感与否完全是人的价值判断。正因如此,任何针对敏感内容的规则都无法覆盖所有情况。
是不是只有小模型才会被提取?
大模型同样会被提取,只是成本更高、难度更大。更大的体积意味着更多的记忆容量,但预测时更精确的上下文也能更容易触发。不过大模型通常经过对齐(RLHF)训练,会主动拒绝补全个人信息。可一旦提示词被绕过,比如把手机号改成每两位中间插空格,或伪装成科幻小说中的设定,模型仍然可能“想起来”。
有没有可能在训练之后再补救?
目前没有可靠的“定向删除”。有些研究尝试对模型进行微调来消除特定记忆,但效果不稳定。后置过滤只能拦截已知格式,对编码、加密、拆分等形式无能为力。更实用的做法是把敏感数据从训练语料中隔离出去——比如用差分隐私训练,或者干脆不用公共爬虫数据。
回到开头问题:模型记住了你的手机号怎么办?答案很骨感——我们正处在一个模型会记忆、但人类还无法轻易擦除记忆的阶段。
所以,在技术真正成熟之前,别把真正的手机号、身份证号发给任何AI。这或许不是最优解,但现在最有效的防火墙,还是你自己。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/1983.html