NeuroEvolution of Augmenting Topologies ( NEAT ) は、進化する人工ニューラル ネットワーク(ニューロ進化技術)を生成するための遺伝的アルゴリズム(GA) であり、2002 年にテキサス大学オースティン校在学中にKenneth StanleyとRisto Miikkulainenによって開発されました。これは、ネットワークの重み付けパラメーターと構造の両方を変更し、進化したソリューションの適合性と多様性のバランスを見つけようとします。これは、3 つの主要な技術の適用に基づいています。つまり、トポロジ間の交差を可能にするために履歴マーカーで遺伝子を追跡すること、イノベーションを保存するために種分化 (種の進化) を適用すること、および単純な初期構造から段階的にトポロジを開発すること (「複雑化」) です。
パフォーマンス
2006年現在、単純な制御タスクでは、NEATアルゴリズムは他の現代の神経進化技術や強化学習法よりも早く効果的なネットワークに到達することが多い。 [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 アルゴリズムの実装の従来の基本的な出発点と見なされています。
拡張機能
rtNEAT
2003 年、スタンレーは NEAT の拡張を考案しました。これにより、ほとんどの遺伝的アルゴリズムで使用されている世代の反復ではなく、リアルタイムで進化が可能になります。基本的な考え方は、集団内の各個体に「生涯」タイマーを設定し、集団を常に評価することです。ネットワークのタイマーが期限切れになると、現在の適応度が調べられ、集団の下位に位置するかどうかが確認されます。下位に位置する場合は、そのネットワークは破棄され、2 つの高適応度の親から生まれた新しいネットワークに置き換えられます。新しいネットワークにはタイマーが設定され、進行中の評価に参加するために集団内に配置されます。
rtNEAT の最初のアプリケーションは、Neuro-Evolving Robotic Operatives (NERO) と呼ばれるビデオ ゲームです。ゲームの第 1 フェーズでは、各プレーヤーがロボットを「サンドボックス」に配置し、望ましい戦術方針に従ってロボットをトレーニングします。ロボットのコレクションがトレーニングされると、第 2 フェーズでプレーヤーは自分のロボットを他のプレーヤーがトレーニングしたロボットと戦わせ、トレーニング レジメンがロボットを戦闘に向けてどの程度準備しているかを確認できます。
段階的な剪定
コリン・グリーンが開発したケン・スタンレーの NEAT の拡張では、進化のプロセス中に候補ソリューションのネットワーク トポロジを定期的に剪定する機能が追加されました。この追加により、無制限の自動成長によって不要な構造が生成されるという懸念が解消されました。
ハイパーニート
HyperNEATは大規模構造の進化に特化しており、もともとCPPN理論に基づいており、活発に研究されている分野です。
いいえ
コンテンツ生成NEAT(cgNEAT)は、ユーザーの好みに基づいてカスタムビデオゲームコンテンツを進化させます。cgNEATを実装した最初のビデオゲームは、Galactic Arms Raceです。これは、プレイヤーの使用統計に基づいて独自のパーティクルシステム武器が進化するスペースシューティングゲームです。[3]ゲーム内の各パーティクルシステム武器は、 NEAT Particlesインタラクティブアートプログラムの進化技術と同様に、進化したCPPNによって制御されます。
odNEAT
odNEATは、マルチロボットシステム向けに設計されたNEATのオンライン分散バージョンです。[4] odNEATは、タスク実行中にロボット自体に搭載されて実行され、人工ニューラルネットワークベースのコントローラーのパラメーターとトポロジを継続的に最適化します。このように、odNEATを実行するロボットは、変化する状況に適応し、タスクを実行する際に新しい動作を学習する可能性があります。オンライン進化プロセスは、物理的に分散されたアイランドモデルに従って実装されます。各ロボットは候補ソリューションの内部集団を最適化し(アイランド内変動)、2台以上のロボットが出会ったときに候補ソリューションを交換します(アイランド間移行)。このように、各ロボットは潜在的に自立しており、進化プロセスは複数のロボット間でのコントローラーの交換を利用して、効果的なコントローラーをより速く合成します。
参照
参考文献
- ^ ab Kenneth O. Stanley および Risto Miikkulainen (2002)。「トポロジーの拡張によるニューラルネットワークの進化」進化計算 10 (2): 99-127
- ^ Matthew E. Taylor、Shimon Whiteson、Peter Stone (2006)。「強化学習領域における進化的および時間的差異法の比較」。GECCO 2006: 遺伝的および進化的計算カンファレンスの議事録。
- ^ Erin J. Hastings、Ratan K. Guha、Kenneth O. Stanley (2009)。「銀河軍拡競争ビデオゲームにおける自動コンテンツ生成」。IEEE Transactions on Computational Intelligence and AI in Games、第 4 巻、第 1 号、245-263 ページ、ニューヨーク: IEEE Press、2009 年。
- ^ Silva, Fernando; Urbano, Paulo; Correia, Luís; Christensen, Anders Lyhne (2015-09-15). 「odNEAT: ロボット コントローラーの分散型オンライン進化アルゴリズム」.進化計算. 23 (3): 421–449. doi :10.1162/evco_a_00141. hdl : 10071/10504 . PMID 25478664. S2CID 20815070.
文献
- Kenneth O. Stanley & Risto Miikkulainen (2002). 「トポロジーの拡張によるニューラルネットワークの進化」(PDF) .進化的計算. 10 (2): 99–127. CiteSeerX 10.1.1.638.3910 . doi :10.1162/106365602320169811. PMID 12180173. S2CID 498161.
- Kenneth O. Stanley & Risto Miikkulainen (2002)。「進化するニューラル ネットワーク トポロジによる効率的な強化学習」(PDF)。遺伝的および進化的計算カンファレンス (GECCO-2002) の議事録。
- Kenneth O. Stanley、Bobby D. Bryant、Risto Miikkulainen (2003)。「適応シナプスの有無による適応ニューラル ネットワークの進化」(PDF)。2003 IEEE 進化計算会議 (CEC-2003) の議事録。
- コリン・グリーン (2004)。「NEAT による段階的検索: 複雑化と単純化の切り替え」。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - Kenneth O. Stanley、Ryan Cornelius、Risto Miikkulainen、Thomas D'Silva、Aliza Gold (2005)。「NERO ビデオ ゲームにおけるリアルタイム学習」(PDF)。人工知能およびインタラクティブ デジタル エンターテイメント カンファレンス (AIIDE 2005) デモ ペーパーの議事録。
- Matthew E. Taylor、Shimon Whiteson、Peter Stone (2006)。「強化学習領域における進化的および時間的差分法の比較」(PDF)。GECCO 2006: 遺伝的および進化的計算カンファレンスの議事録。
実装
- Stanley のオリジナル、C++用の mtNEAT と rtNEAT
- ECJ、JNEAT、NEAT 4J、Java用 ANJI
- C#用 SharpNEAT
- MultiNEAT ( Wayback Machineの MultiNEAT (2021-05-15 アーカイブ)) およびC++とPython用の mtNEAT
- Python用の neat-python
- NeuralFit(正確な実装ではありません)とPython用のneat-python
- JavaおよびC#用のEncog
- Python用のエンドウ豆
- Ruby用 RubyNEAT
- Javascript用の neatjs
- Javascript用の Neataptic (正確な実装ではありません)
- エリクサーのNeat-Ex
- C++用 EvolutionNet
- Go用 goNEAT (プログラミング言語)
外部リンク
- NEAT ホームページ ( Wayback Machineの NEAT ホームページ(2023-12-05 アーカイブ))
- 「UCFの進化的複雑性研究グループ」 - ケン・スタンリーの現在の研究グループ
- NERO: 神経進化型ロボット - rtNEAT の応用例
- GAR: 銀河軍拡競争 - cgNEAT の応用例
- 「PicBreeder.org」 - NEAT で進化した CPPN によって生成されたオンラインの共同アート。
- 「EndlessForms.com」 - Picbreeder の 3D バージョン。CPPN でエンコードされ、NEAT で進化した 3D オブジェクトをインタラクティブに進化させます。
- BEACON ブログ: 神経進化とは何ですか?
- MarI/O - ビデオゲームのための機械学習、スーパーマリオワールドをプレイするためのNEAT学習の実装を示すYouTubeビデオ
- 「GekkoQuant.com」 - NEAT に関するビジュアル チュートリアル シリーズ。R で NEAT を使用して古典的な極バランス問題を解決する方法も含まれています。
- 「人工知能はたった34回の試行でマリオのレベルを学習する」MarI/OプログラムによるNEATの説明
