Wird mein LSTM überarbeitet, wenn ich es mit dem Schiebefenster trainiere? Warum scheinen die Leute es nicht für LSTMs zu verwenden?
Für ein vereinfachtes Beispiel nehmen wir an, dass wir die Zeichenfolge vorhersagen müssen:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Ist es schlecht (oder besser?), Wenn ich mein LSTM weiterhin mit den folgenden Minibatches trainiere:
A B C D E F G H I J K L M N, backprop, erase the cell
B C D E F G H I J K L M N O, backprop, erase the cell
.... and so on, shifting by 1 every time?
Bisher habe ich es immer trainiert als:
A B C D E F G H I J K L M N, backprop, erase the cell
O P Q R S T U V W X Y Z, backprop, erase the cell
Wäre es besser, anstatt um eins zu verschieben, das Fenster stattdessen um 2 Einträge zu schieben, usw.? Was würde das bedeuten (in Bezug auf Präzision / Überanpassung)?
Wenn ich den Schiebefenster-Ansatz in einem Feed-Forward-Netzwerk ausführen würde, würde dies zu einer Überanpassung führen? Ich würde ja annehmen, weil das Netzwerk sehr lange denselben Informationsregionen ausgesetzt ist. Zum Beispiel ist es E F G H I J K
für eine lange Zeit ausgesetzt .
Bearbeiten:
Bitte denken Sie daran, dass der Zellenstatus zwischen den Trainingssätzen gelöscht wird, sodass der LSTM zu diesen Zeiten einen "Hammer to Head" hat. Es kann sich nicht erinnern, was vor OPQRSTUVWXYZ war. Dies bedeutet, dass der LSTM niemals lernen kann, dass "O" dem "M" folgt.
Also dachte ich (also meine ganze Frage), warum sollte ich es nicht dazwischen geben (überlappende) Zwischenbatches ... und in diesem Fall nicht mehrere überlappende Minibatches verwenden - für mich würde dies ein reibungsloseres Training ergeben? Letztendlich würde dies ein Schiebefenster für ein LSTM bedeuten.
Einige nützliche Informationen, die ich gefunden habe, nachdem die Antwort akzeptiert wurde:
Das erste Wort der englischen Übersetzung korreliert wahrscheinlich stark mit dem ersten Wort des Ausgangssatzes. Dies bedeutet jedoch, dass der Decodierer Informationen aus 50 Schritten zuvor berücksichtigen muss und dass diese Informationen irgendwie im Vektor codiert werden müssen. Es ist bekannt, dass wiederkehrende neuronale Netze Probleme haben, mit solchen Abhängigkeiten mit großer Reichweite umzugehen. In der Theorie sollten Architekturen wie LSTMs in der Lage sein, damit umzugehen, aber in der Praxis sind Abhängigkeiten mit großer Reichweite immer noch problematisch.
Beispielsweise haben Forscher festgestellt, dass die Umkehrung der Quellsequenz (Rückspeisung in den Codierer) wesentlich bessere Ergebnisse liefert, da der Weg vom Decodierer zu den relevanten Teilen des Codierers verkürzt wird. In ähnlicher Weise scheint das zweimalige Einspeisen einer Eingabesequenz einem Netzwerk dabei zu helfen, sich Dinge besser zu merken. Wenn zum Beispiel ein Trainingsbeispiel "John ging nach Hause" lautet, würden Sie "John ging nach Hause John ging nach Hause" als eine Eingabe an das Netzwerk senden.
Bearbeiten Sie nach dem Akzeptieren der Antwort:
Einige Monate später bin ich eher geneigt, den Schiebefenster-Ansatz zu verwenden, da er die Daten besser nutzt. Aber in diesem Fall möchten Sie BCDEFGHIJKLMNO wahrscheinlich nicht direkt nach ABCDEFGHIJKLMNO trainieren. Mischen Sie stattdessen Ihre Beispiele, um alle Informationen schrittweise und gleichmäßig in Ihr LSTM " einzupinseln". Gib es HIJKLMNOPQRSTU nach ABCDEFGHIJKLMNO usw. Das hängt direkt mit dem katastrophalen Vergessen zusammen. Überwachen Sie den Validierungs- und Testsatz wie immer genau und hören Sie auf, sobald Sie feststellen, dass die Fehler ständig zunehmen
Durch die Verwendung von synthetischen Verläufen kann das Problem "Hammer to Head" verbessert werden. Hier können Sie den Vorteil sehen: (Die verknüpfte Antwort erläutert den Vorteil langer Sequenzen.) Https://datascience.stackexchange.com/a/32425/43077
LSTMs erfordern kein Schiebefenster von Eingaben. Sie können sich daran erinnern, was sie in der Vergangenheit gesehen haben, und wenn Sie nacheinander Trainingsbeispiele eingeben, wählen sie das Fenster mit der richtigen Größe von Eingaben aus, die sie sich selbst merken möchten.
LSTMs sind bereits anfällig für Überanpassungen. Wenn Sie viele redundante Daten mit einem Schiebefenster einspeisen, ist es wahrscheinlich, dass sie überanpassen.
Andererseits ist für die Vorhersage von Zeitreihen mit Feedforward-Neuronalen Netzen ein Schiebefenster erforderlich, da FNNs eine Eingabe mit fester Größe erfordern und keinen Speicher haben. Dies ist die natürlichste Methode, um Zeitreihendaten einzugeben.
Ob der FNN zu stark angepasst wird oder nicht, hängt von seiner Architektur und Ihren Daten ab. In diesem Fall werden jedoch alle Standard-Regularisierungstechniken angewendet. Sie können beispielsweise versuchen, ein kleineres Netzwerk, L2-Regularisierung, Dropout usw. auszuwählen.
quelle