关于玩贪吃蛇的神经网络的澄清

我对神经网络/机器学习/遗传算法是新手,我正在编写一个学习玩贪吃蛇的神经网络(如果你之前没有玩过,这里有一个例子)。我有一些不太理解的问题:

在提出我的问题之前,我想先确保我对基本概念的理解是正确的。有一群蛇,每条蛇都有一个随机生成的DNA。DNA是神经网络中使用的权重。每当蛇移动时,它使用神经网络来决定去哪里(使用偏置)。当种群死亡时,选择一些父母(可能是最高适应度的),并以一定的突变几率交叉它们的DNA。

1) 如果给出整个棋盘作为输入(大约400个位置),足够的隐藏层(不知道多少,可能256-64-32-2?),以及足够的时间,它能学会不把自己困住吗?

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

  • 400个输入,每个棋盘上的位置一个。如果蛇应该去那里(苹果)则为正值,如果是墙壁/自己的身体则为负值。数值越接近-1/1,表示距离越近。
  • 6个输入:游戏宽度,游戏高度,蛇的x坐标,蛇的y坐标,苹果的x坐标和苹果的y坐标(如果这样训练,可能会学会在不同大小的棋盘上玩,但不确定如何输入它的身体,因为身体大小会变化)
  • 给它一个视野(可能是头前方3×3的方块),可以提醒蛇前方有墙壁、苹果或自己的身体。(不幸的是,蛇只能看到正前方的东西,这可能会阻碍它的学习能力)

3) 给定输入方法,隐藏层的大小应该从哪里开始比较好(当然计划调整这个,只是不知道一个好的起点)

4) 最后,关于蛇的适应度。除了获取苹果的时间,它的长度和寿命之外,还应该考虑其他因素吗?为了让蛇学会不把自己困住,我还能在适应度中添加什么来帮助它吗?

谢谢!


回答:

在这篇文章中,我将向你介绍:

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

对你想法的总体看法:

我能看出你在尝试做什么,我相信你的游戏想法(使用随机生成的对手身份来控制他们的行为,以一种随机改变他们使用人工智能智能行为的方式)具有很大的潜力。

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

对于处理你的游戏棋盘,因为它涉及到密集(而不是稀疏)数据,你可能会发现卷积神经网络(CNN)很有用。然而,因为你需要将地图转换为动作序列,针对序列优化的神经网络(如循环神经网络)可能会对你最有用。我确实找到了一些研究,这些研究使用神经网络将导航指令映射到动作序列,构建游戏地图,并在具有多种输入类型的游戏中移动角色:

对你有帮助的总体看法

听起来你对神经网络的工作原理还有一些基本的理解不足,所以我对你的主要建议是多研究神经网络背后的基本机制。重要的是要记住,神经网络是一种机器学习模型。因此,仅仅用随机参数构建一个神经网络是没有意义的。神经网络是一种从样本数据中训练的机器学习模型,一旦训练完成,就可以在测试数据上进行评估(例如,进行预测)。

机器学习的根源在很大程度上受到贝叶斯统计的影响,所以你可能会从阅读一本关于贝叶斯统计的教科书中受益,以更深入地理解机器分类的一般工作原理。

了解不同类型的神经网络之间的区别,如长短期记忆(LSTM)和卷积神经网络(CNN)对你也将是有价值的。

如果你想尝试使用神经网络进行分类任务,可以试试这个:

学习数学知识:我的专业意见是,学习神经网络背后的数学知识非常重要。如果你觉得这很吓人,我可以作证,我是自己学会的。但如果你更喜欢在课堂环境中学习,那么我建议你尝试一下。一本学习神经网络机制和数学知识的优秀资源和教科书是:

神经网络库的教程

我建议你尝试完成一个神经网络库的教程,例如:

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注