Skip to main content
2025arXiv 2505.24832

语言模型到底记住了多少?—— 用信息论重新定义记忆

How much do language models memorize?

Meta FAIR 与 Cornell、DeepMind 联合提出了一种基于 Kolmogorov 信息论的形式化记忆定义,将模型对训练数据的记忆分解为「意外记忆」与「泛化」两个正交分量。通过压缩长度度量,实验发现 GPT 系列模型的存储容量约为 3.6 bits-per-parameter,且双重下降现象恰好在数据量超过模型容量时发生。进一步推导出成员推理攻击的缩放定律,预测现代大模型因训练数据过多而使平均样本的成员推理几乎不可行。

John X. Morris, Chawin Sitawarin, Chuan Guo, Narine Kokhlikyan, G. Edward Suh, Alexander M. Rush, Kamalika Chaudhuri, Saeed Mahloujifar
AI解读语言模型记忆与隐私信息论缩放定律

论文概览

语言模型是否真的"记住"了训练数据?这个问题不仅是学术好奇,更直接关系到隐私合规(GDPR 的"被遗忘权")与模型安全(训练数据提取攻击)。过去的研究主要通过「能否诱导模型生成训练样本」来判断记忆——给前缀,看模型能否补全后缀。但这种方法有一个根本缺陷:模型输出某个字符串,既可能是因为记住了它,也可能是因为学到了一般规律(泛化)。例如,给模型"2+2=",它输出"4",显然不是记忆而是计算能力。

John X. Morris 等人(Meta FAIR 联合 Cornell、Google DeepMind、NVIDIA)在这篇论文中提出了一种信息论框架来严格区分这两种情况。核心思想是:模型对训练样本的记忆 = 该样本在有模型辅助时能被压缩的比特数。如果模型完全没有记住样本,它就无法帮我们更高效地编码该样本;反之,模型"记住"得越多,编码越短。

利用这个框架,作者测量了 GPT 系列 Transformer 的记忆容量:每参数约 3.6 比特(半精度下约 3.51 比特)。一个 8B 参数的模型大约能存储 29 Gb(约 3.6 GB)的信息。更令人深思的是,当训练数据量超过模型容量时,**双重下降(double descent)**精确出现,模型的意外记忆开始被泛化所替代。

核心创新

1. 意外记忆与泛化的形式化分解

论文的第一个贡献是给出了可操作的记忆定义。设 XX 为训练数据集,Θ\Theta 为真实数据分布(参考模型),Θ^\hat{\Theta} 为训练后的模型:

mem(X,Θ^)=I(X,Θ^)=H(X)H(XΘ^)\text{mem}(X, \hat{\Theta}) = I(X, \hat{\Theta}) = H(X) - H(X \mid \hat{\Theta})

这是 Θ^\hat{\Theta} 中包含的关于 XX总信息量。关键洞见在于:并非所有这些信息都是"记住的"(即不该被泛化解释的)。作者定义:

memU(X,Θ^,Θ)=I([XΘ],Θ^)(意外记忆)memI(X,Θ^,Θ)=mem(X,Θ^)memU(X,Θ^,Θ)(泛化)\begin{aligned} \text{mem}_U(X, \hat{\Theta}, \Theta) &= I([X \mid \Theta], \hat{\Theta}) \quad \text{(意外记忆)} \\[4pt] \text{mem}_I(X, \hat{\Theta}, \Theta) &= \text{mem}(X, \hat{\Theta}) - \text{mem}_U(X, \hat{\Theta}, \Theta) \quad \text{(泛化)} \end{aligned}

意外记忆衡量的是:在已知真实分布的情况下,模型仍然额外存储了哪些关于具体样本的信息。如果模型只是学会了做加法,那信息量应该反映在"真实分布可解释"的部分——即泛化——而非意外记忆中。

2. Kolmogorov 复杂度:从理论到可测量

互信息的计算在连续空间中是困难的。作者转向 Kolmogorov 复杂度(算法信息论):

HK(x)=minf(p)=xpH_K(x) = \min_{f(p)=x} |p|

即字符串 xx 的最短可计算描述长度。同样可以定义条件 Kolmogorov 复杂度 HK(xθ)H_K(x \mid \theta)(给定 θ\theta 可以多短地描述 xx)。由此定义 Kolmogorov 意外记忆:

memUK(x,θ,θ^)=HK(xθ)HK(xθ,θ^)\text{mem}^K_U(x, \theta, \hat{\theta}) = H_K(x \mid \theta) - H_K(x \mid \theta, \hat{\theta})

这个定义的美妙之处在于:它可以被实验测量。作者使用模型输出的似然(likelihood)作为算术编码(arithmetic coding)的码表,将 HK(xθ^)H_K(x \mid \hat{\theta}) 近似为模型对 xx 的负对数似然。论文证明了这种 Kolmogorov 近似与 Shannon 信息论定义之间的误差在常数界内。

3. 容量缩放定律

通过在大规模合成随机序列(无泛化可能)上训练数百个 Transformer,作者发现模型的总记忆量严格与参数量成正比

  • fp32 精度α3.83\alpha \approx 3.83 bits-per-parameter
  • bf16 精度α3.51\alpha \approx 3.51 bits-per-parameter
  • 平均α3.64\alpha \approx 3.64 bits-per-parameter

这个数值比 Allen-Zhu & Li (2024) 通过量化方法估计的 2 bpp 略高,但远低于天真地将每个参数当作 16/32 位存储单元时的容量。换句话说,梯度下降找到了一种有损压缩的方式来编码训练数据——不是每个参数独立存储一位信息,而是所有参数协同构成一个约 3.6 bpp 的压缩表示。

训练曲线进一步验证:当数据集大小在模型容量范围内时,模型几乎完全"记住"数据(总记忆量饱和);一旦数据超过容量,额外数据不会增加总记忆量。

方法论:压缩即记忆

信息论记忆框架
信息论记忆框架

参考模型的选择

区分意外记忆与泛化的核心在于参考模型 θ\theta 的选择:

  • 合成随机数据实验:已知真实分布是均匀随机序列,可以直接计算精确的 Shannon 熵。
  • 真实文本实验:选择一个在更大数据超集上训练的同架构大模型作为参考模型(oracle)。如果小模型 θ^\hat{\theta} 对样本的压缩率比 oracle 更好,说明它额外"记住"了该样本,而非仅仅学会了语言规律。

容量测量实验设计

在合成随机序列上,作者构建了不同大小的数据集(NN 个序列,每个 SS 个 token,词表大小 V=2048V=2048),训练不同规模的 GPT-2 架构模型(500K–20M 参数)。由于数据是完全随机的,不存在泛化空间,模型的总记忆量直接等于其容量。通过扫描不同数据集大小,取各模型的最大记忆量作为容量估计。

对于真实文本,作者使用 FineWeb 数据集的子集训练模型,并使用在完整 FineWeb 上训练的大模型作为 oracle 参考。

实验结果

容量与参数的线性关系

容量与参数关系
容量与参数关系

在跨越 500K 到 27M 参数、1–8 层、32–256 隐藏维度的 16 种不同架构配置上,容量与参数量呈高度线性关系R2>0.99R^2 > 0.99),几乎不受层数或宽度的影响——唯一起决定作用的是总参数量。

精度翻倍(bf16 → fp32)仅使容量从 3.51 bpp 提升到 3.83 bpp(+9.1%),说明模型参数的信息存储效率已达到较高水平,精度并非瓶颈。

此外,作者验证了序列长度和词表大小的变化不影响 bits-per-parameter 比率:扩大词表虽然增加总参数量(嵌入矩阵变大),但 bpp 保持稳定(预测误差 < 2%)。

双重下降与容量边界

论文最引人注目的发现之一是双重下降现象可以精确地用容量边界解释。在合成随机数据和真实文本上:

现象触发条件解释
测试损失上升数据集大小接近模型容量模型"努力"记住每个样本,但容量不够
测试损失急剧下降数据集超过模型容量模型被迫放弃逐样本记忆,转向学习泛化模式

这些实验为 Nakkiran et al. (2019) 的「深层双重下降」假说提供了信息论解释:双重下降的临界点 = 数据量超过模型容量的时刻,此时「记住」不再有益,模型开始被迫泛化。

在真实文本上,这个效应更为显著。当训练集较小时,小模型比 oracle(大参考模型)对样本的压缩率更低——它在"死记硬背"。而当数据集增大,小模型的压缩率逐渐高于 oracle——它开始泛化,但仍无法完全达到 oracle 的理解水平。

成员推理攻击的缩放定律

双重下降与成员推理缩放定律
双重下降与成员推理缩放定律

作者基于实验数据拟合了成员推理攻击 F1 分数的缩放定律:

MembershipF1(θ,D)=12(1+c1σ(c2Capacity(θ)D+c3))\text{MembershipF1}(\theta, D) = \frac{1}{2}\left(1 + c_1 \sigma\left(c_2 \frac{\text{Capacity}(\theta)}{|D|} + c_3\right)\right)

其中 σ(x)=1/(1+ex)\sigma(x) = 1/(1+e^{-x})c1=1.34c_1=1.34c2=0.034c_2=-0.034c3=33.14c_3=-33.14

这个缩放定律的关键预测:

  • 小数据 + 大模型:成员推理很容易(F1 ≈ 0.95-1.0)
  • 大数据 + 小模型:成员推理接近随机猜测(F1 ≈ 0.5)
  • GPT2-XL(1.5B 参数)训练于 1.7 亿样本:预测 F1 ≈ 0.55(实测 54.61%)
  • 现代大模型(如 LLaMA 3 8B 训练于 15T tokens):预测大多数训练样本的成员推理几乎不可能

这解释了为什么近年来的成员推理攻击在大型基础模型上表现不佳:不是因为模型没有记忆,而是数据量远超模型容量,单个样本的记忆信号被淹没在泛化的噪声中

哪些样本被记得最多?

论文还分析了真实文本训练中被"记住最多"的样本特征。通过计算每个训练样本的 TF-IDF:

TF-IDF(d;D)=1dwdlogDtf(w,D)\text{TF-IDF}(d; D) = \frac{1}{|d|} \sum_{w \in d} \log \frac{|D|}{\text{tf}(w, D)}

发现高 TF-IDF(含生僻词)的样本被意外记忆得最多。在被记忆最多的前 20 个样本中,有 17 个包含非英语文本(日语、中文、希伯来语、希腊语)。最极端的例子:一个日语单词序列,模型仅凭一个 token(「囚」)就能完整复现整个训练序列。这与直觉一致——常见英语模式更容易被泛化吸收,而生僻语言序列没有泛化价值,模型只有"硬记"。

启示与思考

方法论贡献:记忆不再是"是/否",而是"多少比特"

这篇论文的核心方法论贡献是超越了传统的「可提取 = 已记忆」二分类框架。过去判断模型是否记住了某条数据,只能看它能否复现。而信息论框架将记忆量化为连续的比特数:一个 100 词的句子可能被记住了 40 比特(部分压缩),而非全或无。

这个框架为隐私审计提供了新工具:我们不再只能问"模型记住了我的数据吗?",而可以问"模型对我的数据记住了多少比特?"结合 differential privacy(ϵ\epsilon 约束本质上限制了最大互信息),这个度量可以用来验证隐私保证的实际效果。

对 Scaling Law 的补充

Kaplan et al. (2020) 和 Chinchilla (2022) 的缩放定律关注的是损失与计算量、参数、数据的关系。这篇论文补充了信息论维度的缩放定律:模型容量(比特)= α×\alpha \times 参数量。这意味着,对于给定的模型大小,存在一个信息容量上限——无论喂多少数据,模型能存储的总信息量是有限且可预测的。这为理解模型的泛化行为、设计训练数据策略提供了新的视角。

局限与未来工作

论文中测量的容量值(3.6 bpp)是在 GPT-2 架构、小规模训练设置下获得的,是否适用于更大模型(如 GPT-4)或其他架构(如 Mixture-of-Experts)尚待验证。此外,参考模型的选择对文本实验的结果有重要影响——一个不完全的 oracle 可能低估泛化分量、高估意外记忆。

不过更值得关注的是这个框架可能开启的方向:既然我们能够测量模型对每个样本的记忆比特数,是否可能在训练过程中主动控制记忆分配——把容量留给真正需要泛化的模式,同时抑制对个体样本的过度记忆?这将对隐私保护训练和数据去重策略产生直接影响。


论文信息

  • arXiv: 2505.24832
  • 作者机构:Meta FAIR, Google DeepMind, Cornell University, NVIDIA
  • 关键词:memorization, language models, information theory, Kolmogorov complexity, scaling laws, membership inference, double descent

附录:论文全文中文翻译

以下为论文 How much do language models memorize? (arXiv 2505.24832) 的完整中文翻译,供读者对照原文阅读。

记忆测量完整流程
记忆测量完整流程

摘要

我们提出了一种新方法来估计模型对单个数据点"知道"多少,并用它来测量现代语言模型的容量。我们将记忆形式化地分解为两个分量:意外记忆(unintended memorization)——模型对特定数据集所包含的信息,以及泛化(generalization)——模型对真实数据生成过程所包含的信息。通过消除泛化,我们可以计算给定模型的总记忆量,从而获得模型容量的估计:我们的测量表明,GPT 系列模型的容量约为每参数 3.6 比特。我们在逐渐增大的数据集上训练语言模型,观察到模型在容量填满之前持续记忆,此后"顿悟"(grokking)开始,意外记忆随模型开始泛化而减少。我们训练了数百个参数量从 500K 到 1.5B 的 Transformer 语言模型,并产出了一系列将模型容量和数据规模与成员推理关联的缩放定律。

1 引言

过去几年,现代语言模型在越来越多的数据上训练,而参数量则停滞在数十亿级别。例如,一个近期的最先进模型(Dubey et al., 2024)拥有 80 亿参数(磁盘上约 32GB),但在 15 万亿 token(磁盘上约 7TB)上训练。

大量已有工作(Carlini et al., 2019; Mireshghallah et al., 2022; Nasr et al., 2023; Zhang et al., 2023; Carlini et al., 2023b; Schwarzschild et al., 2024)质疑这类预训练语言模型是否以有意义的方式记住了训练数据。大多数研究通过两条路径来探讨这个问题:提取(extraction),即试图从模型权重中恢复完整的训练数据点;以及成员推理(membership inference),即分类判断某个数据点是否出现在给定模型的训练数据中。

关于语言模型提取的研究认为,如果能够诱导模型生成某个数据点,则该数据点被记住了(Carlini et al., 2023b; Nasr et al., 2023; Schwarzschild et al., 2024)。我们论证这种生成不一定能作为记忆的证据。语言模型可以被胁迫输出几乎任何字符串(Geiping et al., 2024),因此模型输出了某内容并不一定是记忆的标志。为解决这个问题,一些研究者建议对语言模型的输入进行正则化,例如限制其长度(Schwarzschild et al., 2024)或将其匹配到记忆句子之前的前缀(Carlini et al., 2023b)。然而,这些约束都不能让我们区分模型输出某字符串究竟是因为记忆还是因为良好的泛化。例如,给语言模型一个加法提示,它可以输出答案而无需事先见过该等式。

为解决这个问题,我们提出了一种记忆定义,量化模型保留特定数据点信息的程度。我们的方法利用比特为单位的压缩率概念:如果某输入在有模型可用时能被压缩为更短的编码,则认为模型记住了该输入。该框架的灵感来自 Kolmogorov 信息论(Kolmogorov, 1963)和 Shannon 信息论(Shannon, 1948),但通过使用模型似然来估计信息含量而保持实用性。我们通过将记忆分解为两个独立分量——意外记忆(捕捉模型对特定数据集保留的信息)和泛化(代表模型获得的关于底层数据生成过程的知识)——来解决区分记忆与泛化这一根本挑战(Prashanth et al., 2024)。这种分离类似于 Brown et al. (2021) 的方法,后者使用条件互信息来定义记忆,条件化在真实概念上。然而,我们的概念不同之处在于,它使用信息的算法定义来实现实例级别的分离。

为理解我们的新量,我们通过在不同大小的数据集上训练不同容量的语言模型来测量意外记忆和泛化。我们首先通过在均匀随机采样的比特串数据集上训练来完全消除泛化问题。在这种设置下,我们可以精确测量模型中包含的数据信息量。这给了我们一种有原则的方法来测量语言模型在已知精确信息含量的均匀数据集上训练时的容量。我们发现 GPT 式 Transformer 可以在每个模型参数中存储 3.5 到 4 比特信息,具体取决于模型架构和精度。

精度对容量的影响
精度对容量的影响

然后我们在真实文本上重复实验,其中泛化既可能又有益于学习。在真实文本上,语言模型记忆到一定容量后,开始用泛化替代意外记忆,转而学习通用、可复用的模式而非样本级别的具体细节。我们的框架表明,双重下降现象恰好在数据规模超过模型容量(比特为单位)时开始出现。

最后,我们利用结果预测了基于模型容量和数据规模的成员推理性能缩放定律。我们表明成员推理遵循一个基于模型容量和数据规模的清晰关系:更大的模型可以记住更多样本,而更大的数据集使成员推理更困难。我们的缩放定律可以外推到更大的模型,预测大多数现代语言模型在过多数据上训练,以至于无法对平均数据点进行可靠的成员推理。

2 记忆:意外与预期

当模型 θ=L(x)\theta = \mathcal{L}(x) 通过训练算法 L\mathcal{L} 和数据集 xXx \sim X 训练时,某些信息从样本 xx 传递到模型 θ\theta。记忆文献中的一个关键问题是确定这些存储的信息中有多少是预期的(intended),多少是意外的(unintended)。在本工作中,我们旨在提供一个满足以下性质的记忆严格定义:

  1. 与泛化分离。我们的意外记忆概念必须不同于预期记忆——我们称之为泛化。例如,考虑一个在以下样本上训练的语言模型:Q: 21002^{100} 是多少? A: 1267650600228229401496703205376。在评估该训练样本被记忆了多少时,我们必须考虑到语言模型被期望能执行简单数学运算这一事实。

  2. 样本级记忆。我们需要为随机变量的实例定义记忆,而非随机变量本身。具体而言,我们需要确定样本 xx 在模型 θ\theta 中产生了多少意外记忆。

  3. 独立于训练算法。我们的定义应独立于训练算法 L\mathcal{L},仅是最终模型 θ\theta 和样本 xx 的函数。这对于语言模型至关重要,因为我们通常只能获取最终模型和目标样本。

此前的工作尝试为机器学习模型定义记忆。我们旨在提供满足我们标准的精确定义,并提供测量方法。更广泛的记忆定义讨论见附录 B。

2.1 热身:记忆的统计视角

记号。在本节中,我们使用大写字母(如 X,ΘX, \Theta)表示随机变量,小写字母表示随机变量的实例(如 xXx \sim XθΘ\theta \sim \Theta)。

我们依赖信息论,它为随机变量发展了成熟的信息概念。对于随机变量 XX,我们使用 H(X)H(X)XX 的熵)来定义 XX 中存在的信息量。对于两个不同的随机变量 X,YX, Y,我们可以定义 XYX | Y 为固定 YYXX 中剩余的不确定性。有了这些定义,我们可以通过从总信息中减去剩余信息来测量 XXYY 之间的互信息:I(X,Y)=H(X)H(XY)I(X, Y) = H(X) - H(X | Y)

现在假设我们有一个机器学习流程。我们对捕获数据集分布 XX 的底层模型有一个先验 Θ\Theta,以及一个将 XX 中的样本映射到训练模型的 Θ^\hat{\Theta} 的学习算法 L\mathcal{L}。为理解 Θ^\hat{\Theta} 中存储了多少关于 XX 的信息,我们可以使用互信息的概念:

mem(X,Θ^)=I(X,Θ^)=H(X)H(XΘ^)\text{mem}(X, \hat{\Theta}) = I(X, \hat{\Theta}) = H(X) - H(X | \hat{\Theta})

注意这捕获了 Θ^\hat{\Theta} 中存储的关于 XX 的所有信息。如前所述,我们的记忆概念还需要考虑泛化。因此,在测量意外记忆时,我们只对 XΘX | \Theta 中存在的信息感兴趣——即固定 Θ\ThetaXX 中剩余的不确定性。因此,我们可以定义意外记忆为:

memU(X,Θ^,Θ)=I([XΘ],Θ^)=H(XΘ)H(X(Θ,Θ^))\text{mem}_U(X, \hat{\Theta}, \Theta) = I([X | \Theta], \hat{\Theta}) = H(X | \Theta) - H(X | (\Theta, \hat{\Theta}))

泛化(或预期记忆)则必须是:

memI(X,Θ^,Θ)=mem(X,Θ^)memU(X,Θ^,Θ)=I(X,Θ^)I([XΘ],Θ^)\text{mem}_I(X, \hat{\Theta}, \Theta) = \text{mem}(X, \hat{\Theta}) - \text{mem}_U(X, \hat{\Theta}, \Theta) = I(X, \hat{\Theta}) - I([X | \Theta], \hat{\Theta})

定义了预期和意外记忆的概念后,我们转向实际测量它们。首先陈述一个命题,该命题使得意外记忆的测量成为可能:

命题 1(意外记忆的超可加性)。假设 X=(X1,,Xn)X = (X_1, \ldots, X_n)nn 个 i.i.d. 样本的数据集。我们有:

i[n]memU(Xi,Θ^,Θ)memU(X,Θ^,Θ)H(Θ^)\sum_{i \in [n]} \text{mem}_U(X_i, \hat{\Theta}, \Theta) \leq \text{mem}_U(X, \hat{\Theta}, \Theta) \leq H(\hat{\Theta})

该命题表明,要测量数据集级别意外记忆的下界,我们可以对每样本记忆量求和。另一方面,训练模型本身的信息含量熵作为意外记忆的上界。另一个推论是,意外记忆应随数据集大小增长,但不能超过模型的总容量。

我们注意到,记忆的这一统计定义最初由 Brown et al. (2021) 引入,他们在理论上研究了意外记忆在某些任务中实现成功学习的角色。然而,这个初步定义对我们来说不适用,因为我们的目标是实际测量实例级记忆。特别地,由于我们只观察到一个训练模型和一个输入样本,我们无法在样本条件化于模型的情况下定义概率或条件概率。

2.2 用 Kolmogorov 复杂度测量意外记忆

我们目前关于记忆和泛化的定义使用"基于熵"的信息概念来定义。这意味着我们的定义只能用于随机变量。这给测量记忆带来了巨大挑战。我们记忆定义中的所有变量都是单例。我们有一个底层模型 θ\theta,一个数据集 x=(x1,,xn)x = (x_1, \ldots, x_n) 和一个训练好的模型 θ^\hat{\theta}。使用单个样本来测量底层变量的熵(更不用说条件熵了)是不可能的。

为此,我们转向另一种基于压缩的信息概念,然后展示该概念如何近似上述记忆概念。Kolmogorov 复杂度将字符串 xx 的信息含量 HK(x)H_K(x) 定义为 xx 在给定计算模型中的最短表示长度。类似地,我们可以定义剩余信息 xθx | \theta 为有 θ\theta 可用作参考时 xx 的最短表示。xθx | \theta 的信息含量记为 HK(xθ)H_K(x | \theta),是该描述的长度。然后,我们可以类似地定义互信息:

定义 2(Kolmogorov 复杂度)。设 ff 为任意计算模型,接受一组输入并返回输出(如通用图灵机)。xx 关于计算模型 ff 的最短描述定义为 HK(x)=minf(p)=xpH_K(x) = \min_{f(p)=x} |p|。同样,xx 相对于另一个字符串 θ\theta 的 Kolmogorov 复杂度定义为 HK(xθ)=minf(p,θ)=xpH_K(x | \theta) = \min_{f(p,\theta)=x} |p|。我们定义 xxθ\theta 之间的 Kolmogorov 互信息为 IK(x,θ)=HK(x)HK(xθ)I_K(x, \theta) = H_K(x) - H_K(x | \theta)。我们假设输入为比特串,p|p| 为输入的比特长度。

定义 3(Kolmogorov 记忆)。设 θ\theta 为近似数据真实分布的参考模型,θ^\hat{\theta} 为在数据集 x=(x1,,xn)x = (x_1, \ldots, x_n) 上训练的模型。对于每个 xix_i,我们定义 xix_iθ^\hat{\theta} 中的记忆为 memK(θ^,x)=IK(θ^,x)\text{mem}^K(\hat{\theta}, x) = I_K(\hat{\theta}, x)。我们还定义预期和意外变体:

memUK(x,θ,θ^)=HK(xθ)HK(x(θ,θ^)),memIK(x,θ,θ^)=memK(x,θ^)memUK(x,θ,θ^)\text{mem}^K_U(x, \theta, \hat{\theta}) = H_K(x | \theta) - H_K(x | (\theta, \hat{\theta})), \quad \text{mem}^K_I(x, \theta, \hat{\theta}) = \text{mem}^K(x, \hat{\theta}) - \text{mem}^K_U(x, \theta, \hat{\theta})

Kolmogorov 复杂度与 Shannon 熵之间存在已知联系(Grünwald & Vitányi, 2004)。这些结果指向两个概念之间的概念性联系,并意味着 ExX[HK(x)]H(X)\mathbb{E}_{x \sim X}[H_K(x)] \approx H(X)。有趣的是,这意味着我们的 Kolmogorov 记忆概念紧密近似 Shannon 记忆。

命题 4。设 X=(X1,,Xn)X = (X_1, \ldots, X_n) 为由真实模型 θ\theta 参数化的 i.i.d. 数据集分布。设 L\mathcal{L} 为将 XX 映射到 Θ^\hat{\Theta} 的训练算法。假设 H(Θ^)=H(\hat{\Theta}) = \ellH(Xi)=H(X_i) = \ell'。则我们有:

ExXθ^L(x)[memUK(xi,θ^,θ)]memU(Xi,Θ^,θ)ϵ\left| \mathbb{E}_{\substack{x \sim X \\ \hat{\theta} \sim \mathcal{L}(x)}} [\text{mem}^K_U(x_i, \hat{\theta}, \theta)] - \text{mem}_U(X_i, \hat{\Theta}, \theta) \right| \leq \epsilon

其中 ϵ\epsilon 为独立于 ,\ell, \ell'nn 的常数。

2.3 用压缩估计 Kolmogorov 复杂度

确定了 Kolmogorov 记忆的概念后,我们现在描述如何在不同设置下估计 HKH_K。注意 Kolmogorov 复杂度的精确计算已知是不可计算的(Kolmogorov, 1965)。然而,我们仍然可以使用最佳可用压缩方案来近似它。这些压缩方案可以是任意算法,例如使用提示优化如 Schwarzschild et al. (2024),或使用文本前缀如 Carlini et al. (2023b)。

我们采用算术编码作为最自然的语言压缩算法。算术编码不仅对文本压缩有效(Delétang et al., 2024),还允许使用模型似然高效计算码长。未来研究的一个有前景方向是设计专门为最小化机器学习模型中训练数据码长而定制的压缩算法,并用它获得更准确的 Kolmogorov 复杂度和记忆估计。下面我们总结如何使用模型似然来近似记忆定义中的每一项:

  • HK(xθ^)H_K(x | \hat{\theta}):这里 θ^\hat{\theta} 是训练好的目标模型,不一定捕获真实数据分布。我们实际上不计算压缩码,而是利用算术编码的压缩率与模型似然相关的事实(Shannon, 1950)。因此,我们可以用目标模型下 xx 的负对数似然 log(p(xθ^))-\log(p(x | \hat{\theta})) 来估计 HK(xθ^)H_K(x | \hat{\theta})

  • HK(xθ^,θ)H_K(x | \hat{\theta}, \theta):在这种情况下,压缩算法同时有权访问目标模型和参考模型。我们简单地计算 log(max{p(xθ^),p(xθ)})-\log(\max\{p(x | \hat{\theta}), p(x | \theta)\})。在实践中,我们选择的参考模型是与 θ\theta 同架构的更大模型,在更广泛的数据分布上训练了很多步。

细心的读者可能注意到,我们从基于似然的记忆概念出发,转向基于 Kolmogorov 复杂度的定义,最终又回到似然来估计该复杂度。然而,我们强调,用于近似 Kolmogorov 记忆的似然与最初的似然概念不同。特别地,该似然依赖于解码算法的参数,如温度或 top-k 采样。更广泛地说,我们注意到任何压缩算法都可以用来近似 Kolmogorov 复杂度,我们选择算术编码只是这个更广泛框架的一种实例化。

参考模型的选择。在本工作中,我们使用两种参考模型来计算 p(xθ^)p(x | \hat{\theta})。在合成随机字符串实验中(第 3 节),我们知道精确的底层数据分布,并将其用作参考模型。在文本实验中(第 4 节),我们选择 θ\theta 为同族的更大模型,在 θ^\hat{\theta} 训练数据的更大超集上训练。

3 记忆的模型容量

意外记忆为我们提供了一种有原则的方法来测量模型 θ\theta 对数据点 xx 知道的确切比特数。如果我们对数据集中每个数据点的信息求和,就可以测量模型对数据集知道的总比特数。在由于每个数据点完全独立而无法泛化的情况下,我们可以通过将每数据点意外记忆求和来估计给定模型 θ\theta容量

3.1 定义模型容量

我们首先形式化特定语言模型 θ\theta 的记忆容量概念。容量是 θ\theta 中所有参数可以存储的总记忆量。

定义 5(容量)。设 XX 为分布,L:XΘ\mathcal{L}: X \to \Theta 为学习算法。我们定义学习算法 L\mathcal{L} 的容量为:

Capacity(L)=maxXmem(X,L(X))\text{Capacity}(\mathcal{L}) = \max_X \text{mem}(X, \mathcal{L}(X))

当模型容量达到时,mem(X,L(X))\text{mem}(X, \mathcal{L}(X)) 不再随数据集大小增加。在实践中,我们可以通过在不同大小的 XX 上训练到饱和并计算最大记忆量来计算容量。

3.2 用合成序列测量模型容量

在本节中,我们测量 Transformer 语言模型的容量。我们的目标是实例化多个数据集和分布,并测量训练单个模型 θ\theta 时的记忆量。然后,我们取所有数据集上的最大值来近似模型容量。为实例化数据集,每个 token 从预定义的 token 集合中均匀采样,独立于前一个 token。

为近似 HK(xθ,θ^)H_K(x | \theta, \hat{\theta}),我们可以直接在训练模型下计算熵来计算数据集条件下的最短描述。将两者相减,我们可以近似意外记忆 memU(X,L(X))\text{mem}_U(X, \mathcal{L}(X))。由于采样数据的过程是完全随机的,θ^\hat{\theta} 中没有可存储的泛化信息(即 memU(X,L(X))mem(X,L(X))\text{mem}_U(X, \mathcal{L}(X)) \approx \text{mem}(X, \mathcal{L}(X)))。

注意到当我们从均匀分布中采样合成序列时,可以精确计算其 Shannon 信息。给定数据集大小 NN,我们构造一个包含 NN 个序列、每个 SS 个 token 的数据集。给定词表大小 VV,我们可以计算具有此类参数的数据集 xix_i 的总熵为 H(xi)=NSlog2VH(x_i) = NS\log_2 V。然后我们使用 θ^i\hat{\theta}_i 下的熵来计算 xix_i 的压缩形式以计算码长,并以此作为 HK(xiθ^j)H_K(x_i | \hat{\theta}_j) 的近似。然后计算 mem(xi,θ^i)=H(xi)HK(xiθ^j)\text{mem}(x_i, \hat{\theta}_i) = H(x_i) - H_K(x_i | \hat{\theta}_j),并将模型在所有数据集上的最大记忆量作为容量。

实验细节。按照 Kaplan et al. (2020),我们使用 GPT-2 架构(Radford et al., 2019)从零初始化训练模型。我们的模型有 1 到 8 层,隐藏维度从 32 到 512,参数量从 100K 到 20M。我们以 2048 的批大小训练模型 10610^6 步。使用 Adam 优化器。所有模型在单个 A100 GPU 上以 bfloat16 精度训练,如果批无法放入内存则使用梯度累积。除非另有说明,我们设词表大小 V=2048V = 2048,序列长度 S=64S = 64,仅改变数据集中的点数。我们在五个随机种子上训练每个模型在每个数据集大小上的配置,种子影响模型初始化和数据集采样。

结果。我们在图 1 中绘制了不同模型和数据大小的记忆量。这使我们能够可视化按模型大小(线色)分组的跨数据集大小(x 轴)的意外记忆量(y 轴)。我们观察到模型达到容量后出现显著的平台期。给定足够大的数据集,模型展现出净记忆量的上界,无论数据大小如何。小数据集被所有有足够容量的模型完全记住。

我们将每个模型的容量估计为在所有数据集大小上测量的最大意外记忆比特数。然后在图 6 中将此容量与模型大小进行比较。有趣的是,即使在这个小规模上,我们也观察到观测容量(所有数据集上测量的最大记忆量)与模型参数之间的非常平滑的关系。在图 6 中绘制此关系:在这些设置下,我们的模型一致地每参数记忆 3.5 到 3.6 比特。这证实了此前工作(Roberts et al., 2020; Lu et al., 2024)的发现,即事实存储随模型容量线性增长。我们的估计略高于 Allen-Zhu & Li (2024),后者通过量化估计模型每参数可存储约 2 比特。

由于我们的模型通过梯度下降学习,不保证找到全局最优,因此我们测量的始终是模型容量的下界。我们仔细查看训练曲线以分析 8M 参数语言模型的收敛性。在图 5 中绘制了训练过程中的模型收敛。

在这种情况下,从 16,000 到 4M 样本的所有数据集的记忆量落在 3.563.65×1063.56 - 3.65 \times 10^6 比特的范围内。这表明我们的测量在一个数量级内是稳健的,我们不期望通过训练更多步来记忆显著更多的信息。这一发现也证实了我们的假设:容量大致与参数量成正比。两个最大的数据集(分别为 4M 和 8M 样本)收敛到 2.95×1062.95 \times 10^61.98×1061.98 \times 10^6 比特的总记忆量。我们预期如果训练更多 epoch,它们的记忆率将继续增长趋向容量。

精度如何影响容量? 一个自然的问题是我们对 α\alpha 的估计如何依赖于语言模型训练的精度。事实上,虽然大多数软件默认以 32 位精度训练,但最近的工作表明语言模型可以量化到每参数不到 2 比特并仍保留大部分功能。由于所有其他实验均在 bfloat16 精度下进行,我们在完整的 fp32 精度下重新运行实验以分析对容量的影响。跨模型大小,我们观察到容量有小幅增加,α\alpha 从 3.51 提升到 3.83 bits-per-parameter。这远低于 θ\theta 比特数实际的 2 倍增加,表明从 bfloat16 增加到 float32 精度时添加的大部分额外模型比特并未用于原始存储。

4 从泛化中解耦意外记忆

我们之前的实验分析了合成比特串的记忆和成员推理特性。现在转向测量文本的记忆。与随机生成的序列不同,从文本数据中学习是意外记忆(样本级)和泛化(总体级)的混合。因此,作为参考模型,我们使用在最大量数据(本例中为完整数据集)上训练的等参数量模型。我们还考虑了一个 oracle 参考模型,它是在评估数据集上达到最佳压缩率(最低损失)的模型,可能有更多参数。

实验细节。我们重复第 3.2 节的实验,将合成数据点替换为真实文本。为获得真实世界文本数据的分布,我们可以使用任何预训练规模的文本数据集;我们使用最近提出的 FineWeb 数据集(Penedo et al., 2024),因为它遵循最先进的去重实践。我们使用 64 个 token 的序列,但执行额外的去重步骤以确保完美去重(否则截断为 64 个 token 时,1-2% 的序列会变成重复项)。我们发现仔细的去重对于忠实测量提取率极其重要。与上一小节一样,我们在不同大小的文本数据集上预训练不同大小的模型,并测量每个模型-数据集对的意外记忆。除记忆外,我们根据标准的基于损失的成员推理程序测量成员推理性能;我们还通过贪心解码不同长度前缀来计算精确提取率。

结果。我们首先观察到样本级意外记忆随模型参数增加而增加,随训练集大小增加而减少(图 4)。当我们相对于 oracle 参考模型测量意外记忆时(图 2),记忆量随着我们的小模型能够比 oracle 学到更多关于小训练集的信息而稳定增长,然后随着模型开始泛化且平均表现不如(更高容量的)oracle 而减少。

数据集与容量比预测双重下降。从训练和测试损失中我们观察到,对于较大的数据集,模型仅在容量达到时才开始泛化(即评估损失下降),这大约需要 10510^5 个样本,具体取决于参数量。如 Nakkiran et al. (2019),我们绘制数据集大小与模型容量之间的比率(图 3)。与先前工作不同,在我们的实验中可以计算精确的数据集大小(基于参考模型的压缩率)和精确的模型容量(基于我们对 α\alpha 的估计)。

我们清楚地观察到双重下降——评估性能在训练集大小接近模型容量时下降,然后在数据集容量超过模型容量时急剧下降。我们的观察为双重下降(Belkin et al., 2019; Nakkiran et al., 2019)提供了直观解释:双重下降恰好在数据容量超过模型容量时开始。一种理论是,一旦模型无法再逐个记忆数据点,它被迫在数据点之间共享信息以节省容量,这导致了泛化。

泛化解释非零提取率。我们在完整训练集和 10,000 个不重叠的测试样本上测量提取率(图 17)。我们注意到对于 32-token 前缀,在非常小的训练集大小下 100% 可提取;可预见地,所有提取数字随训练集大小增加而下降。当数据集大小增长到足够大时,提取率不会完全降至零;然而,它收敛到几乎恰好等于测试提取率。换言之,当我们的(去重后的)数据集增长到足够大时,所有成功的训练数据提取都可归因于泛化。

5 记忆与成员推理

我们的训练设置允许完全控制训练和测试数据,并具有完美的去重。这使我们的设置成为研究模型大小、数据集大小与成员推理成功率之间关系的理想环境。

我们所有的成员推理结果来自标准的基于损失的成员推理(Yeom et al., 2018; Sablayrolles et al., 2019)。该方法非常简单:我们设置一个截断损失值来预测样本是否是训练数据集的成员。

5.1 合成数据与文本数据中的成员推理

合成数据。对于我们每个在合成数据上训练的模型,我们绘制跨数据集大小的成员推理攻击成功率。结果见图 14。在某个数据集大小之上,成员推理在平均情况下开始失败。这一发现表明,如果数据集大小相对于模型过大,则对平均训练样本的成员推理可能不可行。

文本。对于我们每个在文本上训练的模型,我们使用 FineWeb 中未使用的、不重叠的数据对每个模型执行标准的基于损失的成员推理(Yeom et al., 2018; Sablayrolles et al., 2019),并绘制跨数据集大小的性能(图 9)。对于固定的模型大小,成员推理随数据大小增加变得更加困难。当将成员推理与提取进行比较时(图 10),成员推理在每种情况下都严格更高;在某些情况下,我们可以在提取率为 0 的情况下相当好地推断训练数据集成员资格(得分 0.97)。

5.2 成员推理的缩放定律

在本节中,我们开发一组用于记忆的预测模型。具体而言,我们给定 token 计数、样本数和模型参数量来预测基于损失的成员攻击的 F1 分数。然后在 500K 到 1.5B 参数的模型上验证我们的预测。

5.2.1 函数形式

我们观察到,对于固定的模型容量,成员推理相对于数据集大小大致呈 sigmoid 形式。直观解释是,对于在小数据集上过拟合的大模型,成员推理很容易,因此其得分从 1 开始;随着数据集大小增加,通过损失区分训练和测试数据变得越来越困难,最终衰减趋向 0.5。

我们重用文本实验中收集的数据(第 4 节)来求解以下方程中的常数 c1,c2,c3c_1, c_2, c_3

MembershipF1(θ,D)=12(1+c1σ(c2Capacity(θ)D+c3))\text{MembershipF1}(\theta, D) = \frac{1}{2}\left(1 + c_1 \sigma\left(c_2 \frac{\text{Capacity}(\theta)}{|D|} + c_3\right)\right)

其中 σ(x)=11+ex\sigma(x) = \frac{1}{1+e^{-x}}

极限行为。我们观察到当 D|D| \to \infty 时,成员推理攻击的性能降至 0.5(本质上是随机性能)。对于在无限数据集上训练的模型,我们的定律预测成员推理和提取都不可能。

拟合。我们使用非线性最小二乘求解器找到 c1,c2,c3c_1, c_2, c_3 的最优值。求解结果为 c1=1.34,c2=0.034,c3=33.14c_1 = 1.34, c_2 = -0.034, c_3 = -33.14。我们在图 7 中绘制缩放定律及观测数据。虽然 sigmoid 函数略显简单(数据点并未完美拟合曲线),但我们的拟合产生的估计值在观测值的 12%1-2\% 以内。

5.2.2 在更大模型上的验证

我们注意到所有以 102 或更高的 tokens-per-parameter 比率训练的当代语言模型,根据我们的定律,这意味着成员推理得分为 0.5——即在我们的公式中,统计显著的基于损失的成员推理是不可能的。

为验证我们的预测,我们训练了预期成员推理 F1 分数为 0.55、0.75 和 0.95 的模型。对于模型大小,我们选择 GPT-2 small(125M 参数)和 GPT-2 XL(1.5B 参数)。使用我们的缩放定律,我们求解达到给定模型大小所需成员推理分数的数据集大小(见表 2)。

| 模型 | dembd_{\text{emb}} | nlayern_{\text{layer}} | θ|\theta| | D|D| | 预测 F1 | 观测 F1 | |------|------|------|------|------|------|------| | GPT2-XL | 1600 | 48 | 1,556,075,200 | 170,654,583 | 0.55 | 54.61 ± 1.3 | | GPT2-XL | 1600 | 48 | 1,556,075,200 | 76,795,021 | 0.75 | 71.08 ± 0.4 | | GPT2-XL | 1600 | 48 | 1,556,075,200 | 18,851,574 | 0.95 | 95.85 ± 0.8 | | GPT2-Medium | 768 | 12 | 123,702,528 | 13,566,442 | 0.55 | 53.44 ± 1.1 | | GPT2-Medium | 768 | 12 | 123,702,528 | 6,104,935 | 0.75 | 65.69 ± 0.6 | | GPT2-Medium | 768 | 12 | 123,702,528 | 1,498,634 | 0.95 | 97.98 ± 0.3 |

表 2:缩放定律预测将产生给定成员推理 F1 的数据集大小,以及经验值。

我们的预测通常在真实 F1 分数的 1.5 个百分点以内;对于估计 F1 为 0.75 的分数最不准确,这是 sigmoid 最陡的点。总体而言,我们结果的准确性表明我们对成员推理的经验模型相对准确,并为成员推理攻击在极大数据集上训练的模型上失败提供了证据(Das et al., 2024; Duan et al., 2024; Maini et al., 2024)。

6 相关工作

语言模型与压缩。Shannon 的信源编码定理(Shannon, 1948)首次形式化了预测与压缩之间的对偶性。语言建模与压缩之间的联系早在 Shannon (1950) 中就被研究,该工作观察到更精确的英语模型可以用更少的比特压缩文本。其他工作详细讨论了 Kolmogorov 复杂度(Kolmogorov, 1965)与 Shannon 信息之间的联系(Grünwald & Vitányi, 2004)。Delétang et al. (2024) 研究了使用现代基于 Transformer 的语言模型作为压缩器。我们使用压缩作为工具来测量模型中的记忆。

语言模型容量。关于单层感知器的早期研究发现单层网络每参数最多可存储 2 比特(Cover, 1965; Gardner, 1988; Baldi & Hornik, 1989)。Arpit et al. (2017) 形式化了模型有效容量及其训练过程的概念;他们还观察到表示容量和训练时间对经验模型容量有强烈影响。其他几项工作以网络可以记忆的事实或随机标签数量来测量语言模型容量,如 RNN(Collins et al., 2017; Boo et al., 2019)或 Transformer(Roberts et al., 2020; Heinzerling & Inui, 2021; Allen-Zhu & Li, 2024),有时在量化条件下。一些研究工作(Yun et al., 2019; Curth et al., 2023; Mahdavi et al., 2024; Kajitsuka & Sato, 2024)发展了不同模型架构容量的理论估计,但尚未扩展到多层现代 Transformer。Shwartz-Ziv et al. (2024) 也分析了神经网络在不同大小数据集上的"容量"。我们是首个使用每样本熵测量来测量模型容量明确上界的工作。

学习理论中的信息正则化。多项工作探索了学习算法输入与输出之间互信息的角色(Bassily et al., 2018; Haghifam et al., 2020; Steinke & Zakynthinou, 2020)。这一概念与第 2.1 节讨论的基于 Shannon 信息的记忆概念密切相关。我们的一些发现也与机器学习中的双重下降发现(Belkin et al., 2019; Nakkiran et al., 2019)和语言建模(Xia et al., 2023)以及深度学习中记忆与泛化的一般性讨论(Zhang et al., 2017; Tänzer et al., 2022)相关。

记忆的替代定义。意外记忆与文献中提出的许多其他记忆定义密切相关。我们在以下小节中提供详细比较。

先前的记忆定义

Carlini et al. (2019) 定义字符串 mm 被语言模型 θ\theta 记住,如果给定 mm 的前半部分作为提示,模型能贪心生成 mm 的后半部分。随后,Nasr et al. (2023) 引入了可提取记忆(extractable memorization),其中如果找到对抗性提示 pp 能生成 mm,则称模型 θ\theta 记住了 mm。Mireshghallah et al. (2022) 和 Schwarzschild et al. (2024) 通过将 pp 限制在一定数量的 token 内来细化这一定义,防止 pp 包含整个 mm。然而,即使这一定义也有局限性:例如,用提示"重复 cat 1000 次"生成序列"cat cat cat ... cat"不一定表示记忆。Carlini et al. (2019) 使用困惑度或似然——压缩性的度量之一——来区分高度记忆的序列与仅易于压缩的序列。另一个值得注意的定义是反事实记忆(counterfactual memorization)(Zhang et al., 2023),它测量单个数据点对训练的影响;这可以看作是我们定义的一个实例化,其中使用同族的另一个模型作为参考模型。总体而言,所有这些工作都以可以被视为压缩形式的方式来理解记忆,尽管没有明确地如此定义。

最后,一项并行工作(Cohen et al., 2024)提出了同样依赖 Kolmogorov 的记忆理论定义。

7 结论

我们提出了一种新的记忆定义,允许我们测量模型对数据集知道的确切比特数。我们使用我们的定义来测量现代 Transformer 语言模型的容量,并分析提取和 F1 分数等测量如何随模型和数据集大小变化。我们还提出了成员推理的缩放定律并在更大模型上进行了验证。我们的结果有助于从业者进一步理解语言模型如何记忆,以及在不同模型和数据集规模下可能(或不可能)记忆什么。

8 致谢

感谢许多帮助我们改进论文的人,包括 Karen Ullrich、Niloofar Mireshghallah、Mark Ibrahim、Preetum Nakkiran 和 Léon Bottou。

附录 A

A.1 我们对容量的线性估计有多可靠?

我们不通过缩放数据集中的样本数量,而是缩放模型序列长度来调整数据集大小。我们使用以下预期记忆测量:

mem(X,L(X))min(capacity(L),H(X))\text{mem}(X, \mathcal{L}(X)) \approx \min(\text{capacity}(\mathcal{L}), H(X))

我们代入之前估计的 α=3.642\alpha = 3.642,并确保调整参数量以应对调整模型嵌入矩阵带来的增加。我们固定训练样本数为 4096,训练一个 2 层、隐藏维度 128 的模型。结果见图 11 和表 3。我们对总记忆量的预测是准确的,缩放 SS 时的平均误差率为 1.7%,缩放 VV 时为 1.8%。

SS参数量记忆量预期值误差 (%)
46.59×1056.59 \times 10^51.73×1051.73 \times 10^51.80×1051.80 \times 10^54.19
86.60×1056.60 \times 10^53.54×1053.54 \times 10^53.60×1053.60 \times 10^51.80
166.61×1056.61 \times 10^57.15×1057.15 \times 10^57.21×1057.21 \times 10^50.84
326.63×1056.63 \times 10^51.44×1061.44 \times 10^61.44×1061.44 \times 10^60.41
646.67×1056.67 \times 10^52.29×1062.29 \times 10^62.36×1062.36 \times 10^62.97
1286.75×1056.75 \times 10^52.36×1062.36 \times 10^62.39×1062.39 \times 10^61.24
2566.92×1056.92 \times 10^52.44×1062.44 \times 10^62.45×1062.45 \times 10^60.44

表 3:不同序列长度 SS 下的模型容量估计及误差 (%)。

VV参数量记忆量预期值误差 (%)
1284.21×1054.21 \times 10^51.49×1061.49 \times 10^61.49×1061.49 \times 10^60.36
5124.71×1054.71 \times 10^51.71×1061.71 \times 10^61.67×1061.67 \times 10^62.78
10245.36×1055.36 \times 10^51.95×1061.95 \times 10^61.90×1061.90 \times 10^62.70
20486.67×1056.67 \times 10^52.39×1062.39 \times 10^62.36×1062.36 \times 10^61.11
40969.29×1059.29 \times 10^53.13×1063.13 \times 10^63.15×1063.15 \times 10^60.47

表 4:不同词表大小 VV 下的模型容量估计及误差 (%)。

A.2 额外记忆结果

我们的发现表明,文本数据的记忆量与合成数据情况一样,在模型容量附近整齐地达到平台。当数据集大小增加 NN 倍时,模型将记忆量在数据点间平均分配;测量的记忆总量恒定,推测处于模型容量的上界。

当数据集足够小以至于每个模型都能拟合——即低于最小模型的容量——我们观察到模型间非常相似的性能。对于较大的数据大小,我们注意到一个有趣的趋势:意外记忆随数据集大小增加到某一点(推测是模型用可用信息填满容量的过程),然后减少,因为模型用更有用、可泛化的知识替代样本级信息。给定模型在数据集最大时泛化最多(对任何单个样本记忆最少)。

A.3 被记忆分布的比较

分布级分析。文本序列与均匀合成比特串具有非常不同的性质。我们探索两个等容量模型如何在不同数据点间分配记忆。我们绘制了合成随机比特串和文本训练数据的训练和测试压缩率直方图(图 15)。随机训练数据遵循非常正态的分布,训练和测试压缩率之间有少量重叠。文本损失平均更低但更分散,某些训练点上损失低,并有更高损失的长尾。训练和测试损失分布之间有更多重叠,这解释了为什么文本数据的成员推理更困难。

训练/测试压缩率分布对比
训练/测试压缩率分布对比

哪些数据点被记忆最多? 我们的分布级分析表明,与随机比特串情况不同,在大量文本上训练的模型能够记住少量数据点。此前工作表明,这种记忆的大部分可能归因于重复的训练点(Lee et al., 2022),但我们的数据集完全去重,因此这不是我们情况中的解释。

为定量评估每文档的稀有词数量,我们测量每个训练文档的 TF-IDF,并相对于意外记忆绘制(图 16)。我们使用以下 TF-IDF 方程:

TF-IDF(d;D)=1dwdlogDtf(w,D)\text{TF-IDF}(d; D) = \frac{1}{|d|} \sum_{w \in d} \log \frac{|D|}{\text{tf}(w, D)}

其中 tf(d,D)\text{tf}(d, D) 表示词 ww 在数据集 DD 中出现的总次数。直观上,文档 dd 的 TF-IDF 分数越高,表示 dd 包含更多在 DD 中稀有的词。

我们清楚地观察到,对于具有正意外记忆的样本,训练集 TF-IDF 与记忆之间存在强相关:含更多稀有词的示例被记忆得更多。特别地,整个训练数据集中 TF-IDF 最高的样本(一组日语词序列)具有第三高的测量记忆量;尽管这只是 260,000 个训练样本中的一个,模型仅需给定单个 token(「囚」)就能复现整个序列。在被记忆最多的前 20 个序列中,除 3 个外全部包含其他语言(日语、中文和希伯来语)的 token 序列。

手动分析(表 5)表明,被记忆最多的数据点具有极其稀有的 token,通常是英语中不出现的 token。

A.4 缩放定律拟合

这里我们展示 sigmoid 缩放定律对实验数据的拟合。我们在图 17 中以 tokens-per-parameter 对比拟合来展示数据点。虽然 sigmoid 函数略显简单(数据点并未完美拟合曲线),但我们的拟合产生的估计值在观测值的 12%1-2\% 以内。

A.5 证明

在本节中,我们提供正文中缺失的证明。

A.6 命题 1 的证明

这里我们证明命题 1。

证明。我们有:

memU(X,Θ^,Θ)=I(XΘ,Θ^)=I((X1Θ,,XnΘ),Θ^)\text{mem}_U(X, \hat{\Theta}, \Theta) = I(X | \Theta, \hat{\Theta}) = I((X_1 | \Theta, \ldots, X_n | \Theta), \hat{\Theta})

由于数据是 i.i.d. 采样的,{Ri=[XiΘ]}i[n]\{R_i = [X_i | \Theta]\}_{i \in [n]} 中的所有随机变量都是独立的。因此:

I((X1Θ,,XnΘ),Θ^)i[n]I(XiΘ,Θ^)I((X_1 | \Theta, \ldots, X_n | \Theta), \hat{\Theta}) \geq \sum_{i \in [n]} I(X_i | \Theta, \hat{\Theta})

这意味着:

memU(X,Θ^,Θ)i[n]memU(Xi,Θ^,Θ)\text{mem}_U(X, \hat{\Theta}, \Theta) \geq \sum_{i \in [n]} \text{mem}_U(X_i, \hat{\Theta}, \Theta)

另一方面,我们有:

memU(X,Θ^,Θ)=I(XΘ,Θ^)=H(Θ^)H(Θ^(XΘ))H(Θ^)\text{mem}_U(X, \hat{\Theta}, \Theta) = I(X | \Theta, \hat{\Theta}) = H(\hat{\Theta}) - H(\hat{\Theta} | (X | \Theta)) \leq H(\hat{\Theta})

A.7 命题 4 的证明

证明。我们首先陈述一个关于算法(Kolmogorov)互信息与互信息之间联系的引理。

引理 6。[Grünwald & Vitányi (2004) 定理 3.6] 假设 (X,Y)(X, Y) 是一对联合随机变量。设 ff 为密度函数,f(x,y)=Pr[(X,Y)=(x,y)]f(x, y) = \Pr[(X, Y) = (x, y)]。则我们有:

I(X,Y)HK(f)E(x,y)(X,Y)[IK(x,y)]I(X,Y)+2HK(f)I(X, Y) - H_K(f) \leq \mathbb{E}_{(x,y) \sim (X,Y)} [I_K(x, y)] \leq I(X, Y) + 2H_K(f)

现在我们使用该引理来证明命题的陈述。设 ff 为联合分布 (Xiθ,Θ^)(X_i | \theta, \hat{\Theta}) 的密度函数。即 fi(xi,θ^)=Pr[Xi=xiθ 且 Θ^=θ^]f_i(x_i, \hat{\theta}) = \Pr[X_i = x_i | \theta \text{ 且 } \hat{\Theta} = \hat{\theta}]。注意该函数独立于 nn。根据定义,我们有:

memU(Xi,Θ^,θ)=I(Xiθ,Θ^)\text{mem}_U(X_i, \hat{\Theta}, \theta) = I(X_i | \theta, \hat{\Theta})

使用引理 6,我们有:

I(Xiθ,Θ^)HK(f)ExiXiθ[IK(xi,θ^)]I(Xiθ,Θ^)+2HK(f)I(X_i | \theta, \hat{\Theta}) - H_K(f) \leq \mathbb{E}_{x_i \sim X_i | \theta} [I_K(x_i, \hat{\theta})] \leq I(X_i | \theta, \hat{\Theta}) + 2H_K(f)

通过设 ϵ=2HK(f)\epsilon = 2H_K(f) 即可得出命题的陈述。

A.8 局限性

我们测量语言模型记忆的努力来自最近一系列研究,旨在发现模型是否分析过某些文本,以及如果分析过,程度如何。然而,我们的主要实验贡献与训练和评估语言模型的实践相关,包括对 grokking 现象的新视角(Nakkiran et al., 2019)和容量的新测量。我们的结果特定于所提出的环境,不一定推广到其他数据集、架构或训练设置。

附录 B:其他记忆概念的讨论

在本节中,我们列出多个其他记忆概念并与我们的定义进行比较。我们特别关注这些概念为何不满足我们的所有要求。

基于稳定性的记忆概念。有一些隐私和记忆概念涉及训练算法对训练集中小变化的"稳定性"。最著名的是差分隐私(Dwork, 2006),它考虑当单个数据点变化时模型分布的最坏情况漂移。Feldman (2020) 中的另一个记忆概念基于将标记对 (x,y)(x, y) 加入分类/回归模型训练集时,模型在点 xx 上预测的变化。这两个概念都关键依赖于学习算法及其行为方式。此外,差分隐私的定义对我们来说不理想,因为它是最坏情况定义,不能在样本/模型级别应用。虽然 Feldman (2020) 中的记忆概念没有这个特定问题,但它 suffers from 仅适用于分类模型这一事实,且主要处理标签 (y)(y) 与输入 (x)(x) 之间关联的记忆,而非 xx 本身的记忆。这些问题使这些概念对我们来说不理想。

基于提取的记忆。文献中有多项工作(Carlini et al., 2019; Mireshghallah et al., 2022; Nasr et al., 2023; Zhang et al., 2023; Carlini et al., 2023b; Schwarzschild et al., 2024)基于提取样本的难易程度来定义语言模型中样本的记忆。具体而言,当试图理解样本 xx 在模型 θ\theta 中的记忆程度时,他们测量诱导模型输出 xx 的任务复杂性概念。虽然这些概念很好——因为它们只取模型 θ\theta 和样本 xx——但它们仍然不考虑泛化。考虑我们一直在使用的训练样本示例:"21002^{100} 是多少?(A: 1, 267, 650, 600, 228, 229, 401, 496, 703, 205, 376)",几乎所有基于提取的记忆概念都会将其识别为高度记忆。这些定义的另一个问题是它们严重依赖于解码算法的细节。这不理想,因为我们不期望样本 xx 在模型 θ\theta 中的记忆依赖于我们使用 θ\theta 生成样本时使用的详细参数。

Schwarzschild et al. (2024) 在这一类别中的工作与我们的最接近。该工作基于提示优化,优化一个短提示 pp 使模型输出 xx,然后如果 pp 的长度小于 xx,则称样本 xx 被记住。虽然这一定义在使用压缩方面与我们的定义接近,但它仍然不考虑模型的泛化。此外,它专注于通过提示进行压缩的特定方式。我们主张通过提示进行压缩是一种劣质压缩方案,经常导致大于 1 的压缩率。

成员/属性推理。成员推理(Shokri et al., 2017)和属性推断攻击(Jayaraman & Evans, 2022)已被用于经验性地测量机器学习算法的隐私。这些通常旨在近似记忆的稳定性概念的概念,同样 suffers from 相同的缺点。它们严重依赖于学习算法和数据分布。此外,它们无法提供样本级别的记忆概念。例如,成员推理攻击获得的准确性仅在总体级别有意义。这是因为不同的攻击可能对成员资格有不同的真正阳性,而这些攻击中所有真正阳性的并集可能覆盖整个训练集,使其无法用作样本级别的记忆概念。

生成模型中的数据复制。有一些专门为生成模型设计的有趣记忆概念,其中生成模型可能输出一定比例的训练样本(Bhattacharjee et al., 2023; Carlini et al., 2023a)。这些概念类似于基于提取的记忆定义,但更宽松,因为它们只要求提取部分训练数据。然而,它们仍然 suffers from 与基于提取定义相同的挑战。


翻译说明:本翻译力求忠实于原文,专业术语保留英文对照。数学公式、定理和证明保持原文格式。图表编号与原文一致,新增配图以"图 A"前缀标注。