Self-attention ist ein Mechanismus im maschinellen Lernen, bei dem jedes Element einer Sequenz alle anderen Elemente beachtet und Aufmerksamkeitsgewichte basierend auf ihren Beziehungen berechnet. Im Gegensatz zu früheren Aufmerksamkeitsmechanismen, die zwischen Encoder- und Decoder-Sequenzen operierten, leitet Self-Attention Queries, Keys und Values aus derselben Eingabesequenz ab, wodurch das Modell globale Abhängigkeiten direkt erfassen kann. Dieses Konzept ist zentral für die Transformer-Architektur, die Rekurrenz durch Aufmerksamkeitsmechanismen ersetzte, und wurde zur Grundlage für Modelle wie BERT, T5 und generative vortrainierte Transformatoren (GPT).
Bei Self-Attention wird jedes Token in der Eingabesequenz in drei Vektoren transformiert: einen Query, einen Key und einen Value. Das Aufmerksamkeitsgewicht zwischen zwei Token wird als Skalarprodukt des Query des einen Tokens mit dem Key des anderen berechnet, typischerweise skaliert und durch eine Softmax-Funktion geleitet. Diese Gewichte, oft als „weiche“ Gewichte bezeichnet, existieren nur im Vorwärtsdurchlauf und ändern sich mit jedem Eingabeschritt, im Gegensatz zu „harten“ Gewichten, die während des Trainings berechnet werden. Die Ausgabe für jedes Token ist eine gewichtete Summe der Values, wobei die Gewichte die Relevanz anderer Token für das aktuelle Token widerspiegeln.
Geschichte
Aufmerksamkeitsmechanismen wurden entwickelt, um Schwächen von rekurrenten neuronalen Netzen (RNNs) zu beheben, die Informationen aus späteren Wörtern eines Satzes bevorzugten und früheren Kontext abschwächten. Frühe Aufmerksamkeitsdesigns fügten einen Aufmerksamkeitsmechanismus an ein Encoder-Decoder-RNN für maschinelle Übersetzung an, wie von Bahdanau et al. 2014 beschrieben. Der große Durchbruch kam jedoch mit Self-Attention, bei dem jedes Element der Eingabesequenz alle anderen beachtet, wodurch das Modell globale Abhängigkeiten erfassen kann. Diese Idee war zentral für die Transformer-Architektur, die im 2017 erschienenen Paper „Attention Is All You Need“ von Jakob Uszkoreit, Lukasz Kaiser und Kollegen bei Google eingeführt wurde. Transformer entfernten das langsamere sequenzielle RNN und verließen sich auf schnellere parallele Aufmerksamkeit, was zu Modellen wie BERT, T5 und GPT führte. Weitere Übersichten über Aufmerksamkeitsmechanismen im Deep Learning liefern Niu et al. und Soydaner.
Mechanismus
Self-Attention operiert auf einer Sequenz von Token-Embeddings, die jeweils als Vektor dargestellt werden. Für jedes Token berechnet das Modell einen Query-Vektor, einen Key-Vektor und einen Value-Vektor durch gelernte lineare Transformationen. Der Aufmerksamkeitswert zwischen Token i und Token j wird als Skalarprodukt von query_i und key_j berechnet, oft dividiert durch die Quadratwurzel der Dimension, um Gradienten zu stabilisieren. Diese Werte werden durch ein Softmax geleitet, um Aufmerksamkeitsgewichte zu erzeugen, die für jeden Query auf eins summieren. Die Ausgabe für Token i ist die gewichtete Summe aller Value-Vektoren unter Verwendung dieser Gewichte.
Dieser Mechanismus ermöglicht es jedem Token, direkt auf jeden Teil der Sequenz zuzugreifen, unabhängig von der Distanz, und überwindet so den sequenziellen Engpass von RNNs. In der Praxis verwenden Transformer Multi-Head-Attention, bei dem mehrere Sätze von Query-, Key- und Value-Projektionen parallel laufen, wodurch das Modell verschiedene Aspekte der Sequenz gleichzeitig beachten kann.
Interpretation von Aufmerksamkeitsgewichten
Beim Übersetzen bezieht sich Alignment auf das Zuordnen von Wörtern aus dem Quellsatz zu Wörtern im übersetzten Satz. Netzwerke, die wörtliche Übersetzung ohne Rücksicht auf die Wortreihenfolge durchführen, würden die höchsten Aufmerksamkeitswerte entlang der Diagonalen der Alignment-Matrix zeigen. Eine Dominanz außerhalb der Diagonalen deutet auf ein nuancierteres Alignment hin. Zum Beispiel beim Übersetzen von „I love you“ ins Französische: Beim ersten Decoder-Durchlauf liegen 94% des Aufmerksamkeitsgewichts auf „I“, was „je“ erzeugt; beim zweiten Durchlauf 88% auf „you“, was „t'“ erzeugt; beim dritten Durchlauf 95% auf „love“, was „aime“ erzeugt. Dies ergibt eine Alignment-Matrix, in der „love“ mit „aime“ übereinstimmt.
Manchmal ist das Alignment viele-zu-viele, wie bei „look it up“ entsprechend „cherchez-le“. Weiche Aufmerksamkeitsgewichte, die eine gewichtete Summe der versteckten Vektoren erzeugen, funktionieren besser als harte Aufmerksamkeit (bei der ein Gewicht auf 1 und alle anderen auf 0 gesetzt werden), da es möglicherweise keinen einzelnen besten versteckten Vektor gibt.
Varianten
Viele Varianten der Aufmerksamkeit implementieren weiche Gewichte. Frühe Formen umfassen Fast-Weight-Programmierer oder Fast-Weight-Controller (1992), bei denen ein „langsames“ neuronales Netzwerk die „schnellen“ Gewichte eines anderen Netzwerks durch äußere Produkte ausgibt, später als „linearisierte Self-Attention“ bezeichnet. Bahdanau-Stil-Aufmerksamkeit, auch als additive Aufmerksamkeit bekannt, und Luong-Stil-Aufmerksamkeit, oder multiplikative Aufmerksamkeit, sind in RNN-basierten Systemen üblich. Frühe Aufmerksamkeitsmechanismen, die der modernen Self-Attention ähneln, wurden mit RNNs vorgeschlagen, aber die hochgradig parallelisierbare Self-Attention wurde 2017 eingeführt und im Transformer verwendet. Weitere Varianten umfassen positionelle Aufmerksamkeit und faktorisierte positionelle Aufmerksamkeit. Für faltende neuronale Netze kann Aufmerksamkeit auf räumlichen Dimensionen, Kanaldimensionen oder Kombinationen davon operieren. Diese Varianten kombinieren Encoder-seitige Eingaben neu, um Effekte auf jedes Zieloutput umzuverteilen, oft unter Verwendung einer Korrelationsmatrix aus Skalarprodukten zur Neugewichtung.
Optimierungen
Die Größe der Aufmerksamkeitsmatrix wächst quadratisch mit der Anzahl der Token, was für lange Sequenzen erheblichen GPU-Speicher erfordert. Flash Attention, 2022 eingeführt, reduziert den Speicherbedarf und erhöht die Effizienz ohne Genauigkeitsverlust, indem die Aufmerksamkeitsberechnung in Blöcke partitioniert wird, die in den schnelleren On-Chip-Speicher der GPU passen, wodurch die Zwischenspeicherung reduziert wird. FlexAttention, entwickelt von Meta, ermöglicht es Benutzern, Aufmerksamkeitswerte vor dem Softmax zu modifizieren und wählt dynamisch den optimalen Aufmerksamkeitsalgorithmus.
Anwendungen
Aufmerksamkeit wird häufig in der Verarbeitung natürlicher Sprache, im Computer Vision und in der Spracherkennung eingesetzt. In der NLP verbessert sie das Kontextverständnis bei Aufgaben wie Fragebeantwortung und Zusammenfassung. Im Bereich Vision hilft visuelle Aufmerksamkeit Modellen, sich auf relevante Bildregionen zu konzentrieren, was Objekterkennung und Bildbeschriftung verbessert. Self-Attention ist ein Kernbestandteil von großen Sprachmodellen wie GPT, die es zur Verarbeitung und Generierung von Text verwenden.
Aufmerksamkeitskarten als Erklärungen für Vision Transformer
Aus dem ursprünglichen Vision-Transformer-Paper (ViT) ist die Visualisierung von Aufmerksamkeitswerten als Heatmaps, sogenannte Saliency-Maps oder Aufmerksamkeitskarten, zu einer Routine-Methode geworden, um den Entscheidungsprozess von ViT-Modellen zu untersuchen. Man kann Aufmerksamkeitskarten für jeden Aufmerksamkeitskopf in jeder Schicht berechnen, wobei tiefere Schichten semantisch aussagekräftigere Visualisierungen zeigen. Attention Rollout ist ein rekursiver Algorithmus, der Aufmerksamkeitswerte über alle Schichten kombiniert, indem das Skalarprodukt aufeinanderfolgender Aufmerksamkeitskarten berechnet wird. Da Vision Transformer typischerweise selbstüberwacht trainiert werden, sind Aufmerksamkeitskarten im Allgemeinen nicht klassensensitiv. Wenn ein Klassifikationskopf angehängt wird, kombinieren klassendiskriminative Aufmerksamkeitskarten (CDAM) Aufmerksamkeitskarten und Gradienten bezüglich des Klassen-[CLS]-Tokens. Einige klassensensitive Interpretierbarkeitsmethoden, die ursprünglich für faltende neuronale Netze entwickelt wurden, können ebenfalls angepasst werden.