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