4.7 LSTM Long short term memory - NerimanK/Cloud-Computing-Technology---Google-Home GitHub Wiki

Long Short Term Memory-Netzwerke - üblicherweise nur als "LSTMs" bezeichnet - sind eine besondere Art von RNN, die langfristigen Abhängigkeiten erlernen kön-nen. Sie arbeiten sehr gut bei einer Vielzahl von Problemen und sind heute weit verbreitet. LSTMs sind explizit darauf ausgelegt, das langfristige Abhängigkeits-problem zu vermeiden. Sich über lange Zeit an Informationen zu erinnern, ist praktisch ihr Standardverhalten, nicht etwas, das sie nur schwer lernen können.

Alle wiederkehrenden neuronalen Netzwerke haben die Form einer Kette sich wiederholender Module eines neuronalen Netzwerks. Bei Standard-RNNs hat dieses Wiederholungsmodul eine sehr einfache Struktur, z. B. eine einzelne Tanh-Schicht.

lstm

STMs haben auch diese kettenartige Struktur. Das Wiederholungsmodul hat je-doch eine andere Struktur. Anstelle einer einzigen neuronalen Netzwerkschicht gibt es vier, die auf ganz besondere Weise interagieren.

lstm2

Wie In dem obigen Diagramm veranschaulicht wird, trägt jede Zeile einen gesamten Vektor, vom Ausgang eines Knotens zu den Eingängen eines anderen. Die rosafarbenen Kreise repräsentieren punktweise Operationen wie die Vektoraddition, während die gelben Kästchen gelernte neuronale Netzwerkschichten sind. Zusammenführende Zeilen bezeichnen die Verkettung, während eine gegabelte Zeile den kopierten Inhalt und die Kopien an verschiedene Speicherorte verweist. In der unten abgebildeten Abbildung werden die wichtigsten Notationen aufgezeigt.

lstm3

Nutzen und Grundidee von LSTM

Der Nutzen zu LSTMs ist der Zellenstatus, die horizontale Linie, die durch den oberen Teil des Diagramms verläuft. Der Zustand der Zellen ähnelt einem Förderband. Es läuft durch die gesamte Kette, mit nur geringfügigen linearen Wechselwirkungen. Es ist sehr einfach, dass Informationen einfach unverändert weitergeleitet werden.

lstm4

Das LSTM hat die Fähigkeit, Informationen aus dem Zellzustand zu entfernen o-der hinzuzufügen, was durch Strukturen, die als Gates bezeichnet werden, sorgfältig reguliert wird. Gates sind eine Möglichkeit, Informationen optional durchzulassen. Sie setzen sich aus einer sigmoidalen neuronalen Netzschicht und einer punktweisen Multiplikationsoperation zusammen.

lstm5

Die Sigmoid-Schicht gibt Zahlen zwischen Null und Eins aus und beschreibt, wie viel von jeder Komponente durchgelassen werden soll. Ein Wert von null bedeutet "nichts durchlassen", während ein Wert von 1 "alles durchlassen" bedeutet. Ein LSTM verfügt über drei dieser Gates, um den Zellzustand zu schützen und zu steuern.

Funktionsweise von LSTM

Der erste Schritt in einem LSTM besteht darin, zu entscheiden, welche Informationen wir aus dem Zellzustand entfernen werden. Diese Entscheidung wird von ei-ner Sigmoidschicht getroffen, die als "Vergissgateschicht" bezeichnet wird. Sie be-trachtet ht-1 und xt und gibt für jede Zahl im Zellenzustand Ct-1 eine Zahl zwischen 0 und 1 aus. Eine 1 steht für "vollständig behalten", während eine 0 für "voll-ständig aufheben" steht.

Betrachtet wird das ganze nun anhand unserer eines Sprachmodells, das versucht, das nächste Wort basierend auf allen vorherigen vorauszusagen. In einem solchen Problem kann der Zellzustand das Geschlecht des gegenwärtigen Subjekts enthalten, so dass die korrekten Pronomen verwendet werden können. Wenn ein neues Thema angesehen wird, wird das Geschlecht des alten Themas vergessen.

lstm6

Im nächsten Schritt muss entscheiden werden, welche neuen Informationen im Zellstatus gespeichert werden. Dies beinhaltet zwei Teile. Zunächst entscheidet eine Sigmoidschicht, die als "Input Gate Layer" bezeichnet wird, welche Werte ak-tualisiert werden. Als Nächstes erstellt eine Tanh-Schicht einen Vektor mit neuen Kandidatenwerten, C t, der dem Zustand hinzugefügt werden könnte. Im nächsten Schritt werden diese beiden kombinieren, um eine Aktualisierung des Status zu erstellen.

Im Beispiel unseres Sprachmodells möchten wir das Geschlecht des neuen Subjekts zum Zellzustand hinzufügen, um das alte zu ersetzen, das vergessen wird.

lstm7

Es ist jetzt Zeit, den alten Zellenzustand Ct-1 in den neuen Zellenzustand Ct zu aktualisieren. Die vorherigen Schritte haben bereits entschieden, was zu tun ist, wir müssen es nur tun.

Es folgt eine Multiplikation des alten Zustandes mit ft und es werden die Informationen vergessen, welche früher vergessen wurden. Es folgt das Hinzufügen von ∗ C̃ t. Dies sind die neuen Kandidatenwerte, skaliert um das Ausmaß, in dem entschieden wurde, jeden Zustandswert zu aktualisieren.

Im Fall des Sprachmodells wird tatsächlich die Informationen über das Geschlecht des alten Subjekts gelöscht und die neuen Informationen hinzufügt, wie in den vorherigen Schritten entschieden wurde.

lstm8

Schließlich müssen wir entscheiden, was wir ausgeben werden. Diese Ausgabe basiert auf unserem Zellenstatus, ist jedoch eine gefilterte Version. Zuerst wird eine Sigmoid-Schicht ausgeführt, die entscheidet, welche Teile des Zellzustands ausgeben werden sollen. Dann wird der Zellzustand durch tanh gesetzt (um die Werte zwischen -1 und 1 zu drücken) und mit dem Ausgang des Sigmoid-Gates multipliziert, sodass nur die Teile ausgeben werden, für die sich entschieden wurde.

Für das Sprachmodellbeispiel möchte es, da es gerade ein Thema gesehen hat, Informationen für ein Verb ausgeben, falls dies das nächste ist. Es könnte beispielsweise ausgegeben werden, ob das Subjekt ein Singular oder ein Plural ist, sodass gewusst wird, in welche Form ein Verb konjugiert werden soll, wenn dies als Nächstes folgt.

lstm9

Durchlauf eines LSTM anhand eines Beispiels

Für diesen Durchlauf wird der Beispielsatz „Let´s talk about current activities con-cerning the HighNet project“ verwendet und wird mithilfe der unten aufgeführte Abbildung näher erläutert.

Es wird davon ausgegangen, dass unser Netz mit dem Beispielsatz bereits trainiert wurde und nächstmöglichen Wörter folgende sein könnten:

„pricecalculation“

„project planning“

„cost calculation“

Diese bereits vorhergesagten Wörter müssen nun durch die vier interagierenden Schichten die Möglichkeit der Vorhersage, des Ignorierens, des Vergessens und die des Auswählens. In der ersten Schicht wird das Wort „project“ akkrediert, so-mit wird vermutet dass die oben aufgelisteten Wörter als nächstes kommen können. Es folgt eine negative Vorhersage des Wortes „project“ und eine positive Vor-hersage der möglichen Wörter. Es wird mithilfe der Schicht „Ignoring“ ignoriert da das Wort nicht nochmals vorkommen kann. In der „Forgetting“ Schicht wird für das Vergessen des Wortes aus vorherigen Trainings gesorgt. Dadurch dass das Wort „project“ oft genutzt wurde, hat der Speicher unseres Netzes, eine Art Kopie hinterlegt, die nicht vergessen wird und lässt eine Vorhersage eines neuen Wortes präziser treffen. Es kommen nicht nur die möglichen Vorhersagen durch dieses Gate, sondern alte Erinnerungen aus dem Speicher. Die nächste und letzte Schicht ist für das Auswählen des Wortes zuständig. Es sorgt letztendlich für die finale Auswahl des vorhergesagten Wortes. In unserem Fall bedeutet dies, durch das Training hat das Netz gelernt, dass durch das Wort „project“ ein neues Wort im Konext ausgewählt werden muss. So kann beispielsweise das Wort „pricecalculation“, „project planning“ oder „cost calculation“ vorhergesagt werden. Mit der Möglichkeit von LSTM mehrere Schritte in die Vergangenheit zu blicken und damit höchstpräzise Vorhersagen zu treffen. Im Vergleich zum RNN, kann dieses Netz nur einige Schritte zurückblicken.

lstm10