如何保留 "building blocks" 的神经网络?

How to preserve "building blocks" of neural net?

我正在制作一种带有神经元和 "synapses" 的神经网络。它有点像图灵斯 b 型网络,连接可以到达任何地方。它从一个随机生成的网络开始,该网络在神经元之间具有随机连接。存在对神经元具有不同影响的电和化学变体。重点:

网络基本上是一系列与其他神经元相连的神经元。我无法弄清楚如何 "crossover" 来根据性能最好的 parent 形成新一代网络。更具体地说,如果我基于单个连接将它们组合起来,我将打破任何潜在的 "structure" 或可能由一组特定的神经元和连接形成的功能。

我考虑过拆分网络地图,比如说,从一个 parent 中取一半,从另一个中取一半,但这仍然可能会破坏可能已创建的任何潜在功能。

很可能我遗漏了一些东西,我正在学习这个。

有什么办法吗?

如果你正在进化网络结构 权重,有一个很棒的算法叫做 NEAT

如果你只进化权重,你有几种可能性,但最基本的一种是使用网络图的权重矩阵作为基因型。然后,可以使用任何连续的 GA 交叉方法(如 SBX 或 BLX-alpha)进行交叉。

破坏功能的问题(最常见的是突变)很常见,可以通过例如适应度共享(NEAT 使用它)或其他一些在一定时间内保护修改过的个体的机制。