Temporal Convolutional Networks für die Sequenz-Modellierung


Julius Richter


highlighter highlighting the word translation in a book

Dieser Blog-Post ist der zweite in einer dreiteiligen Serie, die sich mit maschinellen Lernansätzen für Zeitreihen befasst. Im ersten Post habe ich darüber gesprochen, wie man mit seriellen Sequenzen in künstlichen neuronalen Netzen umgehen kann. Insbesondere wurden rekurrente Modelle wie das LSTM als ein Ansatz zur Verarbeitung von Zeitdaten vorgestellt, um zukünftige Ereignisse zu analysieren oder vorherzusagen.

In diesem Beitrag werde ich jedoch einen einfachen aber mächtigen Ansatz  für Sequenzen vorstellen, der Temporal Convolutional Network (TCN) ("convolution" heißt "Faltung") genannt wird. Die Netzwerkarchitektur wurde in (Bai, 2018) vorgeschlagen und zeigt eine große Leistungsfähigkeit bei Sequenz-zu-Sequenz-Aufgaben wie maschineller Übersetzung oder Sprachsynthese in Text-zu-Sprache-Systemen (TTS). Bevor ich die Architekturelemente im Detail beschreibe, werde ich eine kurze Einführung über Sequenz-zu-Sequenz-Lernen und den Hintergrund von TCNs geben.


Sequenz-zu-Sequenz-Lernen


Bei der Sequenzmodellierung, genauer gesagt beim Sequenz-zu-Sequenz-Lernen (Seq2Seq), handelt es sich um eine Aufgabe, bei der es darum geht, Modelle zu trainieren, um Sequenzen von einer Domäne (z.B. geschriebener Text) in eine andere Domäne (z.B. den gleichen Text, der zu Audio synthetisiert wurde) zu konvertieren. Andererseits spricht man von Sequenzmarkierung, wenn die Eingabesequenz mit einer aus einem festen Alphabet gezeichneten Markierungsfolge versehen wird (z.B. part-of-speech tagging).

 Sequence-to-sequence learning example

Generell müssen Seq2Seq-Modelle mit unterschiedlich langen Ein- und Ausgangssequenzen umgehen. Daher wird die gesamte Eingabefolge benötigt, um das Ziel vorherzusagen, z.B. bei der maschinellen Übersetzung, bei der eine Eingabefolge in einer Sprache in eine Sequenz in einer anderen Sprache umgewandelt wird. Im trivialen Fall jedoch, bei dem Ein- und Ausgangssequenzen die gleiche Länge T haben, könnte man ein Sequenzmodell als die Funktion $$f: \mathcal X^T \rightarrow \mathcal Y^T$$ beschreiben, so dass

$$\mathbf y_{1:T} = \mathbf y_1, \dots, \mathbf y_T = f(\mathbf x_1,\dots, \mathbf x_T)$$

mit der Input-Sequenz $$\mathbf x_{1:T} := \mathbf x_1, \dots, \mathbf x_T$$, wo der Vektor $$\mathbf x_t \in \mathcal X$$ der Input zum Zeitpunkt $$t$$ ist und $$\mathbf y_{1:T}$$ jeweils die Output-Sequenz.

Wenn das Modell kausal ist, dann hängt $$\mathbf y_t \in \mathcal Y$$ nur von $$\mathbf x_{1:t}$$ und nicht von $$\mathbf x_{t+1:T}$$ ab, d.h. es gibt keine Informationslecks aus der Zukunft. Diese Kausalitätsbedingung ist essentiell für die autoregressive Modellierung, z.B. bei der Modellierung auf Wort- oder Zeichenebene.


Hintergrund


Wie ich im vorherigen Beitrag gezeigt habe, sind rekurrente Netzwerke dedizierte Sequenzmodelle, die einen Vektor von hidden activations aufrechterhalten, die durch die Zeit propagiert werden (Graves, 2012). Sie haben durch prominente Anwendungen im Bereich der Sprachmodellierung und maschinellen Übersetzung enorm an Popularität gewonnen.

Convolutional Networks werden aber auch seit Jahrzehnten auf Sequenzen angewendet (Sejnowski, 1987) und wurden in den 80er und 90er Jahren prominent zur Spracherkennung eingesetzt. In jüngerer Zeit wurden Convolutional Networks zur Satz-/Dokumentenklassifikation (Zhang, 2015), zur maschinellen Übersetzung (Kalchbrenner, 2016) und zur Audiosynthese (van den Oord, 2016) eingesetzt. Die Ergebnisse zeigen, dass Convolutional Networks rekurrente Netzwerke bei Aufgaben wie maschineller Übersetzung und Audiosynthese übertreffen können.

Im ursprünglichen TCN-Paper (Bai, 2018) führen die Autoren eine systematische Evaluierung von generischen Convolutional Networks und rekurrenten Netzwerken für die Sequenzmodellierung durch. Die Modelle werden über ein breites Spektrum von Standardaufgaben evaluiert, die üblicherweise für das Benchmarking von rekurrenten Netzwerken verwendet werden. Sie stellen fest, dass ein einfaches Convolutional Network wie das TCN kanonische rekurrierende Netzwerke wie LSTMs bei einer Vielzahl von Aufgaben und Datensätzen übertrifft und gleichzeitig einen längeren effektiven Speicher aufweist. Daher kommen sie zu dem Schluss, dass die gemeinsame Assoziation zwischen Sequenzmodellierung und rekurrenten Netzwerken überdacht werden sollte, und dass Convolutional Networks als natürlicher Ausgangspunkt für Sequenzmodellierungsaufgaben betrachtet werden sollten.  


Temporal Convolutional Network


Im Folgenden lernen Sie die TCN-Struktur und ihre grundlegenden architektonischen Elemente kennen. Sie ist inspiriert von neueren Convolutional Networks für sequentielle Daten und kombiniert Einfachheit, autoregressive Vorhersage und sehr langes Gedächtnis. Das TCN ist aus zwei Grundprinzipien aufgebaut:

  1. Die Faltungen sind kausal, d.h. es gibt keinen Informationsfluss von der Zukunft in die Vergangenheit. 

  2. Die Architektur kann eine Sequenz beliebiger Länge nehmen und auf eine Outputsequenz derselben Länge abbilden, genau wie bei einem RNN.

Um den ersten Punkt zu erreichen, verwendet das TCN kausale Faltungen, d.h. Faltungen, bei denen eine Ausgabe zum Zeitpunkt t nur mit Elementen aus dem Zeitpunkt t und früher in der vorhergehenden Schicht gefaltet wird. Um den zweiten Punkt zu erreichen, verwendet das TCN eine 1D "fully convolutional" Netzwerkarchitektur, bei der jedes Hidden Layer die gleiche Länge wie das Input Layer hat.

Dilatierte Faltungen

Einfache kausale Faltungen haben den Nachteil, dass sie nur in der Tiefe des Netzes linear in die Geschichte zurückblicken, d.h. das rezeptive Feld wächst linear mit jeder weiteren Schicht. Um diesen Umstand zu umgehen, verwendet die Architektur dilatierte Faltungen, die ein exponentiell großes rezeptives Feld ermöglichen. Formeller, für eine Eingabesequenz $$\mathbf x \in \mathbb R^T$$ und einen Filter $$h:\{ 0, \dots, k-1\} \rightarrow \mathbb R$$ ist die dilatierte Faltungsoperation $$H$$ auf $$x$$ definiert als

$$H(x) = (\mathbf x *_d h)(x) = \sum_{i=0}^{k-1} f(i) \, \mathbf x_{s-d\cdot i}$$

wobei $$d = 2^\nu$$ der Dilationsfaktor ist und $$\nu$$ die Netzwerkebene. $$k$$ ist die Filtergröße und der Term $$s-d\cdot i$$ steht für die Richtung der Vergangenheit. Die Dilatation ist gleichbedeutend mit der Einführung einer festen Stufe zwischen jeweils zwei benachbarten Filterabgriffen, wie in der folgenden Abbildung zu sehen ist.

Die Verwendung einer größeren Dilation ermöglicht es, dass ein Ausgang auf der obersten Ebene einen größeren Bereich von Eingängen repräsentiert, wodurch das rezeptive Feld eines CNN effektiv erweitert wird. Es gibt zwei Möglichkeiten, das Aufnahmefeld eines TCN zu vergrößern: die Wahl größerer Filtergrößen $$k$$ und die Erhöhung des Dilationsfaktors $$d$$, da die effektive Geschichte einer Schicht $$(k-1)d$$ ist.

Residuale Blöcke

Ein weiteres architektonisches Element eines TCNs sind residuale Verbindungen. Anstelle eines Convolutional Layers verwenden TCNs ein generisches residuales Modul. Jeder residuale Block enthält einen Zweig, der zu einer Reihe von Transformationen $$\mathcal F$$, führt, deren Outputs zum Input x des Blocks addiert werden:

$$o = \text{Activation} \big(\mathbf x + \mathcal F(\mathbf x)\big).$$

Dies erlaubt es den Schichten effektiv, Modifikationen der Identitätsabbildung zu lernen, anstatt der gesamten Transformation, was sich als vorteilhaft für tiefe neuronale Netze erwiesen hat (He, 2016). Gerade bei sehr tiefen Netzen wird eine Stabilisierung wichtig, z.B. wenn die Vorhersage von einer großen Historiengröße ($$> 2^{12}$$) mit einer hochdimensionalen Inputsequenz abhängt.

Ein residualer Block hat zwei Lagen dilatierter kausaler Faltungen und  ReLUs als Nichtlinearitäten, wie in der folgenden Abbildung dargestellt.

 Diagram of a residual block.

Die Gewichtsnormalisierung (Salimans, 2016) wird auf die Faltungsfilter angewendet und nach jeder dilatierten Faltung wird ein räumlicher Dropout (Srivastava, 2014) zur Regularisierung hinzugefügt, d.h. bei jedem Trainingsschritt wird ein ganzer Kanal genullt.


Fazit


Wie Sie in diesem Blogbeitrag erfahren haben, ist das TCN-Modell bewusst einfach gehalten und kombiniert einige der besten Praktiken moderner Convolutional Networks. Daher kann es als bequemer, aber mächtiger Ausgangspunkt beim Umgang mit sequentiellen Daten dienen.

TCNs können so gebaut werden, dass sie eine sehr lange effektive Historiengröße haben, was bedeutet, dass sie die Fähigkeit haben, sehr weit in die Vergangenheit zu schauen, um eine Vorhersage zu treffen. Zu diesem Zweck wird eine Kombination aus sehr tiefen Netzwerken, die mit Residual Layers und dilatierten Faltungen ergänzt werden, eingesetzt.

Die TCN-Architektur scheint nicht nur präziser zu sein als die kanonisch rekurrenten Netzwerke wie LSTMs und GRUs, sie besitzt auch die folgenden Eigenschaften:

  • Parallelität: Im Gegensatz zu RNNs, bei denen die Vorhersagen für spätere Zeitschritte auf die Fertigstellung ihrer Vorgänger warten müssen, können die Faltungen parallel berechnet werden, da in jeder Schicht der gleiche Filter verwendet wird. Daher kann sowohl im Training als auch in der Auswertung eine lange Eingabefolge als Ganzes verarbeitet werden, statt sequentiell wie in RNNs.

  • Flexible rezeptive Feldgröße: Die Größe des rezeptiven Feldes kann auf mehrere Arten geändert werden. Zum Beispiel können mehr dilatierte Convolutional Layers gestapelt, größere Dilatationsfaktoren verwendet oder die Filtergröße erhöht werden. TCNs bieten somit eine bessere Kontrolle über die Speichergröße des Modells und lassen sich leicht an verschiedene Domänen anpassen.

  • Geringer Speicherbedarf für das Training: Besonders bei einer langen Eingabesequenz können LSTMs und GRUs leicht viel Speicherplatz für die Speicherung der Teilergebnisse ihrer Multizellgatter verbrauchen. In TCNs werden die Filter jedoch über ein Layer geteilt, wobei der Backpropagationpfad nur von der Netztiefe abhängt.

TCN-Implementierungen für verschiedene ML-Bibliotheken finden Sie hier: 

Wenn Sie einen noch tieferen Einblick in Convolutional Neural Networks oder ein anderes Thema im Bereich Machine Learning zur erfolgreichen Umsetzung Ihres Projekts brauchen, können Sie kostenlos unseren Tech Lunch buchen.