5

私はニューラルネットワークの構造を記述するオブジェクトの2つの配列を持っていますが、どのようにそれらを組み合わせて現実的な子孫を生成できますか?もしあなたが - 私はより良いアプローチは、各ノードの重みベクトルのための遺伝的アルゴリズムの検索を実装することだと思う遺伝的アルゴリズムを使用して、2つのニューラルネットワーク構造に基づいて子孫を作成するにはどうすればよいですか?

Node { 
    nodesThatThisIsConnectedTo = [0, 2, 3, 5] // These numbers identify which nodes to collect output from in the preceding layer from based on their index number 
    weights = [0.34, 0.33, 0.76, -0.56] // These are the corresponding weights applied to the mentioned nodes 
} 
+3

ニューラルネットワークのクロスオーバーは複数の理由から困難です。問題を解決するために巧妙な仕組み(歴史的なマーカー)を使用する[NEAT](http://www.cs.ucf.edu/~kstanley/neat.html)を見るとよいでしょう。リンクされた論文(ページの一番下)には、それがどのように/なぜ動作するかについての詳細情報が含まれています。 – DataWraith

+0

2005年の(私が思う)オリジナルの論文を読むと、それはすばらしく書かれ、あなたのすべての質問に答えるでしょう。 – mbatchkarov

答えて

0

chromosome = [ 
    [Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node, Node, Node], 
    [Node, Node, Node], 
]; 

例ノード:「染色体」は、このようになりますGAを使用してロックされます。

各ノードにはベクトルの集合があり、各反復の1つのノードはその重みベクトルを変更します。これは私には、2つの完全なネットワーク間のクロスオーバよりもはるかに高いアプローチのように思えます。