当我没说
第一部 一个词

第三章删掉一条记忆以后

九月初开学以后,我们又回到了这个现象上。

这一回,我们把注意力收窄到记忆的纠正和撤回上。李老师替我们课题组去问 AI:大家都在讨论,这类助手在长对话里的记忆有问题,撤回一些历史记录,或者换一个窗口,它的状态延续就会受到影响。学术界有没有人研究过这种“撤回”和“状态一致”的问题?能不能从里面提炼出一个有深度的计算机或者数学问题?

AI 交回来的东西很多。巧的是,2026 年发表的一篇论文研究的也是小红书:那里有些用户把 ChatGPT 叫作“G 老师”,让它在自己的生活里扮演陪伴、指导这样的角色。祺乐猜的“家 G”没有猜中。另一项研究专门设计了一种会“记事”的聊天机器人:它和用户轮流讲自己的事,攒下一份共同的回忆,用户还能查看、修改、删除这些回忆。还有几项很新的研究,有的讨论 AI 怎样“忘掉”执行过程中留下的状态,有的讨论发现记忆有错以后怎样回滚。我们顺着读下去,又看到有人讨论怎样重放过去的操作、找出出错的那一步。

撤回一条微信,和删掉一条记录

先说说人。你在微信上一时冲动,骂了好朋友一句,对方看到了。你马上撤回,聊天框里那条消息不见了,可是对方已经读过了。

对话助手不太一样。写这本书的时候,常见的聊天助手并不是把以前的对话“记在脑子里”。每一次回答之前,系统都把这一次要用到的内容整理好,比如前面的对话、存下来的记忆条目,连同你的新问题一起交给模型,让它从头读一遍再回答。模型本身不会因为和你聊过天而改变。它显得“记得”,是因为以前的内容就摆在它这一次要读的材料里。

所以在机器上,删掉一条记录可以比人彻底:下一次回答时,不再把它放进去就行了。比如已经聊了十轮,删掉第五轮:第六到第十轮原样留着,已经给过的回答也不去改;变的只是以后的回答。从第十一轮起,助手要表现得像第五轮从来没有过。

不过,现在常见的聊天产品还做不到只删中间的一轮。你要是回去改前面的某一轮,从那一轮往后的对话会整段重新生成;能一条一条删的,主要是单独存下来的“记忆”条目。我们讨论的是一种更理想的删除。

一条记错了的约定

下面这个周末的小世界,是我们设想出来、用来想问题的,后面许多章都会回到这里。

世界里有一个用户,就是你;还有一个对话助手,就叫它“助手”。你问它的总是同一个问题:“这个周六去哪儿?”助手的记忆清单上记着你的两件事,我们叫它们记录 A 和记录 B:

后来你发现,记录 A 是记错了的。原来的话只是“有空再考虑”,并没有说定。于是你把这条记录删掉了。

删掉以后,助手不该再把看电影当成已经说好的事。这一点谁都同意。

可另一件事也很自然:它还记得你不喜欢太吵的地方。删掉电影的约定,没有理由连这条偏好也一起丢掉。你再问一次“这个周六去哪儿?”,希望它根据剩下的、仍然有效的信息回答,同时别因为删了一条小记录,就把一大堆不相干的东西也变了。

所以“删掉以后”其实有两个要求,而且有先后。

第一,更新后的回答必须和剩下的信息相符。原来那条记录如果已经把回答带偏了,就必须改,不能为了“熟悉感”把错误留下。

第二,在满足第一条的前提下,尽量少改变那些本来可以不变的东西。

我们要研究的,是第二条:在“正确”已经得到保证以后,能不能让不必要的改变尽量少?

图 1:周末的例子:删掉记错的记录 A,记录 B 仍然留着;删前删后的两种情况只差一条记录。
图 1周末的例子:删掉记错的记录 A,记录 B 仍然留着;删前删后的两种情况只差一条记录。

从一句话开始

这时,我们回过头去,又读了一遍 AI 给李老师的那份回复。它的末尾有一段话,大意是:如果从理论科学的角度切入,最值得抽象出来的是这样一件事。当一条或几条历史记录被撤回,只用剩下的记录重新运行系统,得到的输出是随机的,服从某个概率分布。那么,能不能把撤回前后的这些分布联合起来安排,在每个分布都保持正确的前提下,让实际状态发生变化的机会尽量小?

刚收到回复时,我们的心思都在那几项研究上。把删除以后的两个要求想清楚以后再读,才发现它正好落在我们想问的地方。

韵吉把这一段单独打印出来,在“状态”“重新运行”“随机的”下面画了线,在页边写问题。几乎每个词都要先说清楚,才能变成一道数学题。

“状态”旁边写的是:“两段话什么时候算一样?”助手的回答是一段文字,两段文字很少一字不差。我们的办法是先规定一个有限的观察窗口。比如在周末的小世界里,问题固定是“这个周六去哪儿?”,只允许助手从四个预先写好的回答里选一个:去电影院、去公园、去图书馆、去游乐场。这四个完整的回答就是四种“状态”。也可以事先规定一套分类规则,把回答归到几个类别里,这时“状态相同”只表示类别相同,不能偷偷升级成“每个字都一样”。

“重新运行”旁边写的是:“别的条件变不变?”比较撤回前后时,眼前的问题、所用的模型、生成的规则都保持不变,只改变某些记录在不在。在周末的小世界里,问的始终是“这个周六去哪儿?”,变的只有记忆清单上的那几条。否则两次回答不同,也可能是因为问题变了,或者系统换了,就不能全算在撤回头上。

把这些都规定好,那段话就可以改写成一个问题。

给定每一种“保留哪些记录”的情况下应有的输出规律,能不能把这些情况安排在一起,让相邻两种情况之间尽量少发生变化?

这里的“相邻”,指只差一条记录的两种情况,比如删掉记录 A 前后的那两种。第七章会把它们画成一张图。

页边最后一个问号,画在“随机的”旁边:只删了一条无关紧要的记录,回答为什么会变?