玩“超级马里奥兄弟”的最近策略优化

2020-07-28 13:48:00

这是我训练经纪人扮演超级马里奥兄弟的Python源代码。利用本文提出的最近策略优化算法(PPO),提出了一种新的策略优化算法--PPO(Proximal Policy Optimization)算法。

谈到性能,我的PPO培训的代理可以完成29/32级,这比我一开始预期的要好得多。

请注意,PPO是OpenAI提出的用于训练OpenAI Five的算法,这是第一个在ESPORTS游戏中击败世界冠军的AI。具体地说,2018年8月,OpenAI五人组派出了一支由法师和前职业球员组成的团队,他们的MMR排名在DOTA 2球员的第99.95个百分位数中。

我已经有一段时间没有发布我的A3C实现(A3C代码)来训练经纪人玩超级马里奥兄弟了。尽管训练有素的代理可以相当快地、相当好地完成关卡(至少比我玩😅更快、更好),但它仍然不能完全让我满意。主要原因是,A3C培训的代理只能完成9/32级,无论我怎么微调和测试。它激励我寻找一种新的方法。

在我决定选择PPO作为我的下一个完整实现之前,我已经部分实现了其他几个算法,包括A2C和Rainbow。虽然前者在性能上没有表现出很大的跃升,但后者更适合于更随机的环境/游戏,比如乒乓球或太空入侵者。

通过运行python train.py来训练您的模型。例如:Python Training.py--world 5--阶段2--lr 1e-4。

通过运行python test.py测试您训练过的模型。例如:Python test.py--world 5--阶段2。

注意:如果你在任何级别都被卡住了,试着用不同的学习速度再训练一次。你可以像我一样攻克29/32级,只需改变学习速度。正常情况下,我将学习速率设置为1e-3、1e-4或1e-5。但是,也有一些难度很大的级别,包括1-3级,在70次失败之后,我终于以7E-5的学习率训练成功了。

为方便起见,我提供了可用于跑步训练和测试阶段的Dockerfile。

假设码头映像的名称是PPO。您只想使用第一个GPU。您已经将此存储库和CD克隆到其中。

然后在docker容器中,您可以简单地运行如上所述的Train.py或test.py脚本。

注意:使用docker时存在渲染错误。因此,当您使用docker进行训练或测试时,请在脚本src/process.py上注释env.ender()行以进行培训,或注释test.py行以进行测试。然后,您将无法再看到用于可视化的弹出窗口。但这不是一个大问题,因为培训过程仍将运行,而测试过程最终将输出MP4文件以进行可视化。

在世界4-4、7-4和8-4中,地图由谜题组成,玩家必须选择正确的路径才能前进。如果你选择了一条错误的路,你必须再走一遍你去过的路。这就是为什么我的经纪人目前不能完成这3个级别的原因。