Recurrent Neural Networks (RNNs) sind neben den Feedforward Netzwerken und den Convolutional Neural Networks die dritte große Art von Neuronalen Netzwerken. Sie werden bei Zeitreihendaten und sequenziellen Informationen eingesetzt, also Daten bei denen der vorangegangene Datenpunkt einen Einfluss auf den aktuellen hat. Diese Netzwerke enthalten mindestens eine Schicht, die rückgekoppelt ist. Was das bedeutet, schauen wir uns in diesem Beitrag genauer an.
Was sind Recurrent Neural Networks?
Um verstehen zu können, wie Recurrent Neural Networks funktionieren, müssen wir uns nochmal vor Augen führen, wie normale Feedforward Neuronale Netze aufgebaut sind. In diesen ist ein Neuron der Hidden Layer jeweils mit den Neuronen aus der vorherigen Schicht und den Neuronen aus der folgenden Schicht verbunden. Der Output eines Neurons kann in einem solchen Netzwerk immer nur nach vorne weitergereicht werden, jedoch niemals an ein Neuron auf derselben Schicht oder sogar der vorherigen Schicht, daher auch der Name „Feedforward“.

Bei Rekurrenten Neuronalen Netzwerken ist das anders. Der Output eines Neurons kann dort sehr wohl als Input einer vorherigen Schicht oder der aktuellen Schicht genutzt werden. Das kommt tatsächlich auch der Funktionsweise unseres Gehirns nochmal deutlich näher, als die Art und Weise, wie Feedforward Neuronale Netze aufgebaut sind. In vielen Anwendungen benötigen wir auch ein Verständnis für unmittelbar davor berechnete Schritte, um das Gesamtergebnis zu verbessern.
Welche Anwendungen haben RNNs?
Recurrent Neural Networks kommen vor allem bei der maschinellen Sprachverarbeitung oder bei Zeitreihendaten zum Einsatz, also dann wenn die Informationen aus der unmittelbaren Vergangenheit eine große Rolle spielen. Bei dem Übersetzen von Texten sollten wir auch die davor verarbeitete Sequenz von Worten im „Gedächtnis“ des Neuronalen Netzes behalten, anstatt nur Wort für Wort unabhängig voneinander zu übersetzen.
Sobald wir ein Sprichwort oder eine Redewendung in dem zu übersetzenden Text haben, müssen wir auch die vorangegangen Worte mit bei der Übersetzung beachten, da wir nur so erkennen können, dass es sich um ein Sprichwort handelt. Werden die Anwendungen in der Sprachverarbeitung komplexer, ist der Kontext von noch größerer Bedeutung. Beispielsweise dann, wenn wir über einen Text hinweg Informationen über eine bestimmte Person sammeln wollen.
Welche Arten von RNNs gibt es?
Je nachdem wie weit der Output eines Neurons innerhalb des Netzwerkes zurückgereicht wird, unterscheiden wir insgesamt vier verschiedene Typen von Rekurrenten Neuronalen Netzwerken:
- Direkte Rückkopplung (Direct-Feedback-Network): Der Ausgang eines Neurons wird als Eingang desselben Neurons verwendet.

2. Indirekte Rückkopplung (Indirect-Feedback-Network): Der Output eines Neurons wird als Input in einer der vorangegangenen Schichten genutzt.

3. Seitliche Rückkopplung (Lateral-Feedback-Network): Hier wird der Ausgang eines Neurons mit dem Eingang eines Neurons derselben Schicht verbunden.

4. Vollständige Rückkopplung (Complete-Feedback-Network): Der Ausgang eines Neurons hat Verbindungen zu den Eingängen aller (!) Neuronen im Netzwerk, egal ob in derselben Schicht, einer vorangegangenen oder einer nachfolgenden Schicht.

Wie trainiert man Recurrent Neural Networks?
Beim Training rekurrenter neuronaler Netze (RNN) werden die Gewichte des Netzes auf der Grundlage der Leistung in einem Trainingsdatensatz aktualisiert. Ziel ist es, die Differenz zwischen der vorhergesagten Ausgabe und der tatsächlichen Ausgabe für eine bestimmte Eingabesequenz zu minimieren.
Der Trainingsprozess umfasst zwei wichtige Schritte: Vorwärtspropagation und Rückwärtspropagation durch die Zeit (BPTT). Bei der Vorwärtspropagation wird die Eingabesequenz in das Netz eingespeist, und die Ausgabe wird in jedem Zeitschritt berechnet. Die Ausgabesequenz wird mit Hilfe einer Verlustfunktion mit der Zielausgabesequenz verglichen, und der Fehler wird während der BPTT rückwärts durch das Netz propagiert. Die Gewichte werden dann mithilfe eines Optimierungsalgorithmus wie dem stochastischen Gradientenabstieg (SGD) aktualisiert.
Die Ausbildung von RNNs kann jedoch aufgrund des Problems der verschwindenden Gradienten eine Herausforderung darstellen. Beim Backpropagating des Fehlers über die Zeit kann der Gradient extrem klein werden und zu sehr langsamem oder gar keinem Lernen führen. Um dieses Problem zu lösen, wurden Techniken wie Gradientenbeschneidung und LSTM-Netze (Long Short Memory) entwickelt.
Eine weitere wichtige Überlegung beim Training von RNNs ist die Wahl der richtigen Hyperparameter wie Lernrate, Stapelgröße und Anzahl der Epochen. Um den optimalen Satz von Hyperparametern für ein bestimmtes Problem zu finden, kann die Gittersuche oder die Zufallssuche verwendet werden.
Schließlich ist es wichtig, die Leistung des trainierten RNN regelmäßig anhand einer Validierungsmenge zu bewerten, um eine Überanpassung zu vermeiden. Ein frühzeitiges Stoppen kann ebenfalls verwendet werden, um eine Überanpassung zu verhindern, indem der Trainingsprozess gestoppt wird, wenn sich die Leistung auf dem Validierungsset nach einer bestimmten Anzahl von Epochen nicht verbessert.
Welche Probleme haben Recurrent Neural Networks?
Recurrent Neural Networks waren ein echter Durchbruch im Bereich des Deep Learning, da zum ersten Mal auch die Berechnungen aus der jüngeren Vergangenheit mit in die aktuelle Berechnung mit einbezogen wurden und dadurch die Ergebnisse in der Sprachverarbeitung deutlich verbesserten. Trotzdem bringen sie während des Trainings auch einige Probleme mit sich, die es zu beachten gilt.
Wie wir in unserem Beitrag zum Gradientenverfahren bereits erläutert haben, kann es beim Training von Neuronalen Netzwerken mit dem Gradientenverfahren dazu kommen, dass der Gradient entweder sehr kleine Werte nahe 0 oder sehr große Werte in der Nähe von Unendlich annimmt. In beiden Fällen können wir die Gewichtungen der Neuronen während der Backpropagation nicht mehr abändern, da sich die Gewichtung entweder so gut wie gar nicht ändert oder wir aber die Zahl mit so einem großen Wert überhaupt nicht multiplizieren können. Aufgrund der vielen Vernetzungen im Rekurrenten Neuronalen Netzwerk und der leicht abgeänderten Form des Backpropagation Algorithmus, die dafür genutzt wird, ist die Wahrscheinlichkeit, dass es zu diesen Problemen kommen wird, deutlich höher als in normalen Feedforward Netzen.
Normale RNNs sind sehr gut dafür geeignet, sich Kontexte zu merken und in die Vorhersage mit einzubeziehen. Das ermöglicht es dem RNN beispielsweise zu erkennen, dass in dem Satz „Die Wolken sind am ___“ das Wort „Himmel“ benötigt wird, um in diesem Kontext den Satz richtig zu vervollständigen. In einem längeren Satz wird es hingegen deutlich schwieriger den Kontext aufrechtzuerhalten. Beim dem leicht veränderten Satz „Die Wolken, die teilweise fließend ineinander übergehen und tief hängen, sind am ___“ wird es für ein Recurrent Neural Network schon deutlich schwieriger auf das Wort „Himmel“ zu schließen.
Was sind Long Short-Term Memory (LSTM) Modelle?
Das Problem von Recurrent Neural Networks ist, dass sie zwar ein Kurzzeitgedächtnis besitzen, um vorherige Informationen im aktuellen Neuron noch vorzuhalten. Diese Fähigkeit nimmt jedoch bei längeren Sequenzen sehr schnell ab. Als Abhilfe dafür wurden die LSTM Modelle eingeführt, um vergangene Informationen noch länger vorhalten zu können.
Das Problem von Recurrent Neural Networks ist, dass sie die vorherigen Daten einfach in ihrem „Kurzzeitgedächtnis“ abspeichern. Sobald der Speicher darin ausgeht, wird einfach die am längsten erhaltene Informationen gelöscht und durch die neuen Daten ersetzt. Das LSTM Modell versucht diesem Problem zu entkommen, indem es ausgewählte Informationen im Langzeitgedächtnis behält. Dieses Langzeitgedächtnis wird im sogennanten Cell State abgelegt. Zusätzlich dazu gibt es auch den Hidden State, den wir bereits von normalen Neuronalen Netzwerken kennen und in dem kurzzeitige Informationen, aus den vorherigen Berechnungsschritten abliegen. Der Hidden State ist das Kurzzeitgedächtnis des Modells. Somit erklärt sich auch der Name Long Short-Term Networks.
In jedem Berechnungsschritt wird der aktuelle Input x(t) genutzt, der vorherige Stand des Kurzzeitgedächtnis c(t-1) und der vorherige Stand des Hidden States h(t-1).

LSTM und RNN vs. Transformer
Recurrent Neural Networks sind für Machine Learning Verhältnisse schon sehr alt und wurden bereits im Jahr 1986 zum ersten Mal vorgestellt. Für eine lange Zeit waren sie und insbesondere die LSTM Architektur das Non plus ultra im Bereich der Sprachverarbeitung, um den Kontext zu erhalten. Jedoch hat sich diese Stellung seit dem Jahr 2017 und der Einführung von Transformer Modellen und Attention Masks grundlegend geändert.
Die Transformer unterscheiden sich grundsätzlich darin zu bisheringen Modellen, dass sie Texte nicht Wort für prozessieren, sondern ganze Abschnitte als ganzes betrachten. Dadurch haben sie deutliche Vorteile Kontexte besser zu verstehen. Dadurch sind auch die Probleme des Kurz- und Langzeitgedächtnises, die mithilfe von LSTMs teilweise gelöst wurden, nicht mehr vorhanden, denn wenn man den Satz sowieso als Ganzes betrachtet, gibt es keinerlei Probleme, dass Abhängigkeiten vergessen werden könnten.
Darüber hinaus sind Transformer in der Berechnung bidirektional, was bedeutet, dass sie bei der Verarbeitung von Worten auch die unmittelbar folgenden und vorherigen Wörter in die Berechnung mit einbeziehen können. Klassische RNN oder LSTM Modelle können dies nicht, da sie sequenziell arbeiten und somit nur vorangegangene Wörter Teil der Berechnung sind. Dieser Nachteil wurde zwar versucht mit sogenannten bidirektionalen RNNs zu vermeiden, jedoch sind diese deutlich rechenaufwändiger als Transformer.
Die bidirektionalen Recurrent Neural Networks haben jedoch noch kleine Vorteile gegenüber den Transformern, da die Informationen in sogenannten Self-Attention Schichten gespeichert werden. Mit jedem Token mehr, das aufgenommen werden soll, wird diese Schicht schwerer zu berechnen und erhöht somit die benötigte Rechenleistung. Diese Erhöhung des Aufwands gibt es hingegen bei bidirektionalen RNNs nicht in diesem Ausmaß.
Das solltest Du mitnehmen
- Recurrent Neural Networks unterscheiden sich von Feedforward Neural Networks, indem der Output von Neuronen auch in derselben oder vorherigen Schichten als Input genutzt wird.
- Sie bieten sich vor allem in der Sprachverarbeitung und bei Zeitreihendaten an, wenn der vergangene Kontext mit berücksichtigt werden soll.
- Wir unterscheiden verschiedene Arten von RNNs, nämlich die direkte Rückkopplung, die indirekte Rückkopplung, die seitliche Rückkopplung oder die vollständige Rückkopplung.
Andere Beiträge zum Thema Recurrent Neural Networks
- Mehr Informationen zu RNNs findest Du unter anderem auf de Tensorflow Seite.