web-dev-qa-db-ja.com

人工ニューラルネットワークのベクトル入力?

私の問題はかなり複雑なので、類似した単純化した例を次に示します。

次の情報に基づいて、車のマイルあたりのガロン(燃料消費量)を予測するとします。車の重量はポンド、エンジンのシリンダー数、およびタイプに対応する数です。車両(0 =キューブカー、1 =スタンダードカー、2 =バンなど)と過去1時間の雨量(ガロン単位)。

この情報をすべて取り、それを4次元ベクトル[Weight, Cylinders, Vehicle Class, Rain]にコンパイルするとします。 4時間前からの雨が依然として重要であるため、過去5時間のこれらのベクトルの複数を取得してネットワークにフィードすると、次のようになります。

[Weight 5 hours ago, Cylinders 5 hours ago, Vehicle Class 5 hours ago, Rain 5 hours ago]
[Weight 4 hours ago, Cylinders 4 hours ago, Vehicle Class 4 hours ago, Rain 4 hours ago]
...
[Weight in past hour, Cylinders in past hour, Vehicle Class in past hour, Rain in past hour]

フィードされているため、「現在の雨量」になります

質問:この問題を人工ニューラルネットワークで使用するためにどのようにフォーマットしますか?ネットワークはベクトルを入力として使用できますか?各ノードを単一の値に割り当てる方がよいでしょうか(各ベクトルは、各次元に1つずつ、4つのノードを使用し、その結果、セットには20ノードになります)?

時間の変化のため、HMM/MMの使用を検討しましたが、カテゴリデータのみを扱っているわけではありません。これはクラス用ではなく、純粋な興味から学んでいるだけです。ありがとう!

3
Kyle

スライディングウィンドウアプローチ(NNは、系列の最後のk値を使用するようにトレーニングされています)は、 フィードフォワードニューラルネットワーク

ニューラルネットワークの学習能力に悪影響を与える可能性があるため、冗長な入力値は削除する必要があります(冗長変数を削除するもう1つの利点は、トレーニング時間が短縮されることです)。

[Weight Cylinders VehicleClass Rain5 Rain4 Rain3 Rain2 Rain1]

最初の変更です(「ウィンドウサイズ」がニューラルネットワークベースの予報士の品質に重要な影響を与えるため、異なる数のRain[n]入力)。

また、車両のタイプに1つの数値を使用する代わりに(0 =キューブカー、1 =標準車、2 =バン...) 1-hot encoding を使用する必要があります:

                  <-- Vehicle Class -->
[Weight Cylinders (0.0 ... 1.0 ... 0.0) Rain5 Rain4 Rain3 Rain2 Rain1]    

これははるかにうまく機能しますが、特徴ベクトルははるかに大きくなります(また、データの量によっては、過剰適合の可能性があります)。

Recurrent Neural Networks (-- Long-Short Term Memory バリアントを確認)は、以前のタイムスタンプ(雨の値)の多くのインスタンスを考慮に入れることができ、定義する必要はありません。スライディングウィンドウ。

0
manlio