标签: es-hyperneat

NEAT上的任何Encog文档?

是否有关于如何使用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

6
推荐指数
1
解决办法
321
查看次数

NEAT算法结果精度

我是一名博士生,他试图将该NEAT算法用作机器人的控制器,我对它有一些准确性问题.我正在使用Python 2.7和它,并使用两个NEATpython实现:

  1. 这个NEAT在GitHub存储库中:https://github.com/CodeReclaimers/neat-python 在Google中搜索,看起来它已经在一些项目中被使用了.
  2. 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^3y = x^2 + x^3或类似功能)

我遵循的开发程序的步骤是:

  1. "Y"是网络的输入,"X"是输出.神经网络的激活函数是sigmoid函数.
  2. 我创建了一个"n"个样本的数据集,给出了" xmin = 0.0和"之间的"X"值 xmax = 10.0
  3. 当我使用sigmoid函数时,我对"Y"和"X"值进行了规范化:

    • "Y"在(Ymin,Ymax)和(-2.0,2.0)(sigmoid的输入范围)之间线性归一化.
    • "X"在(Xmin,Xmax)和(0.0,1.0)(sigmoid的输出范围)之间线性归一化.
  4. 创建数据集后,我将列车样本(总量的70%),验证样本和测试样本(每个15%)细分.

  5. 在这一点上,我创造了一群进化的人.在所有列车样本中评估每个人群.每个职位评估为:

    eval_pos = xmax - abs(xtarget - xobtained)

    个人的适应性是所有列车位置的平均值(我也选择了最小值,但它给我的性能更差).

  6. 在整个评估之后,我针对测试样品测试获得的最佳个体.这是我获得那些"不准确的价值观"的地方.此外,在评估过程中,从未 获得"abs(xtarget-xobtained)= 0"的最大值.

此外,我假设我如何操纵数据是正确的,因为我使用相同的数据集来训练神经网络,Keras并且我得到比NEAT更好的结果(在1000个时期之后可以实现小于1%的误差)有5个神经元的层).

在这一点上,我想知道发生的事情是否正常,因为我不应该使用数据数据集来开发控制器,它必须"在线"学习并且NEAT …

python neat es-hyperneat

5
推荐指数
1
解决办法
334
查看次数

NeuroEvolution:NEAT算法创新数字

我一直在阅读增强拓扑的NeuronEvolution,而这件事让我很困扰。在阅读肯尼思·斯坦利的《关于NEAT的论文》时,我想到了这个数字:

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

4
推荐指数
1
解决办法
811
查看次数