我目前正在 Swift 中实现原始的 NEAT 算法。
查看 Stanley 原始论文中的图 4,在我看来,如果假定父节点 1 是最合适的父节点并且从父节点 2 随机选择连接,那么节点 5 可能没有(启用的)传出连接。
我对交叉函数的理解是否正确,它确实会导致节点没有传出连接吗?
我目前正在 Swift 中实现原始的 NEAT 算法。
查看 Stanley 原始论文中的图 4,在我看来,如果假定父节点 1 是最合适的父节点并且从父节点 2 随机选择连接,那么节点 5 可能没有(启用的)传出连接。
我对交叉函数的理解是否正确,它确实会导致节点没有传出连接吗?
连接基因中的禁用/启用位指示它是否应在网络计算中表示。
这是一个神经网络及其相应的连接基因,它们代表了网络的布局等。在网络的计算中表示从 1 -> 3 的权重为 0.1 的顶部连接基因。从 2 -> 3 开始,权重为 0.4 的底部连接基因在网络的计算中不表示。
计算网络:
1633 * 0.1 = 163.3
给定示例中的权重,该网络的输出为 163.3
假设地,如果两个连接基因的启用位都设置为真(这可能在未来发生,引用论文:“禁用的基因可能在未来几代人中再次启用”),那么网络的输出将是:
(1633 * 0.1) + (10 * 0.4) = 167.3
为了回答您的问题,无论基因中的位是启用还是禁用,两个节点之间的连接仍然存在于网络中,但是,如果基因中的位被禁用,则在网络输出时不使用它计算如上所示。