2

この質問は難しいものです。ニューラル ネットワークに動的入力を与えるにはどうすればよいでしょうか?

この質問に答えることは、コンピューター ビジョンや音声認識以外のアプリケーションにディープ ラーニングを使用する最新の AI の進歩に確実に役立ちます。ニューラルネットワークの素人のために、この問題をさらに説明します。

たとえば、次の簡単な例を見てみましょう。

「三目並べ」のゲームで勝つ、負ける、または引き分けの確率を知る必要があるとします。

したがって、私の入力は、状態 (1-あなた、2-敵、0-空) を表す [3,3] 行列になる可能性があります。

[2. 1. 0.]  
[0. 1. 0.] 
[2. 2. 1.]

以前にトレーニングされた隠れ層、重みの [3,1] 行列が既にあると仮定しましょう。

[1.5]  
[0.5]  
[2.5]

したがって、基本的に 2 つのy(x)=W*xの間の行列乗算で構成される単純な活性化関数を使用すると、出力に次の [3,1] 行列が得られます。

[2. 1. 0.]     [1.5]     [3.5]
[0. 1. 0.]  *  [0.5]  =  [0.5]
[2. 2. 1.]     [2.5]     [6.5]

ソフトマックス関数がなくても、引き分けになる可能性が最も高いことがわかります。

しかし、この同じニューラル ネットワークを 5x5 の三目並べゲームで機能させたい場合はどうすればよいでしょうか?

それは 3x3 と同じロジックを持っていますが、より大きくなっています。ニューラルネットワークはそれを処理できる はずです

次のようなものがあります。

[2. 1. 0. 2. 0.]
[0. 2. 0. 1. 1.]     [1.5]     [?]
[2. 1. 0. 0. 1.]  *  [0.5]  =  [?]                           IMPOSSIBLE
[0. 0. 2. 2. 1.]     [2.5]     [?]
[2. 1. 0. 2. 0.]

しかし、この乗算を計算することは不可能です。次のように、トレーニングされていない重み (この場合は 0 で初期化) が原因でニューラル ネットワークが失敗するため、レイヤーを追加するか、以前にトレーニングしたものを変更してRETRAINする必要があります。

     input            1st Layer        output1
[2. 1. 0. 2. 0.]     [0.  0. 0.]     [6.5 0. 0.]
[0. 2. 0. 1. 1.]     [1.5 0. 0.]     [5.5 0. 0.]
[2. 1. 0. 0. 1.]  *  [0.5 0. 0.]  =  [1.5 0. 0.]
[0. 0. 2. 2. 1.]     [2.5 0. 0.]     [6.  0. 0.]
[2. 1. 0. 2. 0.]     [0.  0. 0.]     [6.5 0. 0.]

   2nd Layer           output1      final output
                     [6.5 0. 0.]
                     [5.5 0. 0.]
[0. 0. 0. 0. 0.]  *  [1.5 0. 0.]  =  [0. 0. 0.]                POSSIBLE
                     [6.  0. 0.]
                     [6.5 0. 0.]

最初のレイヤーを拡張し、重みがゼロの新しいレイヤーを追加したため、結果は明らかに決定的ではありません。ソフトマックス関数を適用すると、ニューラル ネットワークがすべての可能な結果に対して 33.3% の確率を返すことがわかります。もう一度トレーニングする必要があります。

さまざまな入力サイズに適応できる一般的なニューラル ネットワークを作成したいのは明らかですが、この問題の解決策はまだ考えていません。だから、スタックオーバーフローが役立つかもしれないと思った。何千もの頭が一人よりもよく考えます。何か案は?

4

1 に答える 1

0

入力のサイズを固定サイズに変更するだけでなく、畳み込みニューラル ネットワークのソリューションがあります。

Spatial Pyramid Poolingを使用すると、可変サイズの画像を使用して CNN のトレーニングとテストを行うことができます。これは、動的プーリング レイヤーを導入することで実行されます。入力は任意のサイズで、出力は固定サイズであり、次にフィードすることができます。完全に接続されたレイヤー。

プーリングは非常に単純で、各次元 (たとえば 7x7) で多数の領域を定義すると、レイヤーは各特徴マップを重複しない 7x7 領域に分割し、各領域で最大プーリングを実行して、49 要素ベクトルを出力します。これは、複数のスケールで適用することもできます。

于 2016-05-12T17:49:47.183 に答える