1. LSTM-Architektur
LSTM ist ein RNN-Typ, der das Downside des verschwindenden Gradienten in herkömmlichen RNNs überwindet [1, 2]. Das Downside des verschwindenden Gradienten entsteht, wenn die zur Aktualisierung der Netzwerkgewichte verwendeten Gradienten während der Backpropagation sehr klein werden, was es für das Netzwerk schwierig macht, langfristige Abhängigkeiten zu lernen. Um dieses Downside zu lösen, führen LSTMs eine Reihe von Toren ein, die den Informationsfluss durch das Netzwerk steuern. Diese Gatter, einschließlich eines Eingabegatters, eines Ausgabegatters und eines Vergessensgatters, ermöglichen es dem Netzwerk, Informationen bei jedem Zeitschritt selektiv zu aktualisieren, auszugeben oder zu vergessen.
Bei jedem Zeitschritt bestimmt das Eingangsgatter, welche Informationen aus dem aktuellen Eingang zur Aktualisierung des Speicherzustands verwendet werden sollen. Währenddessen entscheidet das Vergessenstor, welche Informationen aus dem vorherigen Speicherzustand vergessen werden sollen. Das Ausgangsgatter bestimmt dann, welche Informationen aus dem aktualisierten Speicherzustand an die nächste Schicht oder als endgültige Vorhersage ausgegeben werden sollen. Der Zellzustand ist der Speicherzustand in einem LSTM, der Informationen über längere Zeiträume speichern kann. Die Enter- und Neglect-Gates ermöglichen es dem Netzwerk, Informationen im Zellzustand selektiv zu aktualisieren oder zu vergessen. LSTMs haben sich bei der Modellierung sequenzieller Daten als effektiv erwiesen und haben bei vielen Aufgaben in der Verarbeitung natürlicher Sprache, Spracherkennung, maschineller Übersetzung und Bildunterschrift hochmoderne Ergebnisse erzielt.
Abbildung 1 zeigt die Architektur des LSTM-Modells [3]das aus mehreren Schichten besteht:
- Eingabeebene: Die Eingabeschicht empfängt die Eingabedaten über Token-IDs und deren Längen. Die Token-IDs stellen den Index der Wörter im Vokabular dar und ihre Länge gibt an, wie viele Token sich in jeder Sequenz befinden.
- Einbettungsschicht: Die Einbettungsschicht wandelt die Token-IDs in dichte Vektoren fester Größe (Einbettungsdimension) um, die die semantische Bedeutung der Wörter in der Eingabesequenz erfassen.
- LSTM-Schicht: Die LSTM-Schicht verarbeitet die eingebetteten Eingabesequenzen mithilfe des LSTM-Algorithmus. Die LSTM-Schicht verfügt über eine bestimmte Anzahl versteckter Einheiten (hidden_dim) und kann in mehreren Schichten (n_layers) gestapelt werden, um die Kapazität des Modells zu erhöhen.
- Vollständig verbundene Schicht: Die vollständig verbundene Schicht ist eine lineare Schicht, die die Ausgabe der vorab trainierten Schicht aufnimmt und sie der gewünschten Ausgabedimensionalität zuordnet. In diesem Fall ist die Ausgabedimensionalität zwei, entsprechend der Themenkennzeichnung.
2. LSTM-Code
Hier ist ein Beispiel für LSTM-Code mit Python und der beliebten Deep-Studying-Bibliothek Pytorch für NLP:
3. RNN-Architektur
RNN ist eine Artwork neuronales Netzwerk, das für die Verarbeitung sequentieller Daten wie Zeitreihen oder natürlicher Sprache entwickelt wurde. RNNs können Eingabesequenzen verarbeiten, indem sie einen internen Zustand aufrechterhalten, der von den vorherigen Eingaben abhängt, und sie können Gewichtungen über verschiedene Zeitschritte hinweg teilen. Dadurch können sie mithilfe wiederkehrender Zusammenhänge zeitliche Abhängigkeiten in den Daten erlernen und modellieren [4, 5]. Das LSTM-Netzwerk ist der häufigste RNN-Typ, der das Downside verschwindender Gradienten in herkömmlichen RNNs angeht.
Abbildung 2 zeigt die Architektur des RNN-Modells [3]das aus mehreren Schichten besteht:
- Eingabeebene: Die Eingabeschicht empfängt die Eingabedaten über Token-IDs und deren Längen. Die Token-IDs stellen den Index der Wörter im Vokabular dar und ihre Länge gibt an, wie viele Token sich in jeder Sequenz befinden.
- Einbettungsschicht: Die Einbettungsschicht wandelt die Token-IDs in dichte Vektoren fester Größe (Einbettungsdimension) um, die die semantische Bedeutung der Wörter in der Eingabesequenz erfassen.
- RNN-Schicht: Die RNN-Schicht nimmt die eingebetteten Sequenzen als Eingabe und erzeugt eine Sequenz verborgener Zustände. Die in dieser Implementierung verwendete RNN-Schicht ist eine Instanz der nn.RNN-Klasse. Der Layer kann so konfiguriert werden, dass er mehrere Layer aufweist und bidirektional ist.
- Vollständig verbundene Schicht: Die vollständig verbundene Schicht ist eine lineare Schicht, die die Ausgabe der vorab trainierten Schicht aufnimmt und sie der gewünschten Ausgabedimensionalität zuordnet. In diesem Fall ist die Ausgabedimensionalität zwei, entsprechend der Themenkennzeichnung.
4. RNN-Code
Hier ist ein Beispiel für RNN-Code mit Python und der beliebten Deep-Studying-Bibliothek Pytorch für NLP:
[1] S. Hu, G. Zou, S. Lin, L. Wu, C. Zhou, B. Zhang und Y. Chen, „Recurrent Transformer for Dynamic Graph Illustration Studying with Edge Temporal States“, Washington College in St. Louis, 2023
[2] [Hochreiter and Schmidhuber, 1997] Sepp Hochreiter und Jürgen Schmidhuber. Langes Kurzzeitgedächtnis. Neural Computation, 9(8):1735–1780, 1997
[3] Dieng, AB, Ruiz, FJ, & Blei, DM (2020). Themenmodellierung in Einbettungsräumen. Transaktionen der Affiliation for Computational Linguistics, 8, 439–453.
[4] Liu, P., Qiu, X. & Huang, X. (2016). Rekurrentes neuronales Netzwerk zur Textklassifizierung mit Multitasking-Lernen. arXiv-Vorabdruck arXiv:1605.05101.
[5] Zulqarnain, M., Ghazali, R., Hassim, YMM und Rehan, M. (2020). Eine vergleichende Übersicht über Deep-Studying-Modelle zur Textklassifizierung. Indonesien. J. Elektr. Ing. Berechnen. Sci, 19(1), 325–335.
[6] ReviewTag – Analyse negativer Amazon-Produktbewertungen mithilfe von Deep Studying von Priyanka Kumari, Abschlussarbeit an der College of Houston Clear Lake.
[8] Abbildung erstellt vom Autor dieses Beitrags basierend auf [3]