2

免責事項:私は数学の天才ではありません。また、ニューラルネットワークを作成した経験もありません。だから、私がここでたまたま言ったばかげたことを許してください。;)

機械学習に使われているニューラルネットワークについてはいつも読んでいましたが、簡単な仮想マシンを書いて実験をしていると、別の方法で応用できるのではないかと思い始めました。

具体的には、仮想マシンをニューラルネットワークとして作成できますか?もしそうなら、それはどのように機能しますか(必要に応じて、ここで抽象的な説明を自由に使用してください)?

Joycean Machineのことを聞いたことがありますが、非常に漠然とした説明以外の情報は見つかりません。

編集:ここで私が探しているのは、ニューラルネットワークベースのVMがアセンブリをどのように解釈するかについての正確な説明です。入力はどのように処理されますか?個々の入力はメモリアドレスになりますか?ブレーンストーミングしましょう!

4

3 に答える 3

2

あなたは本当に私の一日の相棒になりました...

すでにトレーニングされたニューラルネットワークは通常のステートマシンと大差ないため、決定論的命令セット用のニューラルネットワークVMを作成する意味はありません。

このようなVMを複数の命令セットまたは不明なセットでトレーニングすることは興味深いかもしれません。ただし、そのようなトレーニングを実行することが実際的であるとは思えません。また、99%の正しいインタプリタでさえ、従来のバイトコードには何の役にも立ちません。

私が考えることができるニューラルネットワークVMの唯一の使用法は、ファジー論理構造またはAIアルゴリズムヒューリスティックを含むプログラムを実行することです。

アイデアを示すためのいくつかのばかげたスタックマシンの例:

push [x1]
push [y1] ;start coord
push [x2]
push [y2] ;end coord
pushmap [map] ;some struct
stepastar ;push the next step of A* heuristics to accumulator and update the map
pop ;do sth with is and pop
stepastar ;next step again
... ;stack top is a map
reward ;we liked the coordinate. reinforce the heuristic
stepastar
... ;stack top is a map
punish ;we didn't like the next coordinate. try something different

ここには明示的なヒューリスティックはありません。ヒューリスティックアルゴリズムを含むすべての状態を*mapに保持すると仮定します。

あなたはそれがばかげているように見え、完全に文脈に敏感ではないことがわかりますが、ニューラルネットワークはオンラインで学習しなければ価値がありません。

于 2009-09-09T20:34:50.540 に答える
1

もちろん。かなり複雑なネットワークで間違いありません。

バイトコード/オペコードの解析の多くは、ニューラルネットワークが優れているパターンマッチングです。

于 2009-09-09T16:19:28.200 に答える
1

あなたは確かにニューラルネットワークでこれを行うことができます-私は簡単に与えられたバイトコードの正しい状態遷移を学ぶのを見ることができました。

入力は次のようになります。

  • スタックの最上位の値
  • 現在のアキュムレータの値
  • 現在の命令ポインタのバイトコード
  • 現在のデータポインタのバイト値
  • 以前のフラグ

出力は次のようになります。

  • 命令ポインタに変更
  • データポインタに変更
  • アキュムレータに変更
  • スタック操作(プッシュ、ポップ、または何もしない)
  • メモリ操作(アキュムレータへの読み取り、アキュムレータへの書き込み、または何もしない)
  • 新しいフラグ

しかし、そもそもなぜこれをやりたいのかわかりません。ニューラルネットワークは、バイトコードを直接実行する場合に比べて、効率が大幅に低下します(十分なトレーニングを行わないと、間違いを犯す可能性があります)。十分なトレーニングデータを作成するためだけに、とにかく正確なバイトコードエバリュエーターを作成する必要があるでしょう。

また、私の経験では、ニューラルネットワークはパターン認識には優れている傾向がありますが、特定のスケール(つまり、数ビット以上)を超えると、論理演算(バイナリ加算やXORなど)の学習には非常に苦手です。したがって、命令セットの複雑さによっては、ネットワークのトレーニングに非常に長い時間がかかる可能性があります。

于 2010-09-23T11:06:33.130 に答える