Recurrent Neural Network (RNN): Was genau ist das?

Hast du Daniel vermisst? Das trifft sich gut, wir nämlich auch! Heute beantwortet unser, durch die Data Science Weiterbildung Schüler begleitende Experte diese Frage: Wie funktionieren rekurrente neuronale Netze?

Wenn du Fan unseres Blogs bist, weißt du bereits, was ein neuronales Netz ist (falls nicht, zögere nicht, diesen Artikel vorher zu lesen), aber was bringt das Adjektiv rekurrent zu diesem Modell? In diesem Artikel werden wir uns damit befassen, wie rekursive neuronale Netze, kurz RNN genannt, zu einem klassischen Modell im Deep Learning geworden sind.

Situation

Bevor wir ein RNN erläutern, wollen wir uns auf einen Ball konzentrieren. Bei Machine Learning kommt es häufig vor, dass man die Flugbahn eines beweglichen Objekts vorhersagen will. Wie Abbildung 1 zeigt, kann der Ball vom Startpunkt aus in alle möglichen Richtungen laufen. Wie können wir wissen, welche Bewegung der Ball als Nächstes macht?

Wenn wir jedoch Abbildung 2 nehmen, ist es offensichtlich zu sagen, dass der Ball weiterhin nach rechts fliegen wird, aufgrund der vergangenen Flugbahnen, die eine Bewegung nach rechts widerspiegeln. 

Soweit scheint alles logisch zu sein.

Im Gegensatz zu Abb. 1 haben wir mehr Workout-Daten zusätzlich, wodurch wir besser entscheiden können, wie der Ball bewegt werden soll.

So müssen wir unserem neuronalen Netz nur die alten Bewegungen des Balls geben und unsere Studie ist abgeschlossen. Wie wählen wir jedoch die Anzahl der Eingabe-Neuronen? Eine Flugbahn kann auf jede beliebige Weise aufgeteilt werden. Ob das nun 10 oder 100

Der weiße Ball stellt die aktuelle Position des Balles dar und die hellblauen Bälle stellen die früheren Flugbahnen des weißen Balles dar, so dass wir vermuten, dass der Ball nach rechts fliegt. 

Lassen wir dieses Detail für den Moment außer Acht und legen wir die Größe unserer Eingabestichproben fest. Betrachten wir Abbildung 3. Wohin wird der Ball fliegen?

Die Bewegung des Balles ist zwar komplexer als in Abbildung 1, aber wir können immer noch sagen, dass die nächste Bewegung des Balles sich nach oben bewegen wird. Wird das Modell die gleiche Vorhersage machen? Leider nein, denn das neuronale Netz denkt nicht wie wir! Das Modell berücksichtigt im Gegensatz zu uns nicht die Verbindung zwischen den Eingaben. Die Eingaben sind nicht unabhängig voneinander, also müssen wir diese Verbindung zwischen ihnen aufrechterhalten, wenn wir unser neuronales Netz trainieren. 

Wir müssen 2 Probleme lösen: 

  • Die Grösse unser Eingangsabtastwerte ist nicht fix.
  • Die Eingabedaten sind nicht miteinander verbunden

Übergang zu RNN

Kehren wir zu unserer Studie der Ballflugbahn zurück. Wir betrachten eine Ebene, also wird die Flugbahn des Balls zwei Koordinaten haben, die wir x^1,x^2 nennen, und wir wollen den nächsten Ort des Balls vorhersagen, die Vorhersage der zukünftigen Koordinaten wird ŷ^1,ŷ^2 sein. Stellen wir dies mit einem traditionellen neuronalen Netz dar.

Zusammenfassend können wir, wenn wir (x^1,x^2)=x_t und (ŷ^1,ŷ^2)=ŷ_t voraussetzen, das folgende Schema erstellen:

Hier gibt der Index t die Koordinaten des Balles zum Zeitpunkt t an, das neuronale Netz durch eine Funktion f repräsentierend, haben wir:

f(x_t)=ŷ_t (den mathematischen Stil der RNN-Formel(unten auf Englisch) übernehmen).

Wie bereits erwähnt, untersuchen wir die Ballbewegung auf lokaler Ebene. Wir wollen mehrere Zeitpunkte der Bewegung des Balles berücksichtigen. Mit einem herkömmlichen neuronalen Netz können wir das nicht erreichen, aber mit RNNs ändert sich das, da das Konzept der Rekursion eingeführt wird. Betrachten wir in der Tat die folgende Abbildung. Wir fügen eine Eingabe h_t hinzu, die als versteckter Zustand (hidden state) bezeichnet wird. Dieser verborgene Zustand verkörpert ŷ_t und wird als Argument für die nächste Vorhersage zusätzlich zum Eintrag x_t gegeben. Wir haben tatsächlich eine Menge betrachtet und verknüpfen daher die Ausgaben und Eingaben ohne Limit für unsere Eingabestichproben.

Wenn wir versuchen, dies durch eine Formel auszudrücken, erhalten wir die folgenden Gleichung:

Das Konzept der Rekursion ist deutlich zu erkennen. Um den nächsten Term vorherzusagen, brauchen wir vorhergehende Informationen, die von h_{t-1} geliefert werden. 

Die Rekursion ist in diesem zusammenfassenden Schema noch offensichtlicher.

Einige Anwendungenb eines RNN

  • one to many Die RNN erhält eine einzige Eingabe und gibt mehrere Ausgaben zurück, 

das klassische Beispiel für dieses Verfahren ist die Bildunterschrift

  • many to one Man hat mehrere Eingaben und es gibt nur eine Ausgabe. Ein Beispiel für diesen Modus ist die Gefühlsanalyse von Texten. Dabei wird ein Gefühl aus einer Gruppe von Wörtern identifiziert und das Wort bestimmt, das fehlt, um den Satz zu beenden, den du als Eingabe erhalten hast. Um mehr über die Gefühlsanalyse zu erfahren, besuche diesen Artikel
  • many to many Schließlich können wir mehrere Eingaben nehmen und mehrere Ausgaben erhalten. Wir haben nicht unbedingt die gleiche Anzahl an Input- und Output-Neuronen. Wir können hier die Übersetzung eines Textes nennen, aber wir können auch ehrgeizig sein und planen, ein Musikwerk mit seinem Anfang zu beenden.

Perfekt, wir haben gesehen, wie ein RNN funktioniert und wie viele Anwendungen es gibt, aber ist es auch perfekt? Leider hat es einen großen Nachteil, das sogenannte Kurzzeitgedächtnis, für das wir ein Beispiel aus dem Bereich TALN (Automatische Verarbeitung natürlicher Sprache) sehen werden.

Ist der RNN ein Goldfisch?

Nehmen wir den Fall der Satzvervollständigung. 

Ich liebe Sushi und werde es in …

Der RNN kann sich das Wort Sushi nicht merken, um Japan vorherzusagen, weil er sich das Wort Sushi nicht gemerkt hat. Um es zu schaffen, Japan zu bestimmen, muss der RNN ein stärkeres Gedächtnis haben. Dies können wir erreichen, indem wir die Neuronen komplexer machen.  Insbesondere werden wir uns den Fall des LSTM(Long Short Term Memory) ansehen. Zusätzlich zum herkömmlichen versteckten Zustand h_t werden wir einen zweiten Zustand namens c_t hinzufügen. Hier steht h_t für das Kurzzeitgedächtnis des Neurons und c_t für das Langzeitgedächtnis.

Wir wollen hier nicht auf die technischen Überlegungen zu diesem erschreckenden Schema eingehen. Das Wichtigste ist, dass wir eine viel komplexere Zelle haben, die es uns ermöglicht, das Speicherproblem zu lösen. Mit dem LSTM lassen wir h_t und c_t durch Gatter laufen, von denen es vier gibt.

  • Das erste Tor entfernt unnötige Informationen, es ist das forget gate.
  • Das zweite Tor, speichert die neue Information, das store gate.
  • Das dritte Tor aktualisiert die Informationen, die wir dem RNN geben werden, mit dem Ergebnis des forget gate und des store gate, es ist das update gate.
  • Das letzte Tor (output gate) gibt uns y_t und h_t.

Dieser langwierige Prozess ermöglicht es uns, die Informationen zu kontrollieren, die wir im Laufe der Zeit aufbewahren und weitergeben.

Der RNN kann dank seiner Lernfähigkeit herausfinden, was er behalten und was er vergessen sollte. LSTM (Long Short Term Memory) ist nicht einzigartig, wir können auch GRU (Gated Recurrent Unit) verwenden, nur die Architektur der Zelle ändert sich.

Fassen wir nun zusammen, was wir gesehen haben. RNNs sind eine besondere Art von neuronalen Netzen, die es ermöglichen, Daten zu verarbeiten, die nicht unabhängig sind und keine feste Größe haben. Dennoch sind Standard-RNNs durch das Problem des Kurzspeichers ziemlich eingeschränkt, das wir durch die Verwendung komplexerer Zellen wie LSTM oder GRU lösen können.

Es gibt eine Parallele zu einem anderen System neuronaler Netze: Convolutive Neuronal Networks (CNN). CNNs sind dafür bekannt, dass sie räumliche Informationen teilen, während RNNs zeitliche Informationen teilen. Du kannst mehr über CNNs in diesem Artikel erfahren. Wenn du RNNs in der Praxis anwenden möchtest, kannst du an unserem Data Scientist-Kurs teilnehmen.

Weiterlesen

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!