ニューラルネットワークの構造をどのようにゲノムにエンコードすればよいですか?


14

決定論的な問題空間のために、最適なノードとリンク構造を持つニューラルネットワークを見つける必要があります。遺伝的アルゴリズムを使用して多くのニューラルネットワークをシミュレートし、問題領域に最適なネットワーク構造を見つけたいと思います。

このようなタスクに遺伝的アルゴリズムを使用したことはありません。実際的な考慮事項は何ですか?具体的には、ニューラルネットワークの構造をどのようにゲノムにエンコードする必要がありますか?

回答:


12

「メタヒューリスティックの本質」のセクション4.2には、遺伝的アルゴリズムを介してグラフ構造をエンコードする別の方法に関する豊富な情報があります。

特に進化しているANNに関して、私は個人的にこの種のことを「ゼロから」実装する傾向はありません。

神経進化の分野はしばらく前から存在しており、拡張トポロジーの神経進化(NEAT)などのいくつかの方法の実装には、多くの実際的な経験の結果が組み込まれています。

上記のリンクによると:

また、数百万の接続を持つニューラルネットワークを進化させ、タスクドメインの幾何学的規則性を活用できるHyperNEATと呼ばれるNEATの拡張機能も開発しました。HyperNEATページには、出版物へのリンクとアプローチの一般的な説明が含まれています。


その「メタヒューリスティックの本質」は非常に興味深いようです!Mゲームでは純粋なMCTSは決して最適ではないため、これは実際にMオートマトンのロードマップ上にあるものです。メタヒューリスティックwikiから:「コンピュータサイエンスと数学的最適化において、メタヒューリスティックは、最適化問題に対する十分に良い解決策を提供する可能性のあるヒューリスティック(部分検索アルゴリズム)を検索、生成、または選択するために設計された高レベルの手順またはヒューリスティックです。特に、不完全または不完全な情報、または計算能力が限られている場合。」
デューク

4

進化的アルゴリズムを使用してニューラルネットワークを進化させることを、神経進化と呼びます。

一部の神経進化アルゴリズムは、固定トポロジのニューラルネットワークの重みのみを最適化します。それはあなたが望むものとは違うように聞こえます。他の神経進化アルゴリズムは、ニューラルネットの重みトポロジの両方を最適化します。これらの種類のアルゴリズムは、目的により適しているように思われ、TWEANN(トポロジーおよび重み進化ニューラルネットワーク)と呼ばれることもあります。

人気のあるアルゴリズムの1つはNEATと呼ばれ、多数の実装があり、そのうちの1つがあなたの好きな言語で書かれていることが望ましい場合にのみ、おそらく開始するのに適した場所です。それは少なくとも作業するためのベースラインを提供します。

NEATは、グラフ構造としてニューラルネットワークゲノムを直接エンコードします。突然変異は、新しいリンクを追加することにより(以前に接続されていない2つのノードを接続することにより)、または新しいノードを追加することにより(既存の接続を分割することにより)ネットワークの構造に作用するか、グラフのエッジに関連付けられた重みの変更にのみ作用します(突然変異と呼ばれます)重み)。この特定のアルゴリズムが機能するANNのサイズの大きさを知るために、100または200を超えるノードで苦労する可能性があります。

よりスケーラブルなTWEANNがありますが、それらはより複雑であり、生成される構造の種類について仮定を行いますが、実際には必ずしも生産的とは限りません。たとえば、ニューラルネットワークの構造をエンコードする別の方法は、文法(たとえばLシステム)によって繰り返し展開されるシードパターンの積としてです。より大きな構造をより簡単に探索することができますが、それらは文法によって生成されるため、特徴的な自己反復的な感じがあります。HyperNEATは、NEATの一般的な拡張機能であり、異なる種類の仮定(重みのパターンはジオメトリの関数として簡単に表現できる)を行い、その仮定が特定のドメインに適合する場合、数百万の接続を持つANNに拡張できます。

さまざまなテクニックを観察したい場合は、トップリンクにリンクされたいくつかの調査論文があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.