开发 | 如何从零训练神经网络玩游戏?这里有一段详细的解读视频

AI科技评论消息,最近,Youtube 上的知名游戏博主 SethBling 训练了一个叫 MariFlow 的神经网络来玩 Mario Kart 游戏。在进行15个小时的游戏训练并做了一些针对性的改进后,这个神经网络在 50cc Mushroom Cup 中获得了金牌。

这并不是 SethBling 第一次在游戏中应用神经网络“通关”。此前 SethBling 曾经创建了另一个神经网络MarI/O,通过训练,这个神经网络自己演变成玩“超级马里奥世界”(Super Mario World)的高手。SethBling还拍摄了一个六分钟的视频来解释通过神经网络来进行游戏的原理。他设计了一个四层的神经网络,通过计算,程序会给出它认为在某个点上应该按下什么键的预测。通过这个视频,或许你也可以举一反三,做出更好的应用例子(例如赛车游戏)。

和AI科技评论来看一下构建这个神经网络中 SethBling 的思路吧:

游戏当中,我们可以看到Mario在一直全速奔跑,全程没有任何停顿,并能快速躲开类似上图这样高难度的子弹袭击,最终到达终点的时候剩余时间为354秒。

让我们重头开始看看神经网络是如何进行决策的:如上图所示,这是一个只有4层的神经网络模型,通过对最左侧的输入图像的计算(红色的短线代表Mario、白色方块代表不会移动的物体如地面,黑色方块代表会移动的物体如敌人,等等),最终得出最右侧的8个按键的输出状态(SethBling解释说,神经网络中的神经元和神经树突并不总是被亮起的,这也是我们所说的只使用到了我们一小部分的大脑)。

而在一开始的时候,机器的表现非常笨拙,甚至不会按任何键。在这样的过程中,系统会尝试切换不同的模拟状态,通过尝试了很久后才学会了向右移动;

在遇到子弹的时候也不会跳跃躲避;

那么神经网络是如何学习的呢?还是从最初的简单状况开始,绿色线代表正激励连接,而红色表示负激励连接。自要从目前的状态所激活的是绿色的正激励连接,那么Mario就只管一直按右键狂奔;

当红色的负激励连接被激活时,则切换到相应的状态,如上图中按下A键做一个跳跃动作;

如果没有任何链接被激活,那么Mario就站在那里。这只是一个简单的示意:如果神经网络中的节点和连接越复杂,系统能做出的选择也更多,最终做出最合适的选择;

那么神经网络是如何从简单进化到复杂的呢?我们设定一个函数Fitness,这个函数值取决于Mario奔跑的距离以及所用的时间,奔跑距离越大、所用时间越短,Fitness值越大,而只有获得最大值的模型才能被选为下一代演化的基础模型,而在下一代演化中在关键节点上(如上图吃到子弹游戏结束)会产生随机突变(AI科技评论注:这和生物进化的过程非常相似,只有最适应环境的种类才能生存繁衍),在这样不断演变中达到最优解。

在上图的34代演化得分图中,我们可以看到机器在进化过程中也遇到了一些瓶颈,但最终克服了这些瓶颈取得了好成绩。

这一方法,SethBling称之为NEAT(Neuro Evolution of Augmenting Topologies,增强拓扑神经演化),在 Kenneth Stanley 和 Ari 的论文中也有讲述。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

如何从零训练神经网络玩游戏?这里有一段详细的解读视频

Youtube 上的知名游戏博主 SethBling训练了一个叫 MariFlow 的神经网络来玩 Mario Kart 游戏。看懂他怎么做的,你也能举一反三。...

3557
来自专栏周鸿宇的专栏

【SPA大赛】如何预测移动 App 广告点击率

计算广告是互联网最重要的商业模式之一,广告投放效果通常通过曝光、点击和转化各环节来衡量,大多数广告系统受广告效果数据回流的限制只能通过曝光或点击作为投放效果的衡...

5610
来自专栏思影科技

大话脑影像系列之三:趣谈散点图与相关系数

爱因斯坦喊你点击右上角蓝色“思影科技”关注我们 最近不少读者对高大上的机器学习,动态脑网络,曲面形态指标共变网络感到爱不起,针对于此,我们特别推出一...

3286
来自专栏数据结构与算法

BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)

感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学。一道题做一上午也是没谁了,,

972
来自专栏企鹅号快讯

Github 本周最热的 10 款“机器学习”开源项目

这是 PaperDaily 的第27篇文章 Kubeflow #用于 Kubernetes 的机器学习工具库 Kubeflow 是由 Google 发布的机器学...

4209
来自专栏大数据挖掘DT机器学习

Python股票数据分析

python版本:3.4 最近在学习基于python的股票数据分析,其中主要用到了tushare和seaborn。tushare是一款财经类数据接口包,国内的...

3987
来自专栏CreateAMind

机器人学习最前沿:一眼模仿学习(One-Shot Imitation Learning)的三级跳

1192
来自专栏机器之心

开源 | OpenAI基准DQN及其三个变体:通过最佳实践确保DQN正确性

选自Open AI Blog 机器之心编译 参与:黄小天、微胖 我们开源了 OpenAI 基准(https://github.com/openai/baseli...

3388
来自专栏牛客网

头条算法岗

无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即逝的现实。——马尔...

894
来自专栏ArrayZoneYour的专栏

TensorFlow强化学习入门(5)—— 可视化Agent的“所思所想”

在我的强化学习系列的文章中,我想要深入探究我们基于神经网络的agent在训练过程中习得的表达形式。尽管我们的直接目的是希望我们的agent能够获得更高的分数,或...

4964

扫码关注云+社区