【问题标题】:My Neuroevolution of Augmenting Topologies implementation is unable to solve the XOR problem我的增强拓扑实现的神经进化无法解决 XOR 问题
【发布时间】:2019-11-14 04:35:25
【问题描述】:

我最近尝试自己实现 NEAT(增强拓扑的神经进化),但在解决 XOR 问题时,它似乎陷入了某种局部最大值。

我的实现能够按照 NEAT 算法的预期添加隐藏节点和连接,并且我的算法有可能解决它,因为它能够在数百代之后在极少数情况下解决它。

我所有的这个项目的代码都可以在https://github.com/Maxwell-Hunt/NEAT找到,关于这个算法的原始论文可以在http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf找到。

当我尝试让它解决 XOR 时,它通常能够得到正确的结果:[0,0] -> [0], [0,1] -> [1], [1,0] - > [1],但它也得到 [1,1] -> 1,这是不正确的。

【问题讨论】:

    标签: python machine-learning genetic-algorithm reinforcement-learning es-hyperneat


    【解决方案1】:

    我已经在 Ruby 中实现了 NEAT,它确实很好地解决了 XOR 问题。

    https://github.com/flajann2/rubyneat

    请随意阅读和窃取我的代码。

    调试这样的事情可能很棘手。对于初学者,请密切注意您的健身配方。我没有机会查看您的代码,但它应该提供部分答案,您将在我的代码中看到:

    https://github.com/flajann2/rubyneat_examples

    您可能还需要密切关注 sigmoid 函数的工作原理。它不应该太陡,等等。

    此外,问题还可能是您的选择和交配算法。如果你没有把它们弄对,进化可能不会开始。

    我的代码需要运行大约 100-200 次才能得出正确的 XOR 解决方案。不过,它应该会快很多,而且我知道我需要做些什么来改进它,但它确实有效。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 1970-01-01
      • 2019-08-29
      • 2016-07-13
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多