澄清玩蛇的neural network

我是新来的neural network/机器学习/遗传algorithm,并为我的第一个实现,我正在写一个networking,学习玩蛇( 以前的例子,如果你以前没有玩过 )我有几个问题,我不完全不了解:

在我的问题之前,我只想确保我理解正确的一般想法。 有一群蛇,每个都有随机产生的DNA。 DNA是neural network中使用的权重。 每次蛇移动,它使用neural network决定去哪里(使用一个偏见)。 当人口死亡,select一些父母(也许最高适应度),并交叉他们的DNA与一个轻微的变异机会。

1)如果给予整个董事会作为一个input(大约400个点)足够的隐藏层(不知道有多less,也许是256-64-32-2?),并有足够的时间,是否会学会不把自己装进去?

2)什么是好的投入? 以下是我的一些想法:

  • 400个input,板上的每个空间都有一个input。 如果蛇应该去那里(苹果)正面,如果是墙壁/你的身体,则是负面的。 越接近-1/1,它越接近。
  • 6个input:游戏宽度,游戏高度,蛇x,蛇y,苹果x和苹果y(如果以这种方式训练,可以学习在不同尺寸的板上玩,但不知道如何input它的身体,因为它改变大小)
  • 给它一个可以提醒墙壁,苹果或它的身体的蛇的视野(也许是头部前面的3×3平方)。 (蛇只能看到前面的东西不幸,这可能会阻碍它的学习能力)

3)给定input法,隐藏图层大小的起始位置是什么(当然,计划调整这个,只是不知道什么是一个好的起点)

4)最后是蛇的健身。 除了得到苹果的时间之外,它的长度,还有它的一生,是否应该考虑其他因素呢? 为了让蛇学会不要阻止自己,有什么我可以添加到健身帮助吗?

谢谢!

在这篇文章中,我会告诉你:

  • 如何用LSTMneural network将导航指令映射到动作序列
  • 这些资源将帮助您学习如何使用neural network来完成您的任务
  • 如何安装和configurationneural network库的基础上,我需要学习的硬性方法

您的想法的一般意见:

我可以看到你想要做什么,我相信你的游戏理念(使用随机生成的对手的身份来控制他们的行为,以随机改变他们使用人工智能来performance智能的方式)有一个很有潜力。

用neural network将导航指令映射到动作序列

为了处理你的游戏板,因为它涉及到密集 (而不是稀疏 )数据,你可以find一个卷积neural network(CNN)是有用的。 但是,因为需要将映射转换为动作序列,因此序列优化的neural network(例如recursionneural network)可能对您最有用。 我确实发现了一些使用neural network将导航指令映射到动作序列的研究,构build游戏地图,并通过具有多种inputtypes的游戏来移动angular色:

  • Mei,H.,Bansal,M.,&Walter,MR(2015)。 听,参加,走路:导航指令与动作序列的神经映射。 arXiv预印本arXiv:1506.04089。 可用于: 听,参加和漫步:导航指令到动作序列的神经映射
  • Lample,G.,&Chaplot,DS(2016)。 深入强化学习玩FPS游戏。 arXiv预印本arXiv:1609.05521。 可在: 超级马里奥作为一个string:平台游戏等级生成通过LSTMs
  • Lample,G.,&Chaplot,DS(2016)。 深入强化学习玩FPS游戏。 arXiv预印本arXiv:1609.05521。 适用于: 使用深度强化学习玩FPS游戏
  • Schulz,R.,Talbot,B.,Lam,O.,Dayoub,F.,Corke,P.,Upcroft,B。和Wyeth,G。(2015年5月)。 使用人类线索的机器人导航:一种用于象征性目标导向的探索的机器人导航系统。 机器人与自动化(ICRA),2015年IEEE国际会议(第1100-1105页)。 IEEE。 可用于: 机器人导航使用人类线索:一种机器人导航系统,用于符号目标导向的探索

一般意见,什么会帮助你

这听起来像是缺less对neural network如何工作的基本理解,所以我主要向您推荐的是一般性地研究neural network背后的更多基本机制 。 请记住,neural network是一种机器学习模式。 所以,build立一个具有随机参数的neural network并没有什么意义。 neural network是一种机器学习模型,它是从样本数据中训练出来的,一旦训练好,就可以对testing数据进行评估(例如执行预测)。

机器学习的根本在很大程度上受到贝叶斯统计的影响,因此您可以从贝叶斯统计的教科书中获益,以更深入地了解基于机器的分类如何工作。

学习不同types的neural network,如长期短期记忆(LSTM)和卷积neural network(CNN)之间的差异也是有价值的。

如果您想要了解neural network如何用于分类任务,请尝试以下操作:

  • Tensorflow游乐场

学习math:我的专业观点是学习neural network的基础math是非常重要的。 如果这是吓人的,我给你我的见证,我可以自己学习所有的知识。 但是如果你喜欢在教室里学习,那么我build议你尝试一下。 学习neural network的力学和math的一个很好的资源和教科书是:

  • neural network与深度学习

neural network库教程

我build议您尝试通过neural network库的教程,例如:

  • TensorFlow教程
  • 深度学习与Theano教程
  • CNTK教程 ( CNTK 205:艺术风格转移特别酷)
  • Keras教程 (Keras是一个function强大的高级neural network库,可以使用TensorFlowTheano 。)

我看到了类似的应用。 input通常是蛇坐标,苹果坐标和一些感官数据(在你的情况下是在蛇头旁边的墙或没有)。

在这种情况下使用遗传algorithm是一个好主意。 你只做参math习(find一组权重),但结构将基于你的估计。 遗传algorithm也可以用于结构学习(寻找人工neural network的拓扑结构)。 但是,对于两者使用GA将是非常计算困难的。

Floreano教授做了类似的事情。 他用遗传algorithm寻找机器人neural network控制器的权重。 机器人在迷宫中执行一些任务。 neural network隐藏层是一个神经元,在input端有复发关节,在自身上有一个侧向连接。 有两个输出。 输出连接到input层和隐藏层(提到一个神经元)。

但是Floreano做了一些更有趣的事情。 他说,我们不是天生有决心的突触,我们的突触在我们的一生中变化。 所以他用GA来寻找突触变化的规则。 这些规则是基于Hebbian的学习。 他执行节点编码(对于连接到神经元的所有权重将应用相同的规则)。 开始时,他初始化小随机值的权重。 寻找规则而不是突触的数值会导致更好的结果。 一个来自Floreno的文章 。

并根据我自己的经验。 在上个学期,我和我的同学find了一个与GA相关的突触规则,但是却是Spikingneural network。 我们的SNN是移动机器人运动学模型的控制器,任务是引导机器人到选定的点。 我们获得了一些结果,但没有预料到 你可以在这里看到结果。 所以我build议你使用“普通”ANN代替SNN,因为SNN会带来新的performanceforms。