2015-03-19 53 views
1

我写了一个神经网络,并用东西吃了其他东西做了一个小应用程序。我在遗传神经网络中发生了什么变异和交叉?

但我真的不知道,如何使事情变得遗传。

目前我正在记录每个人每帧的所有输入和输出。

在产生的结束,然后我教的每一个个人知道从prevous代的前10最佳拟合个人数据。

但问题是,从100个世代顶10个人池所记录的数据,大约是50MB大。当我现在开始与20个人的新一代,我必须教他们20x50MB。 这个过程需要3分钟以上的时间,我不知道这是我应该在遗传神经网络中做什么。 我的方法实际上很有用。只有低效率会让我感到担忧。 (当然,我知道,我可能只是减少人口。)

,我便无法找到我解决我有什么交叉和什么变异。 交叉和变异的偏见和权重是无稽之谈,不是吗?它只会打破网络,不是吗?我看到了这样做的例子。突变权重向量。但我只是看不到,这将如何使网络进展达到预期的产出。

有人可以告诉我的网络是如何成为更好它是通过随机转换和不断变化的权重和连接在做什么? 会不会是一样的,只是随机生成网络,希望他们开始做他们应该做的事情?

是否有遗传神经网络的其他算法?

谢谢。

回答

1

通常,神经网络的遗传算法被用作反向传播训练的替代方案。所以没有训练阶段(试图将各种监督训练与进化结合起来是一个有趣的想法,但是对于那里有任何我知道的标准方法来说,做得不够普遍)。

在这种情况下,权重和偏差的交叉和变异是有意义的。它提供了人口中的变化。很多由此产生的神经网络(特别是早期)不会做太多有趣的事情,但有些会更好。当你继续选择这些更好的网络时,你会继续获得更好的后代。最终(假设你的任务是合理的),你将拥有非常擅长你想要的神经网络。这比随机搜索好得多,因为进化将以更聪明的方式探索潜在神经网络的搜索空间。因此,几乎任何遗传神经网络算法都会涉及变异权重,也许还会跨越它们。有些(如NEAT)也演化了神经网络的拓扑,因此允许添加或移除节点之间的节点和连接的突变和交叉。