Rekurrente Neuronale Netze (RNN)

Ein Rekurrentes Neuronales Netz (RNN) ist eine Deep-Learning-Netzstruktur, die anhand vorhandener Informationen die Leistung eines Netzes für aktuelle und zukünftige Eingaben verbessert. Das Besondere an 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.

Aufgrund dieser Eigenschaften eignen sich Rekurrente Neuronale Netze insbesondere zur Lösung zahlreicher Probleme, die sequenzielle Daten unterschiedlicher Länge enthalten wie die folgenden:

Die Entfaltung einer einzelnen Zelle eines RNN zeigt, wie die Informationen für eine Datensequenz das Netz durchlaufen. Der verborgene Zustand der Zelle wirkt auf Eingaben ein und erzeugt die Ausgabe, worauf der verborgene Zustand an den nächsten Zeitschritt übergeben wird.

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 RNN Probleme mit dem Erlernen langfristiger Abhängigkeiten. RNN 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 Sonderform eines rekurrenten neuronalen Netzes 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.

RNN (links) und LSTM-Netz (rechts) im Vergleich

MATLAB® bietet eine umfassende Sammlung von Merkmalen und Funktionen zum Trainieren und zur Implementierung von LSTM-Netzen mit Texten, Bildern, Signalen und Zeitreihendaten. In den folgenden Abschnitten werden die Anwendungsmöglichkeiten von RNN sowie einige Beispiele mit MATLAB vorgestellt.

Anwendungsbereiche von RNN

Verarbeitung natürlicher Sprache

Sprache ist naturgemäß sequenziell und einzelne Texte haben unterschiedliche Längen. RNN sind ein hervorragendes Tool zur Lösung von Problemen aus diesem Bereich, da sie lernen können, Wörter in einem Satz zu kontextualisieren. Ein Beispiel hierfür ist die Sentiment-Analyse, ein Verfahren zur Kategorisierung der Bedeutung von Wörtern und Formulierungen. Die Maschinelle Übersetzung oder die Nutzung von Algorithmen für die Übersetzung von Sprachen sind weitere typische Anwendungsbeispiele. Wörter müssen zunächst von Textdaten in numerische Sequenzen konvertiert werden. Eine effektive Methode für diese Konvertierung ist die Worteinbettungsschicht. Worteinbettungen bilden Wörter auf numerische Vektoren ab. Das nachstehende Beispiel nutzt Worteinbettungen zum Trainieren eines Klassifikators für in Worten ausgedrückte Stimmungen und zeigt die Ergebnisse in der MATLAB-Wortwolkenfunktion an.

Ergebnisse einer Sentiment-Analyse in MATLAB. Die Wortwolke zeigt die Ergebnisse des Trainingsvorgangs, auf deren Grundlage der Klassifikator die Stimmung neuer Textgruppen ermitteln kann.

In einem weiteren Klassifizierungsbeispiel klassifiziert MATLAB Textdaten mit RNN und ermittelt so die Art vorliegender Fertigungsfehler.  MATLAB wird auch in einem Beispiel für die maschinelle Übersetzung zum Trainieren eines Netzes zur Erkennung römischer Zahlen verwendet.

Signalklassifizierung

Signale sind ein weiteres Beispiel für natürliche sequenzielle Daten, weil sie oft über längere Zeiträume hinweg von Sensoren erfasst werden. Die automatische Klassifizierung von Signalen ist nützlich, da sie die für große Datensätze erforderliche manuelle Klassifizierungszeit erheblich senken kann oder sogar die Klassifizierung in Echtzeit ermöglicht. Rohsignaldaten können in tiefe Netze eingespeist oder aufbereitet werden, um sich auf andere Merkmale wie Frequenz-Komponenten zu konzentrieren. Die Merkmalsextraktion kann die Netzwerkleistung maßgeblich verbessern, wie in diesem Beispiel mit EKG-Signalen. Nachstehend ist ein Beispiel aufgeführt, bei dem Rohsignaldaten durch ein RNN verarbeitet werden.

Klassifizierung von Sensordaten mit einem LSTM in MATLAB.

Videoanalysen

RNN eignen sich gut für Videos, da Videos im Grunde eine Bildfolge darstellen. Wie auch bei der Arbeit mit Signalen ist es hilfreich, Merkmale vor der Einspeisung der Sequenz in das RNN zu extrahieren. In diesem Beispiel wird ein vortrainiertes GoogleNet-Modell (ein neuronales Faltungsnetz) für die Merkmalsextraktion aus den einzelnen Videobildern verwendet. Die Netzwerkarchitektur ist nachstehend abgebildet.

Grundlegende Architektur für die Klassifizierung von Videos mit LSTM.