Neuronales Netzwerk für Regression mit mehreren Ausgaben


10

Ich habe einen Datensatz mit 34 Eingabespalten und 8 Ausgabespalten. Eine Möglichkeit, das Problem zu lösen, besteht darin, die 34 Eingaben zu verwenden und für jede Ausgabespalte ein individuelles Regressionsmodell zu erstellen. Ich frage mich, ob dieses Problem mit nur einem Modell gelöst werden kann, insbesondere mit Neural Network.

Ich habe ein mehrschichtiges Perzeptron verwendet, aber das erfordert mehrere Modelle, genau wie die lineare Regression. Kann das Lernen von Sequenz zu Sequenz 1 eine praktikable Option sein? Ich habe versucht, TensorFlow zu verwenden. Es scheint nicht in der Lage zu sein, Float-Werte zu verarbeiten.

Jeder Vorschlag, dieses Problem mit nur einem einheitlichen Modell zu lösen, das speziell ein neuronales Netzwerk verwendet, wird geschätzt.

  1. Ilya Sutskever, Oriol Vinyals und Quoc V. Le (2014). Sequenz-zu-Sequenz-Lernen mit neuronalen Netzen. Fortschritte in neuronalen Informationsverarbeitungssystemen , 27. ( pdf )

Was ist das Problem?
TEG - Stellen Sie Monica

1
(Für potenzielle enge Wähler: Dies ist keine Programmierfrage. Es wäre kein Thema bei Stack Overflow .)
Gung - Reinstate Monica

Können Sie hier die Option "Sequenz zu Sequenz" erläutern? Ich weiß nicht, ob es Leuten bekannt sein wird, die mit NNs arbeiten, aber mir nicht.
Gung - Reinstate Monica

Sequenz-zu-Sequenz-Modellierung mit RNN. paper.nips.cc/paper/…
sjishan

Sie können MultiOutputRegressor () ausprobieren. Dies funktioniert für diese Art von Problemen
Subham Sarkar

Antworten:


6

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

Das heißt, Sie würden davon ausgehen, dass jedes Ergebnis ALLE Parameter in den verborgenen Ebenen gemeinsam hat und nur unterschiedliche Parameter hat, um die oberste abgeleitete Variable zu nehmen und sie mit dem Ergebnis in Beziehung zu setzen.

Ist dies eine realistische Annahme für Ihren Kontext?


4

Zuerst dachte ich, der Kommentar von generic_user sei ein Show-Stopper, aber mir wurde nur klar, dass dies nicht der Fall ist:

Wenn ich d verschiedene Netzwerke auf d verschiedenen Ausgängen trainiere , wird jedes ohne Rücksicht auf die anderen an diese Dimension angepasst.

Wenn ich jedoch ein Netzwerk mit d Ausgängen trainiere und alle Ausgänge für die Backpropagation verwende, wird jedes Gewicht in jeder Schicht im Netzwerk so angepasst, dass alle d Ausgänge genauer sind.

Das heißt: Jeder Netzwerkparameter wird durch eine Summe von Gradienten angepasst (wie sich jeder Ausgang mit einem " Wackeln " in diesem Parameter ändert), so dass das Einstellen in die gewählte Aufwärts- oder Abwärtsrichtung insgesamt eine genauere Ausgabe bewirkt - selbst wenn der Das Gewicht auf diese Weise führt dazu, dass einige Abmessungen der Ausgabe weniger genau sind.

Also, ja, das, was letztendlich jede Ausgabe unterscheidet, ist nur eine lineare Gleichung, die in der letzten Schicht codiert ist, aber beim Training eines Netzwerks mit mehreren Ausgängen wird jede Schicht besser darin, dieser letzten Schicht etwas zu präsentieren, das es ihr ermöglicht, ihre Arbeit besser zu erledigen . Daraus folgt, dass die Beziehungen zwischen den Ausgängen durch diese Architektur berücksichtigt werden.

Möglicherweise können Sie eine bessere Leistung als ein vollständig verbundenes Netz erzielen, indem Sie dafür sorgen, dass Ihre Architektur alle bekannten Beziehungen in der Ausgabe widerspiegelt, genauso wie tiefe Netzwerke eine bessere Leistung erzielen als flache, indem Sie "kompositorische" Beziehungen zwischen Eingaben ausnutzen .


Eine multivariate Regression setzt voraus, dass es eine (unbekannte) Kovarianzmatrix gibt, die diese Zielvariablen miteinander in Beziehung setzt. Schlagen Sie vor, dass nur eine dichte Schicht ausreicht, um diese Kovarianz zu erfassen, ohne dass versteckte Schichten explizit eingeschlossen werden müssen?
Thecity2

Ich schlage vor, dass versteckte Schichten einen Teil dieser Kovarianz erfassen müssen. Eine dichte Ausgangsschicht allein ist nur eine Reihe paralleler linearer Regressoren durch Aktivierungsfunktionen. Es kann keine Beziehung zwischen Ausgängen hergestellt werden, wenn es keine verborgene Ebene gibt, auf der sie sich gegenseitig abstimmen und als Eingabe / Weitergabe als Eingabe für andere Ausgabeknoten verwenden können.
Pavel Komarov

0

Sie können dies mit nur einem neuronalen Netzwerk tun. Ihr neuronales Netzwerk sollte jedoch folgendermaßen aussehen:
Eingabeebene: 34 Knoten (einer pro Eingabespalte)
Ausgabeschicht: 8 Knoten (einer pro Ausgabespalte)

Sie können beliebig viele und so große wie versteckte Ebenen im neuronalen Netzwerk hinzufügen. Das neuronale Netzwerk gibt also 8 vorhergesagte Werte aus und jeder Wert ist eine andere Regression der Eingaben.


Welches Paket von welcher Sprache unterstützt das?
Arpit Sisodia

0

Ich habe mich das gleiche gefragt; Hier sind meine Ideen:

Ich nehme an, wenn die Ausgaben einige versteckte Muster aufweisen, kann das Training davon profitieren, gleichzeitig die Regression für alle Ausgaben zu lernen.

Es wäre interessant, eine Architektur auszuprobieren, in der Sie für jede Ausgabe ein neuronales Netzwerk erstellen, aber alle neuronalen Netzwerke teilen sich einige Schichten (z. B. die Schichten der ersten Hälfte). Dann könnten Sie jedes neuronale Netzwerk gleichzeitig trainieren: Innerhalb der Lernschleife wird jedes neuronale Netzwerk einen Schritt (mit einem Stapel) nacheinander trainiert.

Dies wäre ähnlich wie beim Wissenstransfer, jedoch mit dem Unterschied, dass beim Wissenstransfer jedes neuronale Netzwerk vollständig trainiert wird, bevor ein Teil davon zum Trainieren eines anderen neuronalen Netzwerks wiederverwendet wird.

Ich wette, jemand hat schon einmal darüber nachgedacht, aber ich habe keinen Hinweis darauf.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.