遗忘曲线在 LLM Agent 内存中失效的底层原理
从信息论和表征空间的视角,解释为什么艾宾浩斯遗忘曲线不能直接套用到 LLM Agent 的记忆系统上,以及这对架构设计的实际含义。
去年帮一个 Agent 项目调试记忆系统时,发现一个诡异的现象:我们按照艾宾浩斯遗忘曲线设计了记忆衰减策略——近期记忆权重高、隔天复习权重回升——结果 Agent 的检索准确率反而随着时间推移越来越差。直觉上这是对的呀,人类不就是这么遗忘的吗?
后来才想明白:LLM 的"记忆"和人类的记忆,在底层机制上是两码事。 强行套用遗忘曲线,不只是不精确的问题,而是方向性错误。
人类遗忘的本质:信号衰减
艾宾浩斯曲线描述的是一个生物学过程:神经元之间的突触连接如果不定期激活,其传导效率会指数级下降。你今天学了一个新单词,不复习的话,一周后大脑里对应的神经通路就"生锈"了。这种衰减是载体级别的物理变化——信息存储介质本身就衰退了。
所以人类的复习策略本质上是重建信号——通过重新刺激同一组神经元来恢复突触强度。
LLM 的"遗忘"不是信号衰减
LLM 的 memory(不管是用向量数据库还是用上下文窗口实现)面临的是完全不同的约束:
第一,存储本身不会衰退。 向量数据库里的一条记录,今天存进去和一年后读出来,embedding 向量一个 bit 都不会变。写入时是什么精度,检索时就是什么精度。没有"生锈"这回事。
第二,检索瓶颈在表征对齐,不在信号强度。 LLM 检索失败的真实原因是什么?不是"记忆变弱了",而是当前 query 的 embedding 和那条记忆的 embedding 之间的余弦相似度不够高。这种错位可能来自:
- query 的语义表征发生了偏移(用户的提问方式和记忆写入时的表述不同)
- 记忆本身的信息密度不够(存了太多噪音,有用的信号被稀释了)
- 检索策略在大量候选记忆中被高相似度的干扰项带偏了
第三,衰减是非均匀的。 人类遗忘对近期记忆的打击最大(先快后慢),但 LLM 的"遗忘"——也就是检索失败——可能发生在任意时间点。一条三小时前的关键记忆可能因为一个表述差异就被"遗忘"了,而一条三天前写入的噪音记忆反而因为某个巧合的语义匹配被频繁召回。LLM 没有"时间衰减"这个概念,只有"语义距离"。
那为什么用时间做衰减还能用?
因为实践中,时间衰减往往碰巧和语义偏移相关——随着时间推移,用户的 query 风格、关注的子话题确实会微妙地变化,这种变化和记忆的 timestep 有一点点弱相关性。但把这种弱相关作为核心设计原则,就像用温度和海拔的关系来造温度计——有一定道理,但误差大到不可控。
更靠谱的做法是什么?
从第一性原理出发,Agent 内存的检索策略应该围绕表征对齐来设计,而不是时间衰减:
-
多视角 embedding。 一条记忆写入时不止存一个 embedding,而是从不同粒度(关键词、摘要、原始内容)同时索引。query 和任一视角的匹配都能召回。
-
动态上下文重加权。 检索时不是简单取 top-k,而是让当前对话上下文对候选记忆做二次过滤。这和人类"在什么场景下想起什么事"是同理的——不是记忆本身变了,而是场景在帮你筛选。
-
遗忘应该是结构性的,而不是时间性的。 该忘的不是"旧的记忆",而是"冗余的、低信息密度的、被更新的记忆所覆盖的"记忆。这需要 Agent 有鉴赏能力——判断一条记忆有没有保留价值,而不是一刀切按时间砍。
这其实引出一个更根本的问题:我们对"记忆"这个词的理解太人类中心主义了。 一个系统的记忆策略,最终应该由它的遗忘模式反过来定义——你先搞清楚你的系统是怎么"忘"的,然后再设计它是怎么"记"的。先有遗忘,才有记忆。
评论
发表评论