【问题标题】:NEAT Neuronal network JavaScriptNEAT 神经网络 JavaScript
【发布时间】:2017-01-18 17:00:13
【问题描述】:

我开始学习一些关于神经网络的知识,我想创建一个学习玩俄罗斯方块的神经网络。

所以我偶然发现了NEAT JS Library 并将其与 nodejs 中的控制台俄罗斯方块游戏连接起来。 我担心的是出了点问题,因为无论屏幕上已经有多少瓷砖,网络都会不断地捣碎一个按钮。不确定我是否写了一个不正确的健身功能或我的教练正在放弃我最好的基因组。因为当网络通过加速瓦片向下获得一些分数时,这种行为在下一代中消失了。

我们非常感谢您的帮助 :-) 如果您想看看,请查看repo

要运行它,只需 cd 进入目录并使用 node.js 运行 index.js

提前感谢大家!

【问题讨论】:

  • 这可能像所要求的那样过于宽泛,并且没有提供任何可立即采取行动的信息。
  • 好的,那么让我重新表述我的问题。为什么网络似乎没有根据游戏领域的状态做出不同的选择。它似乎只决定了一个按钮,并且在整个游戏中从不尝试第二个。
  • 改写您的问题:“请阅读并理解我的代码库并对其进行调试。”这实际上是一件非常困难的事情。
  • 嘿,你可能想看看我在 js github.com/wagenaartje/neataptic 中对 NEAT 的实现。它更加用户友好。

标签: javascript node.js neural-network neat tetris


【解决方案1】:

你可以尝试一些事情......

  1. 测试您的评分功能是否正确。尝试改变它来奖励一些愚蠢的事情,比如在最左边放置块。如果您得到预期的行为,您可能可以轻松更改函数以适应您的问题。如果结果与您的预期相反,您可能会告诉算法有关 错误 而不是分数,因此在返回之前将该值乘以 -1。
  2. 跟踪每一代的平均分数,看看他们是否会随着时间的推移变得更好。如果是,一切都很好,但您可能需要更多的培训时间。如果不是算法中有问题。
  3. 检查您的进化参数。您应该拥有尽可能多的人口以确保多样性。最低应该是200左右。使用最优秀的 10% 人口进行繁殖。每个复制的基因组都应该有很小(大约 3%)的机会发生突变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 2017-02-19
    • 2014-01-15
    • 1970-01-01
    • 2015-12-03
    • 2018-12-16
    • 2011-08-23
    • 2018-03-21
    相关资源
    最近更新 更多