【论文解读】斯坦福小镇Generative Agents

news2024/11/26 14:35:09

git开源地址:GitHub - joonspk-research/generative_agents: Generative Agents: Interactive Simulacra of Human Behavior

论文地址:https://arxiv.org/abs/2304.03442

前言

最近很火的方向,利用GhatGPT的规划、对话、总结能力,让AI在预设的环境中自由生活。自由生成各种各样的剧情和对话。

地图资源

基于tile构建的沙盒世界,构建了由粗到细三层地域结构:

第一层:大区域,如酒吧、咖啡馆、学校、lisa的房子等;

第二层:屋内区域,如房子内的厨房、学校的图书馆等;

第三层:物品,如酒吧客座、学校教室黑板、屋子厨房内的冰箱等;

agent如何在环境中生活?

由树的根节点出发,由粗到细盘问大模型当前行为应该在哪个大区域中发生、在选定大区域的哪个屋内区域发生、对选定屋内区域的那个物品作用。直到找到最佳子地点,用传统的路径生成方法规划到达目的地的路线。

环境中的物品状态是受agent影响的,如agent睡觉的时候床是占用的,agent做了一顿早餐时候冰箱会变空。

用户可以通过自然语言重塑agent生活的环境,如让agent厨房着火、浴室漏水等。

每个agent维护者自己的物品树,随着agent的探索树节点不断变化。此外agent不是无所不知的,他们离开一个区域之后,树节点的更新暂停,当他们重新进入这个空间时,更新又会开始。 

主要方法

三大块核心组件:plan(规划能力),memory(记忆流),reflect(反思)

1. Plan

从粗到细规划:每日大致规划->每小时规划->每5分钟规划;

每日大致规划(给时间分块):have a lunch at 12:00 pm, watch TV from 7 to 8 pm

每小时规划(逐小时):根据每日大致规划,列出从0点到晚上睡觉11点之间每个时刻的计划;

每5分钟规划(分钟为单位):划分的最小单位为5分钟,最细粒度任务拆解。

这种规划方法有CoT(chain of through)的意思在里面。不给GPT一下子上难度(直接规划每5分钟行程),而是引导它一步一步思考规划,制作出长期合理短期协调的计划。

agent每个time step采集周围的环境状况,构造prompt询问大模型是否对该状况做出反应,并从当前时间开始重新生成所有计划。 

2. Memory

记忆流模块是agent生成合理可信行为的关键。若没有记忆流模块,大语言模型会生成不依赖过往经历的行为,没法形成长期连贯的协作行为。

对大语言模型来说,如何处理大批量的时间和记忆一直是GPT系列的瓶颈。该论文的核心技术是保证模型综合和检索的是agent最相关的记忆片段,以减小数据流检索的压力。

具体方法

  • 维护记忆流列表:每一项纪录了事件的创建时间和最新获取的时间。其中最基本最直接的记忆是agent观察到的现象,包括自己的行为、他人的行为、物品的状态。
  • 筛选最相关的记忆:考虑时间、重要性、相关性
    • 时间:按照沙盒时间按0.995的delay因子衰减;
    • 重要性:每个事件在创建的同时,会让语言模型给出该事件的重要程度;
    • 相关性:利用语言模型生成每个事件的文字描述的embedding向量,然后计算请求和embedding向量的余弦相似度;

3. Reflect

反思过程是总结升华的过程,避免陷入简单生成模型的僵局。

论文中给了一个例子。如果问klaus他最想和谁一起聊天,若按照简单的观察记忆,他会选择他天天见面的大学舍友,但他们其实没有共同爱好。从内心的渴望出发,因为他对研究工作抱有极高的热情,他更愿意与有共同兴趣爱好的Maria一起聊天。

具体方法

当较新的事件列表的重要分数达到了150以上,启动反思机制。反思得到的结果作为一种memory放到记忆流中,激发agent从更高的层面总结记忆的规律,而不是只关注表面观察到的状态。

  • 反思第一步:给大模型输入100条最新纪录,要求大模型给出3个高深的问题(这种向大模型问问题的方式也是很常见的引导大模型思考的方式);用这些问题作为检索,获取每个问题最相关的memories;
  • 反思第二步:要求大模型根据记忆流中的记录,给出5个高深见解,并用记忆中的记录举证这些见解;
  • 反思第三步:将上面反思的结果,放进记忆流(加强重要的记忆);

验证效果

用5个问题测试生成的agent是否足够可信:

  1. 自我认知:如介绍一下自己,描述你一天的计划;
  2. 记忆检索能力:谁是xxx,谁是市长?
  3. 计划:你明天早上10点要做什么事情?
  4. 反应能力:你的早餐烧起来了,这时你要做什么?
  5. 反思能力:如果你要与一个最近遇到的人在一起,你希望和谁在一起,为什么?

在不同约束条件下(没有观察信息、没有计划、没有反思),测试agent的回答效果。

有一批人类同步在回答和给agent的答案打分,结果在观察、计划和反思的同时加持下效果最好:

现存问题

论文中指出,程序长时间运行后可能可以发现以下问题:

  1. 地点选择错误:在知道附近有酒吧之后,会选择在酒吧吃午餐;
  2. 地点的使用规则很难用语言传达给agent:agent会进入已经有人的浴室(也许可以改名为one-person bathroom),商店关门后还有人尝试进入;

经过代码复现,我感觉还有以下问题论文没有提到:

  1. 多人任务之间协作性差:妈妈还在给孩子煮早餐,孩子已经出门上学了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商类面试问题--01Elasticsearch与Mysql数据同步问题

在实现基于关键字的搜索时,首先需要确保MySQL数据库和ES库中的数据是同步的。为了解决这个问题,可以考虑两层方案。 全量同步:全量同步是在服务初始化阶段将MySQL中的数据与ES库中的数据进行全量同步。可以在服务启动时,对ES库进…

Flink提交jar出现错误RestHandlerException: No jobs included in application.

今天打包一个flink的maven工程为jar,通过flink webUI提交,发现居然报错。 如上图所示,提示错误为: Server Response Message: org.apache.flink.runtime.rest.handler.RestHandlerException: No jobs included in application. …

6.网络编程套接字(上)

文章目录 1.网络编程基础1.1为什么需要网络编程?——丰富的网络资源1.2什么是网络编程1.3网络编程中的基本概念1.3.1发送端和接收端1.3.2请求和响应1.3.3客户端和服务端1.3.4常见的客户端服务端模型 2.Socket套接字2.1概念2.2分类2.3Java数据报套接字通信模型2.4Jav…

HTTPS协议详解:基本概念与工作原理

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、HTTPS协议的基本概念 二、为什么需要HTTP…

三相PMSM的坐标变换

三相PMSM的坐标变换 三相PMSM的数学模型具有复杂性和耦合性的多变量系统。因此需要对其进行降阶和解耦变换。 Vα,Vb,Vc是自然坐标系。 Vα,Vβ是静止坐标系。 Vd,Vq是同步旋转坐标系。 自然坐标系 三相永磁同步电机的驱动电路…

PixelSNAIL论文代码学习(1)——总体框架和平移实现因果卷积

文章目录 引言正文目录解析README.md阅读Setup配置Training the model训练模型Pretrained Model Check Point预训练的模型训练方法 train.py文件的阅读model.py文件阅读h12_noup_smallkey_spec模型定义_base_noup_smallkey_spec模型实现一、定义因果卷积过程通过平移实现因果卷…

PCIe DL_Feature详解

DL_Feature的引入 Data Link Control and Management State Machine在PCIe Gen4引入了DL_Feature这个状态,该状态主要用来协商PCIe link 两端是否支持新的DL Feature,目前为止DL Feature只引入了Scaled Flow Control 来提高Gen4及以上的效率。   DL_Fe…

Qt 简单闹钟

//wiget.h#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> //时间类 #include <QTimer> //定时器类 #include <QTextToSpeech> #include <QDebug> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPA…

YoloV8改进策略:轻量级Slim Neck打造极致的YoloV8

文章目录 摘要Yolov8官方结果源码改进方法测试结果总结摘要 论文链接:https://arxiv.org/ftp/arxiv/papers/2206/2206.02424.pdf 作者研究了增强 CNN 学习能力的通用方法,例如 DensNet、VoVNet 和 CSPNet,然后根据这些方法的理论设计了 Slim-Neck 结构。 使用轻量级卷积…

机械制图(CAD)

目录 第一课&#xff08;80分钟&#xff09; 第二课&#xff08;80分钟&#xff09; 力啥学机械制图&#xff1f;我们的工厂要加工机械&#xff0c;而加工机械零件前&#xff0c;我们要先给工人图纸来看,工人才知道该怎样加工&#xff0c;所以我们今天就来学习下怎样画出符何…

任意文件读取和漏洞复现

任意文件读取 1. 概述 一些网站的需求&#xff0c;可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过&#xff0c;就可以查看或下载任意文件。这些文件可以是漂代码文件&#xff0c;配置文件&#xff0c;敏感文件等等。 任意文件读取会造成&…

电脑开机操作系统引导过程

电脑开机时操作系统引导&#xff1a; CPU首先执行主存中ROM中的引导程序。 将磁盘的第一块——主引导记录(MBR)读入到内存中&#xff0c;执行磁盘引导程序&#xff0c;扫描分区表。 在主分区(C盘)执行分区引导程序。 在C盘根目录下找到完整的操作系统初始化程序并执行。

系统虚拟机(VM)

系统虚拟机&#xff1a;将一台物理机器虚拟化为多台虚拟机&#xff0c;每个虚拟机上都可以运行一个独立的操作系统&#xff0c;由虚拟机管理程序(VMM)来管理。 第一种直接运行在硬件上&#xff0c;可以直接分配物理资源&#xff0c;性能更好&#xff0c;可支持更多的虚拟机&am…

ModaHub魔搭社区专访百度智能云李莅:企业需要的是一款企业级向量数据库还是向量引擎?

ModaHub魔搭社区&#xff1a;虽然您认为它是刚需&#xff0c;但也有人认为我可能不是需要一款企业级的向量数据库&#xff0c;而是需要一个向量引擎。我可以在传统的数据库上加一个向量引擎&#xff0c;然后它就变成了一款向量数据库&#xff0c;您觉得他们这样的想法是可行的吗…

布隆过滤器Moudule安装

Redis帮我们实现了布隆过滤器算法&#xff0c;可以通过module方式安装&#xff0c;直接使用&#xff0c;其实可以自己实现这样的算法。 安装遇到的问题&#xff0c;通过官网下载的zip或者git下载的源码&#xff0c;都是master版本&#xff0c;make会出问题&#xff0c;报错文件…

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…

stack和queue容器

1 stack 基本概念 概念&#xff1a;stack是一种先进后出(First In Last Out,FILO)的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为 栈中进入数据称为 — 入栈 push 栈中弹出数据称为 — 出栈 pop 2 stack 常用…

Linux——进程间信号(超级详解!!)

索引 一.初始信号1.什么是信号2.前后台进程3.信号的种类4.信号的管理 二.信号产生前1.验证键盘是可以产生信号的2.通过系统调用接口发送信号3.由软件条件产生信号4.硬件异常产生信号5.总结6.core dump 信号产生中1.信号在内核中的表示2.信号集操作函数 信号产生后1.了解内核态和…

Java Web3J :使用web3j监听、查询、订阅智能合约的事件

前面有文章写如何使用Docker-compose方式部署blockscout浏览器+charts图表,区块链浏览器已经部署成功了,同时我们在链上增加了治理投票流程,如何实时的把治理事件快速同步到浏览器呢?这时就想到了Web3J来监听智能合约的事件,来达到同步事件的效果 目录 Web3J简介功能简介m…

lv3 嵌入式开发-4 linux shell命令(进程管理、用户管理)

目录 1 进程处理相关命令 1.1 进程的概念 1.2 查看进程的命令 1.3 发送信号命令 2 用户管理相关命令 2.1 用户管理相关文件介绍 2.2 用户管理相关命令介绍 1 进程处理相关命令 1.1 进程的概念 进程的概念主要有两点&#xff1a; 进程是一个实体。每一个进程都有它自己…