最后更新:2020-04-21 11:19:05 手机定位技术交流文章
机器心脏报告
机器编辑部之心
我觉得用雅达利游戏来研究人工智能有点“不够基础”?现在我们可以使用游戏男孩模拟器了。

对于许多80后和90后来说,任天堂游戏机代表了很大一部分年轻人。许多熟悉的游戏最初安装在这个8位游戏控制台上,包括著名的马里奥和塞尔达系列。对于国内玩家来说,我们应该玩口袋妖怪系列最多。

自从这款游戏机首次发布以来,三十年已经过去了,但是人们对它的热情丝毫没有减弱。昨天,一个用Python编写的游戏男孩模拟器在社交网络上引起了广泛关注。

我的青春回来了吗?作者在Reddit上的帖子很快获得了成千上万的好评。
该项目的作者之一Madsyncdal宣布PyBoy 1.0版正式发布。
什么是皮男孩?

简而言之,这是一个完全用Python从头开始编写的游戏男孩模拟器,支持通过API编写脚本。研究人员添加了一个类型定义,使Cython能够编译软件,从而获得与用C和C++编写的模拟器相当的性能。
项目链接:https://github.com/Baekalfen/PyBoy
特征
PyBoy被设计成通过Python访问,所以它支持并鼓励人们做实验研究。机器人和人工智能正试图做到这一点。研究人员正在构建游戏专用包装。目前,包装器允许程序员与俄罗斯方块和超级玛丽互动,而不必对游戏男孩有深入的了解。你可以参考这份文件:https://docs.pyboy.dk。
项目作者也想学习和尝试更多奇异的功能。根据大学项目的研究,他们给模拟器增加了一个倒带功能,也就是说,你可以在任何游戏中倒带时间。
PyBoy模拟器架构
1990年,任天堂为游戏男孩申请了专利。下图显示了本专利中中央处理器、随机存取存储器、盒式磁带和显示屏之间的集成和连接。

游戏男孩专利中的建筑图。
基于此,PyBoy项目成员为Python中的每个组件设置了一个类,从而为“主机系统”(系统运行Python)上的“客户端系统”奠定了基础。客户端系统是虚拟游戏男孩硬件,理论上它可以运行为游戏男孩编写的每个软件部分。
下图显示了PyBoy模拟器中的所有类及其关系:

PyBoy对强化学习的意义及其与其他环境的比较
多年来,许多人开发了游戏男孩模拟器,现在电脑和手机都有了操作工具。为什么用Python写一个?当然,它是用来训练人工智能的。

想玩游戏吗?对现在的人来说,游戏男孩可能有点“难以入门”。
最接近一般人工智能的方法——强化学习
一般人工智能的概念是指机器能够成功地完成人类能够完成的任何智能任务。目前,我们对人工智能的研究还远远没有达到这个目标。吴恩达早些时候说过,深度学习只是一种高维的“曲线拟合”。
与依赖于预先收集的数据(甚至需要大量人工标记)的机器学习算法不同,强化学习是一种仅通过环境奖励进行训练的算法,其工作机制类似于人体内的多巴胺系统。强化学习是目前最接近人类从经验中学习能力的机器学习算法,尤其是当代理需要根据他们的环境做出决策时。
下图显示了RL代理如何学习马里奥的控制策略,只需输入游戏图像。

为什么很多关于RL的研究是在雅达利上进行的,而不是其他更实际的问题?
使用共济失调作为参考研究基准的主要原因如下:
共济失调环境使我们能够使用相同的算法来测试多个不同的环境,并验证RL算法的通用性。
因为输入只是一个游戏图像,所以问题的复杂性增加了。
雅达利为研究人员提供了一个公认的测试平台,可以比较不同算法的性能。
虚拟实验室需要大量的互动数据来学习。在实际环境中进行实际测试之前,Atari为算法的初步验证提供了一个安全、快速、低成本的测试平台。
下图显示了一些雅达利环境:

雅达利、皮斯克和皮鲍伊的对比
前一节介绍了在雅达利环境中培训虚拟实验室代理的许多优点。然而,随着虚拟实验室的发展,这种相对简单的环境不再适合当前新的虚拟实验室研究。不久前,DeepMind提出的Agent57在所有雅达利环境中的表现都超过了人类玩家的平均水平,这表明雅达利环境中的虚拟现实研究正在逐渐结束。
更困难的环境包括PySC2,在那里DeepMind与暴雪合作,要求代理学习复杂的协调和对抗策略。尽管阿尔法星在这方面取得了显著的成绩,但仍有许多问题需要解决。以下是PySC2环境的示意图。

PyBoy环境的困难可以说是介于Atari和PySC2之间,这为我们提供了一个新的基准来验证RL性能。在将虚拟实验室应用于更复杂的实际问题之前,我们可以在这种适度困难的环境中进行低成本和高效的测试。
正如泰斯拉的人工智能和自动驾驶视觉主管安德烈·卡帕斯所说,“在伸手拿火箭筒之前,应该先试一试。”
Github游戏攻略
如何安装?
如果您已经配置了一个可以正常运行Python的环境,安装将会非常简单:
通过软件包管理器安装SDL 2(sudoapt installlibsdl dev或brew install sdl2)
使用pip安装pyboy安装Pyboy
PyBoy可以直接从终端$ pyboy文件. rom或Python脚本中使用:
从pyboy导入PyBoypyboy = PyBoy(' ROMs/gamerom . GB '),而不是pyboy.tick():通过
该项目支持苹果操作系统、拉斯伯里皮(拉斯比昂)、Linux (Ubuntu)和Windows 10。
PyBoy应用程序接口文档
如果用户需要创建自己的机器人或人工智能,他们可以在Pyboy文档中找到所有支持的外部组件。各种类及其用法非常详细,这里不再重复。(下图的结构索引)

简短的例子
PyBoy可以在Python中作为对象加载。因此,它可以从另一个脚本初始化,并且可以由这个脚本控制和检测。看看游戏包装器上的一个粗糙的“机器人”,与游戏互动。当然,所有外部组件都可以在PyBoy文档中找到。
对于一般的游戏男孩文档,您可以查看平移文档,其中包含每个主题的详细信息。
以下是从屏幕上读取数据的简短演示。代码也可以在gamewrapper_mario.py中找到:
导入系统从pyboy导入PyBoy,WindowEvent#使我们能够从以下目录导入PyBoy文件路径= OS . path . dirname(OS . path . real path(_ _ file _ _))sys . path . insert(0,file_path + ''/..')#检查只读存储器是否通过参数透镜给出(系统参数)>;1: filename = sys.argv

作者简介
该项目的作者Asger Anders Lund Hansen、madsyndal和troelsynndal都来自丹麦。丹麦哥本哈根大学的毕业生Mads Ynddal说,事实上Gameboy模拟器可以追溯到他2015年大学期间的项目。

游戏男孩模拟器的1.0版本已经发布,但是开发者仍然有很多事情要做。项目开发人员表示,当前可以推进的方向包括在模拟器上增加语音、颜色、Gameboy模拟连接以及更多的游戏包,当然还有训练神经网络的例子。
希望在人们的努力下,《游戏男孩》中的游戏能够重生。更重要的是,它现在有训练人工智能的任务。
本文由 在线网速测试 整理编辑,转载请注明出处。