【问题标题】:Using a genetic algorithm, how can I create offspring based off of two neural network structures?使用遗传算法,我如何根据两个神经网络结构创建后代?
【发布时间】:2012-01-22 22:15:25
【问题描述】:

我有两个描述神经网络结构的对象数组,我怎样才能将它们结合起来产生一个真实的后代? “染色体”看起来像这样:

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
}

【问题讨论】:

  • 神经网络的交叉很困难,原因有很多。您可能想查看NEAT,它使用巧妙的机制(历史标记)来解决问题。链接的论文(页面底部)包含有关如何/为什么起作用的更多信息。
  • 阅读 2005 年(我认为)的原始论文,它写得非常出色,可以回答你所有的问题。

标签: artificial-intelligence neural-network genetic-algorithm


【解决方案1】:

我认为更好的方法是对每个节点的权重向量实施遗传算法搜索 - 如果您锁定使用 GA。

对于每个节点,都有一组向量,每次迭代一个节点都会改变它的权重向量。在我看来,这似乎是一种更合理的方法,然后在两个完整的网络之间进行交叉。

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2011-01-06
    • 2017-10-25
    • 2011-06-30
    • 2010-10-24
    • 2011-07-04
    • 2018-05-11
    • 2015-12-14
    • 2017-08-27
    相关资源
    最近更新 更多