HeadlinesBriefing favicon HeadlinesBriefing.com

Warum Transformer Positionskodierungen benötigen

Towards Data Science •
×

Bei der Vertiefung in Foundation Models für Zeitreihen wurde mir klar, dass ich sie nicht wirklich verstehen konnte, ohne zuerst Transformer zu verstehen. Ich wollte diese Modelle nicht als Black Boxes verwenden, also begann ich, die Ideen rückwärts zu verfolgen, von Foundation Models zu Transformern und von Transformern zu Self-Attention. Was den Übergang interessant machte, ist, dass Transformer zwar ursprünglich für Sprache entwickelt wurden, sich die Kernidee aber natürlich auf Zeitreihen übertragen lässt. Die beiden Modalitäten sind sehr unterschiedlich, aber sie haben etwas Gemeinsames: Beide sind Sequenzen, und in beiden Fällen verändert die Reihenfolge die Bedeutung. In der Sprache ist Hund beißt Mann sehr unterschiedlich von Mann beißt Hund. Bei Zeitreihen ist es nicht anders. Eine Temperatur von 30° gestern und 20° heute erzählt eine andere Geschichte als 20° gestern und 30° heute. Die Werte können gleich sein, aber ihre Reihenfolge verändert die Bedeutung der Sequenz. Die Frage ist, wenn Self-Attention alle Beobachtungen gleichzeitig betrachtet, wie weiß ein Transformer, welche Beobachtung zuerst kam, welche später kam oder wie weit zwei Beobachtungen voneinander entfernt sind? Diese Frage führte mich zur Positions Kodierung. Was mich am meisten überraschte, war, wie eine so einfache mathematische Idee einem Transformer ein Gefühl für Reihenfolge verleihen konnte. Die genauen Techniken haben sich seitdem erheblich weiterentwickelt, aber das zugrunde liegende Problem bleibt dasselbe. Dieser Artikel ist mein Versuch, diese Intuition von Grund auf aufzubauen, beginnend mit einer einfachen Zeitreihe und dem Weg von rohen Beobachtungen über Self-Attention bis hin zur Positions Kodierung.

Von skalaren Beobachtungen zu Vektordarstellungen Betrachten Sie eine einfache Zeitreihe, die die über fünf Werktage aufgezeichnete Temperatur enthält: Beispiel für eine Zeitreihe: 5-Tage-Temperaturverlauf Jede Beobachtung x_t ist nur ein Skalar. Ein Transformer arbeitet jedoch mit Vektoren der Dimensionalität d_model. Die skalaren Beobachtungen müssen daher zunächst in diesen Darstellungsraum abgebildet werden. Eine einfache Möglichkeit dazu besteht in einer gelernten linearen Projektion, d.h. Einbettung: e_t = W_e x_t + b_e was uns eine Sequenz von Vektordarstellungen gibt: e_1, e_2, e_3, e_4, e_5 Eine Einbettung ist eine tiefe, abstrakte Darstellung der Reihe in Form eines mehrdimensionalen numerischen Vektors, der ihre Merkmale kodiert und die das Modell versteht. Jedes Zeitreihen-Token wird durch eine gelernte Einbettung dargestellt. Jedes e_t erfasst Informationen über den beobachteten Wert an diesem Zeitschritt, aber an diesem Punkt ist es nur eine Darstellung der Beobachtung. Das wichtige Wort hier ist gelernt. Dem Modell wird keine vordefinierte Vektordarstellung für eine Temperatur wie 18° gegeben. Die Parameter W_e und b_e werden während des Trainings gelernt, sodass die resultierenden Darstellungen für die Aufgabe nützlich werden. An diesem Punkt repräsentiert e_t, was beobachtet wurde. Es sagt dem Modell noch nicht, wo diese Beobachtung in der Sequenz stattfand.

Wie baut Self-Attention Kontext auf? Self-Attention ermöglicht es jeder Beobachtung, Informationen aus dem Rest der Sequenz zu verwenden. Angenommen, wir möchten die Darstellung für Freitag aktualisieren. Das Modell erstellt zunächst drei gelernte Projektionen aus jedem e_t: q_t = W_Q e_t, k_t = W_K e_t, v_t = W_V e_t Query-, Key- und Value-Vektoren werden im Self-Attention-Block gelernt. Die Matrizen W_Q, W