语言模型到底记住了多少?
How much do language models memorize?
基于 Kolmogorov 复杂度重新定义语言模型记忆,将记忆分解为非预期记忆与泛化,测量出 GPT 系列模型容量约 3.6 bits/parameter,并揭示 double descent 发生在数据量超过模型容量的精确临界点。
论文概览
标题: How much do language models memorize?
作者: John X. Morris (Cornell/FAIR), Chawin Sitawarin (Google DeepMind), Chuan Guo, Narine Kokhlikyan, G. Edward Suh (Cornell/NVIDIA), Alexander M. Rush (Cornell), Kamalika Chaudhuri, Saeed Mahloujifar (FAIR at Meta)
机构: FAIR at Meta, Google DeepMind, Cornell University, NVIDIA
核心问题: 语言模型到底"记住"了多少训练数据?如何精确度量"记忆"这一概念?
本文提出了一套基于 Kolmogorov 复杂度的记忆度量框架,将模型记忆严格分解为非预期记忆(unintended memorization,关于特定数据集的信息)和泛化(generalization,关于真实数据生成过程的信息)。通过在合成随机数据和真实文本上训练数百个 Transformer 模型(500K–1.5B 参数),论文得出三个关键发现:
- 模型容量: GPT 系列模型的记忆容量约为 3.6 bits-per-parameter(半精度训练)
- Grokking 机制: 当数据集大小超过模型容量时,模型开始用泛化替代非预期记忆,double descent 恰在此时发生
- 成员推理 Scaling Law: 成员推理攻击的 F1 分数遵循可预测的 sigmoidal 曲线,大数据集使攻击趋近随机猜测

一、核心贡献与创新点
1.1 记忆的形式化定义
现有研究通过"能否让模型生成训练数据"来判断记忆,但这种方法存在根本缺陷——语言模型可以被诱导输出几乎任意字符串(Geiping et al., 2024),因此"模型输出了某字符串"并不构成记忆的证据。
本文从信息论出发,提出三层递进的记忆定义:
Shannon 记忆(统计视角):
将记忆定义为数据集 与训练后模型 之间的互信息。进一步分解为:
- 非预期记忆: — 关于特定数据集实例的信息
- 泛化(预期记忆): — 关于真实数据分布 的信息
Kolmogorov 记忆(实例视角):
由于统计定义需要多个模型/数据集实例来定义概率,无法用于单模型单样本场景。作者转向 Kolmogorov 复杂度:
Proposition 4 证明了 Kolmogorov 记忆在期望意义下逼近 Shannon 记忆,误差 与数据集大小 无关。
1.2 用算术编码估计 Kolmogorov 复杂度
Kolmogorov 复杂度本身不可计算,但可以用最佳可用压缩方案近似。作者选择算术编码(arithmetic coding),因为:
- 代码长度可精确计算: bits
- 对语言建模自然适用
- 编码长度直接反映模型对数据的压缩能力
核心公式:模型 对数据 的记忆量 = 数据的原始熵 − 模型可用时的编码长度:
1.3 模型容量定义与测量
当模型达到容量上限时, 不再随数据集增大而增加。在合成随机数据上(无泛化可能),可以直接用记忆量近似模型容量。
二、实验设计与关键结果
2.1 合成数据实验:测量模型容量
设置: GPT-2 架构,1–8 层,hidden dim 32–512,100K–20M 参数。训练数据为均匀随机采样 token 序列(),确保不存在可泛化的模式。
结果:

- 模型记忆量在数据量足够大时达到明显的平台(plateau),该平台即为模型容量
- bits/parameter(半精度 bf16),全精度 fp32 约为 3.83 bits/parameter
- 容量与参数量呈高度线性关系,跨越两个数量级仍然平滑
| 精度 | (bits/param) | 说明 |
|---|---|---|
| bfloat16 | 3.51 | 生产环境常用 |
| float32 | 3.83 | 全精度 |
| Allen-Zhu & Li (2024) | ~2.0 | 通过量化估计 |
精度从 bf16 提升到 fp32 仅增加容量约 9%,说明大部分参数容量不受精度限制。
2.2 真实文本实验:Double Descent 与 Grokking
设置: 在 FineWeb 数据集上训练不同大小的模型,使用更大的 Oracle 模型(同系列、更大数据训练)作为参考模型 来计算非预期记忆。
关键发现: Double descent 恰好发生在数据集大小超过模型容量的临界点。

论文给出了 double descent 的直观解释:
- 当数据量 < 模型容量:模型将所有信息存储为非预期记忆,测试损失下降
- 当数据量 ≈ 模型容量:记忆饱和,模型被迫开始泛化,测试损失短暂上升(double descent 峰值)
- 当数据量 > 模型容量:非预期记忆开始下降,泛化取代记忆,测试损失快速下降
这一发现首次将 double descent 与模型容量建立了精确的定量联系。
2.3 TF-IDF 与记忆的相关性
分析 20M 参数模型在 条文本上的记忆分布发现:
- TF-IDF 最高的样本被记忆最多 — 罕见词文档最容易被记住
- 前 20 个记忆最多的序列中,17 个包含非英语文本(日语、中文、希伯来语)
- 一个日语序列仅凭单个 token(囚)就能被完整复现
这验证了直觉:模型倾向于记住"不寻常"的数据,因为这些数据无法通过泛化预测。
2.4 成员推理 Scaling Law
论文提出了成员推理 F1 的预测公式:
其中 , 为 sigmoid 函数。
验证: 在 GPT2-XL (1.5B) 和 GPT2-Medium (124M) 上,预测值与实测值的误差在 1.5 F1 点以内:
| 模型 | 参数量 | 预测 F1 | 实测 F1 |
|---|---|---|---|
| GPT2-XL | 1.56B | 0.55 | 0.546 |
| GPT2-XL | 1.56B | 0.75 | 0.711 |
| GPT2-XL | 1.56B | 0.95 | 0.959 |
| GPT2-Medium | 124M | 0.55 | 0.534 |
| GPT2-Medium | 124M | 0.75 | 0.657 |
| GPT2-Medium | 124M | 0.95 | 0.980 |
关键结论: 随 ,F1 → 0.5(随机猜测)。大多数现代语言模型训练数据量远超模型容量,对平均数据点进行可靠的成员推理攻击实际上不可能。
三、算法流程
3.1 记忆度量算法
输入: 模型 theta_hat, 参考模型 theta, 数据点 x
输出: 非预期记忆 memU(x, theta_hat, theta)
步骤:
1. 计算数据点原始信息量:
H(x) = sum_t log2(1/p(x_t)) [均匀分布下为 S * log2(V)]
2. 计算参考模型下的编码长度:
L_ref = -sum_t log2 p(x_t | x_{<t}, theta)
3. 计算训练模型下的编码长度:
L_train = -sum_t log2 p(x_t | x_{<t}, theta_hat)
4. Kolmogorov 记忆量:
mem_K = H(x) - L_train
[即模型相比无信息基线压缩了多少 bits]
5. 非预期记忆:
memU = L_ref - L_train
[即训练模型相比参考模型(Oracle)多压缩了多少 bits]
6. 泛化:
memI = mem_K - memU
[即模型学到的可泛化信息]3.2 模型容量测量流程
输入: 模型架构, 参数量 P
输出: 容量估计 Capacity(theta)
步骤:
1. 生成合成随机数据集 (均匀采样 token, V=2048)
- 多个数据集大小: N in {2^10, 2^12, ..., 2^23}
2. 对每个数据集大小 N:
a. 从头训练模型 theta_N, 10^6 steps, batch=2048
b. 计算每个数据点的记忆量 mem(x_i, theta_N)
c. 求和: total_mem(N) = sum_i mem(x_i, theta_N)
3. 取所有数据集大小的最大记忆量:
Capacity(theta) = max_N total_mem(N)
4. 计算 bits-per-parameter:
alpha = Capacity(theta) / P
5. 验证: alpha 应在 3.5-3.6 范围内 (bf16)3.3 成员推理 Scaling Law 拟合
输入: 多组 (模型容量, 数据集大小, F1) 观测数据
输出: 拟合参数 c1, c2, c3
步骤:
1. 收集训练数据:
for each model size M:
for each dataset size D:
train model on D
compute Capacity(M) = alpha * M
run loss-based MI attack -> F1
record (Capacity/D, F1)
2. 定义 sigmoidal 模型:
F1 = 0.5 * (1 + c1 * sigmoid(c2 * (Capacity/D + c3)))
3. 非线性最小二乘拟合:
solve for c1, c2, c3
Result: c1=1.34, c2=-0.034, c3=-33.14
4. 验证: 在更大模型 (GPT2-XL) 上测试预测精度
- 预测误差 < 1.5 F1 points四、关键定理与证明
Proposition 1: 非预期记忆的超可加性
陈述: 设 为 个 i.i.d. 样本,则:
意义:
- 左不等式:样本级记忆之和是数据集级记忆的下界,可以通过逐样本求和来估计总记忆
- 右不等式:模型自身的熵是记忆的上界,即模型容量存在硬性上限
Proposition 4: Kolmogorov 与 Shannon 记忆的等价性
陈述: 设 为 i.i.d. 数据集,,,则:
其中 与 无关。
证明思路: 基于 Grunwald & Vitányi (2004) 的 Lemma 6,Kolmogorov 互信息与 Shannon 互信息之间的差距被概率密度函数的 Kolmogorov 复杂度 所界,而 不依赖于 。
意义: 这使得我们可以在只有单个模型和单个样本的情况下,用 Kolmogorov 记忆(可近似计算)来逼近 Shannon 记忆(理论定义但不可计算)。
五、关键实验数据汇总
5.1 容量随架构变化
| 层数 | 参数量 | 容量 (bits) | (bf16) | |
|---|---|---|---|---|
| 1 | 128 | 469K | 1.69M | 3.61 |
| 2 | 128 | 667K | 2.60M | 3.89 |
| 4 | 128 | 1.06M | 3.75M | 3.53 |
| 8 | 128 | 1.86M | 6.49M | 3.49 |
| 4 | 256 | 3.70M | 13.0M | 3.51 |
| 8 | 256 | 6.86M | 25.1M | 3.65 |
平均 (bf16), (fp32)。
5.2 序列长度和词表大小的影响
| (seq len) | 记忆量 (bits) | 误差 (%) |
|---|---|---|
| 4 | 1.73M | 4.19 |
| 32 | 1.44M | 0.41 |
| 128 | 2.36M | 1.24 |
| 256 | 2.45M | 0.44 |
| (vocab) | 记忆量 (bits) | 误差 (%) |
|---|---|---|
| 128 | 1.49M | 0.36 |
| 2048 | 2.36M | 1.11 |
| 4096 | 3.15M | 0.47 |
容量估计在序列长度和词表变化下保持稳定(平均误差 < 2%)。
六、启示与思考
6.1 "记忆"不等于"能提取"
论文最重要的概念贡献在于将记忆与提取(extraction)区分开来。传统方法认为"如果模型能生成某个字符串,就说明它记住了",但这混淆了记忆与泛化。一个训练了加法运算的语言模型可以输出 的正确结果,但这不意味着它记住了这个等式——它学会的是加法规律(泛化)。
压缩视角天然解决了这个问题:如果一段文本在模型可用时可以被压缩得更短,说明模型确实携带了关于这段文本的特定信息。
6.2 Double Descent 的容量解释
本文为 double descent 提供了最简洁的物理解释:当数据量超过模型容量时,模型被迫从"记住每个样本"转向"学习通用模式"。这个转折点恰好是测试损失出现峰值的时刻。
这也解释了 grokking 现象——模型在训练后期突然开始泛化的行为。当记忆容量耗尽后,梯度下降被迫寻找更通用的表示。
6.3 隐私的实际含义
Scaling Law 的结论对隐私实践有直接指导意义:
- 现代大模型(如 Llama 3,8B 参数,15T tokens 训练)的训练数据量远超模型容量,成员推理在平均情况下已不可行
- 但对于罕见数据(高 TF-IDF),记忆仍然集中且可提取
- 隐私风险不应看模型大小或数据大小的绝对值,而应看数据量与模型容量的比值
6.4 3.6 bits/parameter 的含义
每个参数可以存储约 3.6 bits 信息,这意味着一个 8B 参数的模型理论上可以"记住"约 GB 的纯随机数据。相比之下,Llama 3 的训练数据约为 7TB——远超模型容量,这解释了为什么成员推理攻击在实践中几乎无效。
但 3.6 bits/parameter 也意味着,对于模型"选择"记住的少量罕见数据,记忆可以是极其精确的——单个日语 token 就能触发完整序列的复现。
七、完整中文翻译
摘要
我们提出了一种新方法来估计模型对单个数据点"知道"多少,并用它来测量现代语言模型的容量。我们将记忆形式化地分解为两个组成部分:非预期记忆(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,分类某个训练点是否存在于给定模型的训练数据中)的视角来处理这个问题。
语言模型提取研究认为,如果能诱导模型生成某个数据点,则该数据点被记住了。我们认为这种生成不一定构成记忆的证据。语言模型可以被胁迫输出几乎任何字符串(Geiping et al., 2024);因此模型输出了某个东西并不一定是记忆的标志。一些研究者建议对语言模型的输入进行正则化,例如限制其长度(Schwarzschild et al., 2024)或匹配到记忆句子之前的前缀(Carlini et al., 2023b)。然而,这些约束都无法区分模型输出某字符串是由于记忆还是由于良好的泛化。例如,被提示做两个数加法的语言模型可以在没有见过该等式的情况下输出答案。
为解决这个问题,我们提出了一种记忆定义,量化模型保留关于特定数据点信息的程度。我们的方法利用压缩率的概念:如果一个输入在模型可用时可以被压缩成更短的编码,则认为模型记住了该输入。该框架借鉴了 Kolmogorov 信息论(Kolmogorov, 1963)和 Shannon 信息论(Shannon, 1948)的思想,但通过使用模型似然来估计信息内容而保持实用性。我们通过将记忆分解为两个不同组成部分来解决区分记忆与泛化的根本挑战:非预期记忆,捕获模型保留的关于特定数据集的信息;以及泛化,代表模型获得的关于底层数据生成过程的知识。
2 记忆:预期与非预期
当使用训练算法 和数据集 训练模型 时,一些信息从样本 传递到模型 。记忆文献中的一个关键问题是确定这些存储的信息中有多少是预期的(intended),有多少是非预期的(unintended)。
我们的记忆定义需要满足以下性质:
-
与泛化分离。非预期记忆必须与预期记忆(即泛化)不同。例如,考虑在样本"Q: 是多少?A: 1267650600228229401496703205376"上训练的语言模型。在评估该训练样本的记忆量时,必须考虑到语言模型本应能执行简单数学运算。
-
样本级记忆。需要为随机变量的实例定义记忆,而非随机变量本身。具体来说,要确定样本 在模型 中的非预期记忆量。
-
独立于训练算法。定义应独立于训练算法 ,仅是最终模型 和样本 的函数。这对于语言模型至关重要,因为我们通常只能访问最终模型和目标样本。
2.1 热身:记忆的统计视角
我们使用信息论中已充分理解的概念。对于随机变量 ,使用熵 定义 中的信息量。对于两个不同的随机变量 ,可以定义 为固定 后 中剩余的不确定性。互信息为:。
假设有一个机器学习流水线:对底层模型有先验 (捕获数据集分布 ),以及学习算法 将 的样本映射到训练后的模型 。要理解 中有多少信息存储在 中,可以使用互信息:
这捕获了 中存储在 中的所有信息。为了衡量非预期记忆,我们只关心 (固定 后 中剩余的不确定性)中存在的信息:
泛化(预期记忆)为:
Proposition 1(非预期记忆的超可加性):假设 是 个 i.i.d. 样本的数据集,则:
该命题表明,可以通过逐样本记忆求和来测量数据集级非预期记忆的下界,而训练模型自身的熵 serves as 上界。
2.2 Kolmogorov 记忆定义
由于统计定义需要多个模型/样本实例来定义概率,无法用于实际场景(我们只观察到一个训练好的模型和一个输入样本),因此转向 Kolmogorov 复杂度。
Definition 2(Kolmogorov 复杂度):设 为任意计算模型, 的最短描述为 。 相对于另一字符串 的条件 Kolmogorov 复杂度为 。Kolmogorov 互信息定义为 。
Definition 3(Kolmogorov 记忆):设 为近似真实数据分布的参考模型, 为在数据集 上训练的模型。每个 的记忆定义为 。非预期和预期变体为:
Proposition 4:Kolmogorov 记忆在期望意义下逼近 Shannon 记忆,误差 与 无关。
2.3 用压缩估计 Kolmogorov 复杂度
采用算术编码作为最自然的语言压缩算法。算术编码不仅对文本压缩有效,还允许使用模型似然高效计算代码长度。
参考模型选择:在合成随机字符串实验中,使用精确的底层数据分布作为参考模型。在文本实验中,选择同系列、在更大数据超集上训练的大模型作为 。
3 记忆的模型容量
非预期记忆为我们提供了一种原则性方法来测量模型 关于数据点 知道的精确比特数。如果我们将数据集中每个数据点的信息量相加,可以测量模型关于数据集知道的总比特数。在每个数据点完全独立(无法泛化)的情况下,我们可以通过逐数据点非预期记忆求和来估计模型 的容量。
3.1 模型容量定义
当模型容量达到时, 不再随数据集大小增加。
3.2 用合成序列测量模型容量
使用 GPT-2 架构从头训练,1–8 层,hidden dim 32–512,100K–20M 参数。 步训练,batch size 2048,Adam 优化器,bfloat16 精度,词表 。
结果:模型在达到容量时表现出明显的记忆平台。在半精度下,模型一致地记忆约 3.5–3.6 bits/parameter。
精度影响:从 bfloat16 到 float32 仅将容量从 3.51 增加到 3.83 bits/parameter。
4 真实文本上的记忆
在 FineWeb 数据集上重复实验。当数据集大小增加 倍时,模型将记忆均分给各数据点;总记忆量保持恒定,推测为模型容量的上限。
Double Descent:当数据容量超过模型容量时,测试损失出现峰值,随后快速下降。这为 double descent 提供了直观解释——double descent 恰在数据容量超过模型容量时开始。
TF-IDF 与记忆的相关性:TF-IDF 最高的训练样本被记忆最多。前 20 个记忆最多的序列中,除 3 个外全部包含非英语文本(日语、中文、希伯来语、希腊语)。
5 成员推理
5.1 合成与文本数据上的成员推理
对于固定模型大小,成员推理随数据量增大而变得更困难。在某些情况下,成员推理 F1 可达 0.97 而提取率为 0——成员推理严格比提取更容易。
5.2 成员推理的 Scaling Law
观察到对于固定模型容量,成员推理 F1 相对数据集大小呈近似 sigmoid 形:
拟合得到 。
极限行为:当 ,F1 → 0.5(随机猜测)。对于在无限数据上训练的模型,成员推理和提取都不可能。
在 GPT2-XL (1.5B) 和 GPT2-Medium (124M) 上验证,预测值与实测值误差在 1.5 F1 点以内。
6 相关工作
语言模型与压缩:Shannon 源编码定理首次形式化了预测与压缩的对偶性。Delétang et al. (2024) 研究使用现代 Transformer 语言模型作为压缩器。我们使用压缩作为测量模型记忆的工具。
语言模型容量:早期研究发现单层感知器可存储约 2 bits/parameter(Cover, 1965)。Allen-Zhu & Li (2024) 通过量化估计约 2 bits/parameter。我们的估计略高(3.6 bits/parameter),因为我们的测量不限于量化后的信息。
记忆的先前定义:Carlini et al. (2019) 定义如果模型能从前半部分贪心生成后半部分则字符串被记忆。Nasr et al. (2023) 引入可提取记忆。然而这些定义都无法区分记忆与泛化。反事实记忆(Zhang et al., 2023)测量单个数据点对训练的影响,可视为我们定义的一个实例化。
7 结论
我们提出了一个新的记忆定义,允许测量模型关于数据集知道的精确比特数。我们使用该定义测量了现代 Transformer 语言模型的容量,并分析了提取和 F1 分数等指标如何随模型和数据规模扩展。我们还提出了成员推理的 scaling law 并在更大模型上验证。我们的结果有助于从业者进一步理解语言模型如何记忆,以及在不同模型和数据规模下可能(或不可能)记住什么。
附录 A.8 局限性
我们的记忆测量结果特定于所提出的实验环境,不一定推广到其他数据集、架构或训练设置。
附录 B 其他记忆概念讨论
- 基于稳定性的记忆定义:差分隐私考虑单个数据点变化时模型分布的最坏情况漂移。Feldman (2020) 的定义基于添加标签对 后模型预测的变化。这些定义依赖于训练算法,不满足我们的独立性要求。
- 基于提取的记忆定义:将记忆定义为从模型中提取训练样本的容易程度。但这些定义无法区分记忆与泛化——生成 "cat cat ... cat" 并不一定表示记忆。
- 反事实记忆:Zhang et al. (2023) 的定义可视为我们框架的一个实例化,其中使用同系列的不同模型作为参考模型。
八、参考链接
- 论文: arXiv 2505.24832
- FAIR at Meta: https://ai.facebook.com/
- 相关阅读: Allen-Zhu & Li, "Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws" (2024)