Generative Agents: Interactive Simulacra of Human Behavior翻译 | 您所在的位置:网站首页 › behaveiour翻译 › Generative Agents: Interactive Simulacra of Human Behavior翻译 |
摘要
模仿人类可信行为的智能体可以增强沉浸式环境和仿真环境中交互式应用,以实现人机交流,及原型工具。在本文中,我们引入了生成式智能体,这是一种模仿可信人类行为的计算软件智能体。生成式智能体能够完成起床,煮早餐,上班;艺术绘画,写作;他们会形成意见,注意到彼此并发起对话;他们记得过去几天发生的事,并反馈到第二天的计划中。为了实现生成式智能体,我们描述了一种扩展到大型语言模型的网络结构,以使用自然语言存储智能体完整的经验记录,然后将这些记忆随时间融合到更高级反馈,并动态地检索它们以完成行为的计划。受模拟人生的启发,我们将生成式智能体放置到交互式沙盒环境中,在该环境中,终端用户可以使用自然语言与一个具有25个智能体的小镇进行互动。在评估时,这些生成式智能体会产生可信的个人行为和新出现的社会行为:例如,从一个用户指定的概念开始,即一个智能体想举办情人节聚会,该智能体在接下来的两天中会自主传播邀请函,结识新的熟人,互相询问参加聚会的日期,并协调在正确的时间一起参加聚会。我们通过消融实验证明,我们智能体结构的各个组成部分(观察,计划和反思)都为智能体行为的可信度做出了重要贡献。通过将大型语言模型与计算,交互智能体融合在一起,这项工作引入了新的结构和交互模式,以实现可信的人类行为模拟。 1.介绍
在本节中,我们回顾了人与AI交互的相关文献,并将构建人类行为可信代理的议程纳入其中,该议程尽管在交互、游戏、AI等领域曾被誉为北极星,但由于人类行为的复杂性,一直以来都是一个挑战。我们综合该研究,提出了大语言模型虽然本身不足以构成可信代理,但通过适当的架构,可以为创建可信代理提供新的思路。 2.1 Human-AI Interaction交互式人工智能系统旨在将人类的见解和能力结合在可以增强用户的计算实体中。一系列工作探索了允许用户和特定模型行为交互的方法。例如,Crayons展示了交互式机器学习的早期版本,其允许非专业用户训练分类器。进一步的工作有助于阐明终端用户如何通过示例和/或演示来向系统描述其分类目标。最近的工作将这些探索扩展到了深度学习和基于提示的写作。 同时,一个持续的研究主题为人机交互(HCI)中的基于语言和智能体的交互提供了研究案例。SHRDLU和ELIZA之类的工作证明了与计算系统通过自然语言进行交互的机会和风险。随着研究的进行,很明显,自主智能体可以提供新的隐喻来实现委托和交互,但是人类和智能体之间的交互线路仍在继续进行辩论和完善。最近,这项技术已经变得足够稳定,以至于智能体可以通过自然语言在大型且复杂的在线社交环境中进行交互(例如[54])。自然语言交互提供了一种新的方式,可以在诸如照片编辑和代码编辑之类的领域中扩展非专业用户的能力。 我们调研了这些工作,以表明我们现在可以在交互系统中创建能代理人类行为的智能体,并通过自然语言与它们互动。在这样做的过程中,这项工作重新打开了围绕认知模型(例如GOM和KLM),原型工具以及无处不在的计算应用程序的基础HCI问题的大门。 2.2 Believable Proxies of Human Behavior先前的文献将可信度或可信智能体描述为中央设计和工程目标。可信智能体被设计以提供生活幻觉,并令他们做出决策并按照自己的意愿行事的方式展示现实主义,类似于迪士尼电影中的角色。这些智能体可以像我们所居住的环境一样存在和感知到一个开放世界的环境,并努力以表现出以与用户或其他智能体交互为基础的新兴行为,以成为我们人类行为的可信代理。从历史上看,这些智能体是在智能游戏NPC的背景下开发的。如果可能的话,创建可信行为的NPC,能增强玩家在游戏和互动小说中的体验。但是,更重要的是,游戏世界提供了和现实世界越来越相当的环境,正如Laird和van Lent在2001年所观察到的那样,这些模拟世界为可信智能体的开发人员提供了可访问的测试平台来修正智能体的认知能力,而无需在现实世界中实现机器人技术或从头开始创建模拟环境。 在过去的四十年中,出现了各种创建可信智能体的方法。但是,在实现中,这些方法通常简化了环境或智能体行为的维度,以便于管理。基于规则的方法,例如有限状态机器和行为树,考虑了人类行为的暴力求解方法。它们提供了一种直接的方式来创建简单的智能体,这仍然是当今最主流的方法,甚至可以处理基本的社交互动,如诸如质量效应和模拟人生系列之类的模拟游戏所展示的那样。尽管如此,可以全面解决开放世界中各种可能相互作用的人工脚本是不可能的。这意味着由此产生的智能体行为可能无法完全代表其相互作用的后果,并且不能执行未在脚本中编码过的新行为。另一方面,诸如强化学习之类的基于学习的方法通过让智能体学习其行为来克服手动编写脚本的挑战,并在近年来在诸如星际真霸(AlphaStar)和Dota2(OpenAI Five)的游戏中取得了超人的表现。但是,他们的成功在很大程度上发生在对抗性游戏中,并具有易于定义的学习算法可以优化的奖赏。他们尚未解决在开放世界中创建可信智能体的挑战。 由Newell开创的计算认知结构旨在建立基础架构,以支持一组全面的认知功能,这些认知功能适合于最初版本中可信智能体拥有的所有特性。他们的架构支撑了早期的一些可信智能体。例如,Quakebot-SOAR和ICARUS在第一人射击游戏中生成了NPC,而TacAir-SOAR在空中战斗的训练模拟中生成了飞行员。 这些智能体使用的架构有所不同(Quakebot-和TacAir-SOAR依靠SOAR,而ICARUS则依靠其自身的变化,该变化受SOAR和ACT-R的启发),但他们共享了相同的基本原则。他们保留了短期和长期的记忆,用符号结构填补这些记忆,并以perceive-plan-act周期进行操作,动态感知环境并将其与脚本的动作程序之一相匹配。使用认知结构创建的智能体,目的是泛化到大多数(如果不是全部)开放世界的环境,并在其时间上表现出强大的行为。但是,它们的动作空间仅限于手动编写的程序中所包含的知识,并且他们没有提供一种机制,可以通过该机制来启发智能体寻求新行为。因此,这些智能体主要部署在非开放世界的环境中。 现在,如其原始定义中所述,创建可信智能体仍然是一个开放式问题。许多研究员继续进行探索,认为尽管现有的创建可信智能体的方法可能很麻烦且有限,但它们足以支持现有的游戏玩法和交互。我们的论点是,大型语言模型提供了重新审视这些问题的机会,只要我们可以制定有效的架构以将记忆合成到可信行为。我们在本文中朝着这样的结构迈出了一步。 2.3 Large Language Models and Human Behavior生成式智能体利用大型语言模型来赋予其行为。关键的观察结果是,大型语言模型对训练数据中表示广泛人类行的文本为进行了编码。如果使用狭义定义的上下文提示,则可以使用模型来产生可信的行为。最近的工作证明了这种方法的有效。例如,社交模拟器使用大型语言模型来生成用户,这些用户被放置到新的社交计算系统以原型来探索新兴的社会形态。这种方法使用一个提示链来生成简短的画像和行为的自然语言描述,并同步到系统中时。其他实证研究已经复制了现有的社会科学研究,政治调查并生成了合成数据。大型语言模型也已用于为用户生成交互式人类行为。例如,在游戏中,这些模型已被用来创建互动小说和文本冒险游戏。凭借其生成和分解动作序列的能力,大型语言模型也已用于规划机器人任务。例如,当提供一个任务时(例如拿起瓶子),该模型被提示将任务分解为较小的动作序列,例如前往瓶子所在的桌子并将其捡起。 我们认为,基于对上述工作的总结,大型语言模型可以成为创建可信智能体的关键要素。现有的文献很大程度上依赖于被认为是使用few-shot提示或思维链提示的一阶模板。这些模板可有效地生成仅与智能体当前环境相关的行为(例如,当给定一个具有门的房间时,机器人应该采取哪些动作来进入房间)。但是,可信智能体不仅需要在其当前环境上进行调节,而且还需要大量的过往经验,这种难以适配到一阶模板(由于基础模型有限的上下文输入)。最近的研究试图通过使用静态知识库和信息检索方式或简单的摘要方式来增强语言模型以超越一阶提示的限制。本文扩展了这些想法,以制作一个智能体结构,该构造可以在每个时刻中动态更新过去的经验,并与智能体当前的上下文和规划混合在一起,这可能会加强或相互矛盾。 3.GENERATIVE AGENT BEHAVIOR AND INTERACTION为了构建生包含成式智能体的设施,我们将其实例化为简单的沙盒世界中的角色,这让人联想到模拟人生游戏。这个 sprite-based 的沙盒游戏世界被称为Smallville,是一个小镇环境。在本节中,我们介绍了在Smallville中的设施及生成式智能体的交互,并描述了智能体在其中的行为。然后,在第4节中,我们介绍了为这些为设施和交互提供动力的生成式智能体的结构。在第5节中,我们描述了沙盒环境的实现以及智能体如何与沙盒世界的基础引擎进行交互。 3.1 Agent Avatar and CommunicationSmallville社区由25个独特智能体组成。每个智能体都由简单的sprite avatar表示。我们撰写了一段自然语言描述的段落,以标识每个智能体的身份,包括其职业和与其他智能体的关系,从而将其作为种子记忆。例如,John Lin 有以下描述: 智能体通过他们的动作和世界交互,并通过自然语言彼此交互。在沙盒引擎的每个时刻中,agent都会输出一个自然语言声明,以描述他们当前的动作,例如“Isabella Rodriguez is writing in her journal”,“Isabella Rodriguez is checking her emails”,“Isabella Rodriguez is talking with her family on the phone” 或者 Isabella Rodriguez is getting ready for bed。然后将此声明转化为影响沙盒世界的具体动作。该动作作为一组表情符号显示在沙盒接口上,以在视图中提供了动作的抽象表示。为此,系统采用了一种语言模型,来将动作转化为一组表情符号,具有这些表情符号的语音气泡出现在每个智能体上方。例如,“Isabella Rodriguez is writing in her journal”显示为 运行此模拟的用户可以通过对话与智能体进行通信,或者以“内部语音”的形式向智能体发出指令,从而引导模拟和干预。 用户通过自然语言与智能体进行交流,并指定智能体为某个的角色。例如,如果用户指定他们是新闻“记者”,并询问即将举行的选举“Who is running for office?”,则John会回答:
通过相互互动,在Smallville的生成式智能体交换信息,形成新的关系并联合活动。我们扩展先前的工作,这些社会行为是新出现的,而不是预先编程的。 3.4.1 Information Diffusion当智能体互相注意到,他们可能会进行对话 - 当他们这样做时,信息可以从一个智能体传播到另一个智能体。例如,在杂货店的Sam和Tom之间的对话中,Sam告诉Tom他在当地选举中的候选人资格: 随着时间的推移,Smallville的智能体形成了新的关系,并记住他们与其他智能体的互动。例如,Sam一开始就不知道Latoya Williams。在约翰逊公园散步时,Sam遇到了Latoya,他们介绍了自己,然后Latoya提到她正在从事一个摄影项目:“I’m here to take some photos for a project I’m working on.”。在后来的互动中,Sam与Latoya的互动表明了这种互动的记忆,正如他问:“Hi, Latoya. How is your project going?”,她回答说:“Hi, Sam. It’s going well!”。 3.4.3 Coordination
创建可以模拟人类行为的生成式智能体需要对一组经验集合进行推理,这些经验远长于提示的描述,由于完整的记忆流会分散模型注意力,并且目前只支持有限的上下文窗口。考虑一个Isabella智能体回答“What are you passionate about these days?”的问题。首先总结了Isabella在语言模型的有限上下文窗口中,使用所有经验会产生信息不全的响应,其中Isabella讨论了诸如事件,项目的协作以及咖啡馆中的清洁度和组织等主题。与总结不同,记忆流描述了更相关的记忆,从而产生了更有信息,更具体的回应,提到Isabella对使人们感到受欢迎并包括在内的热情,计划活动并营造人们可以享受的气氛,例如情人节派对 。 4.1.2 Approach记忆流保存了智能体的全部记忆。它是由记忆对象构建的列表,每个对象都包含自然语言描述,创建的时间戳和最近访问的时间戳。记忆流的最基本元素是一个观测结果,它是智能体直接感知的事件。常见的观测包括由智能体本身执行的行为,或者其他智能体或非智能体目标执行的行为。例如,在一家咖啡店工作的Isabella Rodriguez可能会随着时间的流逝而产生以下观察结果:(1)Isabella Rodriguez is setting out the pastries,(2)Maria Lopez is studying for a Chemistry test while drinking coffee,(3)Isabella Rodriguez and Maria Lopez are conversing about planning a Valentine’s day party at Hobbs Cafe,(4)The refrigerator is empty。 我们的结构实现了一个检索功能,该功能将智能体当前的情况作为输入,并返回记忆流的子集从而传给语言模型。检索功能有许多可能的实现,具体取决于智能体在决定采取行动时需要考虑的重要方面。在我们的背景下,我们专注于能共同产生有效结果的三个主要组成部分。 Recency。Recency为最近访问的记忆对象分配了更高的分数,因此不久前或今天早晨的事件可能会保留在智能体的注意中。在我们的实现中,我们将recency视为距上次记忆被检索以来的随沙盒游戏时间指数衰减的函数。我们的衰减因子为0.99。 Importance。Importance通过为智能体将那些认为重要的记忆对象分配更高的分数来区分普通记忆。例如,在房间里吃早餐等平凡的事件将产生较低的重要性得分,而与其他人的分手显然会产生很高的分数。同样有许多方法来实现重要性得分;我们发现,直接要求语言模型输出整数得分是可行的。完整提示如下: 生成式智能体如果仅配备了原始的观测记忆,是难以进行推断的。考虑一个场景,用户询问Klaus Mueller:“If you had to choose one person of those you know to spend an hour with, who would it be?”。当仅访问观测记忆时,该智能体仅选择和Klaus最频繁交互的大学邻居Wolfgang。不幸的是,Wolfgang和Klaus只有在过去彼此见过面,而且没有更深的交互。更理想的回应要求智能体回忆Klaus花费数小时在一个研究项目上,以产生更高的水平反思,即Klaus对研究充满热情,并同样认识到Maria也是如此(尽管在另一个领域),从而使他们能够具有共同的利益。当Klaus被要求与谁共度时光时,Klaus选择Maria而不是Wolfgang。 4.2.2 Approach我们引入了第二种类型的记忆,我们称之为reflection。反思是智能体产生的更高级别,更抽象的思想。由于它们是一种记忆类型,因此在检索发生时同样与其他观测结果一起参与检索。反思是定期产生的,在我们的实现中,当智能体所感知到的最新事件的重要性总和超过一定阈值时,将会产生反思。实际上,我们的智能体每天大约反思两次或三次。 反思的第一步是,给定智能体最近的经验,通过确定可以被提出的问题来确定要反思的方法。我们在智能体的记忆流中使用100个最新记录来查询大型语言模型(例如,““Klaus Mueller is reading a book on gentrification”,““Klaus Mueller is conversing with a librarian about his research project”,“desk at the library is currently unoccupied”)并提示语言模型:“Given only the information above, what are 3 most salient high-level questions we can answer about the subjects in the statements?” 。模型将产生候选问题:例如,What topic is Klaus Mueller passionate about?以及What is the relationship between Klaus Mueller and Maria Lopez?。我们将这些生成的问题用作检索的query,并为每个问题收集相关记忆(包括其他反思)。然后,我们提示语言模型提取见解,并引用支持见解的特定记录。完整提示如下: 尽管大型语言模型可以产生合理的行为来响应当前环境信息,但智能体需要在更长的时间范围内进行计划,以确保其动作顺序连贯且可信。如果我们使用Klaus背景来提示语言模型,同时描述当前时间,并询问他在给定时刻应该采取什么行动,Klaus会在12点吃午餐,但同样在12:30 pm和1 pm上生成吃午餐的动作。对当前时刻可信度的优化会牺牲随时间而变化的可信度。为了克服这个问题,计划至关重要。 通过下面描述的方法,Klaus的下午计划不再是吃饭:下午12点,他在Hobbs Cafe吃午餐同时读书,下午1点在学校图书馆的研究论文,并在下午3点在公园休息一下。 4.3.2 Approach计划描述了智能体未来的动作序列,并有助于使智能体的行为随着时间的流逝而保持一致。一个计划包括一个位置,起始时间和持续时间。例如,Klaus Mueller 致力于研究,并且即将到来的截止日期,他可能会选择在桌子上工作,起草他的研究论文。例如,计划中的一项是:for 180 minutes from 9am, February 12th, 2023, at Oak Hill College Dorm: Klaus Mueller’s room: desk, read and take notes for research paper。像反思一样,计划存储在记忆流中,并包含在检索过程中。这使智能体在决定如何行动时可以同时考虑观察,反思和计划。如果需要,智能体可能会在中途更改计划。 对于艺术家智能体在工作室坐了四个小时而没有移动时,计划绘画是不现实且无趣的。更理想的计划将是智能体花时间在其家庭工作室的这四个小时内收集材料,混合涂料,休息和清理。为了创建这样的计划,我们的方法自上而下开始,然后递归生成更多细节。第一步是制定一项计划,以较大范围列出当天的议程。为了创建初始计划,我们使用智能体的摘要描述(例如,名称,特征和他们最近经历的摘要)和前一天的摘要来提示语言模型。一个完整的提示示例如下: 生成式智能体在动作循环中运行,在每个时刻,他们都会感知周围的世界,而这些感知的观察结果存储在其记忆流中。我们使用这些观察结果提示语言模型,以决定智能体是否应继续执行其现有计划或做出响应。例如,站在画架旁并绘画可能会触发对画架的观察,但这不太可能引起响应。但是,如果Eddy的父亲John记录了他看到Eddy在房屋花园短途散步,那么结果就不同了。提示如下,使用[Agent’s Summary Description] 表示一个动态生成的,智能体总体目标和性格摘要,该摘要在附录A中进行了描述: 智能体相互交互时产生对话。我们通过在彼此的记忆中调节他们的话语来产生智能体的对话。例如,当John与 Eddy发起对话时,我们通过使用John的记忆摘要来生成其第一个话语,并当他决定向Eddy询问他的作品项目时,他的反应是: Smallville沙盒游戏环境是使用Phaser网络游戏开发框架构建的。视觉环境精灵(包括智能体的化身)以及我们撰写的环境地图和碰撞图被导入到Phaser中。 我们使用一个服务器来补充沙盒开发框架,该服务器使沙盒信息可用于生成智能体,并使生成式智能体可以移动和影响沙盒环境。该服务器维护了一个JSON数据结构,该结构包含每个智能体在关沙盒世界中的信息,包括其当前位置,对当前操作的描述以及与之交互的沙盒对象。在沙盒环境的每个时刻,沙盒服务器都会解析JSON,查看来自生成式智能体的任何更改,使生成式智能体移至其新位置,并更新代智能体正在与之交互的任何沙盒对象的状态(例如,如果一个智能体的动作为“making espresso for a customer @ Hobbs Cafe: counter: coffee machine”,则咖啡机的状态从 “idle”变为“brewing coffee”)。沙盒服务器还负责将每个智能体的预设视觉范围内的所有智能体和对象发送到该智能体的记忆,以便智能体可以做出适当的反应。然后,智能体的输出操作更新JSON,以及下一个时刻的过程循环。 终端用户用简短的自然语言描述初始化了一个新智能体,如第3.1节中有关Jon Lin的段落。在我们的实现中,我们按分号将特征分为一组记忆列表。这些是决定智能体行为的最初记忆。这些记忆是初始起点:随着智能体在沙盒世界中获得更多经验,并且随着越来越多的记录使记忆流饱和,智能体的摘要和行为将不断发展。 5.1 From Structured World Environments to Natural Language, And Back Again生成式智能体的结构使用自然语言操作。因此,我们需要一种机制来来基于沙盒世界来进行智能体的推理。为了实现这一目标,我们将沙盒环境(区域和目标)作为树结构表示,树的边表示沙盒世界中的包含关系。我们将这棵树转换为自然语言,以传递给生成式智能体。例如,“stove”是“kitchen”的子节点转换为“there is a stove in the kitchen”。 智能体在浏览环境时建立了单课树,即整个沙盒环境树的子图。我们用一个环境树初始化每个智能体,该环境树捕获了智能体经历过的空间和物体吗,这包括生活区中的房间和物体,工作场所以及通常访问的商店和超市。当智能体在沙盒世界中导航时,他们更新了这棵树以反映新感知的区域。智能体不是无所不知的:他们的树在离开区域时可能会过时,并且在重新进入该区域时会更新。 为了确定每个动作的适当位置,我们将遍历智能体存储的环境树,并将其中的一部分变成自然语言,以提示语言模型。从智能体环境树的根节点开始,我们提示该模型找到最合适的区域。例如,如果Eddy的智能体表示他应该围绕其工作空间步行一小段路程: |
CopyRight 2018-2019 实验室设备网 版权所有 |