Den Aufmerksamkeitsmechanismus beim Deep Learning verstehen – Aufmerksamkeitsmechanismus


Im Selbststudium des Aufmerksamkeitsmechanismus ist das Referenzmaterial Praktisches Erlernen von Deep Learning V2 – Lernen Sie KI von Li Mu

Realistischer Hintergrund des Aufmerksamkeitsmechanismus

Psychologisch gesehen müssen sich Menschen in einer Umgebung voller Informationen aller Art darauf konzentrieren, die entsprechenden Informationen wie Zeitungen, Tassen und Bücher auf dem Tisch zu sehen, wenn sie auf das achten möchten, was sie sehen möchten. Wenn jemand nur Bücher sehen möchte, sollte sein Blick nur auf Bücher gerichtet sein und es besteht keine Notwendigkeit, auf Zeitungen und Tassen zu schauen.

Wechseln Sie dann zu Deep Learning und möchten Sie die Eigenschaften der menschlichen Aufmerksamkeit nachahmen. Während des Trainings hoffe ich, dass in allen Proben (Tassen, Bücher, Zeitungen) diese Daten vor dem Training nicht unterschieden werden können, und ich hoffe, dass meine endgültige Ausgabe möglich ist Basierend auf meinen Anforderungen (z. B. möchte ich in dieser Umgebung einen Becher finden) muss ich dann einen Aufmerksamkeitsmechanismus entwerfen, um während des Trainings Daten auszuwählen, die in hohem Maße mit dem Becher zusammenhängen, und schließlich kann ich Becher als Ausgabe finden.
Fügen Sie hier eine Bildbeschreibung ein

Die Natur des Aufmerksamkeitsmechanismus

Aus gestalterischer Sicht besteht der Kern des Aufmerksamkeitsmechanismus darin, N Schlüssel-Wert-Paare (Schlüsselwert) festzulegen, dann eine dem Schlüssel ähnliche Abfrage einzugeben und die Abfrage zu berechnen, die dem Schlüssel am ähnlichsten ist (Kosinus). Ähnlichkeit) und findet dann im entsprechenden Pooling (Aggregations- oder Pooling-Schicht) den entsprechenden Schlüssel, findet dann den Wert und gibt ihn aus.
Fügen Sie hier eine Bildbeschreibung ein

Nichtparametrische Aufmerksamkeitspooling-Schicht

Als die Rechenleistung in den 1960er Jahren begrenzt war, verwendeten Statistiker beim Entwerfen, Abfragen und Messen der objektiven Funktion des Effekts die gewichtete Durchschnittssummenform ohne Parameter. x ist die Abfrage, xi stellt den Schlüssel dar und yi stellt den Wert dar. Berechnen Sie dann die Differenz zwischen der Abfrage und jedem Schlüssel und verwenden Sie die Differenz als Gewicht, um den Anteil des Werts zu messen. Die letztendlich zurückgegebene Abfrage entspricht diesem Wert. K repräsentiert die Kernelfunktion. Zum Beispiel die Gaußsche Kernelfunktion.
Fügen Sie hier eine Bildbeschreibung ein
Unter der Annahme, dass die Gaußsche Kernelfunktion verwendet wird, bei der es sich um eine Normalverteilung handelt, und das Residuum auf [0-1] begrenzt ist, kann die Funktion glatter gemacht werden. Schließlich kann exp in die Softmax-Funktion umgewandelt werden, die in heutigen Aufmerksamkeitsmechanismen verwendet wird.
Fügen Sie hier eine Bildbeschreibung ein

Parametrischer Aufmerksamkeitsmechanismus

Um den Aufmerksamkeitsmechanismus einzugrenzen und nach ähnlichen Renditen zu suchen, damit sich das Training stärker auf die umgebenden, stark verwandten Personen konzentrieren kann, wird jedem Residuum ein Parameter w hinzugefügt. Anschließend kann dieser Parameter w durch Lernen trainiert werden. Damit der endgültige Funktionsanpassungseffekt optimal ist. Der Abfrageeffekt ist am genauesten. Dies ist die Grundlage moderner Transformer. So gestalten Sie das Gewicht w, um den Trainingseffekt zu verbessern. Dies ist ein Bereich mit Verbesserungspotenzial.
Fügen Sie hier eine Bildbeschreibung ein

Design der Aufmerksamkeitsbewertung – Aufmerksamkeitsbewertungsfunktion

Rückblickend auf den Aufmerksamkeitsmechanismus wird der Unterschied zwischen der Abfrageabfrage und dem Schlüssel durch Softmax normalisiert, dann mit dem entsprechenden Gewicht multipliziert und mit dem Wert multipliziert. Schließlich wird die gewichtete Summe erhalten, um die Ausgabe zu erhalten.
Fügen Sie hier eine Bildbeschreibung ein
Nachdem q, k und v von einem Skalar und einem Wert zu einem Vektor erweitert wurden, können q, k und v hier alle unterschiedlich aussehen. Dann ist der Aufmerksamkeitswert oder die Aufmerksamkeitswertfunktion a ( q , k i ) a(q,k_i) a(q,ki). Die Aufmerksamkeitspoolschicht ist eine Funktion, die M Schlüssel-Wert-Paare aggregiert, die eine gewichtete Summe darstellen können.
Fügen Sie hier eine Bildbeschreibung ein

Design 1: Abfrage und schlüsselgewichtete Aufmerksamkeit

Es müssen drei Parameter gelernt werden: Schlüsselgewichtsmatrix Wk, Abfragegewichtsmatrix Wq und Ausgabedimension h der verborgenen Schicht. Die Abfragelänge ist q, die Schlüssellänge ist k und sie müssen auf die Länge h vereinheitlicht werden. Stellen Sie dann die beiden Matrizen Wk so ein, dass sie h Zeilen und k Spalten haben, und Wq so, dass sie h Zeilen und q Spalten haben. Anschließend wird der Schlüssel multipliziert Durch Wk auf der linken Seite wird ein Vektor mit einer Länge von h erstellt. Auf die gleiche Weise wird auch die Abfrage zu einem Vektor mit einer Länge von h. Addieren Sie es dann und ermitteln Sie den Tanh-Grenzwert zwischen 0 und 1 und multiplizieren Sie es dann durch Transponieren des Werts, um das Endergebnis mit einer Dimension von 1*1 zu erhalten. Dies entspricht der Eingabe von Schlüssel und Abfrage in eine verborgene Ebene. Die Eingabe ist q+k und die Ausgabe ist 1. Die Parameter der verborgenen Schicht sind Wk und Wq.
Fügen Sie hier eine Bildbeschreibung ein

Design 2: Klicken Sie, um die Aufmerksamkeit zu vervielfachen

Wenn die Abfrage und der Schlüssel dieselbe Länge haben, kann die Punktmultiplikation, also das innere Produkt, verwendet werden, um sie in einen Aufmerksamkeitswert umzuwandeln.
Fügen Sie hier eine Bildbeschreibung ein

Zusammenfassen

Die Aufmerksamkeitsbewertung ist die Ähnlichkeit zwischen Abfrage und Schlüssel, und die Aufmerksamkeitsgewichtung ist das Softmax-Ergebnis der Bewertung. ·Zwei gängige Score-Berechnungen:·
1. Kombinieren Sie Abfrage und Schlüssel in einem einzigen Ausgabe-MLP mit einer versteckten Schicht·
2. Kombinieren Sie Abfrage direkt und erstellen Sie ein inneres Produkt mit einem Schlüssel

Der Aufmerksamkeitsmechanismus wird zu seq2seq hinzugefügt

Motivation

Bei der maschinellen Übersetzung natürlicher Sprache, beispielsweise der Übersetzung vom Englischen ins Französische, können die entsprechenden Wörter für jedes Wort unterschiedlich sein. Im seq2seq-Netzwerkmodell ist die Eingabe des Decoders jedoch die Ausgabe der letzten verborgenen MLP-Schicht des Encoders. In diesem Fall werden die Informationen, die gefunden werden müssen, um dem Wort zu entsprechen, in alle Informationen gemischt. Dies führt zu einer Verringerung der Übersetzungseffizienz. Daher kann das seq2seq-Netzwerkmodell nicht direkt für die maschinelle Übersetzung verwendet werden.
Fügen Sie hier eine Bildbeschreibung ein

Lösung

Die Lösung besteht darin, Aufmerksamkeitspooling zwischen den beiden RNNs hinzuzufügen, um die Dekodierung zu unterstützen. Im Encoder verfügt jeder MLP von RNN über eine verborgene Schichtausgabe. Behandeln Sie diese Ausgabe als Paar (Schlüssel, Wert) und beide sind gleich. Dann wird für jedes aktuell übersetzte Wort in der Decodierungsschicht die Ausgabe des vorherigen RNN als Abfrage verwendet. Da davon ausgegangen wird, dass sich die Ausgabe der verborgenen Schicht des Encoders und des Decoders im selben semantischen Raum befindet, wird die Ausgabe der verborgenen Schicht als Schlüsselwertabfrage verwendet.

Wenn beispielsweise „world“ in „le“ übersetzt wird und Sie immer noch nicht erraten können, in welches Wort „world“ übersetzt wird, müssen Sie mithilfe von „ Attention“ die Ausgabe der verborgenen Ebene des zuletzt übersetzten „Bonjour“ im Decoder als Abfrage für die Aufmerksamkeitsbündelung verwenden. Fragen Sie die verborgene Schichtausgabe des RNN des letzten Hallo ab, das im Encoder übersetzt wurde. Nachdem Sie Hallo gefunden haben, sammeln Sie die Ähnlichkeit der angehängten Wörter als Punktzahl (Summe der Gewichte verschiedener Wörter) und verwenden Sie die Punktzahl als The Die Ausgabe der Aufmerksamkeit und die Einbettung des nächsten Wortes werden zusammengeführt und in das nächste RNN eingegeben.Fügen Sie hier eine Bildbeschreibung ein

Selbstaufmerksamkeitsmechanismus – Selbstaufmerksamkeit

Angenommen, es gibt eine Folge x 1 , . . . , x n x_1,...,x_n X1,...,Xnjeder Teil x i x_i Xi ist ein Vektor mit der Länge d. Der Selbstaufmerksamkeitsmechanismus besteht darin, jedes x i x_i umzuwandelnXiGleichzeitig werden sie als Schlüssel-, Wert- und Abfrageextraktionsmerkmale verwendet und in die Pooling-Schicht eingegeben. Dann kann jedes x andere Elemente abfragen, die sich auf es selbst beziehen, und eine gewichtete Ausgabe liefern. Es ist so, als ob jeder Knoten im RNN einen Ausgang hat.
Fügen Sie hier eine Bildbeschreibung ein

Vergleich zwischen Selbstaufmerksamkeitsmechanismus und CNN und RNN

Wenn das Modell stark von der Vorher-Nachher-Sequenz abhängt, kann RNN gute Ergebnisse erzielen. Wenn die Sequenz jedoch sehr lang ist, ist die Komplexität von RNN sehr hoch. Wenn der Satz sehr lang ist, erfordert der Selbstaufmerksamkeitsmechanismus auch einen großen Rechenaufwand. Der Selbstaufmerksamkeitsmechanismus kann bei langen Sequenzen schnell entfernte Informationen erfassen, während RNN die gesamte Sequenz abschließen muss. Heutzutage wenden Modelle wie Transformer und BERT Aufmerksamkeitsmechanismen an und können sehr lange Sequenzen verarbeiten, aber der Rechenaufwand nimmt deutlich zu und erfordert normalerweise Hunderte von GPUs.
Fügen Sie hier eine Bildbeschreibung ein

Positionskodierung

Der Selbstaufmerksamkeitsmechanismus verfügt über keine Positionsinformationen, aber CNN und RNN können die Positionen verschiedener Ausgänge schnell lokalisieren. Da der Selbstaufmerksamkeitsmechanismus keine Positionsinformationen hat, werden die Positionsinformationen als Eingabe verwendet und die Sequenz zum Training hinzugefügt und kombiniert. Jede Standortinformation ist etwas anders und die Differenzformeln lauten wie folgt.
Fügen Sie hier eine Bildbeschreibung ein

Codierung der relativen Positionsinformationen

Die Positionsinformationen bei i+a können durch die Informationen bei i linear dargestellt werden. Der Ausdruck lautet wie folgt: Aufgrund der trigonometrischen Funktionsbeziehung.
Fügen Sie hier eine Bildbeschreibung ein

Transformatoren Transformator

Im Vergleich zu seq2seq verwendet Transformer einen reinen Aufmerksamkeitsmechanismus zur Behandlung von Sequenzproblemen, anstatt ein wiederkehrendes neuronales Netzwerk zu verwenden. Der Transformator besteht aus einem Encoder und einem Decoder.

Encoder: Nachdem die Informationen eingebettet wurden, wird die Positionscodierung hinzugefügt und in den Aufmerksamkeitspool eingegeben. Seine eigenen Vektoren sind Q, K, V, was den Selbstaufmerksamkeitsmechanismus darstellt. Wie bereits erwähnt, kann der Selbstaufmerksamkeitsmechanismus den Kontext unabhängig von der Entfernung schnell lesen. Nachdem der Aufmerksamkeitswert aus der Mehrkopfaufmerksamkeit hervorgegangen ist, wird die vorherige Eingabe hinzugefügt und normalisiert. Geben Sie dann die vollständig verbundene Ebene ein und fügen Sie dann die Features hinzu und normalisieren Sie sie, nachdem Sie sie extrahiert haben. Wiederholen Sie dies N-mal und geben Sie die Informationen schließlich als Schlüsselwert an den Aufmerksamkeitspool des Decoders aus.

Decoder: Auf die gleiche Weise muss der Decoder Schicht für Schicht entsprechend dem übersetzten Wort dekodieren. Der Zweck mehrerer Masken besteht darin, die Betrachtung des Füllteils zu vermeiden und den Rechenaufwand zu reduzieren. Schließlich wird der erhaltene Aufmerksamkeitswert zum Aufmerksamkeitspooling weitergeleitet, um abzufragen, welcher Aufmerksamkeitsgrad am ähnlichsten ist, und der Wert und die Eingabe werden addiert und normalisiert. Nach der Decodierung durch die vollständig verbundene Schicht wird sie N-mal wiederholt und schließlich mit der vollständig verbundenen Schicht ausgegeben.
Fügen Sie hier eine Bildbeschreibung ein

Mehrkopf-Aufmerksamkeitsmechanismus – Mehrkopf-Aufmerksamkeit

Für jedes Q, K, V hoffe ich, dass es zu unterschiedlichen Zeiten eine unterschiedliche Leistung zeigt. Manchmal kann es sich lange Sätze merken und manchmal kann es sich kurze Sätze merken. Dann werde ich mehrere Aufmerksamkeitspools einrichten, um unterschiedliche Fähigkeiten oder Aufmerksamkeiten zu speichern. Für ein Paar Q, K, V muss ich H-Pooling-Schichten trainieren. Abschließend werden die H-Aufmerksamkeitswerte miteinander verknüpft und über eine vollständig verbundene Ebene ausgegeben. In der Struktur der Mehrkopfaufmerksamkeit ist eine Poolschicht ein Kopf. Geben Sie Q, K und V in drei vollständig verbundene Schichten ein, ordnen Sie sie einer einheitlichen d-Dimension zu und erstellen Sie schließlich einen Selbstaufmerksamkeitsmechanismus für jeden Kopf.
Fügen Sie hier eine Bildbeschreibung ein

Maskierte Mehrkopfaufmerksamkeit mit maskierter Mehrkopfaufmerksamkeit

Fügen Sie hier eine Bildbeschreibung ein

Positionsbasiertes Feedforward-Netzwerk FFN

Tatsächlich handelt es sich um eine vollständig verbundene Schicht, da die Ausgabe des Aufmerksamkeitspoolings dreidimensional, in Stapelgröße, in der Sequenzlänge und in der Dimension ist. Da Sequenzlängen variabel sind, können Sequenzlängen und -abmessungen nicht kombiniert werden. Dann wird jedes xi in der Sequenz als Stichprobe betrachtet und durch die vollständig verbundene Schicht auf die Dimensionen bn und d abgebildet.
Fügen Sie hier eine Bildbeschreibung ein

Schichtnormalisierung

Da es notwendig ist, die Tiefe des Netzwerks zu erhöhen und die Fähigkeit des Netzwerks zur Verarbeitung von Sequenzen zu erhöhen, ist Add eine Restverbindung, um die vorherigen Informationen beizubehalten. Zweitens ist eine Normalisierung erforderlich, um die Vertiefung des Netzwerks zu erleichtern. Die herkömmliche Stapelnormalisierung normalisiert jedoch die Merkmale jeder Dimension jedes Wortes in der Sequenz. Da die Sequenz variabel ist, führt dies zu Problemen bei der Normalisierung. Bei der Vereinheitlichung , die Ein- und Ausgabe sind instabil. Deshalb sind wir dazu übergegangen, in jedem Stapel eine Normalisierung durchzuführen. Führen Sie die Normalisierung an einer einzelnen Probe durch. Es wird keine Instabilität auftreten (kein Auffüllen 0).
Fügen Sie hier eine Bildbeschreibung ein

Informationsübertragung

Speichern Sie jede Ausgabe als Eingabe des Schlüsselwerts der Aufmerksamkeitsbündelung während der Dekodierung.
Fügen Sie hier eine Bildbeschreibung ein

vorhersagen

Nachdem Sie die Ausgabe der ersten T-Momente kennen, müssen Sie die Ausgabe des T + 1-Moments vorhersagen. Die Ausgabe der ersten T-Momente muss als Schlüsselwert verwendet werden, und dann wird die Ausgabe des T-Moments verwendet als Q, K, V, um das Wort des T+1-Moments zu erhalten. Übersetzungsvorhersagen.
Fügen Sie hier eine Bildbeschreibung ein

Nutzen Sie den Aufmerksamkeitsmechanismus, um Entscheidungen zu treffen

Das Gute am Aufmerksamkeitsmechanismus ist, dass ich eine Reihe von Dingen mit unterschiedlichen Parametern trainiere und dann diese Parameter eingebe, um diesen Teil des trainierten Modells zu extrahieren und zu verwenden.

Beispiel: Es gibt N verschiedene Flow-Shop-Planungsdatensätze. Ich habe ein RNN erstellt, um die Sequenz zu trainieren, mir die Eigenschaften jedes Testsatzes zu merken und dann mithilfe von Reinforcement Learning die Parameter des RNN anzupassen, um es der optimalen Lösung näher zu bringen . . Dann habe ich N Testsätze und trainiere diese N Testsätze zusammen, um ein einheitlicher Optimierer für diese N Testsätze zu werden. Wenn ich diesen Optimierer dann zum Dekodieren verwenden möchte, gebe ich die Größe des Problems ein und kann dann mithilfe von Attention diesen Teil des trainierten Modells im Optimierer finden und ihn zur Lösung des Problems vorschlagen. Auf diese Weise entspreche ich dem Training eines Modells, das N Testsätze lösen kann. Dies entspricht der Integration von N benutzerdefinierten Netzwerken. Der Nachteil besteht darin, dass sich die Trainingszeit verdoppelt.

Beispiel 2: Bei meiner Multi-Ziel-Kombinationsoptimierung muss ich die Verteilung sehr gut machen, mit Punkten in jedem Referenzanhang. Die traditionelle Methode besteht also darin, dass ich N Referenzlinien festlege und N Netzwerke aufbauen muss, um die Optimierung des verstärkenden Lernens in diese Richtung zu nutzen. Wenn ich Attention verwende, kann ich diese N Netzwerke miteinander integrieren. Nachdem ich das Training abgeschlossen habe, muss ich die Lösung in die Nähe der Referenzlinie bringen, also gebe ich den Namen der Referenzlinie ein, extrahiere dann das Modell und erhalte seine optimierte Endlösung. Aufmerksamkeit entspricht einem Integrations- und Anpassungsprozess

Guess you like

Origin blog.csdn.net/qq_36820823/article/details/125690459