複数の出力回帰のためのニューラルネットワーク


10

34の入力列と8つの出力列を含むデータセットがあります。問題を解決する1つの方法は、34の入力を受け取り、各出力列に対して個別の回帰モデルを構築することです。この問題は、特にニューラルネットワークを使用して、1つのモデルだけで解決できるかどうか疑問に思っています。

多層パーセプトロンを使用しましたが、線形回帰のように複数のモデルが必要です。シーケンスツーシーケンス1の学習は実行可能なオプションですか?TensorFlowを使用してみましたが、float値を処理できないようです。

特にニューラルネットワークを使用して1つの統合モデルのみを使用してこの問題に取り組むための提案があれば、高く評価されます。

  1. Ilya Sutskever、Oriol Vinyals、&Quoc V. Le(2014)。ニューラルネットワークを使用したシーケンス間学習 神経情報処理システムの進歩、27。(pdf

何が問題か?
TEG-モニカを2017年

1
(任意の近い電位の有権者へ:これはプログラミングの問題ではありませんそれは上のトピックをオフになります。スタックオーバーフロー。)
GUNG -復活モニカ

ここで「シーケンスからシーケンスへ」オプションを明確にできますか?NNで働く人々に馴染みがあるかどうかはわかりませんが、私にはわかりません。
ガン-モニカの回復

RNNを使用したシーケンス間モデリング。 papers.nips.cc/paper/...
sjishan

MultiOutputRegressor()を試すことができます。これはこの種の問題に
有効です

回答:


6

複数の結果を持つニューラルネットは、 結果の次元が場合、の次元は。

Y=γ+V1Γ1+ϵV1=a(γ2+V2Γ2)V2=a(γ3+V3Γ3)VL1=a(γL+XΓL)
[ γ 1Γ 1 ] PのV 1 + 1 × 8N×8[γ1,Γ1](pV1+1)×8

つまり、各結果は非表示レイヤーのすべてのパラメーターを共有し、最上位の派生変数を取得してそれを結果に関連付けるためのパラメーターが異なるだけであると想定しているということです。

これはあなたの文脈にとって現実的な仮定ですか?


4

最初に、generic_userのコメントはショーストッパーだと思っていましたが、そうではないことに気づきました。

d個の異なるネットワークをd個の異なる出力でトレーニングすると、各ネットワークは他のものを考慮せずにその次元に適合します。

しかし、1つのネットワークをd出力でトレーニングし、すべての出力を逆伝搬に使用すると、ネットワークのすべてのレイヤーの各重みが調整され、すべてのd出力がより正確になります。

つまり、各ネットワークパラメータは勾配の合計によって調整され(各出力がこのパラメータの「小刻み」でどのように変化するか)、選択された上または下方向に調整すると、全体的に調整された場合でも、より正確な出力が得られます。そのように重み付けすると、出力の一部の次元の精度が低下します。

つまり、はい、各出力を最終的に区別するものは、最後のレイヤーでエンコードされた線形方程式にすぎませんが、1つのマルチ出力ネットワークをトレーニングすると、すべてのレイヤーが、その最後のレイヤーをよりよく機能できるもので提示するのが良くなります。したがって、出力間の関係はこのアーキテクチャによって説明されることになります。

深いネットワークが入力間の「構成」関係を利用して浅いネットワークよりも優れているのと同じように、アーキテクチャに出力の既知の関係を反映させることにより、完全に接続されたネットよりも優れた性能を発揮できる場合があります。


多変量回帰では、そのターゲット変数を相互に関連付けるいくつかの(未知の)共分散行列があると想定しています。非表示のレイヤーを明示的に含める必要なく、1つの密なレイヤーがあればこの共分散をキャプチャするのに十分であることを示唆していますか?
thecity2

非表示のレイヤーがその共分散の一部を取り込む必要があることをお勧めします。1つの密な出力層だけでも、並列線形活性化関数を介した活性化関数の集まりです。他の出力ノードへの入力として入力/パスとして相互にチューニングおよび取得するための非表示レイヤーがない場合、出力間の関係は確立できません。
Pavel Komarov

0

1つのニューラルネットワークでそれを行うことができます。しかし、ニューラルネットワークは次のようになります。
入力レイヤー:34ノード(入力列ごとに1つ)
出力レイヤー:8ノード(出力列ごとに1つ)

ニューラルネットワークには、非表示のレイヤーをいくつでも追加できます。したがって、ニューラルネットワークは8つの予測値を出力し、各値は入力の異なる回帰になります。


どの言語のどのパッケージがサポートするのですか?
Arpit Sisodia

0

私も同じことを考えていました。ここに私のアイデアがあります:

出力がいくつかの隠されたパターンを共有している場合、トレーニングはすべての出力の回帰を同時に学習することから利益を得ることができると思います。

出力ごとにニューラルネットワークを構築するアーキテクチャを試すのは興味深いでしょうが、すべてのニューラルネットワークはいくつかの層(たとえば、前半の層)を共有しています。次に、各ニューラルネットワークを同時にトレーニングできます。学習ループ内では、各ニューラルネットワークは1つのステップ(1つのバッチ)で順番にトレーニングされます。

これは知識伝達と似ていますが、知識伝達では、各ニューラルネットワークが完全にトレーニングされてから、その一部を再利用して別のニューラルネットワークをトレーニングする点が異なります。

誰かがこれについて以前に考えたことがあるに違いないが、私はそれについて言及していない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.