这是关于算法本身的问题,而不是任何代码,因此我没有提供任何代码。
我当前正在创建自己的NEAT实现,并且有一个(相当少的)问题我找不到答案。
创建下一代时,(神经网络的)基因组会以多种方式突变。如果这些突变是结构性突变,并且相同的突变在两个不同的基因组中独立发生,则必须给突变赋予相同的创新编号(顺便说一句,实施起来很麻烦)。因此,如果同一代中在输入节点2和输出节点1之间多次出现新连接,则将其视为相同的突变。我的问题与创建新节点有关:什么构成相同的突变?
因此,在现有链接的中间创建了一个新节点,禁用了旧的连接基因,并创建了两个新的连接基因。如果节点突变发生在相同的两个节点之间,那么我目前实施的NEAT方式将其视为相同。它是否正确?
问题在于,两个突变体现已失效的基因可能具有不同的创新编号。我做错了吗?如果节点突变发生在同一连接基因上,是否应该认为它是相同的?
谢谢!