0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

街机游戏《街头霸王 3》中进行模拟来训练改进强化学习算法的工具包

电子工程师 来源:未知 作者:李倩 2018-11-13 09:30 次阅读

从世界瞩目的围棋游戏 AlphaGo,近年来,强化学习在游戏领域里不断取得十分引人注目的成绩。自此之后,棋牌游戏、射击游戏、电子竞技游戏,如 Atari、超级马里奥、星际争霸到 DOTA 都不断取得了突破和进展,成为热门的研究领域。

突然袭来的回忆杀~

今天为大家介绍一个在街机游戏《街头霸王 3》中进行模拟来训练改进强化学习算法的工具包。不仅在 MAME 游戏模拟器中可以使用,这个 Python库可以在绝大多数的街机游戏中都可以训练你的算法。

下面营长就从安装、设置到测试分步为大家介绍一下。

目前这个工具包支持在Linux系统,作为MAME的包装器来使用。通过这个工具包,你可以定制算法逐步完成游戏过程,同时接收每一帧的数据和内部存储器的地址值来跟踪游戏状态,以及发送与游戏交互的动作。

首先你需要准备的是:

操作系统:Linux

Python 版本:3.6+

▌安装

你可以使用 pip来安装该库,运行下面的代码:

▌《街头霸王3》示例

这个工具包目前已用于游戏《街头霸王 3》(Street Fighter III Third Strike: Fight for the Future), 还可以用于MAME上的任何游戏。下面的代码演示了如何在街头霸王的环境下编写一个随机智能体。

此外,这个工具包还支持hogwild训练:

▌游戏环境设置

游戏 ID

在创建一个模拟环境之前,大家需要先加载游戏的 ROM,并获取 MAME所使用的游戏 ID。比如,这个版本街头霸王的游戏 ID是“sfiii3n”,你可以通过运行以下代码来查看游戏ID:

该命令会打开 MAME模拟器,你可以从游戏列表中选择你所要的那款游戏。游戏的 ID通常位于标题后面的括号中。

内存地址

实际上该工具包与模拟器本身不需要太多的交互,只需要查找和内部状态相关联的内存地址,同时用所选取的环境对状态进行跟踪。你可以使用 MAME Cheat Debugger 来观察随着时间的变化,内存地址值发生了怎样的改变。

可以使用以下命令运行Debugger:

更多关于该调试工具的使用说明请参考此教程

https://www.dorkbotpdx.org/blog/skinny/use_mames_debugger_to_reverse_engineer_and_extend_old_games

当你确定了所要跟踪的内存地址后可以执行以下命令进行模拟:

该命令会启动模拟器,并在工具包导入到模拟器进程时暂停。

分步模拟

在工具包导入完成后,你可以使用 step 函数分步进行模拟:

step 函数将以 Numpy 矩阵的形式返回 frame 和 data 的值,同时也会返回总时间步长的所有内存地址整数值。

发送输入

如果要向仿真器输入动作,你还需要确定游戏支持的输入端口和字段。例如,在街头霸王游戏中需要执行以下代码进行投币:

可以使用 list actions命令查看所支持的输入端口,代码如下:

以下返回的列表就包含了街头霸王游戏环境中可用于向 step 函数发送动作的所有端口和字段:

模拟器还有一个 frame_ratio参数,可以用来调整你的算法帧率。在默认设置下,NAME每秒能生成 60帧。当然,如果你觉得这样太多了,你也能通过以下代码将其改为每秒 20帧:

▌性能基准测试

目前该工具包的开发和测试已经在8核AMD FX-8300 3.3GHz CPU以及3GB GeForce GTX 1060 GPU上完成。在使用单个随机智能体的情况下,街头霸王游戏环境可以以正常游戏速度的600%+运行。而如果用8个随机智能体进行hogwild训练的话,街头霸王游戏环境能以正常游戏速度的300%+运行。

▌简单的 ConvNet 智能

为了确保该工具包能够训练算法,我们还设置了一个包含 5 层 ConvNet 的架构,只需进行微调,你就能用它来进行测试。在街头霸王的实验中,这个算法能够成功学习到游戏中的一些简单技巧如:连招 (combo) 和 格挡 (blocking)。街头霸王的游戏机制是由易到难设置了 10 个关卡,玩家在每个关卡都要与不同的对手对战。刚开始时,智能体平均只能打到第二关,而当经过了 2200 次训练后,它平均能打到第 5 关。学习率的设置是通过每一局中智能体所造成的净伤害和所承受的伤害来计算的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161986
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
  • 强化学习
    +关注

    关注

    4

    文章

    259

    浏览量

    11114

原文标题:用这个Python库,训练你的模型成为下一个街头霸王!

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Facebook推出ReAgent AI强化学习工具包

    Facebook近日推出ReAgent强化学习(reinforcement learning)工具包,首次通过收集离线反馈(offline feedback)来实现策略评估(policy evaluation)。
    发表于 10-19 09:38 1381次阅读

    树莓派街机

    ` 本帖最后由 goyuqinghua 于 2016-3-1 16:24 编辑 还记得小时候的街头游戏机吗?一毛钱一个游戏币,投到机器里就可以操作摇杆玩的那种,《核金弹头》、《
    发表于 02-22 15:30

    深度强化学习实战

    内容2:课程一: TensoRFlow入门到熟练:课程二:图像分类:课程三:物体检测:课程四:人脸识别:课程五:算法实现:1、卷积神经网络CNN2、循环神经网络RNN3强化学习DRL4、对抗性生成
    发表于 01-10 13:42

    强化学习环境研究,智能体玩游戏为什么厉害

    强化学习作为一种常用的训练智能体的方法,能够完成很多复杂的任务。在强化学习中,智能体的策略是通过将奖励函数最大化训练的。奖励在智能体之外,各个环境中的奖励各不相同。深度
    的头像 发表于 08-18 11:38 3398次阅读

    基于强化学习的MADDPG算法原理及实现

    之前接触的强化学习算法都是单个智能体的强化学习算法,但是也有很多重要的应用场景牵涉到多个智能体之间的交互。
    的头像 发表于 11-02 16:18 2.1w次阅读

    如何构建强化学习模型来训练无人车算法

    本文作者通过简单的方式构建了强化学习模型来训练无人车算法,可以为初学者提供快速入门的经验。
    的头像 发表于 11-12 14:47 4605次阅读

    量化深度强化学习算法的泛化能力

    OpenAI 近期发布了一个新的训练环境 CoinRun,它提供了一个度量智能体将其学习经验活学活用到新情况的能力指标,而且还可以解决一项长期存在于强化学习中的疑难问题——即使是广受赞誉的强化
    的头像 发表于 01-01 09:22 2152次阅读
    量化深度<b class='flag-5'>强化学习</b><b class='flag-5'>算法</b>的泛化能力

    谷歌AI发布足球游戏强化学习训练环境“足球引擎”

    强化学习环境的核心是一种先进的足球游戏模拟,称为“足球引擎”,它基于一个足球游戏版本经大量修改而成。根据两支对方球队的输入动作,模拟了足球
    的头像 发表于 06-15 10:33 3972次阅读

    机器学习中的无模型强化学习算法及研究综述

    强化学习( Reinforcement learning,RL)作为机器学习领域中与监督学习、无监督学习并列的第三种学习范式,通过与环境
    发表于 04-08 11:41 11次下载
    机器<b class='flag-5'>学习</b>中的无模型<b class='flag-5'>强化学习</b><b class='flag-5'>算法</b>及研究综述

    基于强化学习的虚拟场景角色乒乓球训练

    基于强化学习的虚拟场景角色乒乓球训练
    发表于 06-27 11:34 62次下载

    强化学习的基础知识和6种基本算法解释

    定标记训练数据的情况下获得正确的输出 无监督学习(UL):关注在没有预先存在的标签的情况下发现数据中的模式 强化学习(RL) : 关注智能体在环境中如何采取行动以最大化累积奖励 通俗地说,强化
    的头像 发表于 12-20 14:00 879次阅读

    7个流行的强化学习算法及代码实现

    作者:Siddhartha Pramanik 来源:DeepHub IMBA 目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法
    的头像 发表于 02-03 20:15 820次阅读

    强化学习的基础知识和6种基本算法解释

    来源:DeepHubIMBA强化学习的基础知识和概念简介(无模型、在线学习、离线强化学习等)机器学习(ML)分为三个分支:监督学习、无监督
    的头像 发表于 01-05 14:54 486次阅读
    <b class='flag-5'>强化学习</b>的基础知识和6种基本<b class='flag-5'>算法</b>解释

    7个流行的强化学习算法及代码实现

    作者:SiddharthaPramanik来源:DeepHubIMBA目前流行的强化学习算法包括Q-learning、SARSA、DDPG、A2C、PPO、DQN和TRPO。这些算法已被用于在
    的头像 发表于 02-06 15:06 738次阅读
    7个流行的<b class='flag-5'>强化学习</b><b class='flag-5'>算法</b>及代码实现

    模拟矩阵在深度强化学习智能控制系统中的应用

    。 在深度强化学习智能控制系统中,讯维模拟矩阵可以用来做以下几方面的模拟和预测: 环境模拟:构建多种环境模型,包括不同参数的系统、不同干扰因素等,为深度
    的头像 发表于 09-04 14:26 327次阅读
    <b class='flag-5'>模拟</b>矩阵在深度<b class='flag-5'>强化学习</b>智能控制系统中的应用