用NEAT神经进化训练马里奥AI:从三次失败到通关的进化实验

开发者用NEAT神经进化算法攻克高难度马里奥ROM Hack关卡,诚实揭示了进化方法在泛化与回溯问题上的现实边界。
一位开发者将NEAT神经进化算法应用于《超级马里奥兄弟》高难度ROM Hack关卡《Bowser's Crown 4-1》,成功进化出能通关的控制器。NEAT通过模拟自然选择同时优化网络结构与权重,网络从模拟器内存读取游戏状态并输出按键操作。项目延续了SethBling的MarI/O思路,但将目标提升到原版游戏难以企及的ROM Hack关卡,核心挑战在于回溯动作和非线性布局会破坏「向右冲」的线性奖励逻辑。开发者明确指出:视频中展示的是已训练完毕的网络回放,每个关卡需单独训练,通关结果不代表泛化能力。这是一次诚实的方法边界展示,而非通用游戏AI的突破宣言。
在AI游戏领域,教会程序玩《超级马里奥》并不新鲜,但用神经进化算法(NEAT)去攻克难度更高的ROM Hack关卡,却是一个仍在探索的方向。一位Reddit开发者分享了他的持续性项目:让进化出的马里奥控制器攻克《Bowser's Crown 4-1》关卡末尾那个反复导致失败的缺口,最终成功通关。
NEAT如何让马里奥学会自己玩
NEAT(NeuroEvolution of Augmenting Topologies,增强拓扑的神经进化)是一种通过进化算法同时优化神经网络结构和权重的方法。它不像传统强化学习那样依赖梯度下降,而是模拟自然选择:生成一批网络、评估表现、选择优胜者、进行变异,一代代迭代。
在这个项目中,神经网络从模拟器内存中读取附近的游戏状态信息(如敌人、地形、马里奥的位置),并输出对应的按键操作。每一个「控制器」本质上就是一个进化出的网络。开发者明确指出,视频中展示的回放并非训练过程本身——网络在回放时并不学习,展示的是已经进化定型的成品在跑关卡。

这个项目并非从零开始,而是站在前人的肩膀上。它延续了SethBling著名的MarI/O项目,同时借鉴了Akisame和Electra的相关工作。视频中的画面记录了三个较早世代的基因组(genome)回放失败的场景,以及最终清关的那个控制器——它们并非连续的训练尝试,而是从不同阶段挑选出来做对比展示。
NEAT由Kenneth Stanley和Risto Miikkulainen于2002年提出,其核心创新在于引入了「物种」(speciation)机制来保护创新性结构的早期生存——一个新变异出的网络拓扑在初期往往表现较差,但直接与成熟网络竞争会导致它被立即淘汰。物种机制将结构相似的网络分组,让它们在组内竞争,为新颖结构提供生存空间。此外,NEAT使用历史标记(historical markings)追踪基因的同源性,使得不同拓扑的网络之间可以进行有意义的交叉(crossover),而不是随机拼接毫不相关的连接。这使得NEAT相比固定拓扑的进化策略具有更强的结构探索能力,代价是实现复杂度较高、超参数调整(如物种阈值、变异率)较为敏感。
攻克ROM Hack关卡的真正难点
这位开发者感兴趣的核心,是把NEAT方法推向难度更高的SMB1 ROM Hack关卡。相比原版马里奥,ROM Hack往往包含更刁钻的地形设计和更复杂的操作要求。视频里那个位于关卡末尾的缺口(staircase附近),就反复「卡住」了不同的控制器,成为进化过程中的一道坎。
真正的挑战不在于单纯的向前推进,而在于两类问题:一是回溯(backtracking),即关卡需要玩家往回走再前进;二是非线性的复杂布局。这些场景对纯粹基于「向右冲」奖励信号进化出的网络极不友好,因为它们打破了线性推进的直觉逻辑。
SMB1 ROM Hack是指通过修改《超级马里奥兄弟》原版ROM文件所创建的自定义关卡,通常使用LunarMagic等工具制作。《Bowser's Crown》是社区制作的高难度Hack之一,其关卡设计刻意引入了精确跳跃、压缩走廊和反直觉路线,远超原版游戏的容错空间。对NEAT方法而言,这类关卡的挑战在于奖励信号的设计:如果奖励函数简单地与「向右移动的距离」挂钩,网络就没有动力去执行任何向左的动作,即便向左是通过某个机关的必要前提。解决回溯问题通常需要更精细的奖励塑形(reward shaping)或引入时序记忆机制,而标准NEAT使用的前馈或简单循环网络在处理长时序依赖时本身就存在局限。
一个诚实的技术演示,而非普适性证明
值得肯定的是,开发者对成果的边界保持了相当克制的表述。他明确说明:每一个新关卡都是单独训练的,这次通关并不能证明网络对陌生关卡具备泛化能力,也没有给出可量化的成功率数据。
换句话说,这是一个「能通过某个特定关卡」的控制器,而非「学会了玩马里奥」的通用智能体。这种区分在AI游戏项目中尤为重要——很多演示容易让人误以为AI已经掌握了通用技能,但实际上往往是针对单一场景的过拟合结果。
此外,该项目的实现目前是私有的,因此这更多是一次游戏演示加上高层次的方法讨论,而非可复现的开源发布。开发者也坦承,他的持续开发过程「大量借助了AI工具」,而视频中的反应和字幕纯属幽默添加,游戏中的通关结果本身是真实的。
神经进化在游戏AI中的价值
在深度强化学习成为主流的今天,NEAT这类进化算法依然有其独特位置。它不需要精心设计的梯度和可微分损失函数,天然适合处理离散动作空间和稀疏奖励的游戏环境。同时,它能自动进化网络拓扑结构,省去了人工设计架构的负担。
这个项目的意义或许不在于「又一个AI通关马里奥」,而在于它诚实地展示了进化方法在面对真实难度提升时的边界所在:单关训练可行,泛化仍是难题,回溯与非线性布局依旧棘手。对于想入门神经进化或游戏AI的开发者来说,这类透明的实践分享,比夸大其词的「AI征服游戏」标题更有参考价值。
NEAT与深度强化学习(如PPO、DQN)的核心差异体现在几个维度:深度RL依赖反向传播和可微分的损失函数,需要大量样本但能从连续奖励信号中高效学习;NEAT通过种群并行探索解空间,对奖励稀疏或不可微的环境天然鲁棒,但种群维护和逐代评估带来的计算成本同样不低。2017年OpenAI的研究表明,在某些Atari游戏上,进化策略(ES)能达到与深度RL相当的性能,且因为可以大规模并行而具备训练速度优势。NEAT在游戏AI社区之所以长期流行,部分原因也在于SethBling的MarI/O视频将其带入了大众视野,降低了初学者的认知门槛,形成了丰富的社区实现和教程资源。
相关推荐

百行代码从0手写一个Agent:拆解OpenClaw神话的极简实现
用不到200行代码从0手写一个Agent,拆解OpenClaw、Hermes等智能体的本质。涵盖大模型调用、while循环、history记忆、系统提示词、工具调用与Skill渐进式披露六大核心步骤,附AI应用开发学习路线参考。

4个顶级AI从零打造角斗士游戏:多智能体协作的实战拆解
一位创作者用Fable 5、Opus 5、GPT、GROK四个AI模型协同,从零打造角斗士游戏。本文拆解多智能体协作、独立评审循环、Trippo 3D生成等工作流,以及AI骗过评审的真实失败案例。

AI Agent零基础入门:从大模型认知到智能体开发全景图
AI Agent零基础入门教程:从人工智能、机器学习、深度学习到Transformer与大模型的技术脉络,再到提示词、RAG、MCP、LangChain等Agent开发四阶段学习路线,帮助你系统掌握智能体开发核心技能。