LoRA 到底能记住多少东西?一个优雅的幂律定律告诉你答案

你有没有想过这个问题——当你用 LoRA 给大模型"灌"新知识的时候,它的记忆容量到底有没有上限?秩 r 开到多大才够?序列长到什么程度就记不住了?

我之前做知识注入的时候一直有这个困惑:明明 loss 已经降得很低了,但模型就是没法精确复述训练过的内容。有些 token 死活记不住,像钉子一样钉在那里不动。这到底是训练没到位,还是容量本身就不够?

这篇来自浙江大学和阿里巴巴的论文给了一个相当漂亮的回答——LoRA 的记忆容量遵循一个简洁的幂律定律,而且记忆成功与否存在一个确定性的相变边界。


📖 核心摘要

痛点:LoRA 被广泛用于给 LLM 注入新知识,但大家对它的记忆容量极限和内在机制一直缺乏定量理解,现有评估都是"能不能答对下游任务"这种粗粒度指标。

核心发现:损失减少量 \(\Delta\mathcal{L}\) 与 LoRA 秩 \(r\) 和序列长度 \(\ell\) 之间存在一个鲁棒的幂律关系 \(\Delta\mathcal{L} = C \cdot r^{\alpha} \cdot \ell^{-\beta} + b\),在多种设置下 \(R^2 \gt 0.98\)。更关键的是,token 级别存在一个 \(p=0.5\) 的确定性相变——低于这个阈值的 token 就是记不住。

方法:基于相变洞察提出 MemFT 策略,把训练预算动态集中到"顽固 token"上,在长上下文记忆测试中实现了从 94.7% 到 100% 的突破(Llama3.1-8B)。

我的判断:这是一篇偏理论洞察的工作,核心价值在于把 LoRA 记忆这件事从"玄学调参"拉到了"有公式可循"的层面。幂律定律本身足够简洁优雅,相变机制的发现也很有工程指导意义。不过实验限于 8B 模型,泛化性还需验证。


📋 论文信息

项目 内容
标题 How LoRA Remembers? A Parametric Memory Law for LLM Finetuning
作者 Ziwen Xu, Haiwen Hong(共同一作), Linsong Yu, Benglei Cui, Longtao Huang, Hui Xue, Ningyu Zhang(通讯)
机构 浙江大学、阿里巴巴集团
arXiv 2605.30260
代码 https://github.com/zjunlp/ParametricMemoryLaw

🎯 问题动机:为什么需要量化 LoRA 的记忆容量?

把 LLM 部署到生产环境后,模型的知识就冻结了。新的事实、用户偏好、领域知识——这些都需要持续注入。

目前有两条路:

方案 代表方法 优势 痛点
非参数方法 ICL、RAG、外部记忆 灵活,不改模型 上下文窗口有限,注意力稀释,推理开销大
参数记忆 LoRA、知识编辑 永久存储,无检索开销 容量不明确,调参靠经验

LoRA 作为参数记忆的主流选择,大家用得很多,但一直缺乏对其记忆容量的定量理解。现有评估都是通过下游 QA 任务来间接衡量——这就把"能不能精确记住原文"和"能不能理解并回答问题"混在一起了。

这篇论文的思路很清晰:把 LoRA 当作一个受控的记忆容量探针,直接测量它能精确记住多少内容,找到背后的数学规律。

图1:LoRA作为LLM潜空间中的可插拔记忆单元,参数记忆定律量化了容量-参数权衡

图1:论文的核心框架——LoRA 模块作为参数化记忆单元插入 LLM 的第 k 层,通过秩 r 控制容量。右侧展示了参数记忆定律的拟合效果(\(R^2 = 1.00\)),幂律公式简洁有力。


🏗️ 实验设计:怎么测 LoRA 的"纯记忆力"

作者设计了一个很巧妙的实验范式——精确参数记忆任务

给定数据集 \(\mathcal{D}=\{(\mathbf{q}^{(i)},\mathbf{a}^{(i)})\}_{i=1}^N\),其中 \(\mathbf{q}\) 是唯一的查询键,\(\mathbf{a}\) 是需要逐字记住的目标内容。冻结基础模型 \(f_{\theta_0}\),只训练 LoRA 参数 \(\Delta\theta\),要求模型能精确复述每个答案。

关键设计点:

  1. 仅答案计量:所有指标只在答案 token 上计算,问题 token 只提供上下文
  2. 三个层次的指标:序列平均损失(宏观)、token 级准确率(微观)、精确匹配准确率(严格)
  3. 两种测试场景
  4. 长上下文压力测试:用 LongBench 样本,随机替换 0%-100% 的 token 为无意义词汇,制造不同难度
  5. PhoneBook 短上下文测试:姓名→电话号码的键值对,测试高密度精确记忆

为什么要用随机 token?因为这样可以剥离语义理解的干扰——模型没法靠"理解"来辅助记忆,只能靠纯参数存储。


🧠 核心发现一:参数记忆定律

对数空间里的线性之美

当你把 \(\Delta\mathcal{L}\)(训练带来的损失减少量)对 LoRA 秩 \(r\) 和序列长度 \(\ell\) 画在对数坐标里,会看到一个非常漂亮的现象——数据点几乎完美地落在一个平面上。

图2a:ΔL对秩r在不同长度下展现对数线性关系

图2(a):不同序列长度下,损失减少量 \(\Delta\mathcal{L}\) 与 LoRA 秩 r 的关系。在对数-对数坐标中呈现近乎完美的线性——秩越大记得越多,序列越长记得越少,而且这种关系是幂律的。

这个观察被形式化为参数记忆定律

\[\Delta\mathcal{L}(r, \ell) = C \cdot r^{\alpha} \cdot \ell^{-\beta} + b\]

其中: - \(C\) 是由模型和数据分布决定的缩放常数 - \(\alpha\)(容量指数):秩在增强记忆容量方面的效率 - \(\beta\)(长度惩罚指数):更长序列带来的记忆难度非线性增加 - \(b\) 是偏置项

拟合效果有多好?

图2b:预测值vs真实值散点图,R²=0.996

图2(b):幂律公式预测的 \(\Delta\mathcal{L}\) 与实际测量值的对比。\(R^2 = 0.996\),几乎完美拟合。

看到这个 \(R^2 = 0.996\) 的时候我确实有点惊讶。一个这么简洁的公式能在如此多样的设置下保持这样的拟合度,说明背后确实有某种深层的结构性规律在起作用。

完整的拟合结果:

模型 纯语义(r0) 20%随机(r20) 100%随机(r100) 混合数据 PhoneBook
Llama3.1-8B R²=0.992 R²=0.994 R²=0.996 R²=0.987 R²=0.981
Qwen3-8B R²=0.996 R²=0.993 R²=0.996 R²=0.983 R²=0.990

不管是纯语义文本、完全随机 token、还是短上下文的电话簿任务,同一个公式都能准确拟合。这种跨设置的鲁棒性是这个定律最有说服力的地方。

这个定律的工程意义

坦率地讲,这个定律给了一个非常实用的工具:在部署前就能预估 LoRA 的记忆容量是否够用

比如你有一批长度为 \(\ell\) 的知识需要注入,想达到某个目标 \(\Delta\mathcal{L}\),直接代入公式就能算出需要多大的秩 \(r\)。不用像以前那样盲目试错。


🔬 核心发现二:确定性相变——为什么 loss 低了准确率还是零?

损失-准确率失配现象

这是论文里让我觉得最有洞察力的部分。

图2c:热力图显示大量loss接近零但准确率也接近零的情况

图2(c):不同秩 r 和长度 \(\ell\) 设置下的最终损失热力图。注意左下角——loss 已经很低了(深色区域),但如果你同时看准确率,会发现很多配置的精确匹配率接近零。

这个现象在工程中太常见了:loss 曲线看着很漂亮,一测精确复述就翻车。原因是什么?

平均损失是个"温柔的谎言"——它把简单 token 上的高置信度和困难 token 上的灾难性错误平均在了一起。而在自回归生成中,一个 token 预测错了,后面的上下文就全变了,直接导致序列崩溃。

p=0.5 相变边界

作者在 token 级别做了细粒度分析,发现了一个非常清晰的规律:

图3a:token级概率动力学,展示顽固位置

图3(a):跨不同秩的 token 级概率动力学。绝大多数 token 的预测概率接近 1.0(记住了),但存在稀疏的"顽固位置"——这些位置的目标 token 概率持续低于 0.5,即使增大秩也顽固不动。图中标注了位置 i=153 处的首次失败 token。

贪心解码选概率最高的 token。如果目标 token 的概率 \(p \gt 0.5\),那它一定是概率最高的候选者(因为没有其他单个 token 能超过 0.5),所以一定能被正确解码。

反过来,\(p \lt 0.5\) 时,目标 token 失去了概率主导地位,随时可能被其他候选者超越。

这对应一个临界损失值:

\[\mathcal{L}_{crit} = -\log(0.5) = \ln(2) \approx 0.693\]

这就是相变边界: - 有序相\(\mathcal{L} \lt 0.693\)):token 被确定性地记住了 - 无序相\(\mathcal{L} \gt 0.693\)):token 处于不确定状态,随时可能失败

图3b:首次失败位置与最早p<0.5位置高度相关

图3(b):最早出现 \(p \lt 0.5\) 的位置与首次解码失败位置之间的关系。Spearman 相关系数 \(\rho = 0.908\),几乎所有点都落在对角线上方——说明 \(p \lt 0.5\) 确实是失败的充分预测指标。

这个发现的精妙之处在于:它把一个连续优化问题(降低 loss)转化成了一个离散的判断——每个 token 要么过了 0.693 这条线,要么没过。没过的那些就是"顽固 token",是整个序列崩溃的根源。


🔧 MemFT:基于相变洞察的训练策略

有了上面的理论基础,改进方法就很自然了——既然问题出在"顽固 token"上,那就把训练预算集中到它们身上。

MemFT-OT:简单粗暴的阈值掩码

\[w_t^{\text{TH}} = \mathbf{1}[\mathcal{L}_t \gt \mathcal{L}_{crit}]\]

已经跨过相变边界的 token(loss < 0.693)直接不参与梯度计算了。所有梯度信号集中在还没记住的 token 上。

这个设计零超参数,却非常有效。

MemFT-SW:自适应滑动窗口

在 OT 基础上增加了两层精细控制:

  1. 样本内空间滑动:找到首次预测错误的位置 \(a_i\),用指数衰减函数在它周围分配更多权重
  2. 批次间时间课程:训练早期只处理前面的批次,随着训练推进逐步扩展到所有批次

直觉上理解:OT 是"只看还没记住的",SW 是"重点看最容易崩的那个点附近"。


📊 实验结果

主实验:长上下文记忆压力测试

这个测试用的是完全随机 token——纯粹测参数记忆能力,没有语义可以"偷懒"。

Llama3.1-8B-IT 结果(token 级准确率 %):

方法 r=1 r=2 r=4 r=6 r=8 r=10 r=12 r=14 r=16
SFT 27.4 28.5 43.6 45.9 54.9 69.5 78.2 86.3 94.7
MemFT-OT 27.3 36.4 45.6 54.7 63.6 70.5 85.4 94.7 100.0
MemFT-SW 32.5 37.5 46.0 52.3 56.0 63.4 69.1 76.6 81.1

看 r=16 这一列:SFT 只能到 94.7%,MemFT-OT 直接拉满到 100%。这 5.3 个点的差距在精确记忆场景下是质变——从"差不多记住了"到"完美复述"。

有个有趣的现象:低秩时 MemFT-SW 领先,高秩时 MemFT-OT 加速更快。我的理解是,低秩时容量本身就紧张,SW 的精细化分配更有价值;高秩时容量充裕,OT 的简单粗暴反而更高效——直接把所有火力集中在剩余的顽固 token 上就够了。

PhoneBook 基准

Llama3.1-8B-IT 精确匹配准确率(%)

方法 r=1 r=2 r=4 r=8 r=16 r=32 r=64
SFT 0.50 3.85 18.7 28.0 37.8 47.0 59.3
MemFT-OT 1.00 11.2 31.4 53.9 61.0 73.9 87.0
MemFT-SW 1.84 15.0 34.0 45.7 70.7 96.1 100.0

PhoneBook 任务更能体现 MemFT-SW 的优势——在 r=64 时从 SFT 的 59.3% 一路拉到 100%,涨了 40 多个点。这个任务的特点是键值对短但密度高,SW 的课程学习策略在这种场景下特别有效。

超越记忆:泛化能力也提升了

这个结果让我有点意外。作者在一个线性规则学习任务上(学习 \(f(x,y) = 3x + 5y + 7\))测试了 MemFT 对泛化的影响:

SFT 泛化(%) MemFT 泛化(%) 提升
1 19.0 34.0 +15.0
2 38.0 47.0 +9.0
4 46.0 53.0 +7.0
8 39.0 49.0 +10.0
16 41.0 54.0 +13.0

MemFT 在所有秩设置下都提升了泛化准确率,幅度在 7-15 个点之间。作者的解释是:MemFT 缓解了模型在简单样本上的过度自信,迫使它更多关注困难模式,这反而有助于学到更泛化的规则。

说实话这个解释我觉得还需要更多验证,但现象本身是有意思的。


🤔 我的判断

亮点

  1. 幂律定律的简洁性和鲁棒性:一个公式、三个参数,跨模型跨数据跨设置都能保持 \(R^2 \gt 0.98\)。这种简洁性通常意味着背后有深层的结构性原因,不是偶然的曲线拟合。

  2. 相变视角的洞察力:把连续的 loss 优化问题转化为离散的"过没过 0.693 这条线"的判断,直接解释了为什么 loss 低但准确率差。这个洞察对工程实践有直接指导意义。

  3. 实验设计的巧妙:用随机 token 剥离语义干扰,让实验真正测量的是"纯记忆能力"而不是"理解+记忆"的混合体。

局限和疑问

  1. 只在 8B 模型上验证:幂律定律的指数 \(\alpha\)\(\beta\) 是否随模型规模变化?如果变化,这个定律的实用性就打折扣了。

  2. 相变阈值对解码策略敏感\(p=0.5\) 这个阈值特定于贪心解码。实际部署中用 nucleus sampling 或 temperature sampling 时,这个边界会模糊化。作者也承认了这一点。

  3. MemFT 的适用范围:论文展示的都是"精确记忆"场景。但实际的知识注入往往不需要逐字精确——你需要模型理解一个概念并能灵活运用,而不是死记硬背。MemFT 在这类场景下的表现如何?

  4. 与知识编辑方法的对比缺失:浙大 NLP 组自己就有很多知识编辑的工作(WISE 等),论文没有和这些方法做对比,有点遗憾。

工程启发

如果你在做知识注入相关的工作,这篇论文有几个直接可用的启发:

  • 容量预估:用幂律公式预估所需的 LoRA 秩,避免盲目试错
  • 训练监控:监控 token 级 loss 分布,重点关注 loss > 0.693 的 token 比例
  • 训练策略:MemFT-OT 实现简单(就是个 loss mask),在精确记忆场景下值得一试
  • 失败诊断:如果模型复述总在某个位置出错,去看那个位置的 token 概率是否低于 0.5

💡 精确记忆的应用场景

论文列举了 8 类需要逐字精确记忆的真实场景,我觉得这个整理本身就很有价值:

场景 示例 为什么必须精确
个人凭证 邮箱/密码 一个字符错就登录失败
法律合规 GDPR 条文 法律文本不允许改写
医学编码 ICD-10 代码 编码错误影响诊疗
模型水印 所有权标识 版权保护需要精确匹配
云配置 S3 端点 URL 路径错误导致服务不可用
学术引用 LaTeX 公式 数学符号必须精确
安全密钥 泄漏检测字符串 安全审计的基础
软件许可 激活密钥 格式错误无法验证

这些场景的共同特点是:容错率为零。差一个字符、一个标点、一个格式,整个输出就废了。这正是参数记忆定律和 MemFT 最有价值的应用领域。


📝 总结

这篇论文做了一件很有价值的事:把 LoRA 记忆这个大家"用得多但理解得少"的问题,从经验调参拉到了有理论框架可循的层面。

幂律定律 \(\Delta\mathcal{L} = C \cdot r^{\alpha} \cdot \ell^{-\beta} + b\) 简洁、鲁棒、有预测力。\(p=0.5\) 相变边界直接解释了工程中常见的"loss 低但效果差"的困惑。MemFT 虽然不算复杂的方法创新,但它是理论洞察到工程实践的自然延伸,效果也确实不错。

如果你在做 LoRA 微调相关的工作,特别是涉及精确知识注入的场景,这篇论文值得细读。它不会改变你的技术路线,但会让你对手里的工具有更清晰的认知——知道它的能力边界在哪里,知道问题出在哪里该怎么诊断。

有个更深层的问题论文没有回答,但我觉得值得思考:这个幂律定律是 LoRA 特有的,还是所有参数高效微调方法都遵循类似的规律?如果是后者,那我们可能正在看到某种关于神经网络记忆容量的基本定律的冰山一角。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我