Schiebefenster führt zu Überanpassung bei LSTM?


15

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 Kfü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:

von hier

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

Antworten:


9

Obwohl die vorherige Antwort von @Imran richtig ist, halte ich es für notwendig, eine Einschränkung hinzuzufügen: Es gibt Anwendungen, bei denen Leute einem LSTM ein Schiebefenster zuführen. Zum Beispiel hier , um Prognosen als betreutes Lernproblem zu definieren.

4(mn+n2+n)mn

Da LSTMs keine Eingabe mit fester Größe erfordern, können sie selbst die optimale Lookback-Nummer finden. Wenn Sie jedoch zuvor eine autoregressive Analyse durchgeführt haben und beispielsweise festgestellt haben, dass der aktuelle Zeitschritt am stärksten mit dem zehnten vorherigen Zeitschritt und nicht mit dem elften oder einem weiter zurückliegenden Zeitschritt korreliert ist, können Sie dies tun Sparen Sie sich möglicherweise Zeit beim Training, indem Sie Sequenzen mit fester Länge eingeben. Diese Art des Niederwerfens macht jedoch den Zweck eines LSTM zunichte.

Wenn Ihre Daten nicht reich genug für einen LSTM sind, würde ich empfehlen, etwas viel Einfacheres wie ein autoregressives Modell auszuprobieren und sich nach oben zu arbeiten.

BEARBEITEN (auf einen Kommentar antworten):

Überlappende Sequenzen werden als Eingabe verwendet, insbesondere wenn die Sequenz sehr lang ist (obwohl natürlich 'lang' relativ ist). Obwohl LSTMs für lange Sequenzen besser sind als ein Vanille-RNN, können sie sich bei sehr langen Sequenzen immer noch schwer an Zeitschritte vom Beginn einer Sequenz erinnern. Dies führte zu Dingen wie dem bidirektionalen LSTM, der die Sequenz vorwärts und rückwärts liest und die Belichtung des Netzwerks am Anfang und Ende jeder Eingabesequenz verbessert. Das Prinzip ist dasselbe mit überlappenden Sequenzen, obwohl ich argumentieren würde, dass überlappende Sequenzen intuitiver sind.


Vielen Dank, ich verstehe immer noch nicht, ob LSTM mit nicht überlappenden Chargen trainiert werden sollte / sollte. Der Beitrag, den Sie mögen, ist wertvoll, er behandelt jedoch nur Feed-Forward-Netze und geht nicht auf die Vorteile / Gefahren der überlappenden LSTM-Minibatches während des Trainings ein. @Imran hat auch nicht über das "Rezept" gegen überlappende Minibatches gesprochen - mein erster Kommentar zu seinem Beitrag.
Kari

Ich habe meine Frage so bearbeitet, dass sie den Kommentar enthält
Kari

Viele tolle Infos!
Imran

@Kari Ich habe meine Antwort geändert. Hilft das?
StatsSorceress

5

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.


Vielen Dank! Ich würde argumentieren, dass der Zellstatus zwischen den Trainingssätzen gelöscht wird, sodass LSTM zu diesen Zeiten einen "Hammer to Head" haben wird. Es kann sich nicht erinnern, was vor OPQRSTUVWXYZ war. Dies bedeutet, dass LSTM niemals lernen kann, dass "O" dem "M" folgt. Also überlegte ich mir, warum ich es nicht dazwischen geben sollte (überlappende) Chargen ... und in diesem Fall warum nicht mehrere überlappende Minibatches verwenden - für mich würde dies ein reibungsloseres Training ergeben?
Kari

Letztendlich würde das ein Schiebefenster für einen LSTM bedeuten
Kari

Es ist nicht notwendig, den Zellstatus zwischen den Trainingsstapeln zu löschen, obwohl eine Rückübertragung weiter hinten natürlich nicht möglich ist.
Jan van der Vegt

Ich habe es ausprobiert, und selbst bei einer Lernrate von 0 sprang der Fehler winzig auf und ab, weil falsche Zellzustände während des Trainings als "Erbe" wiederverwendet wurden. Ich konnte mit diesem Ansatz nicht mehr als 6 Schichten stapeln - es wurde zu chaotisch und konvergierte nicht. Durch das Zurücksetzen des Zellstatus auf Null nach jedem Backprop konnte ich 150 Schichten mit 64 Neuronen in jeder Schicht stapeln und mit einer Lernrate von 0,001 und einem Impuls von 0,9 trainieren (ich verwende LayerNormalization, deshalb ist die Lernrate in meinem Fall so hoch).
Kari

1
Dies bedeutet, dass LSTM mit "Legacy-Zellzuständen" instabil und unzuverlässig wird. Es beginnt mit der Arbeit an einem neuen Minibatch, dessen Entscheidungen auf dem letzten Zellzustand (des vorherigen Minibatch) basieren , der nicht in vollem Umfang korrigiert wurde. Das Löschen des Zellzustands beseitigt diesen fundamentalen Fehler, lässt LSTM jedoch Amnesie erleben
Kari
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.