机器之心报道

编辑:大盘鸡

AI 的宝可梦之旅。

打开网易新闻 查看更多图片

是不是说起「口袋妖怪」,你就不困了?

「口袋妖怪」是「宝可梦」的非官方译名。从 1996 年至今,它可以被分为数个世代,成为很多玩家心中的经典之作。游戏画风简单,但是身为策略游戏,其中包含的角色、属性、战术、体系等让这个游戏入门容易精通难。

如果训练 AI 来玩宝可梦,你觉得它的实力如何?

推特用户 @computerender 用强化学习训练 AI 玩起了宝可梦。他也通过视频记录了这一过程,不仅生动地展示了训练过程,还详尽地介绍了其中的方法。

  • 项目地址:https://github.com/PWhiddy/PokemonRedExperiments
  • 视频地址:https://www.youtube.com/watch?v=DcYLT37ImBY

当你打开视频,就能观看两万场 AI 玩的《宝可梦・红》。一开始,AI 没有任何的知识和经验,只能够随机按下按钮。但在五年的模拟游戏时间里,它在经历中习得了更多能力。最终,AI 能够抓住宝可梦,进化它们,并击败了健身房的领导者。

那么这是怎么做到的呢?

最基础的目标是让 AI 去探索地图。作者所使用的方法是在 AI 到达新位置时给予奖励。

打开网易新闻 查看更多图片

作者记录 AI 在玩游戏时看到的每个屏幕并将当前屏幕与记录中的所有屏幕进行比较,看看是否有接近的匹配。如果没有找到匹配,这意味着 AI 发现了一些新东西。在此情况下,作者将给它一个奖励,并将新屏幕添加到记录中。独特屏幕带来的奖励可以鼓励它继续寻找游戏的新部分。

经过几次迭代之后,AI 能更快的走出初始房间。但在这过程中,作者发现了随着探索越来越多,AI 却会被「困」在某处。这是因为该场景中有草、水、随意走动的 NPC,这会更容易触发新场景产生。作者通过改变画面差异的像素阈值来进行改进。

除此之外,AI 还遇到了战斗画面大致相同,无法得到奖励而逃离的行为。但是不战斗,就无法前进。最后,作者通过增加额外奖励来保持 AI 的前进。

战斗画面相似性较高

打开网易新闻 查看更多图片

增加额外关卡奖励

当然,AI 在这个过程中遇到的问题远多于此。

当宝可梦战斗的时间很长,其默认行动被耗尽时,它似乎会卡住,在多次训练迭代之后,才有了实质性的改进。作者发现,在看到一只鸽子第一次参与进来后,它终于知道当一个移动耗尽时该做什么,并能够切换到另一个替代移动。

就当一切顺利时,作者发现了一个关键问题。AI 会直接投入战斗,即使是那些它无法获胜的战斗。并且,它从不去宝可梦中心治疗,这意味着当它输了,它会一直回到游戏的开始。

作者试图使用输掉战斗就减去奖励来改进,但是没有效果。当 AI 即将失败时,它没有避免艰难的战斗,而是拒绝按下按钮继续无限期地拖延。这在技术上满足了目标,但不是作者想要的。

作者在细致地观察后发现,在一些罕见的情况下会造成巨大的奖励减扣。一直以来,AI 都会在一场游戏中扣除比预期多 10 倍的奖励。作者在回顾时发现,AI 宝可梦中心,在角落里的电脑前徘徊。登录并漫无目的地按了一会儿按钮后,它将一只宝可梦存入了系统,随即大量奖励就流失了。这是因为奖励是根据宝可梦的等级总和分配的。因此,存入一只 13 级的宝可梦就会立即损失 13 分。这会发出强烈的负面信号,给 AI 造成类似创伤的体验。AI 不像人类那样有情感,但一个具有极端奖励价值的事件仍会对它的行为产生持久的影响。在这种情况下,仅仅失去一次宝可梦就足以让 AI 对整个宝可梦中心形成负面联想,从而在今后的游戏中完全避开它。为了解决这个问题,作者再次修改奖励函数,只有当等级增加时才给予奖励。这似乎解决了问题。重新启动训练后,AI 开始访问宝可梦中心。

当它到达了宝可梦中心内的月亮山入口。在这里,一个男人会以 500 元的价格卖给你一条魔法鲤鱼。魔法鲤鱼在短期内一点帮助都没有,所以你可能会认为 AI 不会对此感兴趣。然而,购买它是获得 5 级的超级简单方法。所以 AI 每次都买。在所有的游戏中,它总共购买了超过 10000 个魔法碳水化合物。

打开网易新闻 查看更多图片

作者将 AI 行为与人类类比

作者还分析了 AI 的行动路线,它似乎更喜欢在地图的几乎所有边缘逆时针行走。这意味着,当站在右边的边缘时,它更喜欢往上走,蓝色显示的就是这种情况。当上方有边缘时,它喜欢往左走,显示为粉红色。当左边有边缘时,它喜欢向下走,用橙色表示。而当下面有一条边时,它更喜欢向右走,显示为绿色。

作者在视频中表明,机器学习的基本挑战是在不明确告诉程序如何做的情况下让它做一些事情。这意味着,如果你的模型没有按照你预期的方式运行,你必须弄清楚如何通过学习算法或在线训练数据间接地改进它。强化学习增加了一层间接性。在此基础上,输入模型的训练数据不再是静止的、受你控制的,而是模型在早期时间点行为的产物。这种反馈循环会导致无法预测的突发行为。

在没有机构规模的资源时,作者建议你可以这么做:

  • 将问题简化,以避免工具、资源的限制。
  • 接下来,在合理的时间和成本内迭代实验的设置非常重要。
  • 然后需要仔细考虑 AI 如何与环境交互以及奖励函数如何设计。在视频中,作者对他所用到的奖励函数已经有所介绍,但是受制于篇幅,并没有介绍全部。它使用到了至关重要的七个函数,实际上还有更多的并没有测试或是最终使用。
  • 通过可视化的方法了解 AI 的行为。

作者说道,在未来还可能应用迁移学习的方法。即在一个大型的广泛数据集上预先训练一个模型,然后可以非常有效地利用它来完成新任务。在过去,这已经给计算机视觉和自然语言处理领域带来了革命性的变化。在将其应用于 RL 方面,已经有一些有趣的早期工作,但尚未真正落地。这是由于这些类型的任务缺乏大型的多样化数据集。

在视频最后,作者还介绍了项目的更多操作细节。

更多详细内容,请观看原视频。