Ein LSTM-Netz (Long Short-term Memory) ist eine Form des rekurrenten neuronalen Netzes (RNN). LSTMs werden überwiegend zum Erlernen, Verarbeiten und Klassifizieren sequenzieller Daten verwendet, da sie langfristige Abhängigkeiten zwischen Zeitschritten der Daten erlernen können.
Funktionsweise von LSTMs
LSTMs und RNNs
LSTM-Netze sind eine spezielle Form der RNN-Architektur. RNNs nutzen vergangene Information, um die die Leistung eines neuronalen Netzes zu aktuellen und zukünftigen Eingaben verbessern. Sie enthalten einen verborgenen Zustand und Schleifen, durch die das Netz vorhandene Informationen im verborgenen Zustand speichern und Sequenzen verarbeiten kann. RNNs verfügen über zwei Gewichtungen: eine Gewichtung für den Vektor des verborgenen Zustands und eine für die Eingaben. Beim Trainieren erlernt das Netz sowohl Gewichtungen für die Eingaben als auch für den verborgenen Zustand. Nach erfolgter Anwendung basiert die Ausgabe sowohl auf der aktuellen Eingabe als auch auf dem verborgenen Zustand, der wiederum auf vorherigen Eingaben basiert.
In der Praxis können einfache RNNs nur begrenzt längerfristige Abhängigkeiten erlernen. RNNs werden gewöhnlich durch Backpropagation trainiert, wobei das Problem eines „verschwindenden“ oder eines „explodierenden“ Gradienten auftreten kann. Durch diese Probleme werden die Netzgewichtungen entweder sehr klein oder sehr groß, was die Wirksamkeit bei Anwendungen begrenzt, für die das Netz langfristige Beziehungen erlernen muss.
Architektur der LSTM-Ebenen
LSTM-Ebenen nutzen zusätzliche Gates, um zu steuern, welche Informationen im verborgenen Zustand als Ausgabe und zum nächsten verborgenen Zustand exportiert werden. Diese zusätzlichen Gates überwinden Probleme, die RNNs beim Erlernen langfristiger Abhängigkeiten häufig haben. Zusätzlich zum verborgenen Zustand in herkömmlichen RNNs verfügt die Architektur für einen LSTM-Block üblicherweise über eine Speicherzelle, ein Eingabe- und ein Ausgabe-Gate und Forget Gate. Durch die zusätzlichen Gates kann das Netz langfristige Beziehungen in den Daten effektiver zu erlernen. Durch die geringere Empfindlichkeit gegenüber der Zeitlücke sind LSTM-Netze besser zum Analysieren sequenzieller Daten geeignet als einfache RNNs. In der unten stehenden Abbildung sehen Sie die LSTM-Architektur und den Datenfluss im Zeitschritt t.
Die Gewichtungen und Verzerrungen zum Eingabe-Gate steuern, inwieweit ein neuer Wert in die LSTM-Einheit fließt. Entsprechend steuern die Gewichtungen und Verzerrungen zum Forget Gate und zum Ausgabe-Gate, inwieweit ein Wert in der Einheit bleibt und jeweils zur Berechnung der Ausgabeaktivierung des LSTM-Blocks herangezogen wird.
Das folgende Diagramm veranschaulicht den Datenfluss durch eine LSTM-Ebene mit mehreren Zeitschritten. Die Anzahl der Kanäle in der Ausgabe entspricht der Anzahl der verborgenen Einheiten in der LSTM-Ebene.
LSTM-Netzarchitekturen
LSTMs funktionieren gut mit Sequenz- und Zeitreihendaten bei Klassifizierungs- und Regressionsaufgaben. Außerdem eignen sich RNNs hervorragend für Videos, da diese im Grunde eine Abfolge von Bildern darstellen. Wie auch bei der Arbeit mit Signalen ist es hilfreich, Merkmale vor der Einspeisung der Bilderabfolge in die RNN-Ebene zu extrahieren. Ebenso können Convolutional Neural Networks (CNNs) (z. B. GoogLeNet) zur Merkmalsextraktion in jedem Frame eingesetzt werden. Die folgende Abbildung zeigt, wie ein LSTM-Netz für verschiedene Aufgaben entworfen wird.
Bidirektionales LSTM
Ein bidirektionales LSTM (BiLSTM) erlernt bidirektionale Abhängigkeiten zwischen Zeitschritten von Zeitreihen oder Sequenzdaten. Diese Abhängigkeiten können nützlich sein, wenn das Netz bei jedem Zeitschritt aus der gesamten Zeitreihe lernen soll. BiLSTM-Netze ermöglichen ein zusätzliches Training, da die Eingabedaten die LSTM-Ebene zwei Mal passieren, was die Netzleistung steigern kann.
Ein BiLSTM besteht aus zwei LSTM-Komponenten: dem Vorwärts-LSTM und dem Rückwärts-LSTM. Das Vorwärts-LSTM ist vom ersten bis zum letzten Zeitschritt im Einsatz, das Rückwärts-LSTM vom letzten bis zum ersten. Nachdem die Daten die beiden LSTM-Komponenten passiert haben, werden die Ausgaben entlang der Kanaldimension konkateniert.
Erste Schritte mit LSTM-Beispielen in MATLAB
LSTM-Anwendungen
LSTMs sind besonders bei der Arbeit mit sequenziellen Daten effektiv, die unterschiedlich lang sein können, und beim Erlernen langfristiger Abhängigkeiten zwischen Zeitschritten dieser Daten. Gängige LSTM-Anwendungen beinhalten eine Sentiment-Analyse, Sprachmodellierung, Spracherkennung und Videoanalyse.
Horizontale LSTM-Anwendungen
Der Einsatz von RNNs ist eine Schlüsseltechnologie für Anwendungen wie beispielsweise:
- Signalverarbeitung. Signale sind natürliche sequenzielle Daten, weil sie oft über längere Zeiträume hinweg von Sensoren erfasst werden. Durch die automatische Klassifizierung und Regression bei großen Signaldatensätzen sind Vorhersagen in Echtzeit möglich. Rohsignaldaten können in tiefe Netze eingespeist oder aufbereitet werden, um sich auf spezielle Merkmale wie Frequenz-Komponenten zu konzentrieren. Die Merkmalsextraktion kann dabei zu einer signifikanten Verbesserung der Netzleistung führen.
- Verarbeitung natürlicher Sprache (NLP). Sprache ist naturgemäß sequenziell und einzelne Texte haben unterschiedliche Längen. LSTMs sind ein nützliches Tool für die Verarbeitung natürlicher Sprache, wie z. B. die Klassifizierung von Texten, die Texterstellung, die maschinelle Übersetzung und die Sentiment-Analyse, da sie in der Lage sind, Wörter in einem Satz zu kontextualisieren.
Probieren Sie folgende Beispiele aus, um LSTMs bei der Signalverarbeitung und der Verarbeitung natürlicher Sprache anzuwenden.
Vertikale LSTM-Anwendungen
Mit den sich erweiternden Deep-Learning-Anwendungen werden LSTMs in vertikalen Anwendungen wie den folgenden eingesetzt:
Dieses Thema vertiefen
Einsatz von LSTM-Netzen zur Abschätzung von NOx-Emissionen
Renault-Konstruktionsteams verwenden LSTMs beim Entwickeln von Technologie der nächsten Generation für emissionsfreie Fahrzeuge (ZEVs).
Sie erhielten ihre Trainingsdaten von Tests, die an einem echten Motor ausgeführt wurden. Bei diesen Tests durchlief der Motor gängige Fahrzyklen. Die erfassten Daten, darunter Drehmoment und Drehzahl des Motors, Kühlmitteltemperatur und Emissionen je nach Gangzahl waren die Eingabe in das LSTM-Netz. Nach Iterationen am Entwurf der LSTM-Architektur erzielte die endgültige Version des LSTM eine Genauigkeit von 85–90 % bei der Prognose der NOx-Werte.
LSTMs mit MATLAB
Mithilfe von MATLAB® und der Deep Learning Toolbox™ können Sie LSTM entwickeln, trainieren und bereitstellen. Mithilfe der Text Analytics Toolbox™ oder der Signal Processing Toolbox™ können Sie die LSTMs auch auf Text- oder Signalanalysen anwenden.
Entwicklung und Training von Netzen
Sie können LSTMs programmatisch mit nur wenigen Zeilen Code entwerfen und trainieren. Nutzen Sie LSTM-Ebenen, bidirektionale LSTM-Ebenen und LSTM-projizierte Ebenen, um LSTMs zu erstellen. Außerdem können Sie LSTMs interaktiv mit der Deep Network Designer-App entwerfen, analysieren und modifizieren.
Import und Export von Netzen
Sie können LSTM-Netze durch Python®-basierten Deep-Learning-Frameworks auswechseln:
- Importieren Sie PyTorch®-, TensorFlow™- und ONNX™-Modelle mit einer einzigen Zeile Code.
- Importieren Sie PyTorch- und TensorFlow-Modelle interaktiv mit Deep Network Designer.
- Exportieren Sie LSTM-Netze nach TensorFlow und ONNX mit einer einzigen Zeile Code.
Bereitstellung von Netzwerken
Stellen Sie Ihr trainiertes LSTM auf Embedded Systems, in Unternehmenssystemen oder in der Cloud bereit:
- Generieren Sie automatisch optimiertem C/C++ Code und CUDA-Code zur Bereitstellung auf Prozessoren und Grafikprozessoren.
- Generieren Sie synthetisierbaren Verilog® - und VHDL® -Code zur Bereitstellung von FPGAs und SoCs.
Ressourcen
Erweitern Sie Ihre Kenntnisse durch Dokumentation, Beispiele, Videos und vieles mehr.
Ähnliche Themen
Sehen Sie sich weitere Themengebiete an, für die MATLAB- und Simulink-Produkte häufig zum Einsatz kommen.
30-tägige kostenlose Testversion
Jetzt loslegenWebsite auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)