解雕侠-好玩游戏一站式下载
首页 游戏攻略 安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了

安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了

来源:解雕侠 编辑:JDX22 时间:2023-01-31 9:04:48

很多小伙伴玩家都不太清楚安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了,那么今天解雕侠小编给大家带来一篇 相关的文章,希望大家看了之后能有所收获,最后请大家持续关注我们!

机器之心报告

机器之心编辑部

是不是觉得用雅达利游戏来研究人工智能有点“不够接地气”? 现在我们可以使用模拟器了。

对于很多80后、90后来说,任天堂代表了很大一部分年轻人。 很多我们熟悉的游戏最初都是在这台8位游戏机上搭载的,包括大家熟知的《马里奥》和《塞尔达》系列。 对于国内玩家来说,《精灵宝可梦》系列应该是我们玩得最多的一个了。

这款游戏机首次发布已经 30 年了,但人们对它的热情丝毫未减。 昨天,一个利用漏洞编写的模拟器在社交网络上引起了广泛关注。

师父的青春回来了? 作者在网站上的帖子很快获得了数千个赞。

该项目的作者之一 Mads 宣布正式发布 PyBoy 1.0 版本。

什么是 PyBoy?

简而言之,它是一个从头开始编写的 Game Boy 模拟器,并支持通过 API 编写脚本。 研究人员添加了类型定义,使得使用编译软件获得与用 C 和 C++ 编写的模拟器相当的性能成为可能。

项目链接:

特征

PyBoy 被设计为易于访问,因此它支持和鼓励人们进行实验研究,机器人和人工智能正在尝试这样做。 研究人员正在构建特定于游戏的包装器,目前允许程序员在不深入了解 Game Boy 的情况下与俄罗斯方块和超级马里奥互动。 可以参考这个文档:。

项目作者也想学习和尝试更多奇特的特性,根据大学项目的研究,他们在模拟器中加入了倒带功能,即可以在任何游戏中倒带时间。

PyBoy模拟器架构

安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了

1990 年,任天堂为 Game Boy 申请了专利。 下图显示了该专利中 CPU、RAM、墨盒和显示器之间的集成和连接。

来自 Game Boy 专利的架构图。

基于此,PyBoy项目的成员为每个组件(类)制作了一个类,从而在“宿主系统”上为“客户系统”搭建了一个基础(系统运行)。 这个客户端系统就是虚拟的Game Boy硬件,理论上它可以运行为Game Boy编写的每一个软件。

下图展示了 PyBoy 模拟器中的所有类及其关系:

PyBoy 对强化学习的意义以及它与其他环境的比较

这些年很多人开发了模拟器,现在也有可以在电脑和手机上运行的工具。 为什么要用它来写一个? 当然是用来训练人工智能的。

想玩游戏? 对于现在的人来说可能有点“入门难”。

最接近通用人工智能的方法——强化学习

通用人工智能的概念是指机器能够成功完成人类可以完成的任何智力任务。 目前,我们对人工智能的研究离这个目标还很远。 吴恩达之前说过,深度学习做的只是高维的“曲线”。

与那些依赖预先收集的数据(甚至需要大量人工标记)的机器学习算法不同,强化学习是一种仅通过环境奖励进行训练的算法,其工作方式类似于人体内部的多巴胺系统。 强化学习是目前最接近人类从经验中学习的能力的机器学习算法,尤其适用于智能体需要根据环境做出决策的场景。

下图显示了 RL 代理如何仅使用游戏图像作为输入来学习马里奥控制策略。

为什么很多关于 RL 的研究都在 Atari 而不是其他更实际的问题上进行?

RL 的研究使用 Atari 作为基准,原因如下:

Atari环境允许我们使用相同的算法测试多个不同的环境,以验证RL算法的通用性;

安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了

由于输入只是游戏图像,增加了问题的复杂度;

Atari 为研究人员提供了一个公认的测试平台,可以公平地比较不同算法的性能;

RL 需要大量的交互式数据来学习,而 Atari 提供了一个安全、快速、低成本的测试平台,用于在真实环境中进行实际测试之前对算法进行初步验证。

下图显示了一些 Atari 环境:

Atari、PySC2等环境与PyBoy对比

上一节介绍了在 Atari 环境中训练 RL 代理的许多优点。 然而,随着强化学习的发展,这种相对简单的环境逐渐不再适合新的强化学习研究。 不久前安卓模拟器怎么用,所提出的方法在所有 Atari 环境中的表现都超过了人类玩家的平均水平,这也预示着 RL 研究在 Atari 环境中的逐步结束。

更困难的环境,例如与暴雪合作的 PySC2,需要智能体学习复杂的协调和对抗策略。 虽然在这种情况下取​​得了令人瞩目的成果,但仍有许多问题有待解决。 下面是PySC2环境的示意图。

PyBoy 环境的难度可以说介于 Atari 和 PySC2 之间,它为我们提供了验证 RL 性能的新基准。 这种中等难度的设置使我们能够在将 RL 应用于更复杂的现实世界问题之前进行经济高效的测试。

正如特斯拉的人工智能和自动驾驶视觉总监所说,“One try a BB gun for the.”。

介绍

如何安装?

如果您已经配置了工作环境,则安装非常简单:

通过包管理器安装 SDL2(sudo apt -dev 或 brew sdl2)

使用 pip pyboy 安装 Pyboy

PyBoy 可以直接从终端 $ pyboy file.rom 或在脚本中使用:

from pyboy import PyBoypyboy = PyBoy('ROMs/gamerom.gb')while not pyboy.tick():    pass

安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了

该项目还支持 macOS、Pi()、Linux() 和 10。

PyBoy API 文档

如果用户需要创建自己的机器人或AI,可以在PyBoy()中找到所有配套的外部组件,其中的各个类及其用法都非常详细,这里不再赘述。 (结构指标如下图)

简短的例子

PyBoy 可以作为 . 所以它可以从另一个脚本初始化,并且可以由该脚本控制和探测。 看一下 .py 上一个粗糙的“机器人”,它正在与游戏进行交互。 当然,所有外部组件都可以在 PyBoy 文档中找到。

对于一般的 Game Boy 文档,请查看 Pan Docs,其中包含每个主题的详细信息。

这是一个从屏幕读取数据的简短演示安卓模拟器怎么用,代码也可以在 .py 中找到:

import osimport sysfrom pyboy import PyBoy, WindowEvent# Makes us able to import PyBoy from the directory belowfile_path = os.path.dirname(os.path.realpath(__file__))sys.path.insert(0, file_path + "/..")# Check if the ROM is given through argvif len(sys.argv) > 1:    filename = sys.argv[1]else:    print("Usage: python mario_boiler_plate.py [ROM file]")    exit(1)
quiet = "--quiet" in sys.argvpyboy = PyBoy(filename, window_type="headless" if quiet else "SDL2", window_scale=3, debug=not quiet, game_wrapper=True)pyboy.set_emulation_speed(0)assert pyboy.cartridge_title() == "SUPER MARIOLAN"
mario = pyboy.game_wrapper()mario.start_game()assert mario.score == 0assert mario.lives_left == 2assert mario.time_left == 400assert mario.world == (1, 1)assert mario.fitness == 0 # A built-in fitness score for AI developmentlast_fitness = 0print(mario)
pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT)for _ in range(1000): assert mario.fitness >= last_fitness last_fitness = mario.fitness
pyboy.tick() if mario.lives_left == 1: assert last_fitness == 27700assert mario.fitness == 17700 # Loosing a live, means 10.000 points in this fitness scoringprint(mario) breakelse: print("Mario didn't die?") exit(2)
mario.reset_game()assert mario.lives_left == 2
pyboy.stop()

如果你在加载了超级马里奥乐园 ROM 的情况下运行上面的代码,你将得到下面的图像和终端输出。 值得注意的是,马里奥的模式显示为索引 0、1、16、17。

关于作者

该项目的作者 Asger Lund、Mads 和都来自丹麦。 毕业于丹麦哥本哈根大学的麦兹表示,其实这个模拟器可以追溯到他2015年的大学项目。

模拟器 1.0 版本已经发布,但开发者还有很多工作要做。 据项目开发者介绍,目前可以推广的方向包括为模拟器添加声音、颜色、模拟连接,以及更多的游戏包,当然上面还有训练神经网络的例子。

希望在人们的努力下,里面的游戏也能重新焕发活力。 更重要的是,它现在肩负着训练人工智能的任务。

在CVPR 2020第一期线上分享中,我们邀请了北京大学智能科学系陈汉亭(论文第一作者)为我们分享了题目“加法神经网络:我们真的需要乘法吗?深度学习?” 》,欢迎广大读者报名学习。

上面就是安卓模拟器怎么用|用Python写Gameboy模拟器,训练AI模型:丹麦小哥的大学项目火了的全部内容了,希望能给广大手游玩家玩家们带来一些帮助,更多关于的内容,尽在解雕侠!

新御书屋  自由下载-新御书屋  自由「v9.1.4」官方版下载

新御书屋 自由下载-新御书屋 自由「v9.1.4」官方版

游戏 159MB
如何下载并安装新御书屋 (御宅屋) 自由新御书屋 (御宅屋) 自由是一款备受欢迎的漫画阅读软件,提…
立即下载

相关攻略

猜你喜欢