不足千万参数的模型完整击败宝可梦红版,验证极限参数优化和强化学习可行性,学术意义大于实用价值。
你好!自 2020 年以来,我们一直在开发一个强化学习(RL)Agent,目标是通关 1996 年发行的游戏《Pokémon Red》。截至 2025 年 2 月,我们已经能够使用参数量不足 1000 万的 policy,通过强化学习通关《Pokémon Red》——其参数量比 DeepSeekV3 小 60,500 倍,而且只对游戏进行了极少的简化。
最终产物并不是一个能够直接通关 Pokémon 的 policy,而是一套用于生成 Pokémon 通关方案的技术。本网站介绍了该系统目前的状态。所有代码均已开源,读者可以亲自尝试。如果想联系我们,请加入我们的 Discord 服务器,或发送邮件至 pokemonreinforcementlearning <at> gmail <dot> com。
随着代码库不断改进,我们也会持续更新 changelog。
《Pokémon Red》发行于 1996 年,是一款单人日式角色扮演游戏(JRPG),讲述了一名新手“Pokémon Trainer”的冒险旅程。玩家需要捕捉 Pokémon“生物”,让它们与对手的 Pokémon 战斗,同时探索世界,并推动游戏剧情发展。
Pokémon 有两个目标:
捕捉所有可能的 Pokémon 物种。
成为“冠军”。
我们专注于第二个目标,也就是更受欢迎的“成为冠军”。
为什么我们如此关心如何利用机器学习开发一个能够通关 Pokémon 的 Agent?真正的答案其实更宏观一些。我们相信,使用强化学习解决 JRPG,会带来一些当前 RL 环境中并不存在、且极其困难的挑战。我们希望 JRPG 能够成为推动 AI 进步的一项优秀 benchmark。
其复杂程度可以与 Go、StarCraft II 或 Minecraft 等游戏相当。
涉及复杂的推理与决策。
游戏流程可能很长,人类玩家的平均游玩时间超过 24 小时。对于一名新玩家来说,通关《Pokémon Red》平均需要 25 小时。
需要进行多任务推理。
reward function 并不直观。
在 JRPG 中,Pokémon 相对容易进行编程开发。Pokémon Reverse Engineering Team(PRET)和 PyBoy Python Gameboy Emulation 项目让我们能够非常轻松地检查游戏内部状态,并按需提取数据。在本网站中,我们会展示许多在这项工作中使用这些工具的实例。
如果只是想利用机器学习通关 Pokémon,我们原本可以采用许多不同的方法。
我们可以选择监督学习方案,但这需要一个标注完善且数据量充足的数据集,也需要一个比我们的预算所能支持的规模更大的模型。
我们可以选择监督学习方案,但这需要一个标注完善且数据量充足的数据集,也需要一个比我们的预算所能支持的规模更大的模型。
我们可以选择行为克隆方案,尝试构建一个模仿已知速通路线的模型。我们曾经尝试过一次,但始终难以构建出高性能的数据采集系统。
我们可以选择行为克隆方案,尝试构建一个模仿已知速通路线的模型。我们曾经尝试过一次,但始终难以构建出高性能的数据采集系统。
我们也可以像 Pimanrules 在视频《Can ChatGPT play Pokémon Crystal? (with GPT-4V)》中所做的那样,尝试使用 LLM 通关游戏。但同样,这需要的资金和算力超出了我们所能支配的范围。
我们也可以像 Pimanrules 在视频《Can ChatGPT play Pokémon Crystal? (with GPT-4V)》中所做的那样,尝试使用 LLM 通关游戏。但同样,这需要的资金和算力超出了我们所能支配的范围。
在考虑过的众多方案中,RL 最吸引我们。
RL 的特别之处在于训练数据的采集方式。数据几乎总是新鲜的。你不需要构建复杂的数据采集系统,不需要管理庞大的数据集,也不必担心数据集已经过时。只要能够构建一个实时生成新数据的系统,就可以开始训练。
借助 RL,我们构建了一个使用超小型神经网络、完全没有经过预训练的 Agent——它一开始真的只会随机按按钮!即便如此,我们依然取得了令人惊叹的成果。
David Rubinstein、Keelan Donovan、Daniel Addis、Kyoung Whan Choe、Joseph Suarez、Peter Whidden
感谢他创建 PyBoy,并与我们展开合作。
感谢他们投入了无数时间制作世界地图素材。