Zeitliche Abfolgen lernen mit LSTM (Long Short-Term Memory)
Standardneurale Netze analysieren jeden Datensatz unabhängig voneinander und berücksichtigen keine zeitlichen Zusammenhänge. Im Gegensatz dazu können Rekurrente Neuronale Netze (RNNs) Sequenzen von Daten verarbeiten und Muster erkennen, die über die Zeit verteilt sind.
Definition und Beschreibung von RNN
Die Rekurrente Neuronale Netze (RNN) sind neuronale Netze mit Rückkopplungen.
RNN können Datensequenzen analysieren und zeitmäßig Muster erkennen.
RNN verfügen über ein internes Gedächtnis und gehören somit zu ML-Algorithmen.
RNN haben im Vergleich zu ML-Algorithmen ein Verständnis für Abfolgen und deren Kontext.
Ziel
Dem Netz eine zeitliche Struktur beibringen, um Abfolgen und Sequenzen zu erkennen.
Vergleichbar mit Convolutional Neuroal Networks (CNNs)
Netze können zeitliche Zusammenhängezwischen einzelnen Handlungen verstehen und somit eine Prognose treffen
Anwendungsbereiche
Natural Language Processing (NLP)
Textgenerierung
Chatbots und Sprachassistensystemen
Zeitreihenanalyse
Finanzmarkvorhersagen
Wetterprognose
Sprachverarbeitung und Spracherkennung
Spracherkennungssysteme
Echtzeit-Übersetzung
Sprachegesteuerte Anwendungen und Assistenten wie Siri, Alexa
Bild- und Videoverarbeitung
Videosegmentierung und Bildunterschriftengenerierung
Bewegungsanalse in Sport und Überwachung
Aktionsvorhersagen
Medizin und Bilogie
Erkennung von Mustern in DNA-Sequenzen
Anforderungen an zeitliche Modelle
Zum Modellieren zeitlicher Verläufe bei unbekannten Daten, benötigen neuronale Netze zwei Eigenschaften:
Flexibile Menge an Ein- und Ausgängen
z.B. Übersetzung (Anzahl der Eingabeworte nicht vorhersehbar)
deshalb muss das Netz flexibel auf unterschiedliche lange Ein-und Ausgaben reagieren
Wiedereinschleusung von Zwischenergebnissen
keine Unabhängigkeit der Datenpunkte
nur Speichern und Wiederverwendung von Informationen
Warum ist die Wiedereinschleusung von Zwischenergebnissen wichtig?
Kontextabhängige Bedeutung z.B. Absatz wird je nach Kontext anders übersetzt.
Ohne Rückführung von Zwischenergebnissen kann das Netz den richtigen Kontext nicht erkennen und somit falsche Ausgabe liefern.
Vorteile von RNNs
Durch Rückkopplung können sich RNNS Infos aus früheren Eingaben merken
Gemerkte Infos können als Kontext für Vorhersagen über kommende Datenpunkte genutzt werden
daher ist das ideal für sequenzielle Daten wie Zeitreihen, Sprache, Text, Finanzdaten, Audio, Video, Wetter und vieles mehr
Grundtypen von RNNs
One-to-One (Ein Eingang, ein Ausgang) z.B. Bildklassifikation
One-to-Many (Ein Eingang, mehrere Ausgänge) z.B. Bildbeschreibung oder Musikgenerierung → Wort als Input und Satz als Output
Many-to-One (Mehrer Eingänge, ein Ausgang) z.B. Stimmungsanalyse oder Textklassifikation → Satz als Eingabe und Falsch/Richtig als Ausgabe
Many-to-Many (Mehrere Eingänge, mehrere Ausgänge) z.B. maschineller Übersetzung und Named Entity Recognition → Sequenzen in andere Sprachstrukturen umwandeln
Rückkoppelung
Rückkopplung der Ausgabe eines Neurones auf dessen Eingang
z.B. neuronale Netz mit Eingaben zu zwei Zeitpunkten t1 und t2
Ausgabe des Neurones zum Zeitpunkt t1 wird zur zusätzlichen Eingabe des Neurons zum Zeitpunkt t2
Merken
Beide Neuronen t1 und t2 sind die gleiche Neuronen
jedoch nur zu anderen Zeitpunkten
→ Neuronen haben eine Verbindung zu sich selbst
Beispiel
Eingabesequenzen und Zielwerte für LSTM-Training
Zur Vorhersage von Aktienkursen mit einem LSTM wird die Zeitreihe in Eingabesequenzen und Zielwerte (Labels) aufgeteilt. Hierbei soll der Schlusskurs des nächsten Tages basierend auf den Schlusskursen der letzten fünf Tage vorhergesagt werden.
Gegebene Zeitreihe:
100, 102, 101, 105, 107, 110, 108, 111, 112, 115
Eingabesequenzen und Zielwerte:
Eingabe:100, 102, 101, 105, 107 → Ziel:110
Eingabe:102, 101, 105, 107, 110 → Ziel:108
Eingabe:101, 105, 107, 110, 108 → Ziel:111
Eingabe:105, 107, 110, 108, 111 → Ziel:112
Eingabe:107, 110, 108, 111, 112 → Ziel:115
Erläuterung:
Jede Eingabesequenz umfasst fünf aufeinanderfolgende Tagesschlusskurse.
Der Zielwert ist der Schlusskurs am darauffolgenden Tag.
Das LSTM lernt aus diesen Sequenzen und Zielwerten, Muster in Kursverläufen zu erkennen, um den nächsten Schlusskurs vorherzusagen.
Aufbau des LSTM:
Dieses Vorgehen folgt einem Many-to-One-Ansatz von RNNs: Mehrere Eingaben (hier: 5 Tage) führen zu einer einzelnen Ausgabe (nächster Tagesschlusskurs).
Die Rückkopplungen im LSTM erlauben es dem Netzwerk, frühere Zeitschritte für die Vorhersage zu berücksichtigen.
Aktivierungsfunktion
Die Aktivierungsfunktion eines Neurons zum Zeitpunkt ti in einem RNN ist abhängig vom vorherigen Zustand:
hi(xi)=σ(Wx∗xi+Wh∗hi(Xi−1))
hi(xi)→ Aktivierungsfunktion zum Zeitpunt ti
hi(xi−1)→ Wert von vorherigem Zustand
Wx→ Gewichte der Feed-Forward-Verbindung
Wh→ Gewichte der rekurrenten Verbindungen
xi→ Eingangsgröße zum Zeitpunkt ti
σ→ Gewählte Aktivierungsfunktion
Probleme mit Gradienten
Gradient Problems (Fehler) treten bei RNNs auf, wenn diese für lange Sequenzen trainiert werden.
Gradienten treten während des Trainings durch Backpropagation Through Time (BPTT) und werden exponenziell kleiner oder größer, je weiter sie zurück in der Zeit gehen.
Zwei Arten der Gradienten
Diminishing Gradients Problem
diese entstehen, wenn die Multiplikationen bei der Backpropagation mit kleinen Werten (Gewichten) erfolgt
Gradienten werden immer kleiner, je weiter man in der Zeit zurückgeht
Frühere Eingabe in der Sequenz erhalten sehr schwache Rückmeldungen über den Fehler
Somit ist schwerig, wichtige Infos aus der Vergangenheit zu erlernen
Folge
Langfristige Abhängigkeiten werden nicht erlernt
Netzwerk → keine Fokus auf relevante in der Vergangenheit liegende Informationen
Schwerigkeiten beim Training
Lernrate wird immer geringer
Netzwerk kann nicht effektiv auf frühere Eingaben reagieren
Merken
Bei Gewichten kleiner 1 wird der Fehler durch Backpropagation immer weiter gedämpft
Exploding Gradients Problem
diese entstehen, wenn die Gewichten größer 1 sind
in diesem Fall wachsen die Gradienten exponenziell je weiter man in der Zeit zurückgeht
Merken
Bei Gewichten grösser 1 explodiert der Fehler bei der Backpropagation
Long Short-Term Memory (LSTM)
LSTM ist eine speziele Art von RNN, welche langfristige Abbhängigkeiten in Daten lernt und speichert.
Funktionsweise
Speicherzellen: LSTM hat Speicherzellen, die relevante Infos über längere Zeiträume speichern können
Gates: drei spezielle “Gates” steuern, wleche Infos gepsiechert, gelöscht oder weitergegeben werden.
Vorteile
Dminishing und Exploding Gradient Probleme umgeben, das klassische RNNs einschräntk
Besonders geeignet für sequeznielle Daten wie Text, Sprache und Zeitreihen
LSTM-Module gewährleisten einen stabilen Fehlerfluss, der eine Anpassung über längere Zeiträume erlaubt.
Struktur
im Gegensatz zu klassischen RNNs besitzen LSTMs eine innere Zelle und drei Gates:
Input Gate: regelt, wie stark ein neuer Wert in die Zelle einfließt.
Forget Gate:: bestimmt, wie viel eines Wertes in der Zelle verbleibt oder vergessen wird
Output Gate: kontrolliert, wie stark der Zellwert für die nächsten Berechnung verwendet wird
LSTMs kombinieren vier Funktionen sigmoide Funktionen und Vektor- sowie Matrixoperationen zur präzisen Kontrolle über den Informationsfluss
Aufbau einer LSTM-Zelle
Dies lässt sich wie eine Speicherzelle mit Zugriffssteuerung verstehen
Input Gate: Daten in die Zelle schreiben
Internal State: Daten intern modifizieren
Forget Gate: Daten löschen
Output Gate: Daten ausgeben
Gate-Steuerung
Alle Gates werden durch die Eingangsdaten aktiviert oder deaktiviert
Gewichte, die das Netzwerk während des Trainings anpasst, berechnet, ob ein Gate aktiv oder nicht ist.
Implementierung von LSTM in Keras
Daten als Zeitreihe aufbereiten
Wir gestalten die Daten so, dass wir immer die letzen 20 Einträge betrachten.
changes = df["Open_changes"]X = []Y = []# i ist genau der vorherzusagende Datensatz, deshalb i+1 untenfor i in range(0, len(changes)-20): Y.append(changes[i]) # i-te Wert wird vorhergesagt X.append(np.array(changes[i+1:i+21][::-1])) # von Stelle 1 : bis Stelle 21 [Am weitesten zürckliegende am ersten platznen# Anzahl der Samples, Kenngrößen pro DatensätzeX = np.array(X).reshape(-1, 20, 1)Y = np.array(Y)
LSTM-Modell erstellen und trainieren
from keras.models import Sequentialfrom keras.layers import LSTMmodel = Sequential()# Sequenz der Länge 20 und zu jedem Zeitschritt 1 Attributmodel.add(LSTM(1, input_shape=(20, 1)))model.compile(optimizer="rmsprop", loss="mse")model.fit(X, Y, batch_size=32, epochs=10)
Vorhersage
predicitons = model.predict(X)
Quitz
Was unterscheidet Rekurrente Neuronale Netze (RNNs) von herkömmlichen neuronalen Netzen?
Antwort:
RNNs zeichnen sich durch Rückkopplungen aus. Diese ermöglichen es, Informationen aus vorherigen Zeitschritten in die Berechnung des aktuellen Zeitschritts einfließen zu lassen, wodurch sie zeitliche Abhängigkeiten in Daten erkennen können.
Herkömmliche neuronale Netze verarbeiten jeden Datensatz unabhängig voneinander.
Wie wird ein LSTM-Modell erstellt und trainiert?
Antwort:
model = Sequential()# Sequenz der Länge 20 und zu jedem Zeitschritt 1 Attributmodel.add(LSTM(1, input_shape=(20, 1)))model.compile(optimizer="rmsprop", loss="mse")model.fit(X, Y, batch_size=32, epochs=10)
Nennen Sie drei Anwendungsbeispiele für Rekurrente Neuronale Netze.
Medizin: Diagnostik auf Basis von EKG- oder EEG-Daten
Welche zwei Eigenschaften benötigen RNNs, um zeitliche Verläufe in unbekannten Daten zu modellieren?
Antwort:
Flexible Menge an Ein- und Ausgängen: Die Länge der Sequenzen (z. B. Sätze in der Übersetzung) kann variieren.
Wiedereinschleusung von Zwischenergebnissen: Frühere Informationen müssen gespeichert und berücksichtigt werden.
Was ist das "Diminishing Gradient Problem" bei RNNs und wie wirkt sich dieses auf das Training aus?
Antwort:
Beim “Diminishing Gradient Problem” werden die Gradienten während des Trainings exponentiell kleiner, je weiter sie in der Zeit zurückgehen. Dies verhindert, dass das Netzwerk langfristige Abhängigkeiten lernt.
Was ist der Unterschied zwischen dem "Diminishing Gradient Problem" und dem "Exploding Gradient Problem"?
Antwort:
Diminishing Gradient Problem: Gradienten werden exponentiell kleiner und hindern das Lernen früherer Eingaben.
Exploding Gradient Problem: Gradienten werden exponentiell größer, was das Training instabil macht.
Was ist LSTM und welches Problem klassischer RNNs soll es lösen?
Antwort:
LSTM (Long Short-Term Memory) ist eine spezielle Art von RNN, die das Diminishing/Exploding Gradient Problem durch die Verwendung von Speicherzellen und Gates löst.
Wie funktionieren die "Gates" in einer LSTM-Zelle?
Antwort:
Input Gate: Reguliert, wie stark neue Informationen einfließen.
Forget Gate: Bestimmt, welche Informationen gelöscht werden.
Output Gate: Kontrolliert, welche Informationen ausgegeben werden.
Für welche Art von Daten sind LSTMs besonders gut geeignet?
Antwort:
LSTMs sind besonders gut geeignet für die Verarbeitung von sequenziellen Daten wie Text, Sprache und Zeitreihen.
Nennen Sie die vier Haupttypen von RNN-Architekturen und deren Anwendungsbereiche.
Antwort:
One-to-One: Klassifikation von Bildern.
One-to-Many: Bildbeschreibung oder Musikgenerierung.
Many-to-One: Sentimentanalyse.
Many-to-Many: Maschinelle Übersetzung.
Beschreiben Sie die Architektur einer LSTM-Zelle anhand der Analogie einer Speicherzelle mit Zugriffssteuerung.
Antwort:
Input Gate: Schreibt Daten in die Zelle.
Internal State: Speichert und modifiziert Informationen.
Forget Gate: Löscht nicht benötigte Daten.
Output Gate: Gibt relevante Informationen aus.
Wie kann man mit Keras ein LSTM-Netzwerk zur Vorhersage des Bitcoin-Tageseröffnungskurses implementieren?
Antwort:
Datenvorbereitung: Skalieren und in Trainings-/Testdaten aufteilen.
Modellerstellung: LSTM-Schicht konfigurieren (z. B. Anzahl der Neuronen).
Training: Modell mit Trainingsdaten trainieren.
Bewertung: Vorhersagegenauigkeit mit Testdaten prüfen.
Visualisierung: Tatsächliche und vorhergesagte Werte vergleichen.
Warum sind LSTMs besser geeignet, um langfristige Abhängigkeiten zu lernen, als klassische RNNs?
Antwort:
LSTMs verwenden Speicherzellen und Gates, die den Gradientenfluss kontrollieren und das Problem des Gradientenabfalls vermeiden. Dadurch können sie wichtige Informationen über lange Sequenzen hinweg bewahren und nutzen.