Wie der Titel schon sagt, werde ich in diesem Artikel die Transformer-Architektur von Grund auf mit PyTorch implementieren – ja, buchstäblich von Grund auf. Bevor wir näher darauf eingehen, möchte ich einen kurzen Überblick über die Architektur geben. Transformer wurde erstmals in einem Artikel mit dem Titel „Aufmerksamkeit ist alles, was Sie brauchen“ geschrieben von Vaswani et al. im Jahr 2017 (1). Dieses neuronale Netzwerkmodell ist auf Leistung ausgelegt seq2seq (Sequenz-zu-Sequenz)-Aufgaben, bei denen eine Sequenz als Eingabe akzeptiert wird und von der erwartet wird, dass sie eine andere Sequenz für die Ausgabe zurückgibt, z. B. maschinelle Übersetzung und Beantwortung von Fragen.
Bevor Transformer eingeführt wurde, verwendeten wir zur Umsetzung normalerweise RNN-basierte Modelle wie LSTM oder GRU seq2seq Aufgaben. Diese Modelle sind zwar in der Lage, Kontexte zu erfassen, tun dies jedoch sequentiell. Dieser Ansatz macht es schwierig, langfristige Abhängigkeiten zu erfassen, insbesondere wenn der wichtige Kontext sehr weit hinter dem aktuellen Zeitschritt liegt. Im Gegensatz dazu kann Transformer alle Teile der Sequenz, die es für wichtig hält, frei verfolgen, ohne durch die sequentielle Verarbeitung eingeschränkt zu sein.