论文阅读_生成式Agent

英文名称: 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 (检索增强生成) 的扩展:除了可以把本地知识喂给模型,还可以把人的行为、记忆组织起来喂给模型,让模型帮助人作一些预测和决策其应用领域相当广泛

之前听同事讲了一遍,自己又看了两遍,整理了一下,总计花了一天多的时间。下面对整个结构过了一遍,除了核心点以外,还摘录了我觉得重要的内容。

1. 引言

论文研究如何构建一个交互式的人工社会,以反映真实可信的人类行为。计算机驱动的代理根据过去的经验进行前后一致地行为对环境做出真实的反应。模拟可以在虚拟空间和社区中呈现真实的社会现象,训练人们如何处理罕见但困难的人际关系情境,测试社会科学理论……

本文中介绍的生成型代理,能够产生可信的个体和群体行为的模拟。在个体性方面,生成式代理对自身、其他代理和环境进行各种推理;他们制定反映自身特征和经验的日常计划,执行计划,在适当的时候进行反应和重新规划;当用户(人)改变它们的环境或用自然语言命令它们时,它们会做出响应。在社会性方面,研究了新的社会动态的出现,新关系的形成,信息扩散,以及代理之间的协调。

文中设计了一种架构,该架构存储、综合和应用相关的记忆,使用大型语言模型生成可信的行为,包括三个主要组件:记忆流、反思、规划。

大语言模型可以在单个时间点上模拟人类行为,而实际生活中,随着新的互动、冲突和事件随着时间的推移而出现和消失记忆不断增长,同时处理多个代理之间展开的级联社会动态则更为复杂。反思这些记忆以概括和得出更高层次的推论,并应用该推理来制定在当前和长期的代理行为中有意义的计划和反应

论文贡献如下:

做了什么:生成代理,模拟人类行为,动态地受到代理的不断变化的经验和环境的影响。

怎么做的:新颖的架构,使得生成性代理能够记忆、检索、反思、与其他代理互动,并在动态演化的情况下进行规划。架构利用了大语言模型强大的提示能力,并支持更长期的代理一致性,管理动态演化的记忆能力,并递归地产生更高层次的反思。

评估:两项评估,受控评估确定架构组件重要性,并识别由不正确的检索等引起的故障;全面评估用于评估代理的社会性行为。

讨论:讨论交互系统中生成代理的机会以及道德和社会风险。

2. 相关工作

交互的人工智能系统旨在将人类的洞察力和能力与计算工具相结合,以增强人类的能力。近年来,出现了一些基于语言和代理的人机交互案例,即通过自然语言进行交流。

在虚拟环境中,通常简化代理的行为,使其无法涵盖在真实世界中可能发生的各种情境;这些代理通常在对抗性游戏中表现较好,这些游戏有明确的奖励目标,算法可以针对这些目标进行优化;然而,它们尚未成功解决在开放世界(自然生活)中创建可信代理的挑战。

3. 生成代理的行为和互动

图 2:沙盒世界:根节点描述整个世界,子节点描述区域(例如房屋、咖啡馆、商店),叶节点描述对象(例如桌子、书架)。代理记住一个子图,反映他们所见到的世界,并维护这些部分的状态。

3.1 代理角色和通信

由 25 个代理组成社区,为每个代理的身份编写一个自然语言描述段落,包括他们的职业和与其他代理的关系,作为种子记忆。

3.1.1 代理间的交流

代理通过行动与世界互动,并通过自然语言与彼此交流。在每个时间步中,代理会输出一句描述他们当前行动的自然语言陈述,并使用表情符号显示在界面中。

3.1.2 用户控制

用户(工作人员)通过自然语言与代理进行交流,通过指定一个角色来让代理感知他们;用户还可以扮演代理的“内心声音” ,使代理有可能将该陈述视为指令。

3.2 环境交互

环境由手动生成。它包含一个小村庄常见的设施,包括咖啡馆、酒吧、公园、学校、宿舍、房屋和商店。还定义了使这些空间功能正常的子区域和物体,例如房屋中的厨房和厨房中的炉子(图 2)。

代理在 Smallville 中的移动方式类似于简单的视频游戏,进入和离开建筑物,导航地图,并接近其他代理。

用户可以作为一个代理进入沙盒世界进行操作。用户所扮演的代理可以是已经存在于世界中的代理,也可以是没有在 Smallville 中有过历史的外来访客;用户还可以通过以自然语言重写代理周围物体的状态来改变环境。

3.3 示例“一天的生活”

从单段描述开始,生成式代理开始计划他们的一天。随着时间流逝,他们的行为会随着这些代理之间和世界的互动而演变,建立记忆和关系,并协调共同的活动。

追踪系统在一天中对代理 John Lin 的输出展示生成式代理的行为(图 3)。

3.4 通过交互产生社会行为

生成代理可以交换信息、建立新的关系并协调共同活动。这些互动不是预先编程的。

3.4.1 信息传播

当代理注意到彼此时,它们可以进行对话,这样信息就可以从一个代理传播到另一个代理。

3.4.2 关系记忆

代理会随着时间的推移建立新的关系,并记住与其他代理的互动。

3.4.3 协调

生成型代理彼此协调,关系进一步自动延展。如:用户设置了举办派对的初始意图,传播消息、装饰、邀请对方、到达派对并在派对上相互交流的社交行为是由代理架构自动发起的。

4. 生成代理架构

为开放世界中的行为提供一个框架:这个框架可以与其他智能体进行交互,并对环境的变化做出反应。生成型智能体将其当前环境和过去的经验作为输入,并生成行为作为输出。具体方法是:它将大型语言模型 (gpt3.5-turbo) 与合成和检索相关信息的机制相结合。生成型智能体产生大量的事件和记忆,这些记忆必须被保留,架构的一个核心挑战是确保在需要时检索和合成智能体记忆中最相关的部分

4.1 记忆与检索

完整的记忆流可能会分散模型的注意力,而且无法适应有限的上下文窗口。

内存流维护了代理经验的全面记录。它是一个内存对象的列表,每个对象包含自然语言描述、创建时间戳和最近访问时间戳。内存流的最基本元素是观察,即代理直接感知到的事件。常见的观察包括代理自己执行的行为,或者代理感知到其他代理或非代理对象执行的行为。

架构实现了检索函数,它以代理当前情况作为输入,并返回内存流的一个子集,以传递给语言模型。检索函数的实现取决于代理在决定如何行动时需要考虑什么是重要的。记忆流包括大量与代理当前情境相关和不相关的观察。检索识别出应该传递给语言模型以调整其对情境的响应的子集。

重要性考虑如下因素:

  • 最近性:根据时间计算,为指数衰减函数。
  • 重要性:将平凡的记忆与核心记忆区分开来(调用语言模型实现)。
  • 相关性:将更高的分数分配给与当前情况相关的记忆对象(向量距离)。

4.2 反思

假设问题是:" 选择一个人陪你度过一个小时 ",如果只考虑观察记忆,代理会选择最频繁互动的人,通过反思则会选择有共同兴趣的人。

实现方法是:引入了第二种类型的记忆——反思。反思是由代理生成的更高层次、更抽象的思考。在检索发生时,反思与观察结果一起被包括在内。反思是定期生成的;当代理感知到的最新事件的重要性得分总和超过阈值时,生成反思,大约每天反思两到三次。

具体使用提示实现,形如”仅根据上述信息,可以回答关于这些陈述中的主题的三个最重要的高层次问题是什么?“,然后针对问题生成查询,并收集与每个问题相关的记忆(包括其他反思)。提示语言模型提取见解,并引用作为见解证据的特定记录。

反思包含对观察的反思和对反思的反思。代理会生成反思树:树的叶节点代表基本观察,非叶节点代表思考,随着树的层级越高,思考会变得更加抽象和高层。最终得出自我认知。

4.3 计划和反应

代理需要在更长的时间范围内进行规划,以确保他们的行动序列连贯可信。计划包括地点、开始时间和持续时间。

与反思一样,计划存储在记忆流中,并包含在检索过程中。代理在决定如何行动时可以同时考虑观察、反思和计划。代理可能会在需要时更改他们的计划。具体方法是自上而下逐步生成更详细的计划。

4.3.1 反应和更新计划

在每个时间步,智能体都感知周围的世界,并将这些感知到的观察结果存储在记忆流中。使用这些观察结果提示语言模型,智能体决定是否应该继续执行其现有计划,或做出调整。

4.3.2 对话

代理在彼此互动时进行对话,通过将代理的历史对话与他们对彼此的记忆联系起来来生成新对话。

5. 实现沙盒环境

Smallville 沙盒游戏环境使用 Phaserweb 游戏开发框架构建。服务器维护一个 JSON 数据结构,其中包含沙盒世界中每个代理的信息,包括当前的位置,动作描述以及他们正在与之交互的沙盒对象。

5.1 从结构化环境到自然语言再回到结构化环境

从结构化环境到自然语言,再回到结构化环境的转化过程,是一种双向的信息转化。通过将结构化数据转化为自然语言,可以更好地理解和处理信息。而通过将自然语言转化为结构化数据,可以更方便地整合和分析文本信息。

将沙盒环境区域和物体表示为树形数据结构,树中的边表示沙盒世界中的包含关系。代理在沙盒世界中导航时,他们会更新这棵树以反映新感知到的区域。递归地使用相同的过程来确定所选区域内最合适的子区域,直到达到代理环境树的叶节点。当代理在对象上执行动作时,提示语言模型询问对象的状态会发生什么变化。

6. 受控评估

6.1 评估程序

对智能体进行“面试”,以测试它们记忆过去经历的能力、基于经验规划未来行动的能力、对意外事件做出适当反应的能力以及反思自身表现以改进未来行动的能力。为了正确回答这些问题,智能体必须成功地检索和综合信息。

面试包括五个问题类别:维护自我知识、检索记忆、生成计划、反应和反思。附录 B 中包含了问题的完整列表和代理回答的样本。

招募 100 名参与者比较了由四种不同代理架构和一个由人类(普通人类行为水平,非专家)撰写的条件生成的面试回答,按照可信度从最可信到最不可信对条件进行排名。参与者可以访问代理记忆流中存储的所有信息。

6.2 条件

消融实验基于两天的实验数据,只在检索时进入消融(不加入反思/计划);如果重新实验,路径将不一致,从而无法比较。其中没有观察、没有反思、没有规划的条件代表了通过大型语言模型创建的代理的先前状态。

6.3 人类评估者

招募了 100 名评估者。

6.4 分析

使用 TrueSkill 评分计算每个条件的平均评分和标准差;然后应用 Kruskal-Wallis 检验对排名数据进行统计显著性分析,并使用 Dunn 检验确定条件之间的差异。最后通过 Holm-Bonferroni 方法调整了 Dunn 检验的多重比较 p 值。

6.5 结果

结果如下:

  • 消融:完整的架构优于其他条件,没有反思能力的消融架构是次优的;除了众包工人条件和完全消除基线之间的差异不显著外,所有条件之间的两两差异都是显著的。
  • 记忆:具有完整记忆模块的生成型代理能够回忆过去的经历,并以与其自我认知一致的方式回答问题;但记忆也有缺陷:有时无法正确地从记忆中检索到相关实例;有时,智能体会产生对他们知识的夸张幻觉;智能体还可能根据语言模型中的世界知识夸张他们的知识,比如混淆同一人名的不同人。
  • 反思:反思对于生成型代理是有优势的。

7. 全面评估

本部分将评估群体行为。

7.1 紧急社交行为

探究了三种紧急社交:信息扩散、关系形成和代理协调。使用采访过程进行评测:

  • 信息扩散:了解市长候选人身份的代理数量从一个增加到八个,了解 派对的代理数量从一个增加到十三个。
  • 每个代理对其他每个代理的了解,出现新的关系,网络密度从 0.167 增加到 0.74。
  • 代理的协调行为包括,代理需要听说事件,并选择在正确的时间和地点出现。受邀的 12 位代理中有 5 位来到了咖啡馆参加派对,7 位未能出席派对的代理,有三位提到了阻止他们参加派对的原因。

7.2 边界和错误

归纳分析以研究代理的边界条件和不规律行为。三种常见的不规律行为模式:

  • 合成越来越大的记忆集不仅在检索最相关的信息方面存在挑战,如:一些代理选择了不太典型的位置进行行动。
  • 对行为的错误分类导致的不稳定性,尤其当某些地点的物理规范很难用自然语言传达时。(不了解一些环境常识)
  • 代理比现实中更加礼貌和合作。

8. 讨论

8.1 生成代理的应用

  • 生成代理具有广泛的应用潜力,特别是在可以从长期经验中获益的行为模型的领域。
  • 创建更强大的人类行为模拟的可能性,同时也可以创造新的互动体验
  • 人本设计过程:代理充当人类的代理,并学习基于某人的生活模式可能展示的行为和反思。深入地了解他们的需求和偏好,从而实现更个性化和有效的技术体验

8.2 未来的工作和局限性

研究需要大量的时间和资源来模拟 25 个代理在两天内运行,耗费了数千美元的代币。

在改进方面,检索模块可以通过微调检索函数的相关性、新近性和重要性来提高在给定上下文中检索更相关信息的能力;可以提升架构的性能,使其更具成本效益;随着基础模型的进步,相信代理的性能将会提高。

生成型代理的鲁棒性仍然未知。它们可能容易受到提示攻击、记忆篡改(通过精心设计的对话使代理相信发生了从未发生过的事件)和幻觉。

8.3 道德和社会影响

  • 人们与生成主体形成准社会关系,比如用户过度依赖或情感依附于代理。
  • 错误产生可能造成伤害。
  • 生成式代理可能加剧与生成式人工智能相关的现有风险,如深度伪造、生成虚假信息和定制说服。
  • 开发者或设计师可能会使用生成代理并取代人类和系统利益相关者在设计过程中的角色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/206695.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter Running Gradle task ‘assembleDebug‘

flutter Running Gradle task assembleDebug Running Gradle task assembleDebug新问题描述新问题解决方案 Running Gradle task ‘assembleDebug’ 用Android Stduio创建Flutter项目的时候,会出现各种问题,踩了一个又一个,最后编译的时候可…

2002-2021年全国各省产业结构合理化高级化指数数据(含原始数据+计算过程+计算结果)

2002-2021年全国各省产业结构合理化高级化指数数据(含原始数据计算过程计算结果) 1、时间:2002-2021年 2、指标:地区、时间、就业总人数(万人)、第一产业就业人数(万人)、第二产业…

APM工具skywalking部署

一 整体架构 整个架构,分成上、下、左、右四部分: 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是&…

通过视频文件地址截取图像生成图片保存为封面图

安装 RPM Fusion 软件库 FFmpeg并不包含在 CentOS 官方软件库中,需要使用第三方软件库安装。可以使用 RPM Fusion 软件库来获取 FFmpeg。 首先,使用以下命令安装 RPM Fusion 软件库: sudo yum install epel-release -y sudo rpm -Uvh https…

Axios 通过a标签下载文件 跨域下载

<!-- a标签占位 --><a ref"down" ></a>getTest() {this.$axios.request({url: https://cnv13.55.la/download?file_key3695fa9461a0ae59cf3148581e4fe339&handle_typeexcel2pdf,method: get,responseType: blob, // 切记类型 blob}).then(re…

[iOS开发]UITableView的性能优化

一些基础的优化 &#xff08;一&#xff09;CPU 1. 用轻量级对象 比如用不到事件处理的地方&#xff0c;可以考虑使用 CALayer 取代 UIView CALayer * imageLayer [CALayer layer]; imageLayer.bounds CGRectMake(0,0,200,100); imageLayer.position CGPointMake(200,200…

Intellij IDEA 的安装和使用以及配置

IDE有很多种&#xff0c;常见的Eclipse、MyEclipse、Intellij IDEA、JBuilder、NetBeans等。但是这些IDE中目前比较火的是Intellij IDEA&#xff08;以下简称IDEA&#xff09;&#xff0c;被众多Java程序员视为最好用的Java集成开发环境&#xff0c;今天的主题就是IDEA为开发工…

终端移动性管理

联系前面所学的知识我们知道&#xff0c;移动性管理主要分为两大类&#xff1a;空闲状态下的移动性管理、连接状态下的移动性管理。我们今天来详细了解他们的工作原理~ 目录 移动性管理分类 1、空闲状态下的移动性管理 2、连接状态下的移动性管理 手机选择天线的原则 4G天…

2023.11.29 深度学习框架理解

2023.11.29 深度学习框架理解 对深度学习框架进行复习&#xff0c;选最简单的“三好学生”问题的四个变化&#xff0c;简要总结其具体思路。 深度学习一开始就是为分类问题研究的&#xff0c;因此其框架的设计都是基于分类的问题&#xff0c;虽然现在也已经演变为可以执行多种…

SpringBoot 拦截器高级篇

Springboot 拦截器 定义使用场景拦截器与过滤器的区别实现步骤全局拦截器的局限性全局拦截器VS局部拦截器局部拦截器自定义局部拦截器使用多个局部拦截器 定义 拦截器是Spring MVC框架中的一个重要组件&#xff0c;它是一种AOP&#xff08;面向切面编程&#xff09;的实现方式&…

基于python+Django+SVM算法模型的文本情感识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介1. 简介2. 技术栈3. 系统架构4. 关键模块介绍5. 如何运行 二、功能三、系统四. 总结 一项目简介 # 基于 Python Django SVM 算法模型的文本情感识别系统介…

kibana安装

kibana安装下载注意事项 地址&#xff1a;curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-linux-x86_64.tar.gz 下载后直接解压启动即可 1. 但需要使用非root用户启动 &#xff0c;root用户启动会报错 2. kibana需要和elasticsearch版本一致 不然…

Blender 连续 5 天遭受大规模 DDoS 攻击

Blender 发布公告指出&#xff0c;在2023年11月18日至23日期间&#xff0c;blender.org 网站遭受了持续的分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;攻击者通过不断发送请求导致服务器超载&#xff0c;使网站运营严重中断。此次攻击涉及数百个 IP 地址的僵尸…

基于ASP.Net的图书管理系统的设计与实现

摘 要 图书馆管理系统是一整套高科技技术与书本管理知识结合的产物。它把传统书籍静态的服务这个缺陷完美化&#xff0c;完成多媒体数据的交互、远程网络连接、检查搜索智能化、多数据库无障碍联系、跨时空信息服务。图书管理系统用计算机程序替代了传统手工记录的工作模式&am…

【Openstack Train安装】二、NTP安装

网络时间协议&#xff1a;Network Time Protocol&#xff08;NTP&#xff09;是用来使计算机时间同步化的一种协议&#xff0c;它可以使计算机对其服务器或时钟源&#xff08;如石英钟&#xff0c;GPS等等)做同步化&#xff0c;它可以提供高精准度的时间校正&#xff08;LAN上与…

创建可以离线打包开发的uniapp H5项目

安装node环境 略 安装vue脚手架&#xff0c;在线 npm install -g vue/cli PS&#xff1a;vue-cli已进入维护模式&#xff0c;vue3最新脚手架使用npm init vuelatest安装&#xff0c;安装后使用create-vue替换vue指令&#xff0c;create-vue底层使用vite提升前端开发效率&…

ctfshow刷题web入门--1--ljcsd

文章目录 ctf.show。信息搜集web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20。爆破。知识1.1 播种随机数生成器-mt_srand。参考web21--重点web22--做不出来web23web24web25web26web27web28。。。命令执行。知识1 绕过正则表达式…

解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题

总结/朱季谦 楼主最近在做公司的工作流平台&#xff0c;发现一个很无语的事情&#xff0c;Activiti5.22的流程图在Windows环境上部署&#xff0c;是可以正常查看的&#xff0c;但发布到公司的Linux服务器上后&#xff0c;在上面进行流程图在线部署时&#xff0c;发现中文都变成…

大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?

大一学编程怎么学&#xff1f;刚接触编程怎么学习&#xff0c;有没有中文编程开发语言工具&#xff1f; 1、大一刚开始学编程&#xff0c;面对复杂的代码学习非常吃力&#xff0c;很难入门。建议刚接触编程可以先学习中文编程&#xff0c;了解其中的编程逻辑&#xff0c;学编程…

docker启动容器失败,然后查看日志,docker logs查看容器出现报错:

docker 启动容器失败&#xff0c;然后docker logs 查看容器出现报错&#xff1a; error from daemon in stream: Error grabbing logs: invalid character l after object key:value pair在网上看到的 解决方案&#xff1a; 找到你日志文件目录&#xff1a; docker inspect …