


Dieser „Fehler' ist nicht wirklich ein Fehler: Beginnen Sie mit vier klassischen Aufsätzen, um zu verstehen, was am Transformer-Architekturdiagramm „falsch' ist
Vor einiger Zeit löste ein Tweet, der auf die Inkonsistenz zwischen dem Transformer-Architekturdiagramm und dem Code im Artikel „Attention Is All You Need“ des Google Brain-Teams hinwies, viele Diskussionen aus.
Manche Leute denken, dass Sebastians Entdeckung ein ehrlicher Fehler war, aber es ist gleichzeitig auch seltsam. Angesichts der Popularität des Transformer-Papiers hätte diese Inkonsistenz schließlich tausendmal erwähnt werden müssen.
Sebastian Raschka antwortete auf Kommentare von Internetnutzern, dass der „originellste“ Code zwar mit dem Architekturdiagramm übereinstimme, die 2017 eingereichte Codeversion jedoch geändert, das Architekturdiagramm jedoch nicht gleichzeitig aktualisiert worden sei. Dies ist auch die Ursache für „inkonsistente“ Diskussionen.
Anschließend veröffentlichte Sebastian einen Artikel über Ahead of AI, in dem er insbesondere beschrieb, warum das ursprüngliche Transformer-Architekturdiagramm nicht mit dem Code übereinstimmte, und zitierte mehrere Artikel, um die Entwicklung und Änderungen von Transformer kurz zu erläutern.
Das Folgende ist der Originaltext des Artikels. Schauen wir uns an, worum es in dem Artikel geht:
Vor ein paar Monaten habe ich „Große Sprachmodelle verstehen: Ein Kreuz“ geteilt -Abschnitt der „relevantesten Literatur, um sich auf den neuesten Stand zu bringen“ – das positive Feedback ist sehr ermutigend! Deshalb habe ich ein paar Artikel hinzugefügt, um die Liste aktuell und relevant zu halten.
Gleichzeitig ist es wichtig, die Liste prägnant und prägnant zu halten, damit sich alle in angemessener Zeit einarbeiten können. Es gibt auch einige Papiere, die viele Informationen enthalten und unbedingt beigefügt werden sollten.
Ich möchte vier nützliche Artikel vorstellen, um Transformer aus historischer Perspektive zu verstehen. Während ich sie nur direkt zum Artikel „Grundlegende große Sprachmodelle“ hinzufüge, teile ich sie in diesem Artikel auch separat, damit sie von denjenigen, die bereits zuvor „Grundlegende große Sprachmodelle“ gelesen haben, leichter gefunden werden können.
On Layer Normalization in the Transformer Architecture (2020)
Obwohl das ursprüngliche Transformer-Bild (links) unten (https://arxiv.org/abs/1706.03762) die ursprüngliche Encoder-Dekodierung A nützlich ist Zusammenfassung der Serverarchitektur, es gibt jedoch einen kleinen Unterschied im Diagramm. Es führt beispielsweise eine Ebenennormalisierung zwischen Restblöcken durch, die nicht mit der offiziellen (aktualisierten) Codeimplementierung übereinstimmt, die im ursprünglichen Transformer-Papier enthalten ist. Die unten (Mitte) gezeigte Variante wird als Post-LN-Transformator bezeichnet. Die Ebenennormalisierung im
Transformer-Architekturpapier zeigt, dass Pre-LN besser funktioniert und das Gradientenproblem wie unten gezeigt lösen kann. Viele Architekturen übernehmen diesen Ansatz in der Praxis, er kann jedoch zu einem Zusammenbruch der Darstellung führen.
Während es immer noch Diskussionen über die Verwendung von Post-LN oder Pre-LN gibt, gibt es auch ein neues Papier, das die gemeinsame Anwendung beider vorschlägt: „ResiDual: Transformer with Dual Residual Connections“ (https://arxiv .org /abs/2304.14802), aber es bleibt abzuwarten, ob es in der Praxis nützlich sein wird.
Bildquelle: https://arxiv.org/abs/1706.03762 (links & Mitte) und https://arxiv.org/abs/2002.04745 (rechts)
Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Neural Networks (1991)
Dieser Artikel wird allen empfohlen, die sich für historische Leckerbissen und frühe Methoden interessieren, die im Grunde dem modernen Transformer ähneln.
Zum Beispiel schlug Jürgen Schmidhuber 1991, 25 Jahre vor dem Transformer-Artikel, eine Alternative zu rekurrenten neuronalen Netzen vor (https://www.semanticscholar.org/paper/Learning-to-Control-Fast-Weight-Memories%3A -An-to-Schmidhuber/bc22e87a26d020215afe91c751e5bdaddd8e4922), genannt Fast Weight Programmers (FWP). Ein weiteres neuronales Netzwerk, das schnelle Gewichtsänderungen erreicht, ist das an der FWP-Methode beteiligte Feedforward-Neuronale Netzwerk, das mithilfe des Gradientenabstiegsalgorithmus langsam lernt.
Dieser Blog (https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2) vergleicht es mit dem modernen Transformer wie folgt:
Im heutigen Transformer In der Terminologie werden FROM und TO als Schlüssel bzw. Wert bezeichnet. Die Eingabe, auf die das schnelle Netzwerk angewendet wird, wird als Abfrage bezeichnet. Im Wesentlichen werden Abfragen von einer schnellen Gewichtungsmatrix verarbeitet, die die Summe der äußeren Produkte von Schlüsseln und Werten ist (ohne Berücksichtigung von Normalisierung und Projektion). Wir können additive äußere Produkte oder Tensorprodukte zweiter Ordnung verwenden, um eine durchgängig differenzierbare aktive Steuerung schneller Gewichtsänderungen zu erreichen, da alle Operationen beider Netzwerke die Differenzierung unterstützen. Während der Sequenzverarbeitung kann der Gradientenabstieg verwendet werden, um schnelle Netzwerke schnell anzupassen, um die Probleme langsamer Netzwerke zu bewältigen. Dies ist mathematisch äquivalent (mit Ausnahme der Normalisierung) zu dem, was heute als Transformer mit linearisierter Selbstaufmerksamkeit (oder linearer Transformer) bekannt ist.
Wie im obigen Auszug erwähnt, ist dieser Ansatz heute als linearer Transformer oder Transformer mit linearisierter Selbstaufmerksamkeit bekannt. Sie stammen aus den Artikeln „Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention“ (https://arxiv.org/abs/2006.16236) und „Rethinking Attention with Performers“ (https://arxiv. org/abs/2009.14794). .
Im Jahr 2021 zeigt der Artikel „Linear Transformers Are Secretly Fast Weight Programmers“ (https://arxiv.org/abs/2102.11174) deutlich den Unterschied zwischen linearisierter Selbstaufmerksamkeit und den Fast-Weight-Programmierern der 1990er-Äquivalenz.
Bildquelle: https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2
Universal Feinabstimmung des Sprachmodells für die Textklassifizierung (2018)
Dies ist ein weiterer sehr interessanter Artikel aus historischer Sicht. Es wurde ein Jahr nach der Veröffentlichung des Originals „Attention Is All You Need“ geschrieben und beinhaltet keine Transformatoren, sondern konzentriert sich stattdessen auf wiederkehrende neuronale Netze, ist aber trotzdem sehenswert. Weil es effektiv vorab trainierte Sprachmodelle und nachgelagerte Aufgaben des Transferlernens vorschlägt. Obwohl Transferlernen in der Computer Vision gut etabliert ist, hat es sich im Bereich der Verarbeitung natürlicher Sprache (NLP) noch nicht durchgesetzt. ULMFit (https://arxiv.org/abs/1801.06146) war einer der ersten Artikel, der zeigte, dass vorab trainierte Sprachmodelle bei vielen NLP-Aufgaben SOTA-Ergebnisse liefern können, wenn sie auf eine bestimmte Aufgabe abgestimmt werden.
Der von ULMFit vorgeschlagene Feinabstimmungsprozess für das Sprachmodell ist in drei Phasen unterteilt:
- 1. Trainieren des Sprachmodells anhand eines großen Textkorpus;
- 2 -spezifische Daten Das Modell ist so abgestimmt, dass es sich an den spezifischen Stil und das Vokabular des Textes anpassen kann
- 3 Passen Sie den Klassifikator an aufgabenspezifische Daten an, um katastrophales Vergessen zu vermeiden, indem Sie die Ebenen schrittweise auftauen.
Diese Methode zum Trainieren eines Sprachmodells auf einem großen Korpus und zur anschließenden Feinabstimmung auf nachgelagerte Aufgaben basiert auf Transformer-Modellen und Basismodellen (wie BERT, GPT-2/3/4, RoBERTa usw.). ) verwendete Kernmethoden.
Als wichtiger Bestandteil von ULMFiT wird das progressive Auftauen jedoch in der Praxis normalerweise nicht durchgeführt, da die Transformer-Architektur normalerweise alle Ebenen gleichzeitig feinabstimmt.
Gopher ist ein besonders gutes Papier (https://arxiv.org/abs/2112.11446), das umfangreiche Analysen zum Verständnis der LLM-Ausbildung enthält. Die Forscher trainierten ein 80-schichtiges Modell mit 280 Milliarden Parametern auf 300 Milliarden Token. Dazu gehören einige interessante Architekturmodifikationen, wie z. B. die Verwendung von RMSNorm (Root Mean Square Normalization) anstelle von LayerNorm (Layer Normalization). Sowohl LayerNorm als auch RMSNorm sind besser als BatchNorm, da sie nicht auf die Stapelgröße beschränkt sind und keine Synchronisierung erfordern, was in verteilten Einstellungen mit kleineren Stapelgrößen von Vorteil ist. RMSNorm gilt allgemein als stabilisierendes Training in tieferen Architekturen.
Neben den oben genannten interessanten Details liegt der Schwerpunkt dieses Artikels auf der Analyse der Aufgabenleistungsanalyse auf verschiedenen Ebenen. Eine Auswertung von 152 verschiedenen Aufgaben zeigt, dass eine Vergrößerung der Modellgröße für Aufgaben wie Verständnis, Faktenprüfung und Identifizierung toxischer Sprache am vorteilhaftesten ist, während die Erweiterung der Architektur für Aufgaben im Zusammenhang mit logischem und mathematischem Denken weniger vorteilhaft ist.
Bildunterschrift: Quelle https://arxiv.org/abs/2112.11446
Das obige ist der detaillierte Inhalt vonDieser „Fehler' ist nicht wirklich ein Fehler: Beginnen Sie mit vier klassischen Aufsätzen, um zu verstehen, was am Transformer-Architekturdiagramm „falsch' ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um eine Datentabelle mithilfe von PHPMYADMIN zu erstellen, sind die folgenden Schritte unerlässlich: Stellen Sie eine Verbindung zur Datenbank her und klicken Sie auf die neue Registerkarte. Nennen Sie die Tabelle und wählen Sie die Speichermotor (innoDB empfohlen). Fügen Sie Spaltendetails hinzu, indem Sie auf die Taste der Spalte hinzufügen, einschließlich Spaltenname, Datentyp, ob Nullwerte und andere Eigenschaften zuzulassen. Wählen Sie eine oder mehrere Spalten als Primärschlüssel aus. Klicken Sie auf die Schaltfläche Speichern, um Tabellen und Spalten zu erstellen.

Das Erstellen einer Oracle -Datenbank ist nicht einfach, Sie müssen den zugrunde liegenden Mechanismus verstehen. 1. Sie müssen die Konzepte von Datenbank und Oracle DBMS verstehen. 2. Beherrschen Sie die Kernkonzepte wie SID, CDB (Containerdatenbank), PDB (Pluggable -Datenbank); 3.. Verwenden Sie SQL*Plus, um CDB zu erstellen und dann PDB zu erstellen. Sie müssen Parameter wie Größe, Anzahl der Datendateien und Pfade angeben. 4. Erweiterte Anwendungen müssen den Zeichensatz, den Speicher und andere Parameter anpassen und die Leistungsstimmung durchführen. 5. Achten Sie auf Speicherplatz, Berechtigungen und Parametereinstellungen und überwachen und optimieren Sie die Datenbankleistung kontinuierlich. Nur indem Sie es geschickt beherrschen, müssen Sie die Erstellung und Verwaltung von Oracle -Datenbanken wirklich verstehen.

Um eine Oracle -Datenbank zu erstellen, besteht die gemeinsame Methode darin, das dbca -grafische Tool zu verwenden. Die Schritte sind wie folgt: 1. Verwenden Sie das DBCA -Tool, um den DBNAME festzulegen, um den Datenbanknamen anzugeben. 2. Setzen Sie Syspassword und SystemPassword auf starke Passwörter. 3.. Setzen Sie Charaktere und NationalCharacterset auf AL32UTF8; 4. Setzen Sie MemorySize und tablespacesize, um sie entsprechend den tatsächlichen Bedürfnissen anzupassen. 5. Geben Sie den Logfile -Pfad an. Erweiterte Methoden werden manuell mit SQL -Befehlen erstellt, sind jedoch komplexer und anfällig für Fehler. Achten Sie auf die Kennwortstärke, die Auswahl der Zeichensatz, die Größe und den Speicher von Tabellenräumen

Der Kern von Oracle SQL -Anweisungen ist ausgewählt, einfügen, aktualisiert und löschen sowie die flexible Anwendung verschiedener Klauseln. Es ist wichtig, den Ausführungsmechanismus hinter der Aussage wie die Indexoptimierung zu verstehen. Zu den erweiterten Verwendungen gehören Unterabfragen, Verbindungsabfragen, Analysefunktionen und PL/SQL. Häufige Fehler sind Syntaxfehler, Leistungsprobleme und Datenkonsistenzprobleme. Best Practices für Leistungsoptimierung umfassen die Verwendung geeigneter Indizes, die Vermeidung von Auswahl *, optimieren Sie, wo Klauseln und gebundene Variablen verwenden. Das Beherrschen von Oracle SQL erfordert Übung, einschließlich des Schreibens von Code, Debuggen, Denken und Verständnis der zugrunde liegenden Mechanismen.

Feldbetriebshandbuch in MySQL: Felder hinzufügen, ändern und löschen. Feld hinzufügen: Alter table table_name hinzufügen column_name data_type [nicht null] [Standard default_value] [Primärschlüssel] [auto_increment] Feld ändern: Alter table table_name Ändern Sie Column_Name Data_type [nicht null] [diffault default_value] [Primärschlüssel] [Primärschlüssel]

Die Integritätsbeschränkungen von Oracle -Datenbanken können die Datengenauigkeit sicherstellen, einschließlich: nicht Null: Nullwerte sind verboten; Einzigartig: Einzigartigkeit garantieren und einen einzelnen Nullwert ermöglichen; Primärschlüssel: Primärschlüsselbeschränkung, Stärkung der einzigartigen und verboten Nullwerte; Fremdschlüssel: Verwalten Sie die Beziehungen zwischen Tabellen, Fremdschlüssel beziehen sich auf Primärtabellen -Primärschlüssel. Überprüfen Sie: Spaltenwerte nach Bedingungen begrenzen.

Verschachtelte Anfragen sind eine Möglichkeit, eine andere Frage in eine Abfrage aufzunehmen. Sie werden hauptsächlich zum Abrufen von Daten verwendet, die komplexe Bedingungen erfüllen, mehrere Tabellen assoziieren und zusammenfassende Werte oder statistische Informationen berechnen. Beispiele hierfür sind zu findenen Mitarbeitern über den überdurchschnittlichen Löhnen, das Finden von Bestellungen für eine bestimmte Kategorie und die Berechnung des Gesamtbestellvolumens für jedes Produkt. Beim Schreiben verschachtelter Abfragen müssen Sie folgen: Unterabfragen schreiben, ihre Ergebnisse in äußere Abfragen schreiben (auf Alias oder als Klauseln bezogen) und optimieren Sie die Abfrageleistung (unter Verwendung von Indizes).

Tomcat -Protokolle sind der Schlüssel zur Diagnose von Speicherleckproblemen. Durch die Analyse von Tomcat -Protokollen können Sie Einblicke in das Verhalten des Speicherverbrauchs und des Müllsammlung (GC) erhalten und Speicherlecks effektiv lokalisieren und auflösen. Hier erfahren Sie, wie Sie Speicherlecks mit Tomcat -Protokollen beheben: 1. GC -Protokollanalyse zuerst aktivieren Sie eine detaillierte GC -Protokollierung. Fügen Sie den Tomcat-Startparametern die folgenden JVM-Optionen hinzu: -xx: printgCDetails-xx: printgCDatESTAMPS-XLOGGC: GC.Log Diese Parameter generieren ein detailliertes GC-Protokoll (GC.Log), einschließlich Informationen wie GC-Typ, Recycling-Objektgröße und Zeit. Analyse gc.log
