深度强化学习用于博弈类游戏-基础测试与说明【1】

news2024/11/25 6:51:33

深度强化学习用于博弈类游戏-基础【1】

  • 1. 强化学习方法
  • 2. 强化学习在LOL中的应⽤
    • 2.1 环境搭建
    • 2.2 游戏特征元素提取
      • 1)小地图人物位置:
      • 2)人物血量等信息
      • 3)在整个图像上寻找小兵、防御塔的位置
      • 4)自编码器提取
  • 3. 策略梯度算法简介
  • 参考资料

1. 强化学习方法

伴随着人工智能的潮起潮落,强化学习的从最早期的最优控制发展至今,这段时间里存
在两个重要的时间点。第⼀个关键点是 1998年,Alex M. Andrew出版 Reinforcement
Learning:An Introduction。

该书系统地总结了 1998年以前强化学习算法的各种进展。在此之前,学者们关注和发展得最多的算法是表格型强化学习算法,形成了强化学习的基本理论框架。不过这⼀时期基于直接策略搜索的⽅法也被提出来了,如 1992年 R.J.Williams提出了 Reinforce算法直接对策略梯度进⾏估计。在 1998年到 2013年,学术界继续发展出了各种直接策略搜索的⽅法。

第⼆个关键点是 2013年 DeepMind提出 DQN,将深度⽹络与强化学习算法结合形成深度强化学习,并在 alphago系列中取得了成功应⽤。在这之后深度强化学习继续发展,形成了更多的算法,例如 DDPG,TRPO,A2C,ACER,PPO等,并取得了很⼤的应⽤进展,如 openAI的 dota,以及 DeepMind的 alpha star。

强化学习要解决的是序列决策问题,它不关心输⼊⻓什么样,只关心当前输⼊下应该采
⽤什么动作才能实现最终的⽬标,作为⾏为主义的代表,它依靠与环境进⾏交互来学习。这
与监督学习和⾮监督学习有本质的区别,监督学习知道学习过程中的正确结果是什么,希望
结果运⽤到未知的数据中去,要求结果可推广化,可泛化。强化学习不知道学习过程中的结
果,通过奖励信号学习。⾮监督学习旨在发现数据之间的隐含结构(如聚类分析),强化学
习有着明确的数值⽬标(最⼤化奖励)。

⽬前的强化学习算法可以分为有模型学习和无模型学习,如果知道了环境的数学模型,
也即知道了 P(s’,r|s,a)——在 s状态下采取 a动作,会进⼊到 s’状态并获得 a收益的概率,那
么则是有模型学习,这⼀块主要是动态规划⽅法和直接求解贝尔曼⽅程法求取动作价值函数
和状态价值函数。无模型学习则是不知道环境数学模型,⽬前的研究基本都是不知道环境数学模型的,学习的经验通过与环境进⾏交互得到。强化学习问题求解的⽬标可以当作是对价值函数或者策略函数的求解,基于此在无模型学习中,便有蒙特卡洛⽅法,时序差分⽅法, 函数近似⽅法,在这些⽅法中根据学习的经验来源可以分为 on policy和 offpolicy。⽬前较热的深度强化学习主要使⽤了函数近似的思路,即利⽤神经⽹络得到状态输⼊与价值输出或者策略输出的函数。

2. 强化学习在LOL中的应⽤

2.1 环境搭建

该部分主要包括如何搭建⼀个环境,该环境需要可以获知当前游戏状态,对当前游戏发送动作对环境进⾏改变。在本文中,从游戏获得的观测为游戏的图像,如图 1所⽰,对游戏的操作包括键盘操作和鼠标对应位置的点击。实现这些功能⽤到了 Vmware虚拟机,⼤漠插件,python等。由于与主题关系不⼤这里不再赘述。由于水平限制,游戏中使⽤的是训练模式,默认情况下没有敌⽅英雄,根据游戏结束时⻓来判断游戏水平。

PS: 但实际上,交互的有效性很大程度上取决于获取信息的精准性,对于LOL这种即时对战类游戏,获取当前状态下的生命值、攻击力等参数而不是通过OCR等技术去定性学习,可能效果会更好,但那就涉及到多模态信息的学习了,这里的方法采用的是完全基于图像信息的深度强化学习模型搭建。

在这里插入图片描述

2.2 游戏特征元素提取

游戏图像主要包括 UI功能模块,小地图,当前角色所在⼤地图等区域。我们从游戏获取的特征为:小地图上人物位置,当前人物血量,金钱等信息,⼤地图上小兵位置,防御塔位置信息,自编码器特征提取向量。

1)小地图人物位置:

获知当前英雄在小地图上的位置,实现⽅法为特征匹配,在小地图中可以明显看到,在我⽅英雄周围有⼀个白色的⽅框(如图 2所⽰),特征⾮常明显。具体算法:对图像使⽤阈值法进⾏⼆值化,将图像对⾏和列分别求和,得到像素位置分布,使⽤聚类算法得到矩形的边的具体位置。

2)人物血量等信息

主要是血量和金钱,使⽤图色识别等⽅法即可,不再赘述。

3)在整个图像上寻找小兵、防御塔的位置

游戏状态原图像如图 3所⽰,需要获取所有蓝色小兵和红色小兵的位置。鉴于此为⼀个多⽬标识别问题,初始尝试使⽤ Yolov3⽹络模型进⾏识别,但利⽤ labelImg标注⼀部分图片进⾏测试后发现效果不是很好。考虑到小兵的血条对于整个图像上来说是十分明显的,是⼀个黑色的矩形框,其中包含蓝色或者红色,这⾮常适合使⽤ cv2中的模板匹配⽅法,经过测试这种⽅法在小兵血条未遮盖的情况下效果很好。
在这里插入图片描述
于是我们将⼀张图片划分为 22*44个区域,利⽤模板匹配识别小兵的⽅法给图片中小兵的血条区域进⾏标注,由此构建了样本集,并构造卷积神经⽹络进⾏小兵识别的训练,最终得到小兵的位置,防御塔识别的处理⽅法与小兵识别⽅法相同。

4)自编码器提取

除了以上特征外,为了提供整个游戏状态的更多特征,加⼊了⼀个自编码器,模型如图,将原图进⾏ resize,再采⽤多层卷积加全连接的⽅式进⾏,神经⽹络结构为 encoder和 decoder。经过训练自编码器的效果可以勉强看出防御塔,效果比较⼀般,从图像得到⼀个 512⻓度的向量特征。
在这里插入图片描述

3. 策略梯度算法简介

策略梯度算法属于函数近似算法的⼀种,将策略参数化(Π(θ,s)),利⽤参数化的线性函数或⾮线性函数(如神经⽹络)表⽰策略,寻找最优的参数,使强化学习的⽬标(1),其中 P(t;θ)为第 t个轨迹出现的概率——累积回报的期望最⼤(2);这样求解问题变成了⼀个最优化问题,可以利⽤梯度上升法,对累计回报——⽬标函数计算梯度。

这里着重描述一下有限差分策略梯度:
到目前为止,我们学习的所有方法几乎都是价值函数方法,这些方法学习价值函数,然后根据价值函数来选择动作。如,上一讲的价值函数近似。而本讲我们将学习的内容不需要求助价值函数也能优化策略,即通过学习参数化的策略。所谓参数化的策略,指我们用 θ \theta θ作为策略的参数向量:

π ( a ∣ s , θ ) = P r { A t = a ∣ S t = s , θ t = θ } \pi \left( a|s,\theta \right) =Pr\left\{ A_t=a|S_t=s,\theta _t=\theta \right\} π(as,θ)=Pr{At=aSt=s,θt=θ}

上述公式是指,假设智能体处于状态s,时间t,在参数 的环境中,在时间t采取动作a的概率。简单地说,策略梯度直接对策略进行建模,然后进行优化,得到最优策略。

参考资料

【1】Github-AutoLOL

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

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

相关文章

工程建筑模板厂家货源,酚醛胶镜面胶合板实用型

作为工程建筑模板厂家,我们提供高品质的酚醛胶镜面胶合板,为建筑行业的模板需求提供可靠的货源。我们的产品以实用型为设计理念,旨在满足各类工程的施工需求并提供出色的性能。我们的酚醛胶镜面胶合板采用优质的木材作为原材料,经…

负载均衡的综合部署练习(hproxy+keepalived和lvs-DR+keepalived+nginx+Tomcat)

一、haproxykeepalived haproxy 2台 20.0.0.21 20.0.0.22 nginx 2台 20.0.0.23 20.0.0.24 客户机 1台 20.0.0.30 这里没有haproxy不是集群的概念,他只是代理服务器。 访问他直接可以直接访问后端服务器 关闭防火墙 安装haproxy和环境: yum in…

数据结构-初识泛型

写在前: 这一篇博客主要来初步的记录以下泛型的相关内容,内容比较琐碎,就不进行目录的整合,后续可能会对泛型这里进行系统性的梳理,此篇博客主要是对泛型有一个简单的认识与理解,需要知晓的内容。 当我调用…

能量管理系统(EMS):新能源储能行业的智能化大脑

导语:能源管理系统(EMS)是新能源储能行业中一种关键的智能化技术。它的作用类似于大脑,能够监控、控制和优化能源系统的运行,为储能设施提供高效稳定的能源管理。本文将介绍能量管理系统的基本概念、功能和应用。 一、…

excel技巧

excel技巧 🍓选中🍓填充🍓日期🍒🍒 日期快捷方式🍒🍒 日期计算🍒🍒时间相减 🍓求和🍓去除小数点🍓美化表格🍒&#x1f352…

手把手教您:思维100秋季选拔赛成绩查询+决赛报名

好消息! 2023年上海市“科学小公民”实践展示活动之“思维100”STEM应用能力活动(秋季)选拔赛成绩可以查询了,并且通过选拔的学员可以报名决赛。 那么具体如何查询思维100秋季选拔赛的成绩呢?思维100秋季决赛如何报名…

MBox肯定会因为回购和销毁将起飞

近期,币安链上的GameFi和元宇宙平台MOBOX宣布推出代币回购和销毁计划,在加密货币市场还处于熊市的现在,消息引起了不少链游打金爱好者和玩家的关注,MOBOX的讨论量也在快速上升。 在近一年多的熊市之中,很多GameFi项目从…

C语言每日一练(二)

单链表经典算法专题 一、 单链表相关经典算法OJ题1:移除链表元素 解法一:在原链表中删除Node.nextnext的节点 typedef struct ListNode ListNode; struct ListNode* removeElements( ListNode* head, int val) {ListNode* pcur head;ListNode* pre h…

Python开源项目周排行 2023年第37周

#2023年第37周2023年10月29日1cogvlm一个强大的开源视觉语言模型,利用视觉专家模块深度整合语言编码和视觉编码,在 10 项权威跨模态基准上取得了 SOTA 性能。目前仅支持英文,后续会提供中英双语版本支持。CogVLM 可以准确描述图像的细节&…

拓扑排序详解

拓扑排序 如果说最短路径是有环图的应用,那么拓扑排序就是无环图的应用。 拓扑排序介绍 我们会把施工过程、生产流程、软件开发、教学安排等都当成- -个项目工程来对待,所有的工程都可分为若干个“活动”的子工程。例如下图是我这非专业人士绘制的一张…

servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header

目录 1、cookie和Session以及Header知识点 2、设置/获取 Cookie 3、设置/获取Session 4、设置/获取Header Cookie —— 客户端机制 Session —— 服务端机制 本篇博客主在用servlet和SpringBoot两种方式分别获取Session和Cookie,用来比较记忆与分析 1、cookie和…

VSCode-C/C++环境配置

0.下载VSCode VSCode官网 Visual Studio Code - Code Editing. Redefined 1.安装VSCode 2.编译器下载与配置 2.1下载编译器安装包 编译器的安装包分为两种一种是在线的一种是离线的,其区别的特点如下 在线安装(只是个下载器,打开后还要下载各种东西…

基于Python+pyecharts 实现国内上映电影票房评分可视化分析项目源码

基于Pythonpyecharts 实现国内上映电影票房评分可视化分析项目源码 项目内容 统计2018年在国内上映的所有电影,分别获取上映电影的票房、评分(豆瓣、猫眼、时光、imdb)、类型、上映日期、演员、导演等数据。利用所获数据绘图,对…

深入Linux内核理解epoll事件轮询机制

文章目录 1、Linux 网络 IO 模型1.1、同步和异步,阻塞和非阻塞同步和异步阻塞和非阻塞两者的组合 1.2、Linux 下的五种 I/O 模型 2、从 Linux 代码结构看网络通信3、Linux 下的 IO 复用编程3.1、文件描述符 FD 4、epoll 高效原理和底层机制分析4.1、从网卡接收数据说…

React-表单受控绑定和获取Dom元素

一、表单受控组件 1.声明一个react状态 说明&#xff1a;useState const [value,setValue]useState("") 2.核心绑定流程 2.1绑定react状态 <div><input value{value}type"text"></input> 2.2绑定onChange事件 说明&#xff1a;e.…

Flutter FittedBox

&#x1f525; 英文单词FittedBox &#x1f525; Fitted 通过有道翻译如下 &#xff1a; Box 通过有道翻译如下 &#xff1a; 对 FittedBox 的理解 我们可以将 FittedBox 理解为合适的盒子&#xff0c;将其它布局放到FittedBox这样一个盒子中&#xff0c;从而实现 盒子里面的…

状态机的设计与实现

写作目的 好久没有写博客进行输出了&#xff0c;是时候需要水一篇了&#xff0c;嘻嘻。 正好项目中使用了状态机&#xff0c;也借此分享一下系统中状态机的项目落地经验。 什么是状态机 以在某宝下单为例&#xff0c;在点击下单后&#xff0c;此时订单就已经创建了&#xff…

STM32H5开发(7)----LCD显示TOF检测数据

STM32H5开发----7.LCD显示TOF检测数据 概述视频教学样品申请源码下载自主模式与连续模式区别硬件准备串口配置 配置串口。IIC配置INT设置配置使能与复位X-CUBE-TOF1串口重定向代码配置TOF代码配置积分时间/曝光时间&#xff08;Integration time&#xff09;主程序状态说明演示…

测试工程师面试题,这些你有没有遇到过呢?

其实在软件测试领域面试题多余牛毛&#xff0c;采取疯狂刷题的方式确实可以解决不少面试中可能碰到的问题&#xff0c;而且可以学到一些知识。但是&#xff0c;有可能刷的面试题一个都问不到。 如何才能解除上述尴尬&#xff0c;一定要记得不要脱离一个核心目的&#xff1a;找…

【redhat9.2】搭建Discuz-X3.5网站

步骤 1.配置软件仓库 2.安装对应的软件 httpd php* mariadb* 3.启动服务 httpd mariadb 4.配置数据库 创建数据库 修改root密码 数据库的 5.传源码包&#xff08;Discuz-X3.5&#xff09; 解压 6.web页面初始化 关闭防火墙 允许http服务通过 修改权限 实…