成员推断只猜一条已知记录有没有参加训练。训练数据提取走得更远,攻击者想让模型交出具体内容。他起初甚至可以不知道训练集中有什么,只靠生成接口批量取样,再从大量输出里筛出疑似原文。

我查了两轮公开实验。2021 年的研究从 GPT-2 中找到了数百段逐字训练文本,其中有公开的姓名、电话号码和邮箱地址,也有 IRC 对话、代码与 128 位 UUID。部分序列在训练资料里只出现于一个文档。频繁重复会提高记忆机会,单次出现也没有天然豁免。

流畅生成里混着逐字记忆

语言模型会学习大量可复用的语言规律,也可能保存训练样本的具体片段。攻击者先让模型生成许多候选文本,再用困惑度、与较小模型的差异或网络检索等办法排序。罕见、格式固定又被模型高概率续写的片段更值得检查。研究人员随后回到已知训练语料核实,确认哪些输出确实来自训练数据。

这个核实步骤不能省。模型写出一个像电话号码的字符串,不等于它来自训练集;互联网上能搜到相同文本,也不等于模型必然在训练时见过那个页面。训练数据提取研究需要证明生成内容与真实训练样本的关系,普通接口测试往往拿不到完整训练集,只能报告发现了疑似泄露。

2023 年的后续工作把问题扩大到 Pythia、GPT-Neo、LLaMA、Falcon 和 ChatGPT。研究者把无需预先知道训练数据、可以通过查询高效取出的内容称为可提取记忆。对没有聊天式安全训练的模型,已有方法就能取得大量文本。面对经过聊天训练的 ChatGPT,他们设计了发散攻击,使模型偏离正常对话方式。论文报告训练文本出现率达到正常聊天状态的 150 倍。

这项结果说明行为限制和模型记忆要分开测。安全训练可以让模型平时少说某些内容,却没有把模型参数中的记忆自动删除。攻击方法变化以后,原有拒答样本仍然全绿,也可能漏掉新的生成路径。

上线前先管数据,再测接口

训练前应先去除重复内容,排除密钥、私人通信和不该进入训练的客户资料,并保存数据来源与版本。模型完成训练后,再用长尾文本、罕见格式和已知敏感样本做受控测试。发现原文时要记录生成条件、命中内容与影响范围,避免把一次偶然输出夸成任意资料都能取出。

接口侧可以限制异常批量查询,缩减不必要的逐字续写能力,并监测重复模式。这些措施负责减少可利用机会。数据治理负责减少模型一开始就记住敏感内容的机会。两边都做,仍需保留一个诚实结论,未发现泄露只代表当前测试没有找到,不能写成模型绝无记忆。

参考资料