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.
- Ilya Sutskever, Oriol Vinyals und Quoc V. Le (2014). Sequenz-zu-Sequenz-Lernen mit neuronalen Netzen. Fortschritte in neuronalen Informationsverarbeitungssystemen , 27. ( pdf )
Antworten:
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?
quelle
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 .
quelle
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.
quelle
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.
quelle