0

在寫整齊的算法論文中,作者指出NEAT兩個相同的基因有不同的創新數字

一個可能的問題是,如果發生由它相同的結構創新將在同一代收到不同的創新數字不止一次機會。但是,通過保留當代發生的創新清單,可以確保當相同的結構通過同一代中的獨立突變不止一次產生時,每個相同的突變被賦予相同的創新數。

這很有道理,因爲您不希望相同的基因以不同的創新數字結尾。如果他們這樣做了,當跨越兩個具有相同基因但創新數不同的基因組時,會出現問題,因爲您最終會得到一個來自每個父代的每個基因副本的後代,從而創建兩次相同的連接。

對我來說什麼沒有意義,但是如果在兩個基因之間發生突變會發生什麼,然後在下一代代發生同樣的突變?在這篇文章中,很清楚的是,只保留當前一代的突變列表,以避免「創新數量的爆炸」,但沒有具體說明如果發生相同突變跨越不同代。

您是否保留了全球基因對列表及其相應的創新編號以防止此問題?是否有理由說明爲什麼這篇論文只說明瞭如果在同一代中發生相同的突變並且不考慮跨代突變的情況會發生什麼?

+1

檢查NEAT用戶頁面的[常規NEAT方法學常見問題](https://www.cs.ucf.edu/~kstanley/neat.html#FAQ2),特別是第9個(倒數第三個)地址這個問題。 – zegkljan

+0

完美!謝謝! –

回答

1

不可以。您不保留基因對的全局列表。如果你想避免發生同樣的突變,你可以。但是我想指出的是:並不重要。同一突變發生的唯一影響是您將進行一些不必要的計算,您的全球創新數量將會增加。

然而,對於未來的基因組,他們不可能有兩個創新數字是相同的創新。

匹配基因遺傳 隨機,而不相交的基因(那些不在中間匹配)和過量 基因(那些不到底匹配)被從更加貼合母繼承

因此,當兩個相同的創新發生時,他們將是一個不相交或過剩的基因。這些將從更適合的親本繼承,並且只有一個親本可以更適合,所以後代永遠不會擁有相同的創新基因。

+0

它會被允許不使用創新數字嗎? –

+1

當然!我根本沒有在我的[神經進化庫](https://github.com/wagenaartje/netaptic)中使用創新數字。我使用[pairing function](https://en.wikipedia.org/wiki/Pairing_function)爲每個連接基因創建一個唯一的編號(提供'from'索引和'to'索引作爲輸入)。如果兩個基因組具有相同的唯一編號:共同基因,否則:過量基因。 –

相關問題