NeuroEvolution of Augmenting Topologies ( NEAT ) は、進化する人工ニューラルネットワーク(ニューロエボリューション技術)を生成するための遺伝的アルゴリズム(GA)であり、2002年にテキサス大学オースティン校に在籍していたケネス・スタンレーとリスト・ミイックライネンによって開発されました。このアルゴリズムは、ネットワークの重み付けパラメータと構造の両方を変更し、進化したソリューションの適合性と多様性のバランスを見つけようとします。NEATは、3つの主要な技術の適用に基づいています。1つ目は、履歴マーカーを使用して遺伝子を追跡し、トポロジー間の交叉を可能にすること。2つ目は、種分化(種の進化)を適用して革新性を維持すること。3つ目は、単純な初期構造からトポロジーを段階的に発展させること(「複雑化」)です。
単純な制御タスクでは、NEATアルゴリズムは、 2006年時点で他の現代的なニューロ進化的手法や強化学習手法よりも、効果的なネットワークに迅速に到達することが多い。[ 1 ] [ 2 ]
従来、ニューラルネットワークのトポロジーは人間の実験者によって選択され、有効な接続重み値はトレーニング手順を通じて学習されます。そのため、適切なトポロジーを決定するために試行錯誤が必要になる場合があります。NEATは、ニューラルネットワークの重み値と適切なトポロジーを同時に学習しようとする、トポロジーと重みを進化させる人工ニューラルネットワーク(TWEANN)の一例です。
GA(遺伝的アルゴリズム)の表現型としてネットワークを符号化するために、NEATは直接符号化方式を採用しています。これは、すべての接続とニューロンが明示的に表現されることを意味します。これに対し、間接符号化方式では、すべての接続とニューロンを明示的に表現することなくネットワークを構築できるルールが定義されており、よりコンパクトな表現が可能になります。
NEATアプローチは、入力ニューロンと出力ニューロンのみからなるパーセプトロンのようなフィードフォワードネットワークから始まります。進化が段階的に進むにつれて、接続経路に新しいニューロンを挿入したり、(以前は接続されていなかった)ニューロン間に新しい接続を作成したりすることで、ネットワークのトポロジーの複雑さが増していきます。
競合する慣習の問題は、表現型における情報の表現方法が複数ある場合に発生します。たとえば、ゲノムにニューロンA、B、Cが含まれ、[ABC] で表されている場合、このゲノムを (機能的に) 同一だが [CBA] の順序で交配したゲノムと交配すると、情報が欠落した ([ABA] または [CBC]) 子孫が生まれます。実際、この例では情報の 1/3 が失われています。NEAT は、新しい遺伝子が追加されるにつれて増加するグローバル イノベーション ナンバーを使用して遺伝子の履歴を追跡することで、この問題を解決します。新しい遺伝子を追加すると、グローバル イノベーション ナンバーが増加し、その遺伝子に割り当てられます。したがって、ナンバーが大きいほど、その遺伝子は最近追加されたことを意味します。特定の世代で、複数のゲノムで同一の突然変異が発生した場合、それら両方に同じ番号が割り当てられますが、それ以降は突然変異番号は無期限に変更されません。
これらのイノベーション番号により、NEATは互いに交配可能な遺伝子を照合することができる。[ 1 ]
Ken Stanleyによるオリジナルの実装はGPLライセンスで公開されている。これはGNU SchemeインタープリタであるGuileと統合されている。このNEATの実装は、NEATアルゴリズムの実装における一般的な基本出発点とみなされている。
2003年、スタンレーはNEATの拡張機能を考案し、ほとんどの遺伝的アルゴリズムで使用されている世代の反復ではなく、リアルタイムで進化が起こるようにしました。基本的な考え方は、集団内の各個体に「寿命」タイマーを設定し、集団を常に評価することです。ネットワークのタイマーが期限切れになると、現在の適応度が調べられ、集団の下位に近いかどうかが判断されます。もしそうであれば、そのネットワークは破棄され、適応度の高い2つの親から生まれた新しいネットワークに置き換えられます。新しいネットワークにもタイマーが設定され、集団に追加されて継続的な評価に参加します。
rtNEATの最初の応用例は、Neuro-Evolving Robotic Operatives(略称NERO)と呼ばれるビデオゲームです。ゲームの最初のフェーズでは、各プレイヤーが「サンドボックス」内でロボットを配置し、希望する戦術ドクトリンに基づいて訓練します。ロボット群の訓練が完了すると、第2フェーズでは、プレイヤーは自分のロボットを他のプレイヤーが訓練したロボットと戦わせ、訓練方法が戦闘にどれだけ効果的だったかを確認できます。
ケン・スタンレーのNEATをコリン・グリーンが拡張した手法では、進化プロセス中に候補解のネットワークトポロジーを定期的に剪定する機能が追加されている。この追加により、無制限の自動成長が不必要な構造を生み出すという懸念が解消された。
HyperNEATは、大規模構造の進化に特化した技術です。元々はCPPN理論に基づいており、現在も活発な研究分野となっています。
コンテンツ生成型NEAT(cgNEAT)は、ユーザーの好みに基づいてカスタムビデオゲームコンテンツを進化させます。cgNEATを実装した最初のビデオゲームは、プレイヤーの使用統計に基づいて独自のパーティクルシステム武器が進化する宇宙シューティングゲーム「 Galactic Arms Race」です。[ 3 ]ゲーム内の各パーティクルシステム武器は、 NEAT Particlesインタラクティブアートプログラムの進化技術と同様に、進化したCPPNによって制御されます。
odNEAT は、マルチロボットシステム向けに設計された NEAT のオンライン分散バージョンです。[ 4 ] odNEAT は、タスク実行中にロボット自体に搭載されて実行され、人工ニューラルネットワークベースのコントローラのパラメータとトポロジを継続的に最適化します。このようにして、odNEAT を実行するロボットは、タスクを実行する際に変化する状況に適応し、新しい動作を学習する可能性があります。オンライン進化プロセスは、物理的に分散したアイランドモデルに従って実装されます。各ロボットは候補ソリューションの内部集団を最適化し (アイランド内変動)、2 台以上のロボットが出会うと候補ソリューションを交換します (アイランド間移動)。このようにして、各ロボットは潜在的に自己充足可能であり、進化プロセスは、複数のロボット間でコントローラを交換することで、効果的なコントローラをより迅速に合成します。