用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了
机器之心机器之心报道机器之心编辑部察觉到运用Atari游戏去开展人工智能的研究, 似乎有着那么些许“不够贴近实际场景氛围”之感么? 此时此刻呀, 我们能够去采用模拟器了。对不少八十年代出生以及九十年代出生的人而言, 任天堂占据了青春相当大的部分。众多我们熟知的游戏最初均搭载于这款八位游戏掌机上诸如声名远扬的《马里奥》、《塞尔达》系列。在国内玩家这里, 玩得最多的当属《口袋妖怪》系列了。这一款游戏机, 从首次发布开始算, 到现在已经过去了 30 年时间段, 然而呢, 人们针对它的那种热情, 却一点都没有减少。就在昨天, 有一款借助编写所弄出来的模拟器, 在社交网络之上, 吸引到了人们的广泛关注。爷的青春回来了作者在 上发出的帖子迅速获得了上千点赞。Mads, 作为该项目的作者之一发出宣告, PyBoy的1.0版正式实现发布。PyBoy 是什么简言之, 它是个Game Boy模拟器, 是完全从头编写的, 还支持通过API编写脚本。研究者添加了类型定义, 使得它能够使用编译软件, 进而获得与用C和C编写的模拟器相匹敌的性能。项目链接特点PyBoy 是这样被设想并设计的, 它是经由特定方式得到访问方面的塑造, 所以它存在支持之态且鼓励人们去开展实验研究, 在机器人以及人工智能这两者进行相关尝试做法时。研究者正着手去构建鉴于游戏而专门设定所形成的包装器, 就目前这种状况而言, 此包装器能够使得程序员与名叫俄罗斯方块以及超级玛丽这般的游戏进行交互, 在交互做这件事的过程里, 并不需要对于 Game Boy 有着深入层次的了解。这里存在一份可供参照的文档:项目的作者有着想要去学习, 并且尝试更多那些奇特功能的想法, 依据大学项目展开的相关研究, 他们给模拟器增添了倒回功能, 这意味着, 在任何一款游戏当中, 您都能够实现时间的倒回。PyBoy 模拟器架构在1990年, 任天堂针对Game Boy去申请了专利, 有一幅图, 它展示了, 在该专利里, CPU、RAM、盒带以及显示屏相互之间的集成, 并且以及它们之间的连接。Game Boy 专利中的架构图。PyBoy项目成员, 基于此, 在其中为每个组件制定类class, 进而在「主机系统」上为「客户系统」搭建基础, 其为系统运行, 该客户系统乃虚拟的Game Boy硬件, 理论上它能够运行为Game Boy编写的方方面面软件部分。下图展示了 PyBoy 模拟器中所有类及其关系PyBoy 对强化学习的意义以及与其他环境的比较过往多年间, 存在着许多人员开展过模拟器的开发工作, 当下于电脑以及手机之上均存有能够予以运行的工具, 然而为何要借助其来进行一款的书写呢, 当然是为了运用其对人工智能实施训练的事项了。想打游戏 对于现在的人来说恐怕有点「难以上手」。最接近通用人工智能的方法——强化学习通用人工智能这个概念所指的是, 机器能够成功达成任意一项人类能够做到的智力方面的任务, 当下我们对于AI的研究, 距离这个目标还差着很远的距离, 吴恩达以往就曾表示过, 深度学习做的仅仅是高维的「curve」。不同于那些借助预先收集数据进行训练, 甚至还得大量人工标记才能运行的机器学习算法, 强化学习, 是一种仅凭借环境奖赏来开展训练的算法, 它的工作机制, 类似人体内部的多巴胺系统, 强化学习, 是当前最接近人类从经验里学习这种能力的机器学习算法, 特殊适用于智能体得依据其所处环境来做决策的情景。该图呈现这样的情形, RL 智能体凭借游戏图像充当输入, 进而开展学习马里奥控制策略的相关操作。凭什么, 好多好多跟RL有关的研究, 统统都在Atari那儿开展, 却不在别的, 那些更具实际意义的问题上面搞, 对?针对于RL这项研究当中, 涉及采取Atari用作基准的此种情况, 其背后致使的具体缘由, 大体上呈现出像下面所讲述的这样几项要点:Atari环境可使我们运用相同算法去测试多个各异的环境, 以此验证RL算法的通用性。由于输入仅为游戏图像增加了问题的复杂性Atari给研究人员提供了一个被公认的测试平台, 该平台能比较相对公平地不同算法之间的性能。RL进行学习需要大量的交互数据, 在真实环境中实际测试以前, Atari为算法的初期验证提供了一个测试平台, 这个测试平台安全、快速、低成本。下图为一些 Atari 环境的展示Atari、PySC2 之类环境与 PyBoy 对比上一个小节详细讲述了于Atari环境之中开展训练时RL智能体所具备的众多优势, 可是随着RL不断地进行发展, 这样一处相比较而言较为简单的环境慢慢地就不再能够适合当下全新的RL研究了。没过多久之前, 由相关方面所提出问世的处于所有Atari环境里其表现全都超越了人类玩家平均水平的一种情况, 也同样暗示着在Atari环境之上而开展的RL研究渐渐地就要步入结束阶段了。有在诸如与暴雪合作的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 这种方式, 或者可于脚本之时采用相应办法。源于“pyboy”, 等于“PyBoy(ROMs/.gb)”。当并非“pyboy.tick()”的时候, 就处于“通过”的状态。该项目对macOS予以支持, 给予Pi支持, 为Linux给予支持 , 同时也支持10点之处 , 且是同时进行的。PyBoy API 文档要是用户有创建属于自身的机器人或者是 AI 的需求, 能够在 PyBoy寻觅到全部用来支持的外部组件, 其中各类及其使用方法极为详尽, 此处不再逐个叙述。如下图示结构索引简短示例PyBoy能够当作其中的对象予以加载, 所以它可从另外一个脚本展开初始化, 并且能够被该脚本操控以及探测。瞧一瞧那个在.py上较为粗糙的「机器人」, 正与游戏开展交互。当然啦, 所有的外部组件均可于PyBoy文档当中寻觅到。一般的Game Boy文档, 可查看Pan Docs, 它里面含有每个主题的详尽信息。如下示例乃是关于从屏幕提取数据的简短呈现, 此代码此外在.py当中能够寻觅到:pyboy, PyBoy , #使得我们能够从os.path.(os.path.())sys.path.(0, /..)获取PyBoy , #检查是否给出了ROM , 如果len(sys.argv) 1: , 则sys. , 打印(Usage:.py), 然后退出(1)。这似乎并不是一个规范的可理解的句子结构, 原内容较为混乱且不符合正常语法表达规则, 难以依照要求准确改写。也许你可以检查并修正原始句子, 以便能得到更合适的改写结果。这个句子似乎存在语法错误, 不太能准确理解其确切含义, 难以按照要求进行改写。在纠正错误并清晰表述后, 可再为你继续进行改写相关操作。mario.() mario. 2pyboy.stop()倘若你于加载了Super Mario Land ROM这个状况下运行上述代码了的话, 那么就在下面会得到图片以及终端输出。需要留意的是, Mario的形态被显示为索引0, 1, 16, 17。作者简介Asger Lund、Mads是该项目的作者, 他们都来自丹麦, 其中毕业于丹麦哥本哈根大学的Mads表示, 实际上这个模拟器能追溯到2015年他在大学时的项目。模拟器1.0版已发布啦, 然而对于开发者来讲, 仍存在诸多事宜可供去做。项目研发者宣称, 当下能够推进的方向涵盖于模拟器增添声音、彩色、模拟连线, 以及对更多游戏进行封装, 当然也包含在其之上训练神经网络的示例。期望于众人的奋力付出之下, 其中的游戏亦能够再度焕发出蓬勃生机。更为关键的是, 它当下居然拥有了用以训练人工智能的使命。在机器之心 CVPR 2020 线上分享的首期, 咱们邀请了来自北京大学智能科学系的陈汉亭, 其为论文一作, 来给咱们分享主题是《加法神经网络: 在深度学习里我方是否真的需要乘法? 》, 欢迎读者报名去学习。

相关新闻

2026实测8款自动朗读器 免费额度从0字到120000字 哪款日常够用

2026实测8款自动朗读器 免费额度从0字到120000字 哪款日常够用

简短结论 本次实测8款自动朗读器,免费额度从0字到120000字不等,轻度日常需求大部分带免费额度的产品都能覆盖,不需要额外付费。不同工具定位差异大,针对内容创作者整理音视频、职场人整理会议的需求,听脑AI更适合处理会…

2026/10/21 18:15:51 阅读更多 →
CPU、GPU与CUDA:从架构原理到实战优化的异构计算指南

CPU、GPU与CUDA:从架构原理到实战优化的异构计算指南

1. 从“单打独斗”到“团队协作”:计算世界的角色分工如果你最近在折腾深度学习、AI画图,或者玩一些3A大作时,大概率会碰到“CUDA”、“GPU加速”这些词。电脑卡了,任务管理器里一看,CPU可能闲得要命,GPU却…

2026/10/22 19:59:16 阅读更多 →
从Claude Fable 5下架看大模型越狱攻击:原理、危害与防御实战

从Claude Fable 5下架看大模型越狱攻击:原理、危害与防御实战

1. 从Claude Fable 5下架说起:一个被忽视的行业警报最近,AI圈子里发生了一件不大不小的事:Anthropic公司旗下的Claude Fable 5模型被悄然下架了。如果你不是深度用户,可能压根没注意到这个模型的存在,更别提它的消失了…

2026/10/24 11:29:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/24 11:09:31 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/24 17:47:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/24 18:34:36 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/25 10:02:42 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/25 3:12:30 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/24 21:09:59 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 10:02:43 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 11:09:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 7:47:32 阅读更多 →