AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


有趣的AI项目,MemoryBank像人类一样会遗忘记忆
发布日期:2024-08-03 17:34:12 浏览次数: 1954 来源:Bear实验室


不管是近期爆火的AI记忆层项目Mem0,还是复杂的RAG流程,大部分开发者一直在想办法解决让AI有长期记忆这个问题。本身这也是机器比人类更有优势的地方,人类的大脑实际并不适合长期记忆,机器可以很好的弥补人类的这个缺陷。然而偏偏有人在研究如何让AI像人类一样,也会随时间流逝而遗忘记忆。
有篇论文《MemoryBank: Enhancing Large Language Models with Long-Term Memory》,作者是来自国内中山大学、哈尔滨工业大学,以及瑞典皇家理工学院。论文研究提出MemoryBank,一种新型记忆机制,采用了艾宾浩斯遗忘曲线理论,模仿人类的记忆遗忘过程。这意味着AI可以更智能地决定哪些记忆需要保留,哪些可以适时遗忘,从而提供更加人性化的体验。
为了证明MemoryBank不仅仅是理论上的概念,论文作者还开发了一个名为SiliconFriend的聊天机器人。使用从各种在线来源收集的38k个心理对话进行了LLM的LoRA微调,这使它能够表现出同理心、细心,并提供有用的指导,使它能够熟练地处理充满情感的对话。它不仅能在对话中展示出高度的同理心和洞察力,还能通过不断学习和记忆,成为你真正的长期AI伴侣。
感兴趣的同学可以访问Github仓库,自己研究。https://github.com/zhongwanjun/MemoryBank-SiliconFriend
下面我们看看MemoryBank是怎么模拟人类的记忆遗忘过程的,这是个有意思设计。

艾宾浩斯遗忘曲线
艾宾浩斯遗忘曲线(Ebbinghaus Forgetting Curve)是由德国心理学家赫尔曼·艾宾浩斯(Hermann Ebbinghaus)于19世纪末通过实验研究提出的,用于描述人类记忆随时间推移而逐渐减少的规律。艾宾浩斯(1850年1月24日 - 1909年2月26日)是德国著名的心理学家和实验心理学的创始人之一。他在研究记忆的过程中,以自己为实验对象,使用无意义音节作为记忆材料进行了一系列的实验。这些实验结果最终绘制成著名的艾宾浩斯遗忘曲线。

艾宾浩斯遗忘曲线揭示了记忆随时间变化的规律:在学习后立即开始遗忘,并且最初遗忘速度非常快,随后逐渐减缓,最终趋于稳定。具体来说,遗忘的过程可以分为以下几个阶段:
  • 初期快速遗忘:在学习后的前几小时内,遗忘速度最快,大约有70%的学习内容会在短时间内被遗忘。
  • 中期缓慢遗忘:经过一定的时间后,遗忘速度会逐渐减缓,但仍然存在一定程度的记忆丧失。
  • 后期稳定遗忘:随着时间的推移,遗忘速度进一步减缓,最终达到一个相对稳定的水平
如果用数学模型表示,具体来说,艾宾浩斯遗忘曲线可以用以下公式表示:

其中:
  • y 表示在时间 t 处的记忆保留量;
  • k 是一个常数,代表遗忘速率;
  • t0 是学习结束的时间点;
  • e 是自然对数的底数,约等于2.71828。

MemoryBank的记忆机制
记忆是一个围绕三个中心支柱构建的统一机制,除了会像人类一样遗忘的设计外,其他和普通的记忆库设计并没有什么区别:
(1)作为主要数据存储库的记忆存储器。
(2)用于上下文特定记忆回忆的记忆检索器。
(3)从艾宾浩斯遗忘曲线理论中汲取灵感的记忆更新器。


模拟遗忘曲线
项目使用了一个简单的函数模拟艾宾浩斯遗忘曲线,从而计算之前某一时刻的记忆,在当前时刻遗忘的概率是多少。
def forgetting_curve(t, S):"""根据遗忘曲线计算时间t的信息保留率。:paramt:自获取信息以来经过的时间(以天为单位)。:类型t:float:param S:内存强度。:类型S:浮动:return:保留时间t的信息。:rtype:float记忆强度是记忆模型中用来表示大脑中记忆痕迹的持久性或稳定性的概念。在遗忘曲线的背景下,记忆强度(表示为“S”)是一个参数影响信息被遗忘的速率。记忆强度越高,遗忘率越低,并且信息被保留的时间越长。"""return math.exp(-t / 5*S)# # Example usage# t = 1# Time elapsed since the information was learned (in days)# S = 7# Strength of the memory
# retention = forgetting_curve(t, S)# print("Retention after", t, "day(s):", retention)
当S=3.6,通过matplot画出曲线,还是挺像的

艾宾浩斯遗忘曲线描述的是遗忘的知识量,不完全一样,但通过增加在读取记忆时,如果随机数大于上面函数的返回值则视为遗忘,小于返回值则认为记得,还是可以模拟人类的记忆。
# Keep the memory with the retention_probabilityif random.random() > retention_probability:forget_ids.append(i)else:  docs.append(Document(page_content=tmp_str,metadata=metadata))

局限
人类大脑是极其复杂的生物体器官,一些研究表明,人类之所以会遗忘是为了保护大脑,这是从生物结构上就决定了的。机器并没有像人脑大脑一样需要被保护的器官,能长期精确记录信息是机器优势。
当然论文研究的主题,是MemoryBank的记忆机制,打造一个AI伴侣SiliconFriend(硅基朋友),会遗忘记忆从而使其更像人类。这还是一个非常有创意、有意思的研究。只是在实际场景中,使用的局限还是比较大。
论文概述说到,让AI可以更智能决定哪些记忆保留,实际代码实现是随机的。人类对一些重要的事件,往往会有更深的记忆,并不是随机的。
我觉得现阶段使用AI的最好方式,是把AI作为Copilot的人类助手,让AI放大机器在长期精确记录、快速搜索这些方面能力,目前的AI还没法达到人类在认知、共情等方面的水平。
如果是打造融合RAG、记忆层的AI知识库产品,建议阅读一下 Tiago Forte 的《打造第二大脑》,“信管法则(CODE)”抓取、组织、提炼和表达,很值得参考。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询