5

我有两个描述神经网络结构的对象数组,我如何将它们结合起来产生一个现实的后代?的“染色体”将是这个样子:使用遗传算法,我如何根据两个神经网络结构创建后代?

chromosome = [ 
    [Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node, Node, Node], 
    [Node, Node, Node], 
]; 

一个例子节点:

Node { 
    nodesThatThisIsConnectedTo = [0, 2, 3, 5] // These numbers identify which nodes to collect output from in the preceding layer from based on their index number 
    weights = [0.34, 0.33, 0.76, -0.56] // These are the corresponding weights applied to the mentioned nodes 
} 
+3

交叉神经网络很难有多种原因。你可能想看看[NEAT](http://www.cs.ucf.edu/~kstanley/neat.html),它使用了一个聪明的机制(历史标记)来解决问题。链接的论文(页面底部)包含更多关于如何/为什么工作的信息。 – DataWraith 2011-12-18 09:48:19

+0

阅读2005年的原文(我认为),它的出色写法,会回答你所有的问题。 – mbatchkarov 2012-01-05 13:04:40

回答

0

我认为更好的办法是实现为每个节点的权重向量遗传算法搜索 - 如果你”重新锁定使用GA。

对于每个节点都有一个向量群,每次迭代一个节点改变其权向量。在我看来,这似乎是一个更为健全的方法,然后在两个完整网络之间进行交叉。