Generative agents 论文笔记

120 阅读7分钟

基础概念

第一个是记忆流(Memory Stream) :一个长期记忆模块,以自然语言记录虚拟人个人经历的总列表。记忆检索模型会综合考虑事务的相关性、时序性和重要性的权重,在其中提取出所需的信息以指导虚拟人的短期行为。

第二个是思考(Reflection) :它将记忆综合成具有时间序列的高级推理,使得虚拟人能够对自身和他人做出总结,以便很好地操控自身行为。

第三个是个人规划(Plan) :它将这些结论和当前环境转化为高级行动规划,然后递归地转化为详细的行为和反应。这些思考和个人规划又会被被反馈到记忆流中进而影响虚拟人未来的行为。

虚拟世界介绍

1. 角色数据初始化

在小镇中有一个由25个身份迥异的虚拟人。我们为每个虚拟人编写了一个自然语言描述段落,描述了他们的身份、职业和与其他虚拟人的关系,作为初始记忆(seed memories) 。例如,John Lin的描述如下:

  • John Lin是便利店店主,热衷于帮助人们。他一直在努力让顾客更为方便地购买各种物品;
  • John Lin与他的妻子Mei Lin和儿子Eddy Lin一起生活,Mei Lin是一名大学教授,Eddy Lin是一名学习音乐的学生;
  • John Lin非常爱他的家人;
  • John Lin认识隔壁的老夫妇Sam Moore和Jennifer Moore已经有几年了;
  • John Lin认为Sam Moore是一个友善和好心的人;
  • John Lin很了解他的邻居Yuriko Yamamoto;
  • John Lin认识他的邻居Tamara Taylor和Carmen Ortiz,但之前没有见过他们;
  • John Lin和Tom Moreno是Willows超市的同事;
  • John Lin和Tom Moreno是朋友,喜欢一起讨论当地政治;
  • John Lin对Moreno家庭有一定的了解,包括这个家庭里的丈夫Tom Moreno和妻子Jane Moreno。
  • 这些以分号隔开的描述语句将作为初始记忆放入虚拟人的记忆中。

2. 交流互动

每个虚拟人可以自言自语,这些自言自语会转化为影响整个沙盒虚拟世界的具体动作。

当两个虚拟人相遇时,我们的架构会决定他们是擦肩而过还是停下来进行对话,对话的方式均为人类自然语言。

现实世界的人类可以“附体”到某个指定的虚拟人身上,也是通过人类自然语言与虚拟人进行交流。

3. 环境交互

虚拟人也会影响虚拟世界中物体的状态。例如,当虚拟人睡觉时,床处于占用状态,当虚拟人用完食材做早餐时,冰箱处于空箱状态。虚拟人发现虚拟世界的物体发生变化时,也会影响虚拟人本身的行为。例如:

  • <Isabella’s apartment: kitchen: stove> is burning
  • Isabella 会在下一刻注意到这一点,然后去关掉炉子并重新做早餐。
  • 同样,如果用户在Isabella进入浴室时将淋浴的状态设置为“漏水”,她会从起居室拿工具来修理漏水。

4. 虚拟世界虚拟人之间的社交

信息传播:

当虚拟人相遇时他们便可以进行对话,信息可以从一个虚拟人传播到另一个虚拟人。例如,在便利店 Sam 和 Tom 之间的对话中,Sam 告诉 Tom 他参加了当地选举。

关系记忆:

随着时光流逝小镇中的虚拟人会建立新的关系并与其他虚拟人的互动。例如,在一开始,Sam 不认识 Latoya Williams。在公园散步时,Sam 遇到了 Latoya,他们互相介绍。Latoya 提到她正在进行一个摄影项目:“我来这里拍一些照片,是为了一个我正在进行的项目。”在之后的互动中,Sam 与 Latoya 的互动显示出对那次互动的记忆,他问道:“你好,Latoya,你的项目进展如何?”她回答:“你好,Sam,进展很顺利!”

协作:

Isabella Rodriguez 在 Hobbs 咖啡馆有了一个新的想法——计划在2月14日下午5点到7点举办情人节派对。以这件事为起点,虚拟人会在 Hobbs 咖啡馆或其他地方看到朋友和顾客时邀请他们参加派对。然后,Isabella 在13日下午在咖啡馆迎接大家。Maria 是 Isabella 的常客和亲密朋友,她来到咖啡馆。Isabella 请 Maria 帮忙布置派对,Maria 答应了。Maria 的角色描述提到她对Klaus有好感。那天晚上,Maria 邀请了 Klaus,Klaus 欣然接受。

情人节那天,包括 Klaus 和 Maria 在内的五个虚拟人在下午5点来到 Hobbs 咖啡馆,他们享受派对的欢乐。在这个情景中,初始设定只有两个:

  1. Isabella 有举办派对的想法;
  2. Maria 对 Klaus 的好感。而至于传播消息、布置派对、邀约、到达派对并在派对上彼此互动的社交行为都是由虚拟人自发出现的。

架构

我们的架构的一个核心挑战是确保在需要时检索和合成虚拟人记忆最相关的部分。

架构的核心模块是记忆流,本质上它是一个数据库记录了虚拟人的全部经历。在记忆流中,虚拟人根据所需进行检索历史记录用以规划虚拟人的行为,并对自身所处环境做出相应的反应。历史记录会递归地合成为越来越高层次的思考来指导虚拟人行为。所有内容都以自然语言描述的方式记录和推理,这就是为何我们的架构能与大语言模型进行兼容的原因所在。

未来生成虚拟人的基本架构的三要素——记忆、规划和思考

1. 记忆与检索

记忆流维护了虚拟人全部的历史记录,但是太多记忆可能会超出模型的 context 限制,同时也会分散模型的注意力。

一个常见的记忆流:

例如,Isabella Rodriguez在咖啡店工作,随着时间的推移她会累积出如下信息:

  1. Isabella Rodriguez正在摆放糕点,
  2. 玛丽亚·洛佩兹正在喝咖啡并为化学考试学习,
  3. Isabella Rodriguez和玛丽亚·洛佩兹正在讨论在Hobbs咖啡馆策划情人节派对的事情,
  4. 冰箱是空的。

为了解决上面的问题,提出了记忆检索的方案。架构实现了一个检索函数,它以虚拟人所处的现状作为输入值,并返回要传递给语言模型的记忆流的子集。

2. 思考

我们引入了第二种类型的记忆称为思考。这里的思考是由虚拟人生成的更高级、更抽象的大脑活动。因为它们是一种记忆类型,所以在系统开始检索时,它们与其他视觉记忆的结果一起被包括进来。思考是定期生成的;在我们的实现中,当虚拟人感知到的最新事件的重要性得分之和超过一个阈值(在我们的实现中为150)时就会形成思考。在实践中,我们的虚拟人大约每天思考两到三次。

思考的第一步是确定虚拟人要思考什么,根据虚拟人最近的经验可以提出哪些问题。

3. 计划

直接根据思考结果让大语言模型生成行动任务,可能会不符合常规经验或者虚拟人的过往习惯。所以需要有一个合理的计划管理模块。

用虚拟人的概述描述(例如,姓名、特征和最近经历的摘要)以及他们前一天的摘要,生成一个初始计划,然后递归生成一个更细粒度的计划。具体的粒度可以根据需要调整,按小时还是分钟或者其他。

4. 反馈

如果有和虚拟人相关的周围环境变化或其他事件发生,可能会影响到虚拟人后续计划的执行,需要重新检索更新计划。然后继续执行计划。

参考资料

  1. 论文原文:arxiv.org/abs/2304.03…
  2. zhuanlan.zhihu.com/p/662730929