论文阅读《Generative Agents: Interactive Simulacra of Human Behavior》

AI Agent 系列

论文阅读《Generative Agents: Interactive Simulacra of Human Behavior》-- 美剧西部世界的雏形

  • 论文原文:Generative Agents: Interactive Simulacra of Human Behavior
    在这里插入图片描述

  • 文章重点架构了一个“小镇”,在小镇里的“人物”,可以理解为NPC,都是 Generative Agents,这些人物属于智能体,他们能够相互沟通交流,并且知道自己与其他智能体之间的关系,比如父子、邻居等。且对发生的事情存在记忆,能根据周围环境的变化,做出行动(用户设置厨房炉子着火,人物会及时产生动作去关掉)。周围的环境也会根据人物的行动而调整状态(当人物显示在煮咖啡,身边的咖啡机状态由空闲改为正在煮咖啡)。

  • 以下是对原文重点的理解与解读,如有偏差,欢迎讨论~~

  • 为方便理解,下文Generative Agents=小镇人物=智能体

文章重点贡献

1.Generative Agents:模拟人类行为,根据小镇“人物”的生活的变化,根据周围环境动态调整行动。
2.新的结构:使得小镇人物能够用记忆、检索、思考、相互沟通。
3.沙箱实验,小镇的构建

  • 接下来就看看,是如何实现的

重点一:小镇人物的行为和影响

Agent Avatar and Communication
  • 这个小镇一共是有25个人物,每一个人物都有自己的独特的身份,身份包含职业,家人信息,以及认识的人(例如邻居)的相关信息。身份会作为初始记忆给到人物,原文给出了人物非常详细的身份。在小镇里人物都用一个简单的头像表示。
  • 人物交互:人物与环境通过动作交互,会在人物头顶形成一个对话气泡,气泡里的表情符号表示人物正在做的事,例如在写日记,气泡里的符号则是📖✏️;人物与人物则是正常自然语言交流。
  • 用户控制:用户可以以自然语言对话的方式,另外给人物添加一些身份指令。原文给出的例子非常详细。
Environmental Interaction
  • 小镇和人类生活小镇类似,该有的都有。实际是以树图的方式生成环境,房间作为一个节点,房间里的所有物品作为叶子节点

在这里插入图片描述

  • 人物可以在小镇的建筑里进出走动,并且用户可以“附身”在人物身上,也可以作为新人物进入小镇,与其他人物交互的时候,并没有什么区别。
  • 环境感知:用户可以更改环境,人物会根据环境做出行动。例如<人物的公寓:厨房:炉子在燃烧 > 人物会在下一刻注意到这一点,然后去关掉炉子。
Example “Day in the Life”

在这里插入图片描述

  • 如图,是其中一个人物JL的一天,起床洗漱活动等,的儿子EL起床,与JL做一些语言交流,同时可以看到JL的妻子ML在洗漱,JL开始快乐的工作。
  • 在JL与EL的沟通信息会传递给ML,ML能够知道时间,会询问JL,EL是不是已经去上学了。
Emergent Social Behaviors
  • 不编程,但是会有的“突发”行为
  • 信息扩散,信息传递
  • 记忆关系:能认识新的人物,能记得之前谈论过的事情,并询问进展
  • 协调:用户给予人物A要开展情人节派对的意图,以及B喜欢C的意图,用户在这里控制结束,接下来的行为由人物自动进行,在A邀请B帮忙做派对布置后,B邀请了C参加派对,C同意且如约而至。
    在这里插入图片描述

重点二:新的结构 GENERATIVE AGENT ARCHITECTURE

在这里插入图片描述

  • 将大语言模型(文章采用的是ChatGPT的gpt3.5-turbo版本)与合成检索相关信息的机制结合起来,调节语言模型的输出(人物的语言输出)
  • 实现人物的智能,采用的就是上图的结构,人物对环境的感知放到Memory Stream中,对Memory Stream中的记忆进行检索,得到检索的相关记忆,人物做出行动。同时检索到的记忆也会不断作为Plan和反应,重新记录在Memory Stream中。每个人物都有一个自己独立的Memory Stream。
  • 其中重点在于Memory Stream,这个是一个记录了人物记忆的数据库,在经过检索和合成Memory Stream里的记忆,作为人物的反馈输出。
记忆与检索

在这里插入图片描述

  • Memory Stream如上图左,是一个带时间戳的list
  • 当问出一个问题时,人物需要做出回答,回答的内容会在Memory Stream中检索,检索的内容重点关注三个部分,Recency、Importance、Relevance。
    1.Recency代表时间,词条的时间戳越近,分数越大,时间越远,分数将以小镇游戏时间作为指数,0.995作为衰减系数。
    2.Importance,重要性,记忆有普通记忆(刷牙)以及核心记忆(大学),给予的分数也不同,普通分数低,核心分数高(1-10分)。
    3.Relevance,相关性,使用语言模型生成每个内存的文本描述的嵌入向量,计算余弦相关度。
    对三个系数归一化,再加权,作为最终检索分数。
思考

在这里插入图片描述

  • 如上图,人物会对感知得到的新的记忆(叶节点)进行思考得到更加抽象,高层级的记忆(如图中最顶端的词条),当人物得到新记忆的重要性分数超过阈值(150),人物开始思考。
  • 具体人物要思考什么,由人物最新的100条记忆,让大模型根据这些词条给出三个最突出的问题,用这三个问题对记忆和其他的思考进行检索,让语言模型在记忆中提取见解,并标记原因(对应记忆)。
计划和反应
  • 为了使得小镇人物的行为更加真实,对人物的日常生活做出计划,这个计划是由语言模型生成的,先将人物摘要和前一天的生活摘要给到语言模型,语言模型根据这些生成第二天的计划。然后将这个计划保存在Memory Stream中,递归分解成更细的动作块。
  • 反应和更新计划,当人物感知世界时,是需要继续现有计划还是做出反应。通过查询 [observer]和[observed entity]之间的关系是什么,以及[observed entity]以及[action status of the observed entity],汇总他们的答案,输出结论,从反应发生的时间开始重新生成人物的现有计划,如果指示人物之间交互,他们产生对话。
  • 对话,通过在人物关于彼此的记忆上调节他们的话语,来产生智能体的对话

沙箱实验

  • 小镇是Smallville沙盒游戏,环境是使用Phaser网页游戏开发框架构建的。
  • 初始化人物,用户使用简短的自然语言描述来初始化一个新的人物,以分号分隔的字符列表拆分成一组内存。这些作为决定人物行为的初始记忆
  • 小镇环境构建 ,树形数据结构,树中的一条边表示沙盒世界中的包含关系。我们将这棵树转换为自然语言传递给生成代理。例如,“灶台”是“厨房”的子代,被渲染成“厨房里有灶台“
  • 人物移动 ,用传统的博弈路径算法来动画化代理的移动,以便移动到叶子节点
  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值