在LLM的支持下使游戏NPC具有记忆化的方法

这篇具有很好参考价值的文章主要介绍了在LLM的支持下使游戏NPC具有记忆化的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

使用GPT这样的LLM去处理游戏中的NPC和玩家的对话是个很好的点子,那么如何处理记忆化的问题呢。

因为LLM的输入tokens是有限制的,所以伴随着问题的记忆context是有窗口大小限制的,将所有的记忆输入LLM并不现实。

所以这里看到了stanford的一项研究,利用ChatGPT做的生成智能群体。

方法

Generative Agents: Interactive Simulacra of Human Behavior ----Stanford

在LLM的支持下使游戏NPC具有记忆化的方法,NLP,游戏,自然语言处理

Introduction

生成代理为交互式应用程序创建可信的人类行为模拟。在这项工作中,我们通过填充沙盒环境来演示生成代理,让人想起模拟人生,其中有 25 个代理,每个代理通过一段话进行初始化。 用户可以作为代理人,他们会观察和干预他们计划自己的日子、分享新闻、建立关系和协调小组活动。

生成型智能体的核心技术是基于深度学习的生成模型。生成模型是一种可以从数据中学习出潜在规律,并根据这些规律生成新数据的机器学习方法。

生成式智能体接受当前环境和过去经验作为输入,并将行为生成为输出。这种行为的基础是一种新颖的智能体架构,它将一个大型语言模型与合成和检索相关信息的机制相结合,以在语言模型的输出上进行条件控制。

主要包括三个组成部分:

(1)memory stream

(2)reflection

它将记忆合成为高层次的推理,使智能体能够在时间上得出关于自己和他人的结论,以更好地指导其行为

(3)schedule

将这些结论和当前环境转化为高层次的行动计划,然后递归地转化为详细的行动和反应行为。这些反思和计划被反馈到记忆流中,以影响智能体未来的行为

Memory and Retrieval

challenge: 创建可以模拟人类行为的生成代理需要对一组远远大于提示中描述的经验进行推理,因为完整的内存流可以分散模型,甚至目前不适合有限的上下文窗口。

memory stream: a list of memory objects. 每个memory object包含:自然语言描述、创建时间戳和最近的访问时间戳。包括agent本身的行为或者代理感知到其他代理的行为。

主要做法:

我们的体系结构实现了一个检索功能,该功能将代理的当前情况作为输入,并返回内存流的一个子集以传递给语言模型。

在LLM的支持下使游戏NPC具有记忆化的方法,NLP,游戏,自然语言处理

Recency: 指数衰减函数。我们的衰减因子是0.99。

Importance:重要性来区分普通记忆和核心记忆。给agents认为比较重要的记忆对象分配更高的分数。(在创建memory objects的时候就得到了重要性评分)

​ Ex:房间里吃早饭这样的事件重要性得分很低,与另一半分手重要性得分很高。

​ 另外直接让LM输出对应的得分也是很有效的。

​ prompt:

On the scale of 1 to 10, where 1 is purely mundane (e.g., brushing teeth, making bed) and 10 is extremely poignant (e.g., a break up, college acceptance), rate the likely poignancy of the following piece of memory. Memory: buying groceries at The Willows Market and Pharmacy Rating: <fill in>

Relavance:与当前的情况相似度更高的memory object分配更高的分数。使用语言模型生成每个memory object的embeeding vector。然后计算memory object与query之间的余弦相似度。

最后将得分归一化到0-1之间。将三者的得分进行一个求和。然后取top ranked memory object作为prompt输入语言模型中。

Reflection

当只有原始的观察记忆时,生成式智能体很难进行泛化或推理。考虑这样一种情况,用户问Klaus Mueller:“如果你必须选择一个你认识的人与之共度一小时,你会选择谁?”只有观察性记忆的智能体只会选择和Klaus互动最频繁的人:他的大学宿舍邻居Wolfgang。不幸的是,Wolfgang和Klaus只是偶尔擦肩而过,没有深入的交流。更理想的回答需要智能体从Klaus在研究项目上花费的时间的记忆中进行泛化,生成一个更高层次的反思,即Klaus对研究充满热情,同时也能够认识到Maria在自己的研究中付出了努力(尽管在不同的领域),从而产生一个反思,即他们有共同的兴趣爱好。通过以下方法,当问及Klaus要和谁共度时光时,Klaus选择Maria而不是Wolfgang

使用一个reflection tree。当智能体感知到的最新事件的重要性分数之和超过一定阈值时,我们就会生成反思。在实践中,我们的智能体大约每天反思两到三次。

反思的第一步是让智能体确定要反思什么,通过识别基于最近经验可以提出的问题。我们使用智能体记忆流中最近的100个记录(例如,“Klaus Mueller正在阅读一本关于社区变迁的书”,“Klaus Mueller正在与图书馆员谈论他的研究项目”,“图书馆的桌子目前没有人占用”)向大型语言模型提出查询,提示语言模型:“只考虑上述信息,我们可以回答哪些关于主题的最重要的高层次问题?”。模型的响应生成候选问题,例如,“Klaus Mueller对哪个主题充满热情?”和“Klaus Mueller和Maria Lopez之间的关系是什么?”。我们使用这些生成的问题作为检索的查询,并收集与每个问题相关的记忆(包括其他反思)。然后,我们提示语言模型提取见解,并引用作为见解证据的特定记录

我们解析并将该语句作为反思存储在记忆流中,包括指向被引用的记忆对象的指针。

递归操作。

记忆保存

记忆来源:NPC通过设定、和虚拟世界进行对话和互动从而获得记忆。

记忆权重:NPC对获得的记忆进行评分,从而区分平凡记忆和深刻记忆。

记忆反思:NPC不断地回顾和提炼自己的记忆,从而形成核心记忆。

记忆检索

在需要的时候,NPC通过内部的表征向量检索到所需要的记忆信息,然后根据重要性和访问时间进行排序。

一定程度上提高了NPC的性能。文章来源地址https://www.toymoban.com/news/detail-591165.html

到了这里,关于在LLM的支持下使游戏NPC具有记忆化的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 逆水寒智能NPC也会结婚生子!|与AI共创游戏未来,掀起AIGC革命性体验!

    网易6月30日将正式开服公测的《逆水寒》手游,推出被“逆水寒游戏GPT”加持的高智能AINPC,号称玩家可与NPC无限交流,甚至插手NPC私生活,改变游戏走向。与多数游戏中NPC只会“按部就班”做事设定不同的是,AI赋能下的智能NPC让游戏变得更加有趣,据逆水寒官方介绍: 有

    2024年02月15日
    浏览(47)
  • 基于LangChain的LLM应用开发3——记忆

    此情可待成追忆,只是当时已惘然。我们人类会有很多或美好或痛苦的回忆,有的回忆会渐渐模糊,有的回忆午夜梦醒,会浮上心头。 然而现在的大语言模型都是没有记忆的,都是无状态的,大语言模型自身不会记住和你对话之间的历史消息。根本用不着“时时勤拂拭”,天

    2024年02月08日
    浏览(41)
  • 缺乏对特殊协议的支持:说明默认规则可能不支持某些特殊或定制化的网络协议

    引言 随着网络技术的不断发展以及复杂应用的出现,越来越多的场景需要对特殊的网络协议提供支持以确保业务的顺利进行. 然而在实际环境中,许多企业和组织所部署的防火墙可能存在以下普遍问题——即未能充分考虑特定类型的应用和通信需求、默认配置可能并不适合这些

    2024年02月19日
    浏览(36)
  • Oculus Quest安装破解第三方游戏和开启储存权限教程方法支持MateQuest2022

    相信新入手Quest 设备的新萌玩家从买设备到使用过程都不容易把!确实,Quest 不必其他的VR一体机设备,因为不在国内销售,从激活到安装应用都挺麻烦的!并且在设备自带的应用商店各种游戏应用售价也非常昂贵,动泽最高上百美元的售价真没几个用户吃得消!那么今天我

    2023年04月17日
    浏览(161)
  • Jmeter 参数化的几种方法

    目录 配置元件-用户自定义变量 前置处理器-用户参数 配置元件-CSV Data Set Config Tools-函数助手 可在测试计划、线程组、HTTP请求下创建用户定义的变量 全局变量,可以跨线程组调用 jmeter执行的时候,只获取一次,一直不变,即使变量的值是随机数(${__Random(1,55,)}),不同用户

    2024年02月13日
    浏览(45)
  • 视频关键帧AI化的多种方法

    视频关键帧AI化的逻辑是将视频切分成一帧帧的画面,然后使用SD绘画固定风格,最后统一在拼接在一起成为一个新的视频。 不管是Mov2Mov还是Multi Frame都能制作这种视频。但是这些操作起来比较麻烦,经过尝试处理较稳定的方法是可以通过 img2im 的 batch_size , ControlNet , ADet

    2024年02月12日
    浏览(30)
  • Jmeter实现参数化的四种方法

    目录 一、CSV Data Set Config/CSV数据文件设置 二、函数助手 1、Random函数 2、RandomString随机字符串 3、CSVRead 4、time 5、UUID 三、计数器(Counter)         参数化:自动化测试脚本的一种常用技巧,事先准备好数据,指定参数的取值范围和规则;而非在脚本中写死,脚本执行时从

    2024年04月22日
    浏览(39)
  • Python经典游戏 唤醒你童年记忆

    👉游戏规则:使用方向键控制蛇去吃球。每吃一次球,蛇身就长出一格。吃到自己或者出界游戏结束。 游戏演示: 👉游戏规则:用箭头导航控制黄色吃豆人吃掉所有白色食物,若被红色的鬼魂抓住,游戏结束。 游戏演示: 👉游戏规则:点击屏幕发射炮弹。炮弹在它的路径

    2024年02月03日
    浏览(62)
  • C# Winform翻牌子记忆小游戏

    效果 源码 新建一个winform项目命名为Matching Game,选用.net core 6框架 并把Form1.cs代码修改为 修改完代码后直接启动即可。 有兴趣可以到微软官网查看相关细节教程:创建匹配游戏 - Visual Studio (Windows) | Microsoft Learn

    2024年01月17日
    浏览(30)
  • fatal: ServicePointManager 不支持具有 socks5 方案的代理。

    最近尝试自己之前的解决方法发现不行了,然后在这里找到了答案 github - 右上角自己头像 - settings - (拉到最下面)developer settings - Personal access tokens - Tokens(classic) 复制生成的token (当作密码) Username: your_github_name Password:this_copyied_token 以下是http和socks5的github代理更改方式,针对

    2024年02月10日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包