3

高レベルのプログラミング言語 (Java、C# など) を再帰型ニューラル ネットワークにコンパイルし、それらを進化させようとした人がいるかどうか知っていますか?

つまり、メモリ使用量を含むプロセス全体がニューラル ネットワークのグラフに格納され、複雑なプログラム (自然言語処理の問題について考える) について話しているということです。

ニューラル ネットワークとは、活性化を拡散する有向加重グラフを意味し、ノードは入力の関数です (単純にするために線形、シグモイド、乗法)。

さらに、それは遺伝的プログラミングで人々が意味することですか、それとも違いはありますか?

4

5 に答える 5

2

ニューラルネットワークは、進化するプログラムには特に適していません。それらの強さは分類にある傾向があります。誰かが試したとしても、聞いたことがありません(ニューラルネットワークにほとんど触れていないことを考えると、驚くことではありませんが、現在、一般的なAI分野で活躍しています)。

ニューラルネットワークがプログラムの生成に役立たない主な理由は、ニューラルネットワークが基本的に数式(関数ではなく数値)を表すためです。数値入力が与えられると、数値出力が得られます。単純な算術よりも複雑なプログラムのコンテキストでこれらを解釈することは困難です。

遺伝的プログラミングは伝統的に純粋な関数型言語であるLispを使用し、プログラムはしばしば樹形図として表示されます(これは時々いくつかのニューラルネットワーク図に似ています-これはあなたの混乱の原因ですか?)。プログラムは、プログラム間でツリーのブランチ全体(関数とそのすべてのパラメーター)を交換するか、ブランチ全体をランダムに再生成することによって進化します。

確かに、これらのトピックの両方について、多くの良い(そして多くの悪い)参照があります-あなたが実際に何に興味を持っているのかが明確でないため、それらをリストすることは控えます。ウィキペディアはこれらのテクニックのそれぞれをカバーしています。良い出発点。

于 2011-02-23T21:23:42.787 に答える
0

遺伝的プログラミングは、ニューラル ネットワークとは大きく異なります。あなたが提案しているのは、遺伝的プログラミングの方針に沿ったものです - プログラムに小さなランダムな変更を加え、おそらく成功したプログラムを「繁殖」させます。それは簡単なことではありません。大規模なプログラム全体で成功するかどうかは疑問です。

プログラムの小さいながらも重要な部分、つまり、進化を試みることができるいくつかの特定の「側面」(パラメーター値など) を持っている部分を抽出する方が運が良いかもしれません。

グーグルはあなたの友達です。

于 2011-02-23T21:18:00.900 に答える
0

一部の高度なウイルス対策プログラムや高度なマルウェアは、正式な文法と遺伝的演算子を使用して、ニューラル ネットワークを使用して相互に進化します。

このトピックに関する論文の例を次に示します。http://nexginrc.org/nexginrcAdmin/PublicationsFiles/raid09-sadia.pdf

出典: 数年前に受講した人工知能のクラス。

于 2011-02-23T21:29:12.763 に答える
0

Genetic-programming.orgを見ると、遺伝的プログラミングによって生成された人間に近い競争力のある結果を発見したと主張しています。

自己進化プログラムや自己改善プログラムについては聞いたことがありません。これらは、genetic-programming.org のような特別な研究ツールとして存在する可能性がありますが、一般的な使用に適したものは何もありません。そして、それらが存在するとしても、アランが述べたように、マルウェア検出のような特別な目的の操作に非常に限定されています.

于 2011-03-09T11:22:05.827 に答える
0

あなたの主な質問に関しては、私の知る限り、プログラミング言語でそれを試みた人は誰もいませんが、そのようなものと比較できる進化計算の分野での研究がいくつかあります(しかし、それは明らかに大げさです比較)。興味深いことに、私は少し前に自己改善コンパイラーについて同様の質問をしました。

遺伝的アルゴリズムと遺伝的プログラミングの違いについては、この質問をご覧ください。

ニューラル ネットワークは、遺伝的アルゴリズムや遺伝的プログラミングとは何の関係もありません。

于 2011-02-24T10:38:58.350 に答える