2016-06-20 8 views
1

Ich versuche derzeit Neural Network zu verwenden, um Regressionsprognosen zu machen.Neuronale Netzwerke Regression: Skalierung der Ausgänge oder Verwendung einer linearen Schicht?

Allerdings weiß ich nicht, was ist der beste Weg, damit umzugehen, wie ich gelesen habe, dass es zwei verschiedene Möglichkeiten gab, Regressionsvorhersagen mit einem NN zu machen.

1) Einige Websites/Artikel schlagen vor, eine letzte Schicht hinzuzufügen, die linear ist. http://deeplearning4j.org/linear-regression.html

Meine letzten Schichten würden so aussehen, denke ich,:

layer1 = tanh(layer0*weight1 + bias1) 

layer2 = identity(layer1*weight2+bias2) 

Ich habe auch bemerkt, dass, wenn ich diese Lösung verwenden, ich in der Regel eine Vorhersage bekommen, die der Mittelwert der Batch-Vorhersage ist. Und das ist der Fall, wenn ich Tanh oder Sigmoid als vorletzte Schicht verwende.

2) Einige andere Websites/Artikel schlagen vor, die Ausgabe auf [-1,1] oder [0,1] Bereich zu skalieren und Tanh oder Sigmoid als letzte Schicht zu verwenden.

Sind diese 2 Lösungen akzeptabel? Welchen sollte man bevorzugen?

Danke, Paul

Antwort

3

würde ich den zweiten Fall vorziehen, in der wir eine Normalisierung und Sigmoidfunktion als Ausgangsaktivierung verwenden und dann die normierten Ausgangswerte die tatsächlichen Werte zurückfahren. Dies liegt daran, dass im ersten Fall, um die großen Werte auszugeben (da die tatsächlichen Werte in den meisten Fällen groß sind), die Gewichtungszuordnung von der vorletzten Schicht zur Ausgabeschicht groß sein müsste. Für eine schnellere Konvergenz muss daher die Lernrate größer gemacht werden. Dies kann jedoch auch dazu führen, dass die früheren Schichten voneinander abweichen, da wir eine größere Lernrate verwenden. Daher ist es ratsam, mit normalisierten Zielwerten zu arbeiten, so dass die Gewichte klein sind und sie schnell lernen. Kurz gesagt, die erste Methode lernt langsam oder kann divergieren, wenn eine größere Lernrate verwendet wird, und andererseits ist die zweite Methode vergleichsweise sicherer zu verwenden und lernt schnell.

+0

Entschuldigung für meine späte Antwort, aber danke für Ihre Antwort. Ich habe versucht, die Ausgabewerte zu skalieren und dann zu entkalken, sowohl im Bereich [0,1] für Sigmoid als auch [-1,1] für Tanh. Der Unterschied in den Ergebnissen für die Genauigkeit ist nicht unglaublich, aber das Modell scheint nie mit Skalierungsausgaben zu divergieren, während es oft divergiert, wenn ich nicht skalierte Werte verwende. –

Verwandte Themen