Games104现代游戏引擎笔记高级ai

Hierarchical Task Network 层次任务网络

在这里插入图片描述
在这里插入图片描述
World State是一个主观的对世界的认知,并不是一个真实世界的描述
Sensors负责从游戏环境中抓取各种状态
在这里插入图片描述
HTN Domain 存放层次化的树状结构Task和之间的关联关系1
Planner 根据World State从 Domain 里规划 task
Plan Runner 根据 Planner 设定的计划执行 Task,当 Task 执行过程中发生了很多其他问题,Plan Runner 会监控所有的状态并且告知Planner规划另一系列Task (Re-plan)
在这里插入图片描述
primitive:单个动作
compound:复合任务
在这里插入图片描述
在这里插入图片描述
preconditions:检测world state中哪些state条件符合,才会执行,否则返回false,
检查task执行中间是否失败 (对世界的读操作)
effects:task执行完后修改world state (对世界的写操作)
在这里插入图片描述
在这里插入图片描述
task由一堆Method构成,每个method都有一组属于自己的Precondition, Method自上而下就是优先级 Priority,类似于BT selector功能,
每个method都要执行一系列task、,全部完成,类似于BT selector的Sequence。
在这里插入图片描述
在这里插入图片描述
HTN Domain需要定义一个Root Stask作为根节点,也就是核心节点
在这里插入图片描述
在这里插入图片描述
根据 World State, 从Root Task开始选择当前目标的task,依次展开
在这里插入图片描述
Plan展开的过程是非常的快的,但是因为每一个Primitive Task 都是有个对于world state修改的Effect,但是并不会真的修改到World State 上,然而这可能会影响到后面的task。 所以这里的方法是将World State复制一下,然后对于这个拷贝进行修改和推演,自Planning一步步展开
相当于对于World State进行一个预演并且假设所有的Task都会成功。
Replaning就是处理如果Task不成功的情况在这里插入图片描述
计划中如果发生Precondition不符合,只能返回False,并且一路返回直到Root Task
在这里插入图片描述
在这里插入图片描述
最后相当于搜索完domain并输出一串Primitive Task
在这里插入图片描述
在这里插入图片描述
据Planner的结果依次执行计划,可能执行失败,需要Replan
在这里插入图片描述
Replan原因:1.没有计划 2.计划执行完毕或失败 3.感知的world state发生变化
在这里插入图片描述
优点:
1.是对于BT的一个非常好的抽象和总结
2.有助于设计师规划长期行为
3.执行效率高于BT (Planning减少了遍历树的过程,ai在被唤醒tick时要从root重新跑一遍,htn除非世界发生改变,或者plan计划完成或失效,否则不会重新遍历)
缺点:
1.配置Precondition和Effector的时候,因为数量很大且交叉,可能导致Task无法执行,但是设计师难以被发现:需要一些静态检查工具检查逻辑漏洞
2.plan的链路很长,在一个高度不确定的环境中,容易在中间失败,导致replan

Goal-Oriented Action Planning

在这里插入图片描述
Goal set目标集:所有可以达成的目标,Htn里并没有显示的定义出目标,是从task树里看出来目标(写在注释里的)。GOAL里的目标都是用数学方式可以表达的
Planning:规划问题
在这里插入图片描述
每个goal是由一系列的动作完成后期望世界达成的状态来定量表达的。每个goal在动作完成后需要满足一些World State(一般是bool值),并非单一状态,而是一个目标状态的组合(Collection of States)
在这里插入图片描述
在这里插入图片描述
相比于Primitive Task,增加了Cost。有设计者定义cost,用来进行动态规划
在这里插入图片描述
倒着计划每个action
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
比较当前目标的world state和外部world state,找出未满足的state,加入到Unsatisfied State的堆栈里,
比较第一个未满足的state,以此在action set里寻找,哪个action输出的effect可改写未满足的state,移除堆栈里可改写的state
如果aciton的precondition是不满足的,把不满足的state提出,反向加入到Unsatisfied state的堆栈,action加入plan stack
最终目标清空Unsatisfied state堆栈,并且期望plan stack里的action cost最少
在这里插入图片描述

node:state的一个组合
egde:所有可能的action
distance:action所需的消耗
在这里插入图片描述
a*启发函数:选择更接近当前state组合的路径
在这里插入图片描述
优点:
1.相比于HTN,GOAP更加的动态
2.将目标和行为真正意义上分开(FSM,BT,HTN,行为和目标是一一锁死的,GOAP同一个目标,可能有多种行为路线,可以超出设计师的想象)
3.可以规避HTN的配置上的死锁等问题
缺点:
1.非常的复杂,计算量大于HTN和BT和FSM
2.GOAP需要对于Game World进行一个定量的表达,复杂的游戏很难通过bool变量去表达World State
通常用于传统的单机的,1V1或者少量AI博弈比较合适

Monte CarloTree Search

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

蒙特卡洛是一种基于随机采样的算法
State 和 Action 是用于将围棋问题抽象成数学问题的方法
State:世界的现在状态,比如这个时刻所有子的位置
Action:可执行的动作,也就是落子
在这里插入图片描述
判断所有的可能性,选择最有利的做法
在这里插入图片描述
在这里插入图片描述
Q 模拟赢的次数
N 模拟次数
Q / N 判断State的好坏
在这里插入图片描述
模拟结果要反向传导更新父节点
在这里插入图片描述1.选择一个最有可能的且所有可能性未被完全展开的子节点
2.展开加一次新的探索
3.做一次simulation,对结果进行胜负模拟,确定探索方向的好坏
4.得出结果后,把数值反向传导回父节点
在这里插入图片描述
在这里插入图片描述

Expandable Node这个node的所有可能性并没有被穷尽
在这里插入图片描述
Exploitation 开发:优先寻找胜率高的点,也就是选择N, Q/N值都很大的Node
Exploration 探索 :优先寻找探索 N值较小的
在这里插入图片描述
UCB算法:用于平衡开发和探索的算法
优先选择Q/N较高的,然后于父节点N比较,
C用于调整策略平衡,C值越大则越激进(趋向于探索),C值越小越保守(趋向于开发)
在这里插入图片描述
从root开始,比较第一圈所有子节点UCB的值,最大值节点作为下一个探索方向,一直往下走到第一个Expandable Node节点(未被完全展开过),作为当前 select node展开
类似BFS,但每次都从root开始往下走
在这里插入图片描述
根据性能可模拟一种或多种可能性
在这里插入图片描述
每个节点模拟胜负结果并反向更新父节点(每个Node的Q,N依次叠加)
在这里插入图片描述
设定一个搜索次数或者内存大小或者计算时间等作为停止条件
在这里插入图片描述
停止后得到一个Tree
在第一个子节点里,根据不同的策略方式来选择:
Max Child :选择Q值最大的,也就是胜的最多的
Robust Child :选择最多被访问子节点的,N值最大的,不是 Q/N
Max-Robust Child :最大的 Q 和 N 的,如果没有则继续跑直到出现
Secure Child :LCB Lower Confidence Bound,(考虑下执行区间)主要是对采样次数不多的选择进行一个惩罚,还是C的设置问题
在这里插入图片描述
优点:
1.会让AI更灵活(有随机数)
2.AI的决策是自我行为不是被动行为,超出设计师想象
缺点:
1.复杂游戏难以定义胜负,以及决策对胜负的影响
2.计算的复杂度很高

MCTS不适用于所有游戏,适用于Turn-base(你一下我一下)以及每个动作有明确输出结果(回合制战斗游戏,输出一个技能,可以精准计算对方会被打掉的血,会改变什么状态)的游戏,也可以结合其他方法作为子系统存在

Machine Learning Basic

在这里插入图片描述
在这里插入图片描述
本质是分类器,如图像识别
在这里插入图片描述
本质是聚类 Clustering,如用户画像构建
在这里插入图片描述
减少了案例 unlabeled data 的输入,主要是小样本学习的方向
在这里插入图片描述
没有监督也没有判断机制告诉对错。通过奖励让ai自我优化迭代形成自己的策略
在这里插入图片描述
本质是一个尝试+搜索 Trial-and-error search,比较难的一件事是奖励是Delay的 Delayed Reward。老鼠走到终点获得奖励不是延迟的,不是每走一步就触发奖惩机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

马尔科夫决策过程

当我在当前策略的State s的情况下,我去take一个Action a,到达一个新的状态的 possibility的多少,是一个随机变量

Pollcy:策略黑箱, 也是AI系统的核心,输入一个状态时,输出所有可能动作的概率,也是各种模型优化的核心

Total reward:γ用来平衡短期收益和长期收益,往后的每一步操作之后的状态获得的奖励通过与γ相乘来调整概率

在这里插入图片描述

Build Advanced Game AI

在这里插入图片描述
过去的算法都是有人类设计的,不会超过人类的预期,机器学习让游戏的行为有无限的可能
在这里插入图片描述
重点是对于游戏 Observation 的构建,也就是定量化的描述游戏状态,然后反复优化Policy
在这里插入图片描述
state:对世界状态的描述
action:电脑ai要指挥游戏做什么
reward:设置动作的奖励,最简单就是胜负的判断
NN design:构建神经网络的拓扑结构
Training Strategy:训练策略
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从下往上看
1.通过各种游戏内的数据输入,Scalar Features, Entities, Minimap等
2.通过不同的神经网络类型,MLP, Transformer和ResNet
3.把所有结果再整合到LSTM里
4.结果是Unreadable的,完成Encode
5.Decode就是把encode的结果翻译成人类可以理解的
在这里插入图片描述
多层神经网络:处理定长数据
在这里插入图片描述
卷积神经网络:处理各种图像
在这里插入图片描述
处理大量时间上不定长的数据
在这里插入图片描述
模拟反馈和记忆,多次使用的策略会被记忆,同时有记忆在遗失在这里插入图片描述
在这里插入图片描述
对于复杂游戏来说不能直接从零开始训练,因为收敛的速度会非常慢,首先使用人类的数据训练一个基础,相对较好的模型,通过Supervised learning开始
KL Divergence 数值差熵(两个分布之间的差会形成一个熵),用于衡量两个概率分布的距离,差距熵越小代表着两个概率分布越相似,用于衡量AI学习人类操作到了什么地步
在这里插入图片描述
在这里插入图片描述
MA Main Agents :每天自己和自己打35%,然后和LE和ME打50%,最后和过去的MA打15%
LE League Exploiters :专门寻找所有Agent的弱点 Weakness
ME Main Exploiters :专门寻找主分支MA的缺点
一直独自Training的AI虽然会越来越强,但是会使得能力专一化(过度拟合)
在这里插入图片描述
有大量玩家数据的情况下建议首先SL(监督学习),因为可以快速收敛,如果数据量足够大并且足够好,ai可以达到一个不错的水平
在这里插入图片描述
增强学习上限非常高,但是训练非常复杂,成本非常高在这里插入图片描述

在这里插入图片描述
如果奖励足够密集,每一步或没几下就能判断奖励结果,用增强学习,容易训练出一个好的ai,如果是探索解谜类,一个动作和结果非常的不关联,增强学习的效果比较难在这里插入图片描述

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

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

相关文章

Mac上安装Java的JDK多版本管理软件jEnv

JDK的多版本管理软件主要有以下三种: jEnv jEnv 是一个命令行工具,可以帮助您管理和切换不同版本的 Java 环境。它可以让您在不同的项目之间轻松切换 Java 版本。您可以使用 jenv global 命令设置全局 Java 版本,也可以使用 jenv local 命令…

短视频平台的那些事

短视频平台的那些事 文章目录 短视频平台的那些事1. 前言2. 概览介绍3. 业务框架4. 关键技术能力4.1 视频处理4.1.1 FFMPEG技术 4.2 视频安全,合规4.2.1 视频安全审核4.2.2 视频MD5校验4.2.3 视频AI指纹 4.3 视频内容理解4.3.1 视频分类4.3.2 视频标签4.3.3 视频质量…

windows docker desktop配置加速地址

目录 为什么常见加速地址在docker desktop上配置 为什么 https://hub.docker.com 是官方的镜像仓库地址,但是它的服务器地址是在国外,有时候访问和下载的速度差强人意。不过好在,我们可以进行远程仓库的设置,将仓库镜像地址设置为…

ChatGPT 背后包含了哪些技术?

ChatGPT 是由OpenAI开发的一款基于GPT-3(Generative Pre-trained Transformer 3)的人工智能语言模型。这个模型是使用多种编程语言和技术组合编写的。 首先,ChatGPT 使用了 Python 作为主要的编程语言。Python 是一种流行的高级编程语言&…

Prometheus集成consul[被监控对象开启basic认证]

1,被监控对象开启basic认证 具体操作这里不再详细细讲。 2,将被监控对象注册到consul 由于被监控对象开启了basic认证,注册到consul后显示:401 Unauthorized Output: Unauthorized,不能够正常健康检查。 3&#xff0c…

AI绘画-Stable Diffusion笔记

软件:Stable Diffusion 视频教程来自 https://www.bilibili.com/video/BV1As4y127HW/?spm_id_from333.337.search-card.all.click 提示词 提示词类别 内容型提示词 人物主题特征: 服饰穿搭:white dress 发型发色:blonde hair,l…

TensorFlow案例学习:对服装图像进行分类

前言 官方为我们提供了一个 对服装图像进行分类 的案例,方便我们快速学习 学习 预处理数据 案例中有下面这段代码 # 预处理数据,检查训练集中的第一个图像可以看到像素值处于0~255之间 plt.figure() # 创建图像窗口 plt.imshow(train_images[0]) # …

开发过程教学——交友小程序

交友小程序 1. 我的基本信息2. 我的人脉2.1 我的关注2.2 我的粉丝 3. 我的视频4. 我的相册 特别注意:由于小程序分包限制2M以内,所以要注意图片和视频的处理。 1. 我的基本信息 数据库表: 我的基本信息我的登录退出记录我的登录状态&#x…

Godot 官方2D游戏笔记(1):导入动画资源和添加节点

文章目录 前言2D官方游戏案例资源下载项目配置添加角色节点模拟运行移动根节点 结束 Godot专栏地址 前言 Godot 官方给了我们2D游戏和3D游戏的案例,不过如果是独立开发者只用考虑2D游戏就可以了,因为2D游戏纯粹,我们只需要关注游戏的玩法即可…

蓝桥杯---第二讲---二分与前缀和

文章目录 前言Ⅰ. 数的范围0x00 算法思路0x00 代码书写 Ⅱ. 数的三次方根0x00 算法思路0x01代码书写 Ⅲ. 前缀和0x00 算法思路0x01 代码书写 Ⅳ. 子矩阵的和0x00 算法思路0x01 代码书写 Ⅴ. 机器人跳跃问题0x00 算法思路0x01 代码书写 Ⅵ. 四平方和0x00 算法思路0x01 代码书写 …

SpringCloud学习笔记-注册微服务到Eureka注册中心

目录 1.在该Module的pom文件中引入eureka依赖2.在该module的src/main/resources/application.yml配置文件3.启动对应的微服务4.查看微服务是否启动成功 假如我有一个微服务名字叫user-service,我需要把它注册到Eureka注册中心,则具体步骤如下: 1.在该Module的pom文件中引入eure…

Flink的处理函数——processFunction

目录 一、处理函数概述 二、Process函数分类——8个 (1)ProcessFunction (2)KeyedProcessFunction (3)ProcessWindowFunction (4)ProcessAllWindowFunction &#xff…

真香!Jenkins 主从模式解决问题So Easy~

01.Jenkins 能干什么 Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 中文官网:https://jenkins.io/zh/ 0…

好消息:用 vue3+layui 共同铸造我们新的项目

前言: layui这个框架不知道多少人还在关注着,记得第一次接触它是在18年,后来随着vue,react的盛行,jquerylayui的模式受到了特别大的冲击,后来作者都放弃维护他的官方网站,转而在github/gitee上做…

SLAM从入门到精通(ROS和底盘Stm32的关系)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学过Ros的同学,一般对subscribe、publish、话题、服务这些内容都比较熟悉。如果再熟悉一点的话,还会知道slam、move_base、…

NLP - 数据预处理 - 文本按句子进行切分

NLP - 数据预处理 - 文本按句子进行切分 文章目录 NLP - 数据预处理 - 文本按句子进行切分一、前言二、环境配置1、安装nltk库2、下载punkt分句器 三、运行程序四、额外补充 一、前言 在学习对数据训练的预处理的时候遇到了一个问题,就是如何将文本按句子切分&#…

ChainForge:衡量Prompt性能和模型稳健性的GUI工具包

ChainForge是一个用于构建评估逻辑来衡量模型选择,提示模板和执行生成过程的GUI工具包。ChainForge可以安装在本地,也可以从chrome浏览器运行。 ChainForge可以通过聊天节点对多个对话可以使用不同的llm并行运行。可以对聊天消息进行模板化,并…

基于复旦微JFM7K325T FPGA的高性能PCIe总线数据预处理载板(100%国产化)

PCIE711是一款基于PCIE总线架构的高性能数据预处理FMC载板,板卡采用复旦微的JFM7K325T FPGA作为实时处理器,实现各个接口之间的互联。该板卡可以实现100%国产化。 板卡具有1个FMC(HPC)接口,1路PCIe x8主机接口&#x…

【HomeKit】HAT User Manual教程

前言:这篇文章是对于苹果协议文件《HomeKit Accessory Tester (HAT) User Manual》的学习,即 HomeKit配件测试仪(HAT) 用户手册,该版本是第11次修订 第一章 概述 本文档介绍了Apple HomeKit配件测试仪(HAT)的配置和使用方法。HAT是一个Mac应…

Redis作为缓存,mysql的数据如何与redis进行同步?

Redis作为缓存,mysql的数据如何与redis进行同步? 一定要设置前提,先介绍业务背景 延时双删 双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致 读操作:缓存命中,直接返回;缓存未…