Was versteht man unter einem rekurrenten neuronalen Netz?
3 Dinge, die Sie wissen sollten
Ein rekurrentes neuronales Netz (RNN) ist eine Netzarchitektur für das Deep Learning, die Vorhersagen anhand von Zeitreihen oder sequenziellen Daten trifft.
RNNs eignen sich besonders für die Arbeit mit unterschiedlich langen, sequentiellen Daten und zur Problemlösung in den Bereichen Klassifizierung natürlicher Signale, Sprachverarbeitung und Videoanalyse.
Ein rekurrentes neuronales Netz (RNN) ist eine Deep-Learning-Struktur, die anhand vorhandener Informationen die Leistung eines Netzes für aktuelle und zukünftige Eingaben verbessert. Das Besondere an einem RNN ist, dass das Netz einen verborgenen Zustand und Schleifen enthält. Die Schleifenstruktur ermöglicht es dem Netz, vorhandene Informationen im verborgenen Zustand zu speichern und Sequenzen zu verarbeiten.
Woher aber weiß ein RNN, welche vorhandenen Informationen auf die aktuelle Eingabe anwendbar sind? Das Netz verfügt ü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.
LSTM
In der Praxis haben einfache RNNs Probleme mit dem Erlernen langfristiger Abhängigkeiten. RNNs werden gewöhnlich durch Backpropagation trainiert, wobei das Problem eines „verschwindenden“ oder eines „explodierenden“ Gradienten auftreten kann. Diese Probleme führen dazu, dass die Gewichtungen des Netzes entweder sehr klein oder sehr groß werden und somit die Wirksamkeit des Lernens langfristiger Abhängigkeiten einschränken.
Eine RNN-Sonderform ist das Long Short-Term Memory-Netz (LSTM). LSTM-Netze nutzen zusätzliche Gates, um zu steuern, welche Informationen in der verborgenen Zelle weiter zur Ausgabe und zum nächsten verborgenen Zustand gelangen. Auf diese Weise kann das Netz langfristige Abhängigkeiten in den Daten wirksamer erlernen. LSTM sind häufig verwendete Formen von RNN.
Ein bidirektionales LSTM 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. Eine weitere RNN-Variante, die längerfristige Abhängigkeiten erlernt, ist das Gated RNN. Sie können bidirektionale LSTMs und Gated RNNs in MATLAB® trainieren und damit arbeiten.
Erste Schritte mit RNN-Beispielen in MATLAB
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.
Textanalysen
Sprache ist naturgemäß sequenziell und einzelne Texte haben unterschiedliche Längen. RNNs 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 (Kategorisierung der Bedeutung von Wörtern und Sätzen), da sie in der Lage sind, Wörter in einem Satz zu kontextualisieren.
Die Verwendung von RNNs
Bei der Arbeit mit Sequenz- und Zeitreihen für Klassifizierungs- und Regressionsaufgaben empfiehlt sich der Einsatz von RNNs. Darüber hinaus eignen sich RNNs auch 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 Sequenz in das RNN zu extrahieren. Ebenso können CNNs (z. B. GoogLeNet) für die Merkmalsextraktion in jedem Frame eingesetzt werden.
RNN-Netzwerkarchitektur für Klassifizierungs-, Regressions- und Videoklassifizierungsaufgaben.
Entdecken Sie MATLAB-Beispiele für RNNs mit Text, Signalen und Videos.
Mithilfe von MATLAB und der Deep Learning Toolbox™ können Sie RNNs entwickeln, trainieren und bereitstellen. Mithilfe der Text Analytics Toolbox™ oder der Signal Processing Toolbox™ können Sie die RNNs auch auf Text- oder Signalanalysen anwenden.
Entwicklung und Training von Netzen
Mit nur wenigen Zeilen MATLAB Programmcode lassen sich RNNs programmatisch erstellen und trainieren. Verwenden Sie rekurrente Schichten (LSTM-Schicht, bidirektionale LSTM-Schicht, geschlossene (gated) rekurrente Schicht und LSTM-projizierte Schicht), um RNNs aufzubauen. Nutzen Sie eine Worteinbettungsschicht in einem RNN-Netz, um Wörter in numerische Sequenzen umzuwandeln.
Sie können RNNs auch interaktiv mithilfe der Deep Network Designer-App erstellen und trainieren. Überwachen Sie das Training mit Diagrammen hinsichtlich Genauigkeit, Verlust und Validierungsmetriken.
Bereitstellung von Netzwerken
Sie können Ihr trainiertes RNN auf Embedded Systems, FPGA-Geräten, in Unternehmenssystemen oder in der Cloud bereitstellen. Ebenfalls ist es möglich, Code aus Intel®-, NVIDIA®- und ARM®-Bibliotheken zu generieren, um einsatzbereite RNNs mit leistungsstarker Inferenzgeschwindigkeit zu erstellen.