Sequenz-zu-Sequenz

Animation von seq2seq mit RNN und Attention-Mechanismus

Im Bereich des maschinellen Lernens und der Verarbeitung natürlicher Sprache ist Sequenz-zu-Sequenz (kurz seq2seq) eine Familie von Ansätzen, die auf Sequenztransformation basieren, d. h., sie wandeln eine Eingabesequenz in eine Ausgabesequenz um. Ursprünglich von Lê Viết Quốc, einem vietnamesischen Informatiker und Pionier des maschinellen Lernens bei Google Brain, entwickelt, ist dieses Framework mittlerweile zu einer Grundlage vieler moderner KI-Systeme geworden. Zu den Anwendungsbereichen zählen Sprachübersetzung, Bildbeschriftung, Dialogmodelle, Spracherkennung und Textzusammenfassung.

Geschichte

“One naturally wonders if the problem of translation could conceivably be treated as a problem in cryptography. When I look at an article in Russian, I say: 'This is really written in English, but it has been coded in some strange symbols. I will now proceed to decode.”

„Man fragt sich natürlich, ob das Problem der Übersetzung möglicherweise als ein Problem der Kryptografie betrachtet werden könnte. Wenn ich mir einen Artikel auf Russisch anschaue, sage ich mir: ‚Das ist eigentlich auf Englisch geschrieben, wurde aber in irgendwelche seltsamen Symbole verschlüsselt. Ich werde nun mit der Entschlüsselung beginnen.‘“

–  Warren Weaver: Brief an Norbert Wiener, 4. März 1947
Shannons Diagramm eines allgemeinen Kommunikationssystems, das den Prozess veranschaulicht, durch den aus einer gesendeten Nachricht die empfangene Nachricht wird (die möglicherweise durch Rauschen verfälscht ist)

Seq2seq ist ein Ansatz für die maschinelle Übersetzung (oder allgemeiner gesagt für die Sequenztransduktion), der seine Wurzeln in der Informationstheorie hat, in der Kommunikation als ein Prozess aus Kodierung, Übertragung und Dekodierung verstanden wird und die maschinelle Übersetzung als Sonderfall der Kommunikation betrachtet werden kann. Diese Sichtweise wurde beispielsweise im Modell der maschinellen Übersetzung mit verrauschtem Kanal näher ausgeführt.

In der Praxis bildet seq2seq eine Eingabesequenz mithilfe eines neuronalen Netzes (des Encoders) in einen reellen Vektor ab und bildet sie anschließend mithilfe eines anderen neuronalen Netzes (des Decoders) wieder in eine Ausgabesequenz zurück.

Das Konzept der Encoder-Decoder-Sequenztransduktion wurde Anfang der 2010er Jahre entwickelt. Als wegweisende Arbeiten, aus denen seq2seq hervorging, werden am häufigsten zwei Artikel aus dem Jahr 2014 zitiert.

In dem von ihnen vorgeschlagenen seq2seq-Modell waren sowohl der Encoder als auch der Decoder LSTMs. Dies führte zu einem „Engpass“-Problem, da der Kodierungsvektor eine feste Größe hat. Bei langen Eingabesequenzen gingen daher tendenziell Informationen verloren, da diese nur schwer in den Kodierungsvektor mit fester Länge passten. Der 2014 vorgeschlagene Attention-Mechanismus löste das Engpassproblem. Sie nannten ihr Modell RNNsearch, da es „das Durchsuchen eines Quellsatzes während der Dekodierung einer Übersetzung nachahmt“.

Ein Problem bei seq2seq-Modellen bestand zu diesem Zeitpunkt darin, dass rekurrente neuronale Netze (RNN) schwer zu parallelisieren sind. Die Veröffentlichung von Transformers im Jahr 2017 löste das Problem, indem das kodierende RNN durch Self-Attention-Transformer-Blöcke („Encoder-Blöcke“) und das dekodierende RNN durch Cross-Attention-Transformer-Blöcke mit kausaler Maskierung („Decoder-Blöcke“) ersetzt wurde.

Prioritätsstreitigkeit

Eine der Arbeiten, die als Ursprung von seq2seq angeführt wird, ist (Sutskever et al. 2014), die bei Google Brain veröffentlicht wurde, während die Autoren am maschinellen Übersetzungsprojekt von Google arbeiteten. Diese Forschungsarbeit ermöglichte es Google, Google Translate im Jahr 2016 zu Google Neural Machine Translation umzugestalten. Tomáš Mikolov behauptet, bereits vor seinem Eintritt bei Google Brain die Idee entwickelt zu haben, ein „neuronales Sprachmodell auf Satzpaare anzuwenden … und anschließend [die Übersetzung zu generieren], nachdem der erste Satz gesehen wurde“ – was er mit der seq2seq-Maschinenübersetzung gleichsetzt – und diese Idee Ilya Sutskever und Quoc Le (während seiner Zeit bei Google Brain) gegenüber erwähnt zu haben, die ihn in ihrer Arbeit jedoch nicht als Mitverfasser nannten. Mikolov hatte für seine Doktorarbeit an RNNLM (unter Verwendung von RNN für die Sprachmodellierung) gearbeitet und ist vor allem für die Entwicklung von word2vec bekannt.

Architektur

Die wichtigste Quelle für diesen Abschnitt ist Zhang et al.

Encoder

RNN-Encoder

Der Encoder ist dafür zuständig, die Eingabesequenz zu verarbeiten und deren wesentliche Informationen zu erfassen, die als versteckter Zustand des Netzwerks und, in einem Modell mit Aufmerksamkeitsmechanismus, als Kontextvektor gespeichert werden. Der Kontextvektor ist die gewichtete Summe der versteckten Zustände der Eingabe und wird für jeden Zeitpunkt in den Ausgabesequenzen generiert.

Decoder

RNN-Decoder

Der Decoder übernimmt den Kontextvektor und die versteckten Zustände vom Encoder und generiert die endgültige Ausgabesequenz. Der Decoder arbeitet autoregressiv und erzeugt jeweils ein Element der Ausgabesequenz. Bei jedem Schritt berücksichtigt er die zuvor generierten Elemente, den Kontextvektor und die Informationen der Eingabesequenz, um Vorhersagen für das nächste Element der Ausgabesequenz zu treffen. Insbesondere werden in einem Modell mit Aufmerksamkeitsmechanismus der Kontextvektor und der verborgene Zustand zu einem verborgenen Aufmerksamkeitsvektor verkettet, der als Eingabe für den Decoder dient.

Die Anfang der 2010er Jahre entwickelte seq2seq-Methode nutzt zwei neuronale Netze: Ein Encoder-Netz wandelt einen Eingabesatz in numerische Vektoren um und ein Decoder-Netz wandelt diese Vektoren in Sätze in der Zielsprache um. Der Attention-Mechanismus wurde 2014 in diese Struktur integriert und ist unten dargestellt. Später wurde er zur Encoder-Decoder-Transformer-Architektur von 2017 weiterentwickelt.

Training vs. Vorhersage

Training eines seq2seq-Modells mittels Teacher Forcing
Vorhersage einer Sequenz mithilfe eines seq2seq-Modells

Es gibt einen feinen Unterschied zwischen Training und Vorhersage. Während des Trainings sind sowohl die Eingabe- als auch die Ausgabesequenz bekannt. Bei der Vorhersage ist nur die Eingabesequenz bekannt, und die Ausgabesequenz muss vom Netzwerk selbst decodiert werden.

Betrachten wir konkret eine Eingabe- x1:n und eine Ausgabesequenz y1:m. Der Encoder würde die Eingabe x1:n Schritt für Schritt verarbeiten. Danach würde der Decoder die Ausgabe des Encoders sowie das <bos> als Eingabe nehmen und eine Vorhersage ŷ1 erzeugen. Nun stellt sich die Frage: Was soll dem Decoder im nächsten Schritt als Eingabe zugeführt werden?

Eine gängige Trainingsmethode ist das „Teacher Forcing“. Beim Teacher Forcing ist die nächste Eingabe für den Decoder immer die Referenz, unabhängig davon, was der Decoder ausgibt. Das heißt, selbst wenn ŷ1≠y1, ist die nächste Eingabe für den Decoder immer noch y1, und so weiter.

Während der Vorhersagephase wäre der „Teacher“ y1:m nicht verfügbar. Daher muss die Eingabe für den Decoder lauten ŷ1, dann ŷ2 und so weiter.

Seq2seq-RNN-Encoder-Decoder mit Attention-Mechanismus, Training
Seq2seq-RNN-Encoder-Decoder mit Attention-Mechanismus, Training und Inferenz

Es hat sich gezeigt, dass sich die Leistung eines Modells, das ausschließlich durch Teacher Forcing trainiert wurde, während der Vorhersagephase verschlechtert, da sich die auf der eigenen Ausgabe des Modells basierende Generierung von der auf der Ausgabe des Teachers basierenden Generierung unterscheidet. Dies wird als Exposure Bias oder als Verschiebung der Trainings- und Testverteilung bezeichnet. Eine Veröffentlichung aus dem Jahr 2015 empfiehlt, während des Trainings zufällig zwischen Teacher Forcing und dem Verzicht darauf zu wechseln.

Attention für seq2seq

Der Attention-Mechanismus ist eine Erweiterung, die 2014 von Bahdanau et al. eingeführt wurde, um Einschränkungen der grundlegenden Seq2Seq-Architektur zu beheben, bei der eine längere Eingabesequenz dazu führt, dass der vom Encoder ausgegebene versteckte Zustand für den Decoder irrelevant wird. Er ermöglicht es dem Modell, sich während des Dekodierungsprozesses selektiv auf verschiedene Teile der Eingabesequenz zu konzentrieren. Bei jedem Decoder-Schritt berechnet ein Alignment-Modell den Attention-Score unter Verwendung des aktuellen Decoder-Zustands und aller versteckten Attention-Vektoren als Eingabe. Ein Alignment-Modell ist ein weiteres neuronales Netzwerkmodell, das gemeinsam mit dem seq2seq-Modell trainiert wird und dazu dient, zu berechnen, wie gut eine Eingabe, dargestellt durch den verborgenen Zustand, mit der vorherigen Ausgabe, dargestellt durch den verborgenen Attention-Zustand, übereinstimmt. Anschließend wird eine Softmax-Funktion auf den Attention-Score angewendet, um das Attention-Gewicht zu erhalten.

Seq2seq-RNN-Encoder-Decoder mit Attention-Mechanismus, wobei der detaillierte Aufbau des Attention-Mechanismus offengelegt wird.

Bei einigen Modellen werden die Encoder-Zustände direkt in eine Aktivierungsfunktion eingespeist, wodurch kein Alignment-Modell mehr erforderlich ist. Eine Aktivierungsfunktion nimmt einen Decoder-Zustand und einen Encoder-Zustand entgegen und gibt einen Skalarwert zurück, der deren Relevanz angibt.

Animation von seq2seq mit RNN und Attention-Mechanismus

Betrachten wir die seq2seq-Übersetzungsaufgabe vom Englischen ins Französische. Konkret betrachten wir die Übersetzung von „the zone of international control <end>“, die zu „la zone de contrôle international <end>“ übersetzt werden soll. Hier verwenden wir das spezielle Token <end> als Steuerzeichen, um das Ende der Eingabe sowohl für den Encoder als auch für den Decoder zu markieren.

Eine Text-Eingabesequenz x0,x1,… wird von einem neuronalen Netzwerk (beispielsweise einem LSTM, einem Transformer-Encoder oder einem anderen Netzwerk) zu einer Folge von reellen Vektoren h0,h1,… verarbeitet, wobei h für „versteckter Vektor“ steht.

Nachdem der Encoder die Verarbeitung abgeschlossen hat, beginnt der Decoder mit der Verarbeitung der versteckten Vektoren, um autoregressiv eine Ausgabesequenz y0,y1,… zu erzeugen. Das heißt, er nimmt stets sowohl die vom Encoder erzeugten versteckten Vektoren als auch das, was der Decoder selbst zuvor erzeugt hat, als Eingabe, um das nächste Ausgabewort zu erzeugen:

  1. (h0,h1,…, „<start>“) → „la“
  2. (h0,h1,…, „<start> la“) → „la zone“
  3. (h0,h1,…, „<start> la zone“) → „la zone de“
  4. ...
  5. (h0,h1,…, „<start> la zone de contrôle international“) → „la zone de contrôle international <end>“; (übersetzt: „die internationale Kontrollzone“)

Hier verwenden wir das spezielle Token <start> als Steuerzeichen, um den Beginn der Eingabe für den Decoder abzugrenzen. Die Dekodierung wird beendet, sobald „<end>“ in der Ausgabe des Decoders erscheint.

Attention-Gewichte

Attention-Mechanismus mit Attention-Gewichten, Überblick

Da die manuelle Festlegung von Gewichten dem Zweck des maschinellen Lernens zuwiderläuft, muss das Modell die Attention-Gewichte selbst berechnen. In Anlehnung an die Sprache von Datenbankabfragen lassen wir das Modell ein Vektor-Tripel bilden: Schlüssel, Abfrage und Wert. Die grobe Idee besteht darin, dass wir eine „Datenbasis“ in Form einer Liste von Schlüssel-Wert-Paaren haben. Der Decoder sendet eine Abfrage und erhält eine Antwort in Form einer gewichteten Summe der Werte, wobei das Gewicht proportional dazu ist, wie stark die Abfrage jedem Schlüssel ähnelt.

Der Decoder verarbeitet zunächst die Eingabe „<start>“ teilweise, um einen Zwischenvektor zu erhalten h0d, den 0. versteckten Vektor des Decoders. Anschließend wird der Zwischenvektor durch eine lineare Abbildung WQ in einen Abfragevektor q0=h0dWQ umgewandelt. Gleichzeitig werden die vom Encoder ausgegebenen versteckten Vektoren durch eine weitere lineare Abbildung WK in Schlüsselvektoren k0=h0WK,k1=h1WK,… umgewandelt. Die linearen Abbildungen sind nützlich, um dem Modell genügend Freiheit zu geben, den besten Weg zur Darstellung der Daten zu finden.

Nun werden die Abfrage und die Schlüssel durch Berechnung der Skalarprodukte verglichen: q0k0T,q0k1T,…. Im Idealfall sollte das Modell gelernt haben, die Schlüssel und Werte so zu berechnen, dass q0k0T groß ist, q0k1T klein ist und die übrigen Werte sehr klein sind. Dies lässt sich so interpretieren, dass das Attention-Gewicht größtenteils auf den 0. versteckten Vektor des Encoders, ein wenig auf den 1. Vektor und im Wesentlichen gar nicht auf die übrigen angewendet werden sollte.

Um eine korrekt gewichtete Summe zu erhalten, müssen wir diese Liste von Skalarprodukten in eine Wahrscheinlichkeitsverteilung über 0,1,… umwandeln. Dies lässt sich mithilfe der Softmax-Funktion bewerkstelligen, wodurch wir die Attention-Gewichte erhalten: (w00,w01,…)=softmax(q0k0T,q0k1T,…)

Dies wird dann zur Berechnung des Kontextvektors verwendet:

c0=w00v0+w01v1+⋯

wobei v0=h0WV,v1=h1WV,… die Wertvektoren sind, die durch eine weitere Matrix linear transformiert werden, um dem Modell die Freiheit zu geben, die beste Art der Darstellung der Werte zu finden. Ohne die Matrizen WQ,WK,WV wäre das Modell gezwungen, denselben versteckten Vektor sowohl für den Schlüssel als auch für den Wert zu verwenden, was möglicherweise nicht angemessen wäre, da diese beiden Aufgaben nicht identisch sind.

Berechnung der Attention-Gewichte mittels Skalarprodukt. Dies ist die „Decoder-Cross-Attention“.

Dies ist der Dot-Attention-Mechanismus. Die in diesem Abschnitt beschriebene Variante ist die „Decoder-Cross-Attention“, da der Ausgabekontextvektor vom Decoder verwendet wird und die Eingabeschlüssel sowie -werte vom Encoder stammen, die Abfrage jedoch vom Decoder, daher der Begriff „Cross-Attention“.

Einfacher ausgedrückt lässt sich dies wie folgt schreiben: c0=Attention(h0dWQ,HWK,HWV)=softmax((h0dWQ)(HWK)T)(HWV)

wobei die Matrix H die Matrix ist, deren Zeilen aus h0,h1,… bestehen. Beachte, dass der Abfragevektor, h0d, nicht unbedingt mit dem Schlüssel-Wert-Vektor h0 übereinstimmen muss. Tatsächlich ist es theoretisch möglich, dass Abfrage-, Schlüssel- und Wertvektor alle unterschiedlich sind, obwohl dies in der Praxis selten vorkommt.

Einzelnachweise

  1. 1 2 3 4 Ilya Sutskever, Oriol Vinyals, Quoc V. Le: Sequence to Sequence Learning with Neural Networks. 14. Dezember 2014, arxiv:1409.3215 (arxiv.org [PDF; 110 kB; abgerufen am 8. November 2026]).
  2. 1 2 Kyunghyun Cho et al.: Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. 3. September 2014, arxiv:1406.1078 (arxiv.org [PDF; 1,2 MB; abgerufen am 8. November 2026]).
  3. ↑ Kelvin Xu et al.: Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. In: Proceedings of the 32nd International Conference on Machine Learning. Band 37. PMLR, Lille (Frankreich) 7. Juli 2015, S. 2048–2057 (mlr.press [PDF; 3,1 MB; abgerufen am 8. November 2026]).
  4. ↑ Daniel Adiwardana et al.: Towards a Human-like Open-Domain Chatbot. 27. Februar 2020, arxiv:2001.09977 (arxiv.org [PDF; 1,1 MB; abgerufen am 8. November 2026]).
  5. ↑ William Chan, Navdeep Jaitly, Quoc Le, Oriol Vinyals: Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. In: 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, Shanghai (China) 2016, ISBN 978-1-4799-9988-0, S. 4960–4964, doi:10.1109/ICASSP.2016.7472621.
  6. ↑ Alexander M. Rush, Sumit Chopra, Jason Weston: A Neural Attention Model for Abstractive Sentence Summarization. In: Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. Association for Computational Linguistics, Lisbon (Portugal) September 2015, S. 379–389, doi:10.18653/v1/D15-1044 (aclanthology.org [PDF; 368 kB; abgerufen am 8. November 2026]).
  7. ↑ Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio: Neural Machine Translation by Jointly Learning to Align and Translate. 19. Mai 2016, arxiv:1409.0473 (arxiv.org [PDF; 435 kB; abgerufen am 8. November 2026]).
  8. ↑ Ashish Vaswani et al.: Attention Is All You Need. 2. August 2023, arxiv:1706.03762 (arxiv.org [PDF; 2,2 MB; abgerufen am 8. November 2026]).
  9. ↑ Yonghui Wu et al.: Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. 8. Oktober 2016, arxiv:1609.08144 (arxiv.org [PDF; 1,7 MB; abgerufen am 8. November 2026]).
  10. ↑ Tomas Mikolov: Yesterday we received a Test of Time Award at NeurIPS for the word2vec paper from ten years ago. In: facebook.com. 14. Dezember 2023, abgerufen am 8. November 2026 (englisch).
  11. ↑ Mikolov Tomáš: Statistical Language models based on neural networks. Brno University of Technology, Brünn (Tschechien) 2. Oktober 2012 (englisch, vut.cz [PDF; 795 kB; abgerufen am 8. November 2026]).
  12. ↑ Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola: Dive into Deep Learning. 2023, ISBN 978-1-009-38943-3, S. 408–417, arxiv:2106.11342 (arxiv.org [PDF; 38,6 MB; abgerufen am 8. November 2026]).
  13. ↑ Samy Bengio, Oriol Vinyals, Navdeep Jaitly, Noam Shazeer: Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks. 23. September 2015, arxiv:1506.03099 (arxiv.org [PDF; 277 kB; abgerufen am 8. November 2026]).