Recurrent Neural Networks und LSTM

5 min read

Recurrent Neural Networks

Reccurent Neural Networks ist der neueste Algorithmus für sequentielle Daten und werden bei Apple Siri und Googles Voice Search verwendet. Das ist der erste Algorithmus, der sich aufgrund eines internen Speichers seine Eingabe merkt, wodurch er sich perfekt für Machine Learning-Probleme eignet, bei denen sequenzielle Daten zum Einsatz kommen. Es ist einer der Algorithmen hinter den Kulissen der erstaunlichen Erfolge von Deep Learning in den letzten Jahren. In diesem Beitrag zeigen wir die grundlegenden Konzepte von Recurrent Neural Networks. Wir werden die größten Probleme betrachten und finden den Weg diese zu lösen.

Inhaltsverzeichnis:
  1. Einführung
  2. Funktion von Feed-Forward Neuronale Netzen, Recurrent Neuronale Netzen.
  3. Backpropagation durch die Zeit.
  4. Zwei Auffassungen von Standard-RNNs (Exploding Gradients, Vanishing Gradients).
  5. LSTM.
  6. Zusammenfassung.

Einführung

Recurrent Neural Networks (RNN) ist eine starke und robuste Ausführung neuronaler Netzwerke, die heute zu den wichtigsten Algorithmen gehören, weil sie die einzige Algorithmen sind, die über einen internen Speicher verfügen.

RNNs und auch viele andere Algorithmen sind relativ alt im Deep Learning. Sie wurden ursprünglich in den 80er Jahren erfunden. Sie zeigen ihr echtes Potenzial erst bei riesigen Datenmengen. LSTM dagegen wurde in den 1990er Jahren eingeführt.

Die RNNs können sich aufgrund ihres internen Speichers an wichtige Informationen über die eingegangenen Informationen erinnern und den nächsten Schritt vorhersagen.

Dies ist der Grund, warum sie als der bevorzugte Algorithmus für sequentielle Daten wie Zeitreihen, Sprache, Text, Finanzdaten, Audio, Video, Wetter und vieles mehr gelten. Sie können tieferes Verständnis einer Sequenz und eines Kontextes im Vergleich zu anderen Algorithmen ermitteln.

Recurrent Neural Networks erzeugen vorausschauende Ergebnisse in sequentiellen Daten, die andere Algorithmen nicht bieten können.

Wann müssen wir ein Recurrent Neural Network verwenden?

“Es gibt eine Abfolge von Daten und eine zeitliche Dynamik, die die Daten verbindet. Das ist wichtiger als der räumliche Inhalt jedes einzelnen Frames.”

– Lex Fridman (MIT)

Recurrent Neural Networks tauchen überall auf, sie werden z.B. in Software hinter Siri von Apple und Google Translate verwendet.

Wie funktionieren Recurrent Neural Networks

Wir werden zuerst einige wichtige Fakten über die „normalen“ neuronalen Netze mit Feed Forward diskutieren, die Sie kennen müssen, um rekurrente neuronale Netze richtig zu verstehen. Wir betrachten geordnete Daten, bei denen verwandte Dinge aufeinander folgen. Beispiele sind Finanzdaten oder die DNA-Sequenz. Die am weitesten verbreitete Art von sequentiellen Daten sind vielleicht Zeitreihendaten, bei denen es sich nur um eine Reihe von Datenpunkten handelt, die in zeitlicher Reihenfolge aufgelistet sind.

Feed-Forward Neural Networks
Feed-Forward Neural Network

Die neuronalen Netze von RNN und Feed-Forward sind beide nach der Art und Weise benannt, wie diese die Informationen kanalisieren. In einem neuronalen Feed-Forward-Netzwerk werden die Informationen nur in eine Richtung von der Eingabeebene durch die verborgenen Ebenen zur Ausgabeebene verschoben. Die Informationen bewegen sich direkt durch das Netzwerk.

Neuronale Netze mit Feed-Forward haben keine Erinnerung an die Eingangssignale, die sie zuvor erhalten haben, und können daher nicht vorhersagen, was als nächstes kommt. Da ein Feedforward-Netzwerk nur die aktuelle Eingabe berücksichtigt, gibt es keine zeitliche Reihenfolge. Sie können sich einfach an nichts erinnern außer ihrem Training.

Recurrent Neural Networks

In einem RNN durchlaufen die Informationen eine Schleife. Wenn RNN eine Entscheidung trifft, berücksichtigt es die aktuelle Eingabe und auch das, was sie aus den zuvor erhaltenen Eingaben gelernt hat.

Die beiden folgenden Bilder zeigen den Unterschied im Informationsfluss zwischen einem RNN und einem neuronalen Feed-Forward-Netzwerk.

Führen wir jetzt ein Beispiel, um das Konzept des Speichers von RNN zu veranschaulichen.

Ein weiterer guter Weg, um das Konzept des Speichers von RNN zu veranschaulichen, ist es mit einem Beispiel zu erklären.

Stellen Sie sich vor, dass Sie ein normales neuronales Feedforward-Netzwerk haben und das Wort „Neuron“ als Eingabe angeben und es verarbeitet das Wort zeichenweise. Zu dem Zeitpunkt, an dem es den Buchstaben „r“ erreicht, hat es bereits „n“, „e“ und „u“ vergessen, was es fast unmöglich macht, dass dieser Typ eines neuronalen Netzwerks voraussagt, welcher Buchstabe als nächster Schritt kommen wird.

Reccurent Neural Networks fügen der Gegenwart die unmittelbare Vergangenheit hinzu.

Recurrent Neural Networks hat daher zwei Eingänge, die Gegenwart und die Vergangenheit. Dies ist wichtig, weil die Reihenfolge der Daten wichtige Informationen darüber enthält. Aus diesem Grund sehen wir, dass RNN andere Funktionen ausführen können und Algorithmen können das nicht.

Ein neuronales Feed-Forward-Netzwerk weist wie alle anderen Deep-Learning-Algorithmen eine Gewichtungsmatrix für seine Eingaben auf und erzeugt dann die Ausgabe. Beachten Sie, dass RNNs Gewichtungen auf die aktuelle und auch auf die vorherige Eingabe anwenden. Darüber hinaus passen sie ihre Gewichte sowohl für Gradientenabstieg als auch für Backpropagation Through Time an, die wir im nächsten Abschnitt betrachten werden.

Backpropagation Through Time

Um das Konzept von Backpropagation Through Time zu verstehen, müssen Sie zunächst die Konzepte von Forward and Back-Propagation verstehen.

In neuronalen Netzwerken führen Sie im Wesentlichen Forward-Propagation aus, um die Ausgabe Ihres Modells abzurufen. Danachprüfen Sie, ob diese Ausgabe korrekt oder falsch ist, um die Fehler-Quote zu erhalten.

Jetzt machen Sie eine Rückwärts-Propagation, die nichts anderes macht, als rückwärts durch Ihr neuronales Netzwerk zu gehen, um die partiellen Ableitungen des Fehlers in Bezug auf die Gewichte zu finden, wodurch Sie diesen Fehler-Wert von den Gewichten abziehen können.

Diese Ableitungen werden dann von Gradient Descent verwendet, einem Algorithmus, mit dem eine gegebene Funktion iterativ minimiert wird. Dann werden die Gewichte nach oben oder unten angepasst, Auf diese Weise trainiert man ein neuronales Netzwerk. Im Prinzip versuchen Sie mit Backpropagation die Gewichte Ihres Modells anzupassen.

Das Bild unten veranschaulicht das Konzept von Forward and Back-Propagation.

Backpropagation Through Time (BPTT) ist im Wesentlichen nur ein ausgefallenes Schlagwort für Backpropagation in einem nicht aufgerollten Recurrent Neural Network. Das Abrollen ist ein Visualisierungs- und konzeptionelles Tool, mit dem Sie verstehen können, worum es im Netzwerk geht. Wenn Sie ein Recurrent Neural Network in den gebräuchlichen Programmier-Frameworks implementieren, kümmert es sich meistens automatisch um die Backpropagation. Sie müssen jedoch wissen, wie es funktioniert. So können Sie Probleme beheben, die während des Entwicklungsprozesses auftreten.

Das Bild unten zeigt ein RNN. Auf der linken Seite sehen Sie den RNN, der nach dem Gleichheitszeichen abgewickelt wird. Beachten Sie, dass nach dem Gleichheitszeichen kein Zyklus vorhanden ist, weil die verschiedenen Zeitschritte visualisiert werden und Informationen von einem Zeitpunkt zum nächsten weitergegeben werden. Diese Illustration zeigt auch, warum ein RNN als eine Folge neuronaler Netzwerke betrachtet werden kann.

RNN

Innerhalb von BPTT wird der Fehler vom letzten zum ersten Zeitpunkt Zurück gesendet, während alle Zeitpunkte abgerollt werden. Dies ermöglicht die Berechnung des Fehlers für jeden Zeitpunkt, wo die Gewichte dementsprechend aktualisiert werden können.

Zwei Hürden RNN’s

Es gibt zwei große Hürden, mit denen RNNs kämpfen müssen. Um sie zu verstehen, müssen Sie zuerst wissen, was ein Gradient ist.

Ein Gradient ist eine partielle Ableitung in Bezug auf seine Eingaben. Wenn Sie nicht wissen, was das bedeutet, stellen Sie sich folgendes vor: Ein Gradient misst, wie stark sich die Ausgabe einer Funktion ändert, wenn Sie die Eingänge etwas ändern.

Exploding Gradients

Wir sprechen von “Exploding Gradients”, wenn der Algorithmus den Gewichtungen ohne großen Grund eine zu hohe Bedeutung zuweist. Zum
Glück kann dieses Problem jedoch leicht gelöst werden, wenn Sie Gradients abschneiden oder zerquetschen.

Vanishing Gradients

Wir sprechen von “Vanishing Gradients”, wenn die Werte eines Gradienten zu klein sind und das Modell nicht mehr lernt oder aus diesem Grund zu lange dauert. Dies war in den 1990er Jahren ein großes Problem. Zum Glück wurde es durch das LSTM-Konzept von Sepp Hochreiter und Jürgen Schmidhuber gelöst.

Long-Short Term Memory

Long Short-Term Memory (LSTM) – Netzwerke ist eine Erweiterung für Recurrent Neural Networks, die ihren Speicher im Wesentlichen erweitern. Die Einheiten eines LSTM werden als Baueinheiten für die Schichten eines RNN verwendet, das dann oft als LSTM-Netzwerk bezeichnet wird.

Im LSTM unterscheidet man drei Gates: Input, Forget und Output Gate. Sie legen fest, ob neue Eingänge eingelassen werden sollen oder nicht, die Informationen werden gelöscht, weil sie nicht wichtig sind (Gate vergessen), oder ob sie den Ausgang im aktuellen Zeitschritt beeinflussen.

LSTM

Die Probleme des Verschwindens von Gradienten werden durch LSTM gelöst, da die Gradienten ausreichend steil bleiben und das Training daher relativ kurz und die Genauigkeit hoch ist.

Zusammenfassung

Jetzt haben Sie ein umfassendes Verständnis für die Funktionsweise eines Recurrent Neural Network. Damit können Sie entscheiden, ob es der richtige Algorithmus für ein bestimmtes Machine Learning-Problem ist. Im Besonderen haben Sie gelernt, welche Unterschiede es zwischen einem neuronalen Feed-Forward-Netzwerk und einem RNN gibt. Jetzt verstehen Sie wie Backpropagation und Backpropagation Through Time funktionieren, welche Hauptprobleme von RNNs es gibt und wie ein LSTM funktioniert.

Soweit verstanden, wie RNN und LSTM funktionieren?
Wie kann man Recurrent Neural Network in Ihrem Umfeld einsetzen?

Wollen Sie mehr erfahren über KI und wie Sie es in Ihrem Unternehmen einsetzen können?

Diese und weitere Fragen beantwortet gerne das AI United Team per Email oder in dem Q&A Bereich.

Quellen: https://machinelearning-blog.com/2018/02/21/recurrent-neural-networks/#more-419

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.