Machine Learning-Ansätze für Zeitreihen


Julius Richter


A series of hourglasses

Dieser Beitrag ist der erste Teil einer Reihe von Beiträgen zum Thema Zeitreihen- bzw. Sequenzmodellierung. Die Serie ist in drei Teile gegliedert:

  1. Wie geht man mit Zeitreihen und seriellen Sequenzen um? Ein rekurrenter Ansatz.

  2. Temporal Convolutional Networks (TCNs) für die Sequenzmodellierung.

  3. Beat-Tracking in Audiodateien als Anwendung der Sequenzmodellierung.


Einführung


Zeit liegt vielen interessanten physikalischen Verhaltensweisen zugrunde und ist sicherlich eines der rätselhaftesten Konzepte. Fast jede menschliche Aktivität hat eine zeitliche Ausdehnung und zeigt eine Vielzahl von seriell geordneten Handlungsabläufen. Denken Sie zum Beispiel an die Abfolge der Bewegungen der menschlichen Gliedmaßen. Auch die Sprache scheint mit zeitlich aufeinanderfolgenden Handlungsabläufen zu tun zu haben.

In diesem Beitrag finden Sie Antworten auf die folgenden Fragen:

  • Wie kann man Zeit in künstlichen neuronalen Netzen darstellen?

  • Wie verarbeitet man zeitliche Daten, um zukünftige Ereignisse zu analysieren oder vorherzusagen?

  • Wie funktionieren rekurrente neuronale Netze?

  • Was sind langfristige Abhängigkeiten und warum können LSTM-Netze mit ihnen umgehen?


Motivation


 Evolution of a stock market index.

Zeitreihen erscheinen in jedem Bereich der angewandten Wissenschaften und Technik, der zeitliche Messungen beinhaltet, z.B. Wetterbeobachtung/Vorhersage oder die Messung von jährlichen Bevölkerungsdaten. Auch in der Finanzmathematik treten zeitliche Abläufe auf, z.B. die jährliche Entwicklung eines Aktienindexes.

In der Wirtschaft wollen die Unternehmen in der Regel ihren Umsatz steigern. Zu diesem Zweck prognostizieren Statistiker die zukünftige Marktentwicklung aus Daten der Vergangenheit, wie z.B. Laden-, Promotion- und Wettbewerbsdaten. Die Zeitreihenprognose ermöglicht es Unternehmen, bessere Zeitpläne zu erstellen, die die Effizienz und Produktivität erhöhen und auch die Motivation der Mitarbeiter stärken.


Zeitrepräsentation


Per Definition ist eine Zeitreihe eine Reihe von Datenpunkten, die in zeitlicher Reihenfolge aufgelistet werden. Meist hat eine Zeitreihe den gleichen Abstand zwischen zwei aufeinander folgenden Messungen. Somit kann eine Zeitreihe als eine Folge von zeitdiskreten Daten betrachtet werden und deckt ein kontinuierliches Zeitintervall ab. Die richtige Reihenfolge innerhalb einer Zeitreihe ist sehr wichtig, da eine Abhängigkeit von der Zeit besteht.

Wenn Sie mit Daten arbeiten, die eine zeitliche Ausdehnung haben, besteht eine Möglichkeit, die Zeit darzustellen, darin, die serielle Ordnung explizit mit einer Dimensionalität der Daten zu verbinden. Zeitreihendaten unterscheiden sich von Querschnittsdaten dadurch, dass es eine natürliche zeitliche Ordnung der Beobachtungen gibt. Sie unterscheiden sich auch von räumlichen Daten, bei denen sich die Beobachtungen typischerweise auf geografische Orte beziehen.

Generell wird zwischen Zeitreihenanalyse und Zeitreihenprognose unterschieden. Die Zeitreihenanalyse umfasst Methoden zur Analyse von Zeitreihendaten, um aussagekräftige Statistiken und andere Merkmale der Daten zu extrahieren. Dagegen ist die Zeitreihenprognose die Verwendung eines Modells zur Vorhersage zukünftiger Werte auf der Grundlage bereits beobachteter Werte.

Die Analyse von Zeitreihendaten konzentriert sich in der Regel auf die Klassifizierung, Clusterbildung oder Anomalieerkennung. Die Zeitreihenanalyse kann auf reellwertige, kontinuierliche Daten, diskrete numerische Daten oder diskrete symbolische Daten, d.h. Folgen von Zeichen, wie z.B. Buchstaben und Wörter in der Sprache, angewendet werden.

Bei der Zeitreihenprognose werden historische Daten zur Prognose der Zukunft verwendet. Eine Prognose wird als Vorhersage bezeichnet, die manchmal ein Konfidenzintervall enthält, das den Grad der Sicherheit ausdrückt. Die Verwendung eines stochastischen Modells für Zeitreihen spiegelt im Allgemeinen die Tatsache wider, dass zeitlich nahe beieinander liegende Beobachtungen enger miteinander verbunden sind als weiter auseinander liegende Beobachtungen. Es können jedoch auch langfristige Abhängigkeiten bestehen. In der Sprache betrachtet man zum Beispiel die folgenden beiden Beispiele:

  1. Die Katze, die ich schon gefüttert hatte, ......... war satt.

  2. Die Katzen, die ich schon gefüttert hatte, ......... waren satt.

Es ist klar, dass das Prädikat in dem Satz davon abhängt, ob das Subjekt im Singular oder Plural steht. Um ein Modell für diesen Fall zu erstellen, werden Informationen aus früheren Wörtern des Satzes benötigt. Um einen besseren Einblick in den Umgang mit natürlichsprachlichen Daten zu bekommen, empfehle ich unseren Blogbeitrag über Natural Language Processing (NLP).


Zeitreihen verarbeiten


In der Datenverarbeitung scheint die serielle Natur der zeitlichen Daten im Widerspruch zur parallelen Natur der digitalen Berechnung zu stehen. Ein üblicher Ansatz der Verarbeitung von Zeitdaten ist daher der Versuch, die Zeit zu "parallelisieren", indem man ihr eine räumliche Darstellung gibt. Dies bedeutet im Wesentlichen, dass die Zeitdaten sequentiell in Vektoren mit einer festen Länge segmentiert werden, wobei die Zeit explizit als eine Dimension dargestellt wird. Dieser Ansatz erfordert jedoch eine Schnittstelle zur Welt, die die Eingabe puffert, so dass sie auf einmal dargestellt werden kann. Und es ist nicht klar, dass biologische Systeme solche Schieberegister nutzen. Außerdem ist es bei diesem Ansatz nicht einfach, die relative zeitliche Position von der absoluten zeitlichen Position zu unterscheiden. Betrachten wir zum Beispiel eine einfache Zeitverzögerung, die in den folgenden beiden Sequenzen dargestellt wird.

$$\mathbf a = (0,1,1,1,0,0,0,0), \\ \mathbf b = (0,0,1,1,1,0,0,0).$$

Die Vektoren $$\mathbf a$$ und $$\mathbf b$$ sind Instanzen desselben Grundmusters, aber räumlich versetzt. Die geometrische Interpretation dieser Vektoren macht deutlich, dass die beiden Muster tatsächlich sehr unterschiedlich und räumlich weit voneinander entfernt sind. Wie bereits erwähnt, behandelt die räumliche Darstellung der Zeit die Zeit als expliziten Teil der Eingabe.

Stattdessen wird die Zeit implizit durch ihre Auswirkungen auf die Verarbeitung und nicht explizit wie in einer räumlichen Darstellung dargestellt, wobei die relative Zeitstruktur angesichts absoluter zeitlicher Verschiebungen erhalten bleibt (Elman, 1990). Zu diesem Zweck sollte das Verarbeitungssystem dynamische Eigenschaften enthalten, die auf zeitliche Abläufe reagieren. Ein Ansatz zur Implementierung dieser Eigenschaften ist die Verwendung von rekurrenten Verknüpfungen, um Netzwerke mit einem dynamischen Speicher zu versehen (Jordan, 1986).

Beim maschinellen Lernen gibt es verschiedene Arten von Modellen, die für die Zeitreihenanalyse/-prognose verwendet werden können, z.B. random forestgradient boosting, oder time delay neural networks, bei denen zeitliche Informationen durch einen Satz von Verzögerungen, die der Eingabe hinzugefügt werden, einbezogen werden können, so dass die Daten zu verschiedenen Zeitpunkten dargestellt werden. Im nächsten Abschnitt werde ich jedoch rekurrente neuronale Netze (RNNs) vorstellen. Insbesondere werden Sie lernen, wie Sequenzen und Aktionen für diese Klasse künstlicher neuronaler Netze gelernt und ausgeführt werden können.


Rekurrente neuronale Netze


Beim Deep Learning ist ein rekurrentes neuronales Netz (RNN) eine Klasse von künstlichen neuronalen Netzen, bei denen die Verbindungen zwischen den Knoten einen gerichteten Graphen entlang einer zeitlichen Sequenz bilden (Rumelhart, 1987). Im Gegensatz zu vorwärtsgekoppelten neuronalen Netzen enthalten RNNs Zyklen und verwenden einen internen Zustandsspeicher h zur Verarbeitung von Eingangssequenzen. Ein grundlegendes rekurrentes neuronales Netz wird durch die Propagation-Gleichungen beschrieben,

$$\begin{align} \mathbf h_t &= \sigma (\mathbf U \cdot \mathbf x_t + \mathbf W \cdot \mathbf h_{t-1} + \mathbf b) \\ \mathbf o_t &= \mathbf V \cdot \mathbf h_t + \mathbf c \end{align}$$

wobei die Parameter die Bias-Vektoren $$\mathbf b$$ und $$\mathbf c$$ zusammen mit den Gewichtsmatrizen $$\mathbf U$$, $$\mathbf V$$ und $$\mathbf W$$ für Input-to-Hidden, Hidden-to-Output und Hidden-to-Hidden Verbindungen sind. Die folgende Abbildung zeigt den Berechnungsgraphen und seine aufgefaltete Version:

 Recurrent neural networks explaining graphic

Zur Berechnung der Gradienten wird ein Forward Propagation-Durchgang durch den abgerollten Graphen durchgeführt, gefolgt von einem Backpropagation-Durchgang. Die Laufzeit beträgt $$O(T)$$ und kann nicht durch Parallelisierung reduziert werden, da der Forward Propagation-Graph von Natur aus sequentiell ist, d.h. jeder Zeitschritt kann nur nach dem vorherigen berechnet werden. Daher wird die Backpropagation für das rekurrente Modell als Backpropagation durch die Zeit (BPTT) bezeichnet. Rekurrente Modelle konstruieren sehr tiefe Berechnungsgraphen, indem in jedem Zeitschritt einer langen zeitlichen Abfolge immer wieder die gleiche Operation angewendet wird. Dies führt zu dem Problem der verschwindenden Gradienten und macht es notorisch schwierig, RNNs zu trainieren.

Um diesen Schwierigkeiten vorzubeugen, wurden aufwendigere rekurrente Architekturen entwickelt, wie z.B. long short-term memory (LSTM) (Hochreiter, 1997) und die gated recurrent unit (GRU) (Cho, 2014). Diese Architekturfamilien haben durch prominente Anwendungen in der Sprachmodellierung und maschinellen Übersetzung enorm an Popularität gewonnen. Im nächsten Abschnitt werde ich die LSTM-Architektur kurz beschreiben und erklären, warum sie das Verschwinden von Gradienten verhindert.


Long Short-Term Memory (LSTM)


Long short-term memory (LSTM) ist eine spezielle rekurrente neuronale Netzwerkarchitektur (RNN), die im Bereich des Deep Learnings eingesetzt wird. Ein LSTM ist eine sehr effektive Lösung für das Problem des verschwindenden Gradienten und ermöglicht es neuronalen Netzen, viel weiterreichende Abhängigkeiten zu erfassen.

Eine LSTM-Basiszelle besteht aus einem Speicher (Zellzustand), der es dem Netzwerk ermöglicht, Informationen über eine lange Zeitspanne hinweg zu akkumulieren. Sobald diese Informationen jedoch einmal verwendet wurden, kann es für das Netzwerk nützlich sein, den alten Zustand zu vergessen. Zu diesem Zweck enthält die Architektur drei Gatter, die den Zellenzustand aktualisieren und steuern, nämlich das Vergessensgatter, das Eingangsgatter und das Ausgangsgatter.

Anstatt manuell zu entscheiden, wann der Zustand gelöscht werden soll, lernt das neuronale Netz, zu entscheiden, wann es dies tun soll. Die Zeitskala der Integration, d.h. das zeitliche Rezeptionsfeld oder die effektive Historiengröße, kann dynamisch verändert werden, indem die Gewichtung der Gates, d.h. durch eine andere versteckte Einheit kontrollierbar gemacht wird.

Für eine detaillierte Betrachtung von LSTM-Netzwerken empfehle ich die Lektüre von Colahs Blog. Um zu verstehen, warum Gradienten nicht verschwinden, empfehle ich außerdem diesen Blogbeitrag zu lesen.