是否有关于如何使用Encog Framework的详细文档?我知道在现有的用户指南UserGuide,并在C#示例encog的github仓库
但是我专注于使用NEAT网络,并且只有XOR示例可用.到目前为止,代码如下所示:
Dim inputNeurons As Integer = 6, outputNeurons As Integer = 2
Dim trainedNetwork As NEATNetwork
Dim network As New NEATPopulation(inputNeurons, outputNeurons, 5000)
network.Reset()
network.InitialConnectionDensity = 100.0
Dim speciation As New OriginalNEATSpeciation()
speciation.CompatibilityThreshold = 1
Dim trainer As TrainEA
trainer = NEATUtil.ConstructNEATTrainer(network, New networkScore())
trainer.Speciation = speciation
epoch = 1
iterationLimit = 30
i = 1
While i <= iterationLimit
trainer.Iteration()
Console.WriteLine("Iteration #" & i & "/" & iterationLimit & " #" + epoch.ToString + …Run Code Online (Sandbox Code Playgroud) machine-learning neural-network genetic-algorithm encog es-hyperneat
我是一名博士生,他试图将该NEAT算法用作机器人的控制器,我对它有一些准确性问题.我正在使用Python 2.7和它,并使用两个NEATpython实现:
NEAT在GitHub存储库中:https://github.com/CodeReclaimers/neat-python
在Google中搜索,看起来它已经在一些项目中被使用了.multiNEAT由Peter Chervenski和Shane Ryan开发的图书馆:http://www.multineat.com/index.html.它出现在NEAT软件目录的"官方"软件网页中.在测试第一个时,我发现我的程序很快收敛到一个解决方案,但这个解决方案不够精确.由于缺乏精确度,我想说中位数和平均值的最小偏差为3-5%,与演化结束时的"完美"解决方案相关(根据问题的复杂程度,误差在10%左右)对我的解决方案来说是正常的.此外,我可以说我"从来没有"在解决方案NEAT和解决方案之间的1%之间看到错误值,这是正确的解决方案.我必须说我已经尝试了很多不同的参数组合和配置(对我来说这是一个老问题).
因此,我测试了第二个库.该MultiNEAT库比前一个库快速,简单地汇聚.(我假设这是由于C++实现而不是纯Python)我得到了类似的结果,但我仍然有同样的问题; 缺乏准确性.第二个库也有不同的配置参数,我没有找到它们的正确组合来改善问题的性能.
我的问题是:结果
缺乏准确性是否正常NEAT?它实现了很好的解决方案,但不足以控制机器人手臂,这就是我想用它做的.
我将写下我正在做的事情,以防有人在我提出问题的方式中看到一些概念或技术错误:
为了简化问题,我将展示一个很简单的例子:我有一个非常简单的问题要解决,我想是可以计算如下功能NN: y = x^2(类似的结果发现y=x^3或y = x^2 + x^3或类似功能)
我遵循的开发程序的步骤是:
xmin = 0.0和"之间的"X"值
xmax = 10.0当我使用sigmoid函数时,我对"Y"和"X"值进行了规范化:
创建数据集后,我将列车样本(总量的70%),验证样本和测试样本(每个15%)细分.
在这一点上,我创造了一群进化的人.在所有列车样本中评估每个人群.每个职位评估为:
eval_pos = xmax - abs(xtarget - xobtained)
个人的适应性是所有列车位置的平均值(我也选择了最小值,但它给我的性能更差).
在整个评估之后,我针对测试样品测试获得的最佳个体.这是我获得那些"不准确的价值观"的地方.此外,在评估过程中,从未 获得"abs(xtarget-xobtained)= 0"的最大值.
此外,我假设我如何操纵数据是正确的,因为我使用相同的数据集来训练神经网络,Keras并且我得到比NEAT更好的结果(在1000个时期之后可以实现小于1%的误差)有5个神经元的层).
在这一点上,我想知道发生的事情是否正常,因为我不应该使用数据数据集来开发控制器,它必须"在线"学习并且NEAT …
我一直在阅读增强拓扑的NeuronEvolution,而这件事让我很困扰。在阅读肯尼思·斯坦利的《关于NEAT的论文》时,我想到了这个数字:
在第一个突变时,创新数从1,2,3,4,5,6变为1,2,3,4,5,6,7。
在第二个上,它从1,2,3,4,5,6变为1,2,3,4,5,6,8,9。
我的问题是为什么它跳过数字7而直接上升到8?我没有发现与删除创新数字有关的任何信息。
在第二个图上也是一样,父母1如何失去6,7,而父母2中的第8个基因又去了哪里?
machine-learning neural-network genetic-algorithm evolutionary-algorithm es-hyperneat