我刚刚开始学习使用整洁的算法。当我读到“通过增强拓扑来进化神经网络”的论文和当前的python文档时,我在想我理解了整洁的基础知识。然而,在实践中我遇到了麻烦。
我已经从源代码(https://github.com/CodeReclaimers/neat-python.git)运行了XOR示例。然而,当我不止一次运行“进化-前馈”、“进化-前馈-并行”或“进化-最小”代码时,结果正在发生变化。例如,
当我运行“进化-感觉前进”时,它给出了:1
当我第二次运行相同的代码时,它会给出:2
每次跑步都会改变。在每次运行之前,我也删除了生成的整洁的检查点文件,但是结构仍然在改变。我想了解原因,我想我在这里遗漏了一些要点。
发布于 2018-11-09 18:54:50
如果每个网络近似地实现XOR函数,但在合理的错误范围内,那么这种行为就像设计的那样整洁。
神经网络允许多个等价解。即使使用固定的结构和随机梯度下降来学习一个简单的函数,每次都有很大的机会得到非常不同的权重。使用calls,它还探索替代架构,搜索包括对随机数生成器的许多调用,以便做出决策。
整洁的主要决定性步骤是选择过程--通过比较群体成员之间的优劣来对他们进行排名。然而,由于神经网络的多个设计几乎都能很好地解决异或问题,所以每次都不太可能找到相同的一个。
如果你需要精确地复制一个实验,你可以通过设置RNG种子来实现。我认为这可能只是对您正在使用的库调用random.seed(),但是有些库也可能有其他需要设置的RNG实例。
https://datascience.stackexchange.com/questions/40972
复制相似问题