Unreal Engine角色涌现行为开发教程

news2025/2/28 6:30:57

在本文中,我将讨论如何使用虚幻引擎、强化学习和免费的机器学习插件 MindMaker 在 AI 角色中生成涌现行为。 目的是感兴趣的读者可以使用它作为在他们自己的游戏项目或具体的 AI 角色中创建涌现行为的指南。

在这里插入图片描述

推荐:使用 NSDT场景设计器 快速搭建 3D场景。

1、涌现行为:What & Why?

首先介绍一些关于涌现行为的入门知识。

涌现行为是指未预先编程但响应某些环境刺激而有机发展的行为。 涌现行为对于许多(如果不是所有)生命形式来说是常见的,它是进化本身的一个功能。 这也是最近体现的人工代理的一个特征。

当采用涌现行为方法时,并不是严格地为 AI 编写特定的动作,而是让它们通过一些自适应算法“进化”,例如遗传编程、强化学习或蒙特卡洛方法。 在这样的设置中——行为不是在一开始就被预测到的,而是允许基于一系列在某种程度上依赖于机会的级联事件而“出现”。

为什么会选择使用涌现行为? 主要原因之一是涌现行为方法可以创建行为更类似于碳基生命形式的 AI 代理,更不可预测,并显示出更大的战略行为多样性。

为娱乐或人类互动而设计的各种具体化 AI 代理可以从突发行为中受益,从而显得不那么静态,对用户更具吸引力。 《自然》杂志最近的一篇期刊文章表明,机器人在响应时间和运动模式方面表现出更多的可变性,被认为更人性化。

涌现行为还可以克服使用传统编程方法创建的其他形式的人工智能无法克服的障碍。 通过允许 AI 发现开发人员未预见到的解决方案,代理可以探索比传统编程方法可能实现的更广泛的解决方案空间。 甚至有可能出现的行为方法可能会导致通用人工智能的产生,这是一种可以与人类所拥有技能的多样性相媲美的人工智能。

但是,并非所有情况下都适合使用涌现行为方法,如果想要创建非常具体的行为,例如精确和重复地模仿特定动物的行为,涌现行为技术可能不是最佳选择。 涌现行为不太适合不需要变化的重复性高保真任务。 这就是为什么人类和其他有机生命形式可能难以完成高度重复的任务的原因之一,我们天生就是多变的。

此外,在尝试复制特定行为时,可能很难重现导致该行为模式出现在现实世界中的相同偶然事件。 例如,可能有多种解决方案是某种生物适应或行为进化来实现的,其结果受偶然事件的调节。 因此,并非所有紧急方法都必然会得出相同的解决方案。 一个例子是趋同进化多次重现眼睛的方式,但不一定具有完全相同的形式。

涌现行为方法有利于创造多种行为,其中一些行为可能与真实动物的行为相似,但不太可能完全相同。 另一方面,可以预期使用这些方法会产生大量有趣且独特的行为。 例如,我们可以看看强化学习代理发现的穿越地形景观的各种运动方法。

在这里插入图片描述

创建涌现行为的第一步是决定要使哪种行为涌现以及该行为的目标是什么。 这在某种意义上是容易的部分。 下一部分稍微复杂一些,需要概述一些关于涌现的理论。

2、不同类型的涌现行为

当谈到涌现的主题时,开放式涌现和静态或“固定点”涌现之间存在区别。

在不动点涌现中,一开始可能会出现多种行为,但它们会逐渐收敛到一个单一的解决方案或策略,并且出现的数量会随着时间的推移而减少。 本质上,当使用行为来解决的问题存在静态全局解决方案时,就会发生这种情况。 考虑井字游戏:虽然采用强化学习或遗传算法等新兴技术的 AI 最初可能会在井字游戏中显示多种策略,但它会很快收敛到单一的主导解决方案 游戏。 此时不会出现进一步的出现或策略。

当我谈到涌现行为时,我相信人们在接近这个话题时通常会想到“开放式涌现”。 在这种涌现形式中,没有固定的解决方案,代理将不断地产生新的行为。 创建这种开放式涌现可能比创建固定点涌现更复杂,并且必须考虑创建它所必需的结构。

值得庆幸的是,最近在理解和开放式涌现编程方面取得了一些进展,特别是 Joel Liebo 和其他人在自动课程方面所做的工作。 在一篇开创性的论文“Autocurricula and the Emergence of Innovation from Social Interaction”中,作者列出了一些可以预期开放式涌现发生的条件。 下面的表格将有助于理解什么时候可以期待开放式涌现。

3、开放式涌现的秘诀

如果为行为或目标设定的解决方案非常大,因此,就所有意图和目的而言,涌现的数量在所检查的时间段内不会出现上限。 这不是真正的开放式涌现,因为可能存在全局解决方案,如果给定足够的时间,代理将发现并停止适应。

然而,在许多情况下,这可能会超出人类生命的时间跨度,因此从观察者的角度来看,涌现将是开放式的。 一个例子可能是国际象棋游戏,其中全局解决方案被认为存在于井字游戏中,但由于游戏的复杂性,这尚未被发现并且不太可能在我们有生之年被发现。

创造开放式涌现的另一个秘诀是采用依赖于不断变化的环境的行为或目标状态。 想一想地球上的碳基生命形式——由于行星气候条件,环境不断变化,确保动物必须始终适应才能生存,并且涌现水平没有上限。

开放式涌现的第三个秘诀是多代理场景,其中涉及合作或竞争,代理正在采用一些自适应学习策略。 在这种情况下,代理人必须适应其同伴或竞争对手的策略,这反过来又确保另一个人也必须适应,从而形成持续适应的反馈循环,一种进化军备竞赛。 虽然这可能导致出现,但它也可能导致重复行为的循环,无限循环,直到环境中的某些元素将它们推离循环。 它不是真正的均衡,因为行为或策略不是固定的,但循环本身变成了一种均衡。 确保环境足够复杂和动态是避免这些周期性行为或策略的一种方法。

4、开放式涌现演示

在以下使用虚幻引擎创建的示例中,我选择使用上面列出的第三个配方,一个涉及来自两个虚拟物种的种群的多代理场景。 我们称其中一只为犀牛,另一只为老虎。 两组探索他们的环境寻找“浆果”,它们在虚幻引擎游戏环境中以大型圆形物体的形式出现。

使事情变得更复杂的是,这些浆果斑块上随机分布着野鸟,它们可以尖叫,吓跑老虎和犀牛。 然而,如果一只老虎或犀牛与另一只个体组队一起接近浆果,它们就会吓得鸟儿安静下来。 他们现在可以获取浆果,但他们必须将浆果彼此分开。

除了这种合作行为之外,它们还有一种竞争行为,它们可以发出吼叫声(老虎)或开始跺脚(犀牛),吓跑对立物种的代理人,但也会消耗自己宝贵的能量。 在许多方面,这种情况复制了自然界中的动物和人类公司可用的一些合作和竞争权衡。

竞争或合作是最古老的问题之一,通过在虚拟代理中模拟这一点,我们可以深入了解导致各种竞争或合作结果的条件。 使用这样的虚拟代理,我们还可以产生许多与在动物王国甚至人类中可能观察到的相同的行为复杂性。 OpenAI 小组最近发表的一篇论文能够证明工具使用的涌现是玩捉迷藏游戏的 AI 角色之间多代理竞争的函数。

可以对任何自适应虚拟代理群体进行类似的操作,这些虚拟代理将在彼此之间玩游戏,其中收益取决于其他玩家的策略,并且环境会受到他们行为的影响。 目标可以是任何东西,只是代理必须有一些方法来接收有关其环境的反馈,包括竞争对手采取的行动以及改变自己的行动作为回应的能力。 这个目标是由玩家还是程序员设定的,在复杂性方面没有太大区别。 选择由玩家设置它可能会带来关于游戏叙事的有趣选项。 需要注意的重要一点——行为的目标是谁来选择并不重要,重要的是这满足了上述竞争或合作的要求。

但是涌现究竟是如何“涌现”的呢? 一种方法是使用强化学习或遗传算法。 在我们的例子中,我们有一群虚拟代理,它们使用随机变化的行为来查看目标状态是否受到影响。 代理然后优先考虑那些导致良好结果的行为。 在遗传算法中,这是通过种群中出现的一种交叉函数来完成的,其中随机出现的良好适应性得到保留,相对不太有用的适应性被丢弃。 这是由适应度函数决定的。 这不需要看起来像有性繁殖或任何类似的东西,因为现有的代理可以被它们适应的对应物无缝替换,而用户不会看到任何正在发生的交叉。 在我们的示例中,我们将使用强化学习,这是我在另一系列文章中广泛介绍的一种算法技术。

与遗传算法类似,强化学习依赖于大数法则,即给定足够多的随机行为,就会出现好的动作,并可以在未来优先考虑。 最初,智能体选择一系列随机动作,但如果它们导致智能体获得奖励,则该奖励的价值将归因于智能体为获得奖励而采取的动作,因此更有可能在未来重复这些动作 . 当这个随机动作的过程被充分重复时,那些与代理人获得奖励有因果关系的动作将与那些仅仅是偶然事件的动作区分开来。 这就是强化学习的核心所在,它是一种因果算法,可用于检测因果关系。

人们可以像这样想象这个过程。
在这里插入图片描述

对于这个项目,我使用了免费的 MindMaker 插件和 Stable Baselines 强化学习算法套件。 借助 MindMaker,我们可以使用 OpenAI Gym 格式轻松地在 Unreal Engine 游戏环境中部署各种 RL 算法。 这为在各种模拟环境中部署强化学习算法提供了一个通用结构。

5、总结与未来发展

上述简单设置导致不同数字物种的行为不太可能达到稳定平衡的情况。 鸟类在浆果斑块上的随机分布确保环境始终在变化,这反过来又不断改变代理人合作或竞争的潜在利益。 智能体本身的活动也会影响有鸟和没有鸟的浆果斑块的比例——随着更多的智能体相互合作,合作的动机就会减少,因为没有鸟的浆果斑块的比例会增加。

这个想法是,这些相互作用的力量创造了一个总是波动和不稳定的环境,推动战略适应。 鉴于我们的代理与环境互动的方式很少——他们无法诱捕他们的竞争或使用环境中的物体隐藏浆果,我们的范例不太可能产生像涌现工具使用这样有趣的东西。 然而,它确实避免了固定均衡,并创造了不断变化的合作和竞争策略组合。 这可以提供一组比通常出现在开放世界视频游戏中更有趣的行为。

因此,我相信涌现行为技术(例如此处概述的技术)很可能会主导下一代视频游戏 AI,从而创造出更加有趣和诱人的角色和行为库。


原文链接:虚幻引擎涌现行为开发 — BimAnt

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

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

相关文章

一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)

一种基于加密域的数字图像水印算法的设计与实现 项目介绍 毕设项目 题目:一种基于加密域的数字图像水印算法的设计与实现 随着数字媒体技术的发展,数字媒体版权的保护得到了越来越多人的重视,数字水印技术作为数字媒体版权保护的有效手段…

通达信交易接口以什么形式执行下单的?

通达信程交易接口 以API形式来执行下单接口,一般不再需要通过接口系统之间进行连接,通过直接调用通达信dll交易函数的方式直接进行交易,包括下单,撤单,查询资金股份、当日委托、当日成交等方面都能很快的执行出来。以a…

【JDK8】MyBatis源码导入Idea

1.背景 为了更好的将MyBatis的开发设计思想带到日常开发工作,将MyBatis源码导入到本地开发工具中(idea)。我自己在导入的时候碰到几个问题,耽误了自己一点时间,这里我把它们记下来,后边的小伙伴可不要踩我的坑。 Java版本&#x…

黑帽SEO是什么?做了真的能够一直保持排名?

随着Google演算法一次又一次的更新,现在愈来愈多人重视所谓的网站SEO。但是内行的人都知道,网站要提高排名并非一天两天的事,所以有些人就会使用不法手段想借此提高排名,这也就是常听到的「黑帽SEO」。但是做黑帽SEO真的能快速提高…

【爬虫+数据清洗+可视化分析】用Python分析哔哩哔哩“狂飙”的评论数据

一、背景介绍您好,我是马哥python说,一枚10年程序猿。2023开年这段时间,《狂飙》这部热播剧引发全民追剧,不仅全员演技在线,更是符合反黑主旋律,因此创下多个收视率记录!基于此热门事件&#xf…

嵌入式开发之Vscode实用插件大全

嵌入式开发之Vscode实用插件大全① Chinese (Simplified) (简体中文) (神器)② C/C &CMake & C/C Extension Pack(神器)③ Better C Syntax④ Doxygen Documentation Generator(神器)⑤ vscode-ico…

存储类别、链接与内存管理(一)

1、一些必要的基础概念 (1)对象 从硬件的角度,被存储的每个值都被占用了一定的物理内存,C语言把这样的一块内存称为对象对象可以存储一个或多个值一个对象可能并未存储实际的值,也可能存储一个或多个值,但…

初阶函数递归经典例题(1)

1、递归实现n的k次方 2、计算一个数的每位之和(递归实现) 3、strlen的模拟(递归实现) 讲解之间我们先回顾下递归的知识点: 1、什么是递归? 程序调用自身的编程技巧称为递归。(即一个函数在其…

蓝牙耳机什么牌子的好又实惠?实惠好用的蓝牙耳机品牌

随着科技的发展,耳机领域的新品是越来越多,很多品牌如雨后春笋般涌现,耳机的样式也是层出不穷,下面小编整理了几款实惠好用的蓝牙耳机品牌。 一、南卡小音舱蓝牙耳机 参考价格:239元 单耳重:3.1g 推荐系…

用ChatGPT写一个基于ChatGPT API的对话机器人

采用的是国区的网站 Q:写一个调用chatgpt的聊天机器人的python程序 A: python import requests# 聊天机器人的API地址 url https://api.chatgpt.com/v2/query# 请求参数 params {prompt: 你好,user_key: YOUR_USER_KEY }# 发送请求 response request…

数据仓库实战

目录1、最佳实战1.1 表的分类1.2 ETL策略1.3 任务调度2、项目实战2.1 项目概述2.2 数据描述2.3 架构设计2.4 环境搭建2.5 项目开发1、最佳实战 1.1 表的分类 维度建模中表的类型:事实表和维度表 事实表又可以分为:事务事实表、周期快照事实表、累积快照…

公司项目引入这种方式,开发应用真是又快又准!

试想一下,你开足马力提了一串需求,给开发精英团队也好,给外包也行,都要等个半年甚至更久才会给到你一个满意的产品,你是否还有动力? 这还不止,业务越来越复杂,最初的需求也在随着着…

jsp医院管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 医院管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

大数据之-Nifi-Nifi的安装_启动_认识Nifi的操作台---大数据之Nifi工作笔记0002

然后我们看一下如何安装nifi 这个上一节已经说了 然后看一下环境准备,这个自己去安装就可以了,需要jdk,1.8就可以了,然后 maven安装上就可以了 然后去下载,这里下载Linux版本的 1.9.2的版本比较稳定 下载以后,避免端口冲突要修改端口默认是8080,修改为58080 然后启动很简单,看…

node.js校园快递智能仓储物流系统vue

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 系统能够提供简洁、全面且清爽的用户界面,使操作人员可以直观明了。 系统可以实现管理员信息管理、收件人信息管理、快…

【C++】智能指针(万字详解)

🌈欢迎来到C专栏~~智能指针 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&…

如何在 Webpack 中开启图片压缩

工具对比 npmtrends.com/image-minim… 这四个压缩工具,从下载量来看,image-webpack-loader 较多,image-minimizer-webpack-plugin、imagemin-webpack-plugin 次之,imagemin-webpack 已经不再维护,因此不考虑此工具。 …

【云原生】手把手带你从零开始搭建kubernetes最新版本实战

文章目录前言一. 实验环境二. k8s 的介绍三 . k8s的安装3.1 搭建实验环境3.1.1 硬件层面的要求3.1.2 软件层面环境配置3.2 docker的安装3.2.1 搭建docker3.2.2 部署 cri-dockerd3.3 部署k8s3.3.1 配置添加阿里云的yum源3.3.2 安装kubeadm kubelet kubectl3.3.3 k8s-master节点初…

汽车装配工厂立库物料运送线PLC无线应用

一、项目背景 此次项目地在比亚迪的西安工厂,需要实现PLC无线通讯的地方是汽车厂的立体仓库物料运输线。生产物流担负运输、存储、装卸物料等任务。立体仓库主要通过检测、信息识别、控制、通信、监控调度、大屏显示及计算机管理等装置组成。将操作指示信息存储在运…

IDEA插件之Mybatis log插件安装及使用

一 前言分析 我们在idea控制台看见的sql日志通常是这样的,实际开发调试中我们想把完的sql复制出来,到数据库中执行分析数据情况。但是如果我们的sql有动态传参控制台输出的sq入参会用“?”代替入参,不能直接使用。 SqlSession […