英文名称: Generative Agents: Interactive Simulacra of Human Behavior
中文名称: 生成代理:**人类行为的交互式模拟**
文章: http://arxiv.org/abs/2304.03442
代码: https://github.com/joonspk-research/generative_agents
作者: Joon Sung Park
机构: 斯坦福大学
日期: 2023-08-05 (预发表时间:2023.4)
引用次数: 231
论文建立了一个有 25 个机器人 (代理) 的虚拟小镇(沙箱环境),用户可以观察和干预代理的计划、分享新闻、建立关系和协调团体活动。用 GPT 工具模拟人类行为:起床,做早餐,去上班;作画,写作;形成意见、互相关注并发起对话;反思过去计划未来。
文中描述了一种架构,通过扩展大语言模型,使用自然语言存储智能体的完整经历记录,随着时间的推移将这些记忆综合成更高层次的反思,并动态地检索它们以规划行为。
论文还观察和评测了智能体作为个体和群体的行为,通过消融实验证明了代理架构的组成部分:观察、计划和反思,对于代理行为的可信度至关重要。
这篇文章非常具有启发性,很多点都可以引发进一步思考和研究,比如在产品设计方面:定制反映自己特点和经验的计划助手;在结构设计方面,提出三个组件:记忆、反思、计划 的架构,用于存储、合成和应用相关记忆,根据这些原则,应对各种复杂的场景。在具体实现方面还在附录中给出了一些可用的提示信息。
其中有两个实验结果很有意思,一个是:如果没有观察、计划和反思,仅有一般性的知识,模型性能将大打折扣;另一个是:”你会选择谁共度一小时“,如果不加反思,结果是最频繁交往的人,反思之后是深层价值观相似的人。
也可以把它看作RAG (检索增强生成) 的扩展:除了可以把本地知识喂给模型,还可以把人的行为、记忆组织起来喂给模型,让模型帮助人作一些预测和决策,其应用领域相当广泛。
之前听同事讲了一遍,自己又看了两遍,整理了一下,总计花了一天多的时间。下面对整个结构过了一遍,除了核心点以外,还摘录了我觉得重要的内容。
论文研究如何构建一个交互式的人工社会,以反映真实可信的人类行为。计算机驱动的代理根据过去的经验进行前后一致地行为,对环境做出真实的反应。模拟可以在虚拟空间和社区中呈现真实的社会现象,训练人们如何处理罕见但困难的人际关系情境,测试社会科学理论……
本文中介绍的生成型代理,能够产生可信的个体和群体行为的模拟。在个体性方面,生成式代理对自身、其他代理和环境进行各种推理;他们制定反映自身特征和经验的日常计划,执行计划,在适当的时候进行反应和重新规划;当用户(人)改变它们的环境或用自然语言命令它们时,它们会做出响应。在社会性方面,研究了新的社会动态的出现,新关系的形成,信息扩散,以及代理之间的协调。
文中设计了一种架构,该架构存储、综合和应用相关的记忆,使用大型语言模型生成可信的行为,包括三个主要组件:记忆流、反思、规划。
大语言模型可以在单个时间点上模拟人类行为,而实际生活中,随着新的互动、冲突和事件随着时间的推移而出现和消失,记忆不断增长,同时处理多个代理之间展开的级联社会动态则更为复杂。反思这些记忆以概括和得出更高层次的推论,并应用该推理来制定在当前和长期的代理行为中有意义的计划和反应。
论文贡献如下:
• 做了什么:生成代理,模拟人类行为,动态地受到代理的不断变化的经验和环境的影响。
• 怎么做的:新颖的架构,使得生成性代理能够记忆、检索、反思、与其他代理互动,并在动态演化的情况下进行规划。架构利用了大语言模型强大的提示能力,并支持更长期的代理一致性,管理动态演化的记忆能力,并递归地产生更高层次的反思。
• 评估:两项评估,受控评估确定架构组件重要性,并识别由不正确的检索等引起的故障;全面评估用于评估代理的社会性行为。
• 讨论:讨论交互系统中生成代理的机会以及道德和社会风险。
交互的人工智能系统旨在将人类的洞察力和能力与计算工具相结合,以增强人类的能力。近年来,出现了一些基于语言和代理的人机交互案例,即通过自然语言进行交流。
在虚拟环境中,通常简化代理的行为,使其无法涵盖在真实世界中可能发生的各种情境;这些代理通常在对抗性游戏中表现较好,这些游戏有明确的奖励目标,算法可以针对这些目标进行优化;然而,它们尚未成功解决在开放世界(自然生活)中创建可信代理的挑战。
图 2:沙盒世界:根节点描述整个世界,子节点描述区域(例如房屋、咖啡馆、商店),叶节点描述对象(例如桌子、书架)。代理记住一个子图,反映他们所见到的世界,并维护这些部分的状态。
由 25 个代理组成社区,为每个代理的身份编写一个自然语言描述段落,包括他们的职业和与其他代理的关系,作为种子记忆。
代理通过行动与世界互动,并通过自然语言与彼此交流。在每个时间步中,代理会输出一句描述他们当前行动的自然语言陈述,并使用表情符号显示在界面中。
用户(工作人员)通过自然语言与代理进行交流,通过指定一个角色来让代理感知他们;用户还可以扮演代理的“内心声音” ,使代理有可能将该陈述视为指令。
环境由手动生成。它包含一个小村庄常见的设施,包括咖啡馆、酒吧、公园、学校、宿舍、房屋和商店。还定义了使这些空间功能正常的子区域和物体,例如房屋中的厨房和厨房中的炉子(图 2)。
代理在 Smallville 中的移动方式类似于简单的视频游戏,进入和离开建筑物,导航地图,并接近其他代理。
用户可以作为一个代理进入沙盒世界进行操作。用户所扮演的代理可以是已经存在于世界中的代理,也可以是没有在 Smallville 中有过历史的外来访客;用户还可以通过以自然语言重写代理周围物体的状态来改变环境。
从单段描述开始,生成式代理开始计划他们的一天。随着时间流逝,他们的行为会随着这些代理之间和世界的互动而演变,建立记忆和关系,并协调共同的活动。
追踪系统在一天中对代理 John Lin 的输出展示生成式代理的行为(图 3)。
生成代理可以交换信息、建立新的关系并协调共同活动。这些互动不是预先编程的。
当代理注意到彼此时,它们可以进行对话,这样信息就可以从一个代理传播到另一个代理。
代理会随着时间的推移建立新的关系,并记住与其他代理的互动。
生成型代理彼此协调,关系进一步自动延展。如:用户设置了举办派对的初始意图,传播消息、装饰、邀请对方、到达派对并在派对上相互交流的社交行为是由代理架构自动发起的。
为开放世界中的行为提供一个框架:这个框架可以与其他智能体进行交互,并对环境的变化做出反应。生成型智能体将其当前环境和过去的经验作为输入,并生成行为作为输出。具体方法是:它将大型语言模型 (gpt3.5-turbo) 与合成和检索相关信息的机制相结合。生成型智能体产生大量的事件和记忆,这些记忆必须被保留,架构的一个核心挑战是确保在需要时检索和合成智能体记忆中最相关的部分。
完整的记忆流可能会分散模型的注意力,而且无法适应有限的上下文窗口。
内存流维护了代理经验的全面记录。它是一个内存对象的列表,每个对象包含自然语言描述、创建时间戳和最近访问时间戳。内存流的最基本元素是观察,即代理直接感知到的事件。常见的观察包括代理自己执行的行为,或者代理感知到其他代理或非代理对象执行的行为。
架构实现了检索函数,它以代理当前情况作为输入,并返回内存流的一个子集,以传递给语言模型。检索函数的实现取决于代理在决定如何行动时需要考虑什么是重要的。记忆流包括大量与代理当前情境相关和不相关的观察。检索识别出应该传递给语言模型以调整其对情境的响应的子集。
重要性考虑如下因素:
假设问题是:" 选择一个人陪你度过一个小时 ",如果只考虑观察记忆,代理会选择最频繁互动的人,通过反思则会选择有共同兴趣的人。
实现方法是:引入了第二种类型的记忆——反思。反思是由代理生成的更高层次、更抽象的思考。在检索发生时,反思与观察结果一起被包括在内。反思是定期生成的;当代理感知到的最新事件的重要性得分总和超过阈值时,生成反思,大约每天反思两到三次。
具体使用提示实现,形如”仅根据上述信息,可以回答关于这些陈述中的主题的三个最重要的高层次问题是什么?“,然后针对问题生成查询,并收集与每个问题相关的记忆(包括其他反思)。提示语言模型提取见解,并引用作为见解证据的特定记录。
反思包含对观察的反思和对反思的反思。代理会生成反思树:树的叶节点代表基本观察,非叶节点代表思考,随着树的层级越高,思考会变得更加抽象和高层。最终得出自我认知。
代理需要在更长的时间范围内进行规划,以确保他们的行动序列连贯可信。计划包括地点、开始时间和持续时间。
与反思一样,计划存储在记忆流中,并包含在检索过程中。代理在决定如何行动时可以同时考虑观察、反思和计划。代理可能会在需要时更改他们的计划。具体方法是自上而下逐步生成更详细的计划。
在每个时间步,智能体都感知周围的世界,并将这些感知到的观察结果存储在记忆流中。使用这些观察结果提示语言模型,智能体决定是否应该继续执行其现有计划,或做出调整。
代理在彼此互动时进行对话,通过将代理的历史对话与他们对彼此的记忆联系起来来生成新对话。
Smallville 沙盒游戏环境使用 Phaserweb 游戏开发框架构建。服务器维护一个 JSON 数据结构,其中包含沙盒世界中每个代理的信息,包括当前的位置,动作描述以及他们正在与之交互的沙盒对象。
从结构化环境到自然语言,再回到结构化环境的转化过程,是一种双向的信息转化。通过将结构化数据转化为自然语言,可以更好地理解和处理信息。而通过将自然语言转化为结构化数据,可以更方便地整合和分析文本信息。
将沙盒环境区域和物体表示为树形数据结构,树中的边表示沙盒世界中的包含关系。代理在沙盒世界中导航时,他们会更新这棵树以反映新感知到的区域。递归地使用相同的过程来确定所选区域内最合适的子区域,直到达到代理环境树的叶节点。当代理在对象上执行动作时,提示语言模型询问对象的状态会发生什么变化。
对智能体进行“面试”,以测试它们记忆过去经历的能力、基于经验规划未来行动的能力、对意外事件做出适当反应的能力以及反思自身表现以改进未来行动的能力。为了正确回答这些问题,智能体必须成功地检索和综合信息。
面试包括五个问题类别:维护自我知识、检索记忆、生成计划、反应和反思。附录 B 中包含了问题的完整列表和代理回答的样本。
招募 100 名参与者比较了由四种不同代理架构和一个由人类(普通人类行为水平,非专家)撰写的条件生成的面试回答,按照可信度从最可信到最不可信对条件进行排名。参与者可以访问代理记忆流中存储的所有信息。
消融实验基于两天的实验数据,只在检索时进入消融(不加入反思/计划);如果重新实验,路径将不一致,从而无法比较。其中没有观察、没有反思、没有规划的条件代表了通过大型语言模型创建的代理的先前状态。
招募了 100 名评估者。
使用 TrueSkill 评分计算每个条件的平均评分和标准差;然后应用 Kruskal-Wallis 检验对排名数据进行统计显著性分析,并使用 Dunn 检验确定条件之间的差异。最后通过 Holm-Bonferroni 方法调整了 Dunn 检验的多重比较 p 值。
结果如下:
本部分将评估群体行为。
探究了三种紧急社交:信息扩散、关系形成和代理协调。使用采访过程进行评测:
归纳分析以研究代理的边界条件和不规律行为。三种常见的不规律行为模式:
研究需要大量的时间和资源来模拟 25 个代理在两天内运行,耗费了数千美元的代币。
在改进方面,检索模块可以通过微调检索函数的相关性、新近性和重要性来提高在给定上下文中检索更相关信息的能力;可以提升架构的性能,使其更具成本效益;随着基础模型的进步,相信代理的性能将会提高。
生成型代理的鲁棒性仍然未知。它们可能容易受到提示攻击、记忆篡改(通过精心设计的对话使代理相信发生了从未发生过的事件)和幻觉。