我正在尝试将该NEAT
算法用作机器人的控制器,我对它有一些准确性问题。我正在使用Python 2.7和它,并使用两个NEAT
python实现:
NEAT
在GitHub存储库中:https://github.com/CodeReclaimers/neat-python 在Google中搜索,看起来它已经在一些项目中被使用了。multiNEAT
由Peter Chervenski和Shane Ryan开发的图书馆:http://www.multineat.com/index.html。它出现在NEAT
软件目录的“官方”软件网页中。在测试第一个时,我发现我的程序快速收敛到一个解决方案,但这个解决方案不够精确。由于缺乏精确度,我想说中位数和平均值的最小偏差为3-5%,与演化结束时的“完美”解决方案相关(根据问题的复杂程度,误差在10%左右)对我的解决方案来说是正常的。此外,我可以说我从来没有“在解决方案给出的解决方案之间1%的误差值下看到NEAT
它是正确的解决方案”。我必须说我已经尝试了很多不同的参数组合和配置(对我来说这是一个老问题)。
因此,我测试了第二个库。该MultiNEAT
库比前一个库快速,简单地汇聚。(我假设这是由于C ++实现而不是纯Python)我得到了类似的结果,但我仍然有同样的问题; 缺乏准确性。第二个库也有不同的配置参数,我没有找到它们的正确组合来改善问题的性能。
我的问题是:结果
缺乏准确性是否正常NEAT
?它实现了很好的解决方案,但不足以控制机器人手臂,这就是我想用它做的。
我会写下我正在做的事情,以防有人在我提出问题的方式中看到一些概念或技术错误:
为了简化问题,我将展示一个很简单的例子:我有一个非常简单的问题要解决,我想是可以计算如下功能NN: y = x^2
(类似的结果发现y=x^3
或y = x^2 + x^3
或类似功能)
我制定该计划的步骤如下:
xmin = 0.0
和xmax = 10.0
此外,我假设我如何操纵数据是正确的,因为我使用相同的数据集来训练神经网络,Keras
并且我得到比NEAT更好的结果(在1000个时期之后可以实现小于1%的误差)有5个神经元的层)。
在这一点上,我想知道发生的事情是否正常,因为我不应该使用数据数据集来开发控制器,它必须“在线”学习并且NEAT
看起来像我的问题的合适解决方案。
提前致谢。
发布于 2018-12-12 10:31:00
您是否尝试过增加人口规模以加快搜索速度并增加代数?我将它用于交易任务,通过增加人口规模,我的冠军被发现得更快。
另一件需要考虑的事情就是在你的健身功能中应用你自己的加权惩罚和奖励,这样任何不能立即变得非常接近的东西就会很快被“杀掉”并且找到正确的基因组更快。应该注意的是,整齐使用适应度函数来学习与梯度下降相反,因此它不会以相同的方式收敛,并且可能需要训练更长时间。
最后一个问题,你是使用neat还是来自multineat的hyperneat algo?
https://stackoverflow.com/questions/-100006261
复制相似问题