LLM 的记忆问题,可能是 AI 安全研究员没想到的突破口

当 AI 开始忘记自己说过什么

做漏洞研究的时候,最让人头疼的事情不是找不到漏洞,而是你明明已经验证过某条路走不通了,但 AI 过几个小时之后还会自信满满地建议你重新走那条路。

Jordy Zomer 是荷兰 Twente 大学的一名研究生,也在做 AI 安全相关的研究。最近他在博客上分享了一段经历——他用 LLM 辅助漏洞研究时,发现了一个反复出现的问题:模型会在长时间的对话中逐渐”遗忘”已经建立的结论。

这不是那种明显的幻觉。模型没有编造事实,它只是忘记了一些之前对话中已经确认过的信息。比如你已经告诉它某个假设不成立,但它几轮之后又重新开始基于那个假设推理,好像之前的一切都没发生过。

这听起来可能不是什么大事。但 Zomer 在深入调查后发现,这个问题比想象中严重得多。而且更有趣的是——它可能不只是个问题,还是一个可以利用的工具。

为什么 LLM 会遗忘

为什么 LLM 会遗忘

Transformer 模型的注意力机制有一个关键约束。它能同时关注所有输入,但权重分配是有代价的。

当你把几万字的内容喂给模型时,注意力机制需要在所有文本中分配权重。越早出现的信息,被后续大量文本稀释的概率就越大。

这不是模型故意遗忘,而是架构上的必然结果。你可以把注意力权重想象成聚光灯——舞台有限,光源也有限,照得越远就越暗。

选择性遗忘的规律

Zomer 的实验发现了一个关键规律:LLM 的遗忘不是随机的。某些类型的信息更容易被保留,某些更容易被丢弃。

一般来说,最新出现的信息最容易被记住,因为它们在上下文窗口的末尾。结构化的信息比散乱的细节更容易被保留。

更重要的是,模型倾向于记住那些与当前任务直接相关的信息。如果你在漏洞研究中问模型某个函数有没有缓冲区溢出,它会记住你对这个函数的分析。但如果你之前说过我们排除了网络层面的攻击,这个结论可能很快就消失了——因为它和当前的分析任务不直接相关。

理解这个问题需要从 LLM 的工作原理说起。

大语言模型本身是没有记忆的。每次你发送一条消息,模型接收的是整个对话历史——你的问题加上之前所有的问答。模型根据这个完整的上下文来生成回复。

看起来这样应该能保持记忆才对。但实际情况是,随着对话变长,上下文窗口里的信息越来越杂乱。模型需要在海量的文本中找出最相关的部分来参考。在这个过程中,早期的信息往往会被”稀释”——不是被删除了,而是被淹没在了大量后续内容里。

你可以把上下文想象成一张越来越大的桌子。一开始桌面上只有几样东西,很容易注意到每样东西。但随着时间推移,桌上堆满了东西,早期放上去的物品就被盖在了下面。模型不是看不见它们了,而是在生成回复时需要花更多精力去找到它们。

更麻烦的是,LLM 倾向于关注最近的输入。你告诉它”A 不成立”,几轮之后它更可能记住”B 成立”,而 A 的细节已经模糊了。

从问题变成工具

Zomer 原本的研究目标是解决这个问题——他想要建立一个更好的记忆系统,让 LLM 在长期漏洞研究中保持信息的一致性。他尝试了很多现有的方案:把之前的对话存入向量数据库,用 embedding 搜索相关信息,再在需要时检索回来。

这些方法效果不错,但仍然有一些根本性的问题。向量搜索只能找到语义上相似的内容,但它无法理解逻辑上的依赖关系。模型可能检索到了正确的信息,但不一定知道什么时候该用这些信息。

在一次调试过程中,Zomer 观察到了一个有趣的现象。他发现,当模型的上下文窗口接近满载时,它的行为会发生可预测的变化——某些信息会被优先保留,而其他信息则会被边缘化。更关键的是,这种”遗忘”不是随机的,而是有规律的。

他开始思考:如果能精确控制什么信息被保留、什么信息被丢弃,能不能把这种”遗忘”机制变成一个有用的工具?

于是他做了一个实验。他把一段程序的代码和历史对话记录一起喂给模型,然后观察模型在不同上下文长度下对代码的理解变化。他发现,当上下文变长时,模型对代码的某些特征的分析会突然消失——而这些消失的分析恰好对应于代码中的某些特定模式。

换句话说,LLM 的”遗忘”行为本身可以反映代码的结构特征。这和他之前做的程序分析工作意外地产生了交集。

这对普通用户意味着什么

你可能不会像 Zomer 那样用 LLM 做漏洞研究,但这个发现对日常使用 AI 也有参考价值。

不要在长对话中依赖模型的连续性。 如果你在一个很长的对话中建立了一些前提条件或约束,过一段时间之后再问相关问题,模型可能会给出和之前不一致的回答。这不是模型在骗你,而是它的”记忆”确实有局限性。

重要结论要反复确认。 在让 AI 帮你分析复杂问题时,每隔一段时间就把它的关键结论复述一遍,让它重新确认。这相当于帮它刷新一下记忆,能显著减少前后矛盾的情况。

控制上下文长度。 如果你的对话很长,考虑定期开启一个新对话,并把之前的重要结论整理后粘贴到新对话的开头。这样能确保新对话从一开始就有清晰的前提。

一个正在发展的研究方向

Zomer 的文章发布后,在 Hacker News 上引发了热烈讨论。很多人指出,这个问题不仅仅是 LLM 的缺陷,而是当前所有基于Transformer架构的语言模型的固有特性。

有研究者提出了一些可能的改进方向:改进注意力机制,让模型在长上下文中更好地保留早期信息;开发更好的外部记忆系统,让模型能够精确检索历史信息而不是依赖上下文窗口;甚至有人提议改变模型的基础架构,引入类似数据库的持久化存储机制。

但这些问题还没有成熟的答案。LLM 的记忆问题仍然是当前 AI 研究的一个重要前沿。

对我个人来说,这次发现让我对 AI 的能力边界有了更清晰的认识。它能处理的信息量是有限的,它的”记忆”是不可靠的。把这些限制当作工具而不是障碍,反而能让我们更好地使用它。