4

我一直在学习神经网络,遗传算法,并测试我的学习,努力使人工智能是学会玩笨鸟先飞:用遗传算法训练神经网络来玩飞扬的小鸟 - 为什么不能学习?

Screenshot of program

我已经离开它至少运行10小时(一夜之间或更长时间),但最适合的成员仍然没有显示出从开始模拟以来避免地板和天花板的任何重大进展。 输入是作为视线的光线(如上图所示),网络的长度以及鸟的垂直速度。看起来最好的鸟基本上忽略了除水平线之外的所有视线,而当它很短时,它就会跳起来。 输出是一个介于0和1之间的数字,如果输出大于0.5,则鸟跳跃。有4个隐藏层,每层有15个​​神经元,输入层向前馈送到第一个隐藏层,然后第一个隐藏层向前馈送到第二个隐藏层,最后一个隐藏层向前馈送到输出,一只鸟的dna是一组代表神经网络权重的实数,我做了另一个使用相同样式的神经网络和遗传算法的项目,蚂蚁不得不前往食物,并且它的工作非常完美。

下面是代码:https://github.com/Karan0110/flappy-bird-ai

请在评论说,如果你需要任何额外的信息

请你可以说我的方法是有缺陷的或没有,因为我几乎可以肯定的代码工作正常(我从以前的工作项目中获得)。

+2

首先,这真的很酷,你做的工作似乎很棒!在这种情况下,恐怕这个问题对于这个网站来说太广泛了,因为除了“这段代码不工作,我怎么能使它工作?”之外,我看不到任何实际的问题。 – George

+1

谢谢,我试图让我的问题更具体。 –

+0

@KaranElangovan,在这里发表相同的问题[交叉验证](https://stats.stackexchange.com/)。并请确保您有效地遵循社区指南。人必须小心。 – quintumnia

回答

0

我喜欢你的想法,但我建议你改变一些事情。

  • 请勿使用固定结构的网络。查找自动分层拓扑的神经演化,而是自己实现它,或使用像neataptic这样的库。

    • 我不相信你的网络需要这么多输入。我相信3-5个传感器(20-50°间隙)就足够了,因为许多输入值似乎非常相似。

如果你不知道到底为什么你的项目工作不试试这个:

  • 尝试查看当前最好的网络的图像。如果网络不考虑重要的传感器(如速度),您会立即看到它。

  • 确保您的所有传感器都正常工作(在上图中看起来不错),并确保以有意义的方式对值进行正确化处理。

  • 检查平均分数的最大值是否随时间增加。如果它不是你的遗传算法工作不正常,或者你的网络接收到的输入不足以解决问题。

一个诡计帮助我解决了很多问题,那就是让GA的精英们独立出阵。如果其他网络的表现优于精英,则只能取代精英网络。让精英一直保持低谷,所以一旦你的算法找到了一个非常好的解决方案,如果没有其他更好的表现,它将不会在未来的一代中流失。