论文阅读_生成式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.hqwc.cn/news/217459.html

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

相关文章

OSG粒子系统与阴影-自定义粒子系统示例<1>(4)

自定义粒子系统示例(一) 自定义粒子系统示例(一)的代码如程序清单11-5所示&#xff1a; /* 自定义粒子系统示例1 */ void particleSystem_11_5(const string &strDataFolder) {osg::ref_ptr<osgViewer::Viewer> viewer new osgViewer::Viewer();osg::ref_ptr<os…

VUE留言板

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

MLFlow 入门(Model管理,生命周期管理)

最近需求需要使用mlflow&#xff0c;去学习了下&#xff0c;记录。 简介 MLflow是一个开源平台&#xff0c;专门为了帮助机器学习的从业者和团队处理机器学习过程中的复杂性而设计的。MLflow关注机器学习项目的完整生命周期&#xff0c;确保每个阶段都是可管理的、可追溯的和可…

【JavaEE初阶】线程安全问题及解决方法

目录 一、多线程带来的风险-线程安全 1、观察线程不安全 2、线程安全的概念 3、线程不安全的原因 4、解决之前的线程不安全问题 5、synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使用示例 5.3 Java 标准库中的线程安全类…

【Python】(自定义类)计算语句执行时间

一个玩具&#xff0c;写着来玩的。 用的time模块&#xff0c;代码很简单(所以才说是个玩具) 代码&#xff1a; import time class TimeStamp:__timestampNone__keyNonedef __init__(self,tipsNone,keyNone):self.__timestamp{}self.NewStamp(tips,key)def NewStamp(self,tips,…

rfc4301- IP 安全架构

1. 引言 1.1. 文档内容摘要 本文档规定了符合IPsec标准的系统的基本架构。它描述了如何为IP层的流量提供一组安全服务&#xff0c;同时适用于IPv4 [Pos81a] 和 IPv6 [DH98] 环境。本文档描述了实现IPsec的系统的要求&#xff0c;这些系统的基本元素以及如何将这些元素结合起来…

电源控制系统架构(PCSA)之系统控制处理器组件

目录 6.4 系统控制处理器 6.4.1 SCP组件 SCP处理器Core SCP处理器Core选择 SCP处理器核内存 系统计数器和通用计时器 看门狗 电压调节器控制 时钟控制 系统控制 信息接口 电源策略单元 传感器控制 外设访问 系统访问 6.4 系统控制处理器 系统控制处理器(SCP)是…

AI创作工具:Claude2注册保姆级教程

最近软件打算多接入几个AI写作平台&#xff0c;包括讯飞星火&#xff0c;百度文心&#xff0c;Claude2&#xff0c;这样就能给用户提供更多的写作选择 经过半天的调研&#xff0c;讯飞星火&#xff0c;百度文心一言&#xff0c;接入都比较简单&#xff0c;毕竟是国内的。 在调…

【java】-D参数使用

在开发过程中我们使用开源工具经常会用到在启动命令时候加入一个 -Dxxx 类型的参数。到底-Dxxx是干什么用的了。 官方文档 地址&#xff1a;文档地址 java命令使用 下面是来源于官方文档&#xff1a; java [options] classname [args] java [options] -jar filename [args…

人力资源管理后台 === 基础环境+登陆

目录 1.人力资源项目介绍 1.1 项目架构和解决方案 1.2 课程安排 1.3 课程具备能力 1.4 课程地址 2. 拉取项目基础代码 3.项目目录和入口文件介绍 4.App.vue根组件解析 5.基础设置settings.js和导航守卫permission.js 6.Vuex的结构 7.使用模板中的Icon图标 8.扩展…

node fs模板及蓝桥案例实战

文章目录 介绍文件写入writeFile 异步写入writeFileSync 同步写入appendFile / appendFileSync 追加写入createWriteStream 流式写入 文件读取readFile 异步读取readFileSync 同步读取createReadStream 流式读取 文件移动与重命名文件删除文件夹操作mkdir / mkdirSync 创建文件…

Python基础:JSON保存结构化数据(详解)

1. JSON概念 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;也易于机器解析和生产。   虽然JSON使用JavaScript语法来描述数据对象&#xff0c;但是JSON仍然独立于语言和平台&#xff0c;JSON解…