精灵宝可梦(Pokémon)取得举世瞩目的成功已逾 20 年,本文将通过机器学习的方法来解决「那个精灵宝可梦是谁?」的难题。本文提出了一个机器学习的预处理及分类流程,将会使用卷积神经网络对精灵宝可梦进行分类。本文作者为巴西圣保罗的独立研究者 Henrique M. Soares。此外,感兴趣的读者还可以点击文末「阅读原文」下载本文的 PDF 版本。 计算和图像识别 计算机被发明以来 [1],在日常生活中的使用就愈加频繁。最初它们的应用程序局限于解决数学问题,以及弹道学和密码学中的军事应用;而如今它们正在飞速地多样化发展。迄今机器已经在很多项任务中超越了人类,最近的例子便是 AlphaGo 打败了世界围棋冠军(Go Game Guru, 2017)。 这一成就证明了机器在智能应用方面的显著进步。具有几乎无限的组合 [2] 的围棋是无法用「蛮力」[3] 轻易解决的——而「蛮力计算」已经被计算机用在其它一些完美信息博弈(perfect information games)来对抗人类。 但请不要沮丧,并非所有人都会在未来与机器人的斗争中失败,因为计算机仍然还在学习人类与生俱来的能力:图像和模式识别。不管目前的计算机在这方面有多么擅长,人类也仍然能比它注意到更多:即使图 1 仅显示了一辆汽车,却存在不寻常的情况。
图 1:撞到树的汽车。机器(至少目前)还写不出这样的文本。(该图像提取自维基共享资源;Thue,2005) 但计算机就要赶上来了!机器学习技术(特别是监督学习方法)的进步,以及不断增长的用于此类算法的数据,都已让这一领域实现了巨大飞跃。2015 年,MSRA 团队训练了一个 150 层的残差神经网络集合,在同年的图像分类挑战中达到了 62%的平均精度,该挑战使用了一个包含超过 1000 个不同对象的数据集(Large Scale Visual Recognition Challenge, 2015)。 图 2:一些简单的东西对计算机而言可能会很难。 (「任务」;XKCD,https://xkcd.com/1425)。 所以我们想知道……对于过去 22 年中由世界各地的孩子们所解决的难题,机器能够办到吗?
图 3:那个精灵宝可梦是谁?(精灵宝可梦动画系列的截图) 精灵宝可梦 精灵宝可梦是一个十分成功的游戏及动画系列,它的目标受众是年轻人(尽管作者本人并不同意这种分类)。田尻智(Satoshi Tajiri)在 1995 年创建了这个系列,并为任天堂的掌上游戏机 Game Boy 发行了两款游戏。在游戏中,玩家将扮演一位精灵宝可梦训练师,捕捉并和目标生物战斗。这个系列极其成功,atv直播,并很快红遍了世界(Wikipedia, 2017b)。 这个系列最初有 151 只妖怪(图 4),但如今的游戏已经完成了第七次迭代,共有 802 只妖怪。
图 4:从左到右分别为妙蛙种子(Bulbasaur)、小火龙(Charmander)和杰尼龟(Squirtle) 每个精灵宝可梦都通过所属的一或两种属性来表现其「元素亲和力(elemental affinity)」,以及相对于其他类精灵宝可梦的优缺点。这个功能在游戏玩法中至关重要,它能够建立一个深度且复杂的石头-剪刀-布机制,而这恰恰是战斗系统的基础。游戏中有 18 种属性(第一个游戏只有 15 个),如图 5 所示(Bulbapedia,2017)。
图 5:使用它们的惯用背景颜色所描绘的 18 种属性的精灵宝可梦。 本文检测了卷积神经网络(也称为 ConvNet)在指定精灵宝可梦游戏中的精灵后,执行宝可梦属性分类任务的表现。我将会展示收集的数据、预处理和训练流程,并会以所选模型的性能指标结束。所有的数据、实现代码、结果,以及对所有步骤做出解释的 Jupyter Notebook 都可以在一个 GitHub 库找到: 数据准备 数据集特征 (责任编辑:本港台直播) |