NEAT のすべての新しい接続遺伝子にグローバル イノベーション番号を付ける必要がある理由を見つけることができませんでした。
NEAT に関する私のわずかな知識から、すべてのイノベーション番号は node_in、node_out のペアに直接対応するので、イノベーション番号の代わりにこの ID のペアだけを使用しないのはなぜですか? この革新番号にはどのような新しい情報がありますか? 年表?
アップデート
アルゴリズムの最適化ですか?
NEAT のすべての新しい接続遺伝子にグローバル イノベーション番号を付ける必要がある理由を見つけることができませんでした。
NEAT に関する私のわずかな知識から、すべてのイノベーション番号は node_in、node_out のペアに直接対応するので、イノベーション番号の代わりにこの ID のペアだけを使用しないのはなぜですか? この革新番号にはどのような新しい情報がありますか? 年表?
アップデート
アルゴリズムの最適化ですか?
詳細な回答はできませんが、イノベーション数により、NEAT モデル内の特定の機能が最適化され (遺伝子の種の計算など)、可変長ゲノム間のクロスオーバーが可能になります。NEATではクロスオーバーは必要ありませんが、イノベーション数により可能です。
ここからすべての答えを得ました:
http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf
よく読んだ
NEAT の最初の実装を作成したとき、私は同じことを考えました...なぜイノベーション番号トラッカーを保持するのでしょうか...? そして、なぜそれを一世代だけ使用するのですか? まったく保持せず、接続されているノードと同等のキー値を使用する方がよいのではないでしょうか?
3 回目の改訂を実施している今、ケネス・スタンレーがそれらをどうしようとしたのか、そしてなぜ彼がそれらを 1 世代だけ保持したかったのかがわかります。
接続が作成されると、その瞬間に最適化が開始されます。それはその起源を示しています。同じ接続が別の世代で発生した場合、その最適化が開始されます。世代番号は、共通の祖先に由来するものを区別しようとするため、多くの世代に対して最適化されたものと、生成されたばかりのものを並べることはありません。同じ接続が 2 つのゲノムで見つかった場合、それはその遺伝子が同じ起源に由来するため、整列できることを意味します。
次に、世代のチャンピオンがいると想像してください。配列された遺伝子が同等に扱われるため、一部の遺伝子は 50% の確率で失われます。
何がいいの…?2 つのアプローチを比較する実験は見たことがありません。
Kenneth Stanley も NEAT ユーザー ページでこの問題に対処しています: https://www.cs.ucf.edu/~kstanley/neat.html
イノベーションの記録を永久に残すか、それとも現在の世代だけに残すか。
私の NEAT の実装では、記録は 1 世代だけ保存されますが、永久に保存しても問題はありません。実際、その方がうまくいくかもしれません。ここに長い説明があります:
NEAT の実装で実行全体の記録を保持しなかった理由は、まったく異なる状況で発生した同じ突然変異を何かと呼ぶのは直感的ではないと感じたからです。つまり、何世代も経つと、ネットワーク内の他のすべての接続と比較した同じ接続の「意味」または貢献は、それが何世代も前に現れた場合とは異なる可能性があります。私はこの種の状況の尺度として単一の世代を使用しましたが、それは確かにアドホックです.
とはいえ、機能的に言えば、イノベーションを永遠に維持することに何の問題もないと思います。主な効果は、より少ない種を生成することです。逆に、それらを保持しないと、より多くの種につながります..それらのいくつかは同じものを表していますが、それでも分離されています. どの方法がどのような状況でより良い結果をもたらすかは、現時点では明らかではありません。
種が分岐するにつれて、ある種に出現した接続を別の種に以前に出現したものとは異なる名前で呼ぶことは、種の非互換性を高めるだけであることに注意してください. そもそも互換性がなかったので、これは物事を大きく変えるものではありません。一方、同じ種が以前の世代で追加された接続を追加する場合、それはその種の一部のメンバーがまだその接続を採用していないことを意味する必要があります...したがって、その最初の「バージョン」がその最初の「バージョン」である可能性があります役に立ち始めたつながりが勝ち、もう一方は消滅します。3 番目のケースは、接続がすでに種によって一般的に採用されている場合です。その場合、その種はすでに取得されているため、その種に同じ接続を作成する突然変異はあり得ません。重要な点は、あなたがしないということです
どちらの方法が最も効果的かは、良い質問です。この疑問について興味深い実験結果があれば教えてください。
私の 3 回目の改訂では、両方のオプションが許可されます。結果が得られたら、この回答にさらに情報を追加します。
クロスオーバー中、個人のニューラル ネットワーク内の 2 つの同じノード間の接続を共有する 2 つのゲノムを考慮する必要があります。クロスオーバーの各ステップで両方のゲノムの接続遺伝子を何度も繰り返すことなく、この衝突を検出するにはどうすればよいでしょうか? 簡単: クロスオーバー中に検査されている両方の接続がイノベーション番号を共有している場合、それらは同じ共通の祖先からその接続を受信したため、同じ 2 つのノードを接続しています。
簡単な例: 私が革新番号「i」の特定の接続遺伝子を持つゲノムである場合、私から遺伝子「i」を受け継いだ子供たちは、最終的に 100 世代で互いに交差する可能性があります。私の遺伝子 'i' のこれら 2 つの進化したバージョン (対立遺伝子) がいつ衝突して、両方が取られるのを防ぐ必要があるかを検出する必要があります。同じ遺伝子を 2 つ取得すると、おそらく表現型がループしてクラッシュし、遺伝子型が殺されます。