澄清玩贪吃蛇的神经网络

Clarification on a Neural Net that plays Snake

我是神经网络 networks/machine learning/genetic 算法的新手,对于我的第一个实现,我正在编写一个学习玩贪吃蛇的网络 (An example in case you haven't played it before) 我有几个问题我不完全理解:

在我提出问题之前,我只想确保我正确理解了总体思路。有一群蛇,每条蛇都有随机生成的 DNA。 DNA 是神经网络中使用的权重。每次蛇移动时,它都会使用神经网络来决定去哪里(使用偏差)。当种群死亡时,select 一些 parents (可能是最高适应度),并以轻微的突变机会交叉他们的 DNA。

1) 如果给整个棋盘作为输入(大约 400 个点)足够的隐藏层(不知道有多少,也许是 256-64-32-2?),以及足够的时间,它会学会不装箱吗本身在?

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

3) 给定输入法,隐藏层大小的一个好的起点是什么(当然计划对此进行调整,只是不知道什么是好的起点)

4) 最后是蛇的适应度。除了拿到苹果的时间,它的长度,它的寿命,还要考虑其他因素吗?为了让蛇学会不把自己挡在里面,有什么我可以添加到健身中来帮助它的吗?

谢谢!

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

在这种情况下使用遗传算法是个好主意。您只进行参数学习(寻找权重集),但结构将基于您的估计。 GA 还可以用于结构学习(寻找 ANN 的拓扑结构)。但是两者都使用 GA 将非常难以计算。

Floreano 教授也做了类似的事情。他使用遗传算法为机器人的神经网络控制器寻找权重。机器人在迷宫中执行一些任务。神经网络隐藏层是一个神经元,在输入上有循环关节,在自身上有一个横向连接。有两个输出。输出连接到输入层和隐藏层(提到一个神经元)。

但弗洛雷亚诺做了更有趣的事情。他说,我们并非生来就有坚定的突触,我们的突触会在我们的一生中发生变化。所以他使用 GA 来寻找突触变化的规则。这些规则基于赫布学习。他执行节点编码(对于连接到神经元的所有权重将应用相同的规则)。一开始,他将权重初始化为小的随机值。寻找规则而不是突触的数值会导致更好的结果。 One from Floreno's articles.

以及我自己的经历。在上学期,我和我的同学接到了一项任务,即使用 GA 寻找突触的规则,但使用 Spiking 神经网络。我们的 SNN 是移动机器人运动学模型的控制器,任务是将机器人引导到选定的点。我们取得了一些结果,但出乎意料。您可以看到结果 here。所以我建议您使用 "ordinary" ANN 而不是 SNN,因为 SNN 带来了新现象。

在此post中,我将建议您:

  • 如何使用 LSTM 将导航指令映射到动作序列 神经网络
  • 可帮助您学习如何使用神经网络的资源 网络来完成你的任务
  • 如何安装和配置神经网络 基于我艰难学习所需内容的网络库

对您的想法的总体评价:

我知道你在做什么,我相信你的游戏想法(使用随机生成的对手身份来控制他们的行为,随机改变他们使用人工智能的方式来聪明地行事)有很大的潜力。

使用神经网络将导航指令映射到动作序列

为了处理你的游戏板,因为它涉及 dense(相对于 sparse)数据,你可以找到一个卷积神经网络(CNN) 很有用。但是,由于您需要将地图转换为动作序列,因此 sequence-optimized 神经网络(例如递归神经网络)可能对您最有用。我确实找到了一些研究,这些研究使用神经网络将导航指令映射到动作序列、构建游戏地图,并在具有多种输入类型的游戏中移动角色:

对您有帮助的一般意见

听起来您似乎缺少对神经网络工作原理的一些基本了解,因此 我对您的主要建议是研究更多神经网络背后的基本机制 .请务必记住,神经网络是一种 机器学习 模型。所以,仅仅构造一个具有随机参数的神经网络并没有真正意义。神经网络是一种机器学习模型,它是从样本数据中训练出来的,一旦训练完成,就可以在测试数据上进行评估(例如执行预测)。

机器学习的根源在很大程度上受贝叶斯统计的影响,因此您可能会从一本关于贝叶斯统计的教科书中受益,从而更深入地了解 machine-based 分类的一般工作原理。

了解不同类型的神经网络(例如长短期记忆网络 (LSTM) 和卷积神经网络 (CNN))之间的差异对您也很有价值。

如果您想修改如何使用神经网络 进行分类任务,试试这个:

学习数学: 我的专业意见是,学习神经网络的基础数学非常重要。如果它令人生畏,我给你我的证词,我能够自己学会所有这些。但如果您更喜欢在课堂环境中学习,那么我建议您尝试一下。 学习神经网络力学和数学的重要资源和教科书是:

神经网络库教程

我建议您尝试学习神经网络库的教程,例如: