为什么在神经网络训练中使用交叉?

Why use Crossover in Neural Network training?

具体为什么使用?

我知道它会增加变化,这可能有助于探索问题 space,但它会增加多少及时找到最佳 solution/configuration 的概率?它还有其他好处吗?

它是否一定总是有帮助,或者在某些情况下它会增加寻找最佳解决方案所需的时间?

正如 Patrick Trentin 所说,交叉提高了收敛速度,因为它允许组合已经在种群中发现的好的基因。

但是,对于neuro-evolution来说,crossover面临着“排列问题”,也就是所谓的“竞争约定问题”。当两个 parent 是同一个网络的排列时,除了极少数情况外,它们的后代总是具有较低的适应性。因为网络的同一部分被复制到两个不同的位置,所以后代正在失去这两个位置之一的可行基因。

例如网络 A、B、C、D 和 D、C、B、A 是同一网络的排列。后代可以是:

A,B,C,D (copy of parent 1)           
D,C,B,A (copy of parent 2)

A,C,B,D OK
A,B,C,A
A,B,B,A 
A,B,B,D
A,C,B,A
A,C,C,A
A,C,C,D

D,B,C,A OK
D,C,B,D
D,B,B,A 
D,B,B,D
D,B,C,D
D,C,C,A
D,C,C,D

所以,对于这个例子,2/16 的后代是 parent 的副本。 2/16 是没有重复的组合。并且 12/16 有重复的基因。

排列问题的发生是因为作为排列之一的网络具有相同的适应度。因此,即使对于精英 GA,如果一个被选为 parent,另一个也经常被选为 parent.

排列可能只是部分排列。在这种情况下,结果优于完全排列,但在很多情况下,后代的适应性仍低于 parents.

为了避免排列问题,我听说 similarity based crossover,它计算神经元及其连接的突触的相似性,在最相似的神经元之间进行 crossing-over 而不是 crossing-over基于轨迹。

在进化网络拓扑时,一些 NEAT 专家认为排列问题是更广泛问题的一部分:“可变长度基因组问题”。 NEAT 似乎通过网络的物种形成来避免这个问题,当两个网络在拓扑和权重上差异太大时,它们就不允许交配。因此,NEAT 算法似乎认为排列网络差异太大,不允许它们交配。

A website about NEAT 还说:

However, in another sense, one could say that the variable length genome problem can never be "solved" because it is inherent in any system that generates different constructions that solve the same problem. For example, both a bird and a bat represent solutions to the problem of flight, yet they are not compatible since they are different conventions of doing the same thing. The same situation can happen in NEAT, where very different structures might arise that do the same thing. Of course, such structures will not mate, avoiding the serious consequence of damaged offspring. Still, it can be said that since disparate representations can exist simultaneously, incompatible genomes are still present and therefore the problem is not "solved." Ultimately, it is subjective whether or not the problem has been solved. It depends on what you would consider a solution. However, it is at least correct to say, "the problem of variable length genomes is avoided."

编辑:回答您的评论。

你可能适合基于相似性的交叉,我不确定它是否完全避免了排列问题。

关于交叉的最终目标,不考虑排列问题,我不确定它对神经网络的进化是否有用,但我的想法是:如果我们把一个神经网络分成几个部分,每个部分有助于适应度,因此具有高适应度的两个网络可能具有不同的好部分。将这些部分结合起来应该会创建一个更好的网络。有的后代当然会继承不好的部分,有的后代会继承好的部分。

正如 Ray 所建议的那样,在有交叉和没有交叉的情况下试验神经网络的演化可能很有用。由于进化存在随机性,问题是运行大量测试,计算出平均进化速度。

关于进化神经网络以外的东西,我发现 a paper 说使用交叉的算法在解决 all-pairs 最短路径问题 (APSP) 方面优于 mutation-only 算法。

编辑 2:

即使排列问题似乎只适用于某些特定问题,如 neuro-evolution,我认为我们不能对交叉问题说同样的话,因为也许我们遗漏了一些不存在的问题' 好像很适合跨界

我找到了 a free version 关于 neuro-evolution 的基于相似性的交叉的论文,它表明:

  • 使用朴素交叉的算法比 mutation-only 算法执行得更差。

  • 使用基于相似性的交叉,对于所有测试案例,它的性能优于 mutation-only 算法。

  • NEAT 算法有时比 mutation-only 算法执行得更好。

交叉很复杂,我认为缺乏将其与 mutation-only 算法进行比较的研究,可能是因为它的实用性在很大程度上取决于:

  • 它的工程,在特定问题(如排列问题)的函数中。所以我们使用的交叉类型(基于相似性、单点、均匀、边缘重组等)。

  • 以及交配算法。例如,this paper 表明性别遗传算法在解决 TSP 方面明显优于 non-gendered 遗传算法。对于解决另外两个问题,该算法并没有明显优于 non-gendered GA,但优于 non-gendered GA。在这个实验中,雄性是根据它们的健康状况来选择的,而雌性是根据它们产生良好后代的能力来选择的。不幸的是,这项研究没有将结果与 mutation-only 算法进行比较。