Show HN: 使用 RL 和小于 10M 参数击败《Pokemon Red》
- Chapter 1: Brief RL Intro
- Chapter 2: Environment, Observations, Rewards, and Policy
- Chapter 3: Building and Running the System
- Chapter 4: Concluding Thoughts
- Appendix
- Breaking Down Pokémon
使用强化学习训练 Pokémon
大家好!自 2020 年以来,我们一直在开发一个强化学习 (RL) 智能体来通关 1996 年的游戏《Pokemon Red》。 截至 2025 年 2 月,我们已经能够使用强化学习,以及小于 1000 万参数的策略(比 DeepSeekV3 小 60500 倍),并以最小的简化来击败《Pokemon Red》。 输出不是能够击败 Pokémon 的策略,而是生成 Pokémon 解决方案的技术。本网站介绍了该系统目前的状态。所有代码都是开源的,供您(读者)尝试 。
随着代码库的改进,更新日志也会随之更新。
What is Pokémon Red? #
《Pokemon Red》于 1996 年发布,是一款单人日式角色扮演游戏 (JRPG),讲述了一个新的“宝可梦训练师”的旅程。玩家捕捉宝可梦“生物”来与对方的宝可梦战斗,探索世界并完成游戏的故事剧情。《Pokémon》有两个目标:
- 捕捉所有可能的宝可梦物种。
- 成为“冠军”。
我们专注于第二个(更受欢迎的)目标,即成为冠军。
Why Pokémon Red #
我们为什么要关心开发一个使用机器学习击败 Pokémon 的智能体?答案实际上更高级。我们相信,使用强化学习解决 JRPG 会带来当前 RL 环境中不存在的极其困难的挑战。我们希望 JRPG 能够为改进 AI 提供一个很好的基准。
- 可以像围棋、StarCraft II 或 Minecraft 等游戏一样复杂。
- 涉及复杂的推理和决策。
- 是非线性的。
- 可能很长,平均人类游戏时间 > 24 小时。新的玩家平均需要 25 小时才能完成《Pokemon Red》。
- 需要多任务推理。
- 具有不明显的奖励函数。
在 JRPG 中,《Pokémon》相对容易编程。Pokémon Reverse Engineering Team (PRET) 和 PyBoy Python Gameboy Emulation 项目使得检查游戏并根据需要提取数据变得非常容易。在本网站中,我们将展示许多我们如何利用这些工具进行这项工作的例子。
Why Use RL #
如果我们想用机器学习击败《Pokemon Red》,我们可以采取很多方法。
- 我们可以选择监督学习方法,但这需要一个标记良好的丰富数据集,并且模型需要比我们预算支持的更大。
- 我们可以选择行为克隆方法,并尝试构建一个模仿已知速通路线的模型。我们曾经尝试过一次,但很难创建一个高性能的数据收集系统。
- 我们可以尝试使用像 Pimanrules 在他的视频 Can ChatGPT play Pokémon Crystal? (with GPT-4V) 中所做的那样,使用像 LLM 这样的模型来击败游戏,但是,这同样需要比我们所拥有的更多的资金和计算能力。
在考虑的许多方法中,RL 最吸引我们。 RL 的特殊之处在于您收集训练数据的方式。数据几乎总是新鲜的。无需构建复杂的数据收集系统、管理大型数据集或担心数据集是否已过期。如果您可以构建一个可以即时创建新数据的系统,您就可以开始训练。 通过 RL,我们构建了一个带有超小型神经网络且没有预训练的智能体(该智能体实际上是从随机按按钮开始的!),但我们仍然取得了惊人的结果。 Next Page
Authors #
David Rubinstein, Keelan Donovan, Daniel Addis, Kyoung Whan Choe, Joseph Suarez, Peter Whidden
Acknowledgements #
Mads Ynddal #
感谢创建 PyBoy 和他的合作。
Death (PokeRL Discord handle) #
感谢他们花费无数时间制作世界地图素材。