我的 NEAT 实现始终无法完全解决 XOR。物种汇聚在不同的次优网络上,这些网络映射所有输入示例,但一个正确(最常见的是 (1,1,0))。你对为什么会这样有任何想法吗?
一些可能相关的信息:
- 我在每个非输入节点 1/(1 + exp(-x)) 中使用一个简单的逻辑激活函数。
- 经过大量时期后,一些权重的大小似乎变得相当大。
- 我使用平方和误差作为适应度函数。
- 任何超过 0.5 的都被认为是 1(用于将输出与预期进行比较)
这是演进网络的一个示例。节点 0 是偏置节点,另一个红色节点是输出,绿色是输入,蓝色是“隐藏”的。忽略连接上的标签。

编辑:按照NEAT 用户页面上的 XOR 建议使 sigmoid 函数的增益变陡,在 ca 50 epochs 后首次发现了一个解决 XOR 的网络。但大多数时候它仍然失败。这是成功解决异或的网络:
