Reine Sprachverarbeitung: Das Zeitalter der Transformatoren

                             Dieser Text ist der erste Teil einer zweigleisigen Abfolge zum Aufbau einer Maschine für das maschinelle Leseverständnis, in der im Grunde genommen die Standardfortschritte beim vertieften Lernen für NLP verwendet werden. Passen Sie auf den 2. Teil auf, das Etablissement, in dem wir ein vorab bekanntes Mannequin namens BERT vorstellen werden, das Ihre NLP-Initiativen auf das folgende Niveau bringt! Im Grunde genommen die Standardvergangenheit, innerhalb des Ereignisses, in dem Sie tatsächlich perfekt sind Natural Language Processing (NLP) gab es auch Zeiten, in denen Sie ein bisschen eifersüchtig auf Ihre Kollegen im Bereich Computer Vision waren. Es schien, als ob sie den totalen Spaß hätten: das jährliche ImageNet-Klassifikationsdesign zurück, Neural Fashion Switch, Generative Adversarial Networks, um ein Paar zu identifizieren. Indirekt ist die Trockenperiode vorbei und die NLP-Revolution ist mit Bedacht im Gange! Es wäre vielleicht gut, vielleicht, vielleicht perfekt, zu erzählen, dass der Wendepunkt früher 2017 war, als die Transformer-Community in Google’s Consideration vorgestellt wurde. Seitdem wurden einige zusätzliche Fortschritte erzielt, von denen jeder wirklich notwendige das BERT ist – das Thema unseres nächsten Artikels. Um die Grundlagen für den Transformer-Dialog zu schaffen, wollen wir uns einen in jeder der üblichen Klassen von NLP-Projekten ansehen : die zu sequenzierende Sequenz (seq2seq) betrifft. Sie sind absolut leistungsfähig, genau was ihre Identität vermuten lässt: Alle Ein- und Ausgänge eines seq2seq-Jobs sind Sequenzen. Im Zusammenhang mit NLP gibt es normalerweise zusätzliche Einschränkungen für die Zuweisung von Speicherplatz: Die Ränder der Sequenz sind Token, die einem Absichtsvokabular entsprechen (im Allgemeinen zusammen mit einem unbekannten Token für die Ausdrücke außerhalb des Vokabulars). Der Unterricht in der gesamten Sequenz ist wichtig. Als nächstes werden wir ein Schema erhalten, um eine 2d zu erhalten, um die gefallenen Helden in Gedanken zu haben, ohne die wir heutzutage nicht das Establishment wären. Immerhin beziehe ich mich auf die RNNs – Recurrent Neural Networks, ein Gedanke, der innerhalb der Deep-Learning-Disziplin fast zum Synonym für NLP wurde. 1. Der Vorgänger von Transformers: der RNN Encoder-Decoder Diese Erzählung bringt uns die totale Fähigkeit wieder auf 2014 (Ref, eine weitere Ref), wenn die Grundlage des Zeichnens von zwei rekurrenten neuronalen Netzen, die zu einem Encoder-Decoder-Mannequin kombiniert sind, seq2seq betrifft. war geboren. Lassen Sie uns diese Architektur auf einer einfachen Instanz aus dem Job “Maschinelle Übersetzung” neu erstellen. Nehmen Sie ein französisch-englisches Satzpaar, das feststellt, dass die Eingabe “je suis étudiant” und die Ausgabe “I’m a student” ist. Zuerst wird “je” (oder anscheinend eine bewusste Einbettung für das Token, das “je” darstellt), im Allgemeinen begleitet von einem festen Vektor hE0, der möglicherweise entweder gelernt oder montiert werden würde, in den Encoder RNN eingespeist. Dies endet innerhalb des Ausgangsvektors hE1 (Hidden Inform 1), der als folgender Eingang für den Encoder RNN dient, zusammen mit dem 2d-Schrei innerhalb der Eingangssequenz “suis”. Die Ausgabe dieser Operation, hE2 und “étudiant”, werden erneut in den Codierer eingespeist, wodurch die schließende codierte verborgene Information für dieses Trainingsmuster, hE3, erzeugt wird. Der hE3-Vektor hängt von allen Tokens in der gesamten Eingabesequenz ab. Die Grundlage besteht also darin, die Bedeutung der gesamten Phrase nicht zu beschreiben. Aus diesem Grund wird es auch als Kontextvektor bezeichnet. Der Kontextvektor ist die erste Eingabe in den Decoder RNN, die möglicherweise den ersten Schrei der Ausgabesequenz “I” erzeugen müsste (in Wirklichkeit ist die Abschlussschicht des Decoders normalerweise ein Softmax, aber der Einfachheit halber können wir dies tun gleichgesinnte hilfe im grunde das scheinbare schreien am halt jedes decoderschritts). Darüber hinaus erzeugt der Decoder RNN eine versteckte Information hD1. Wir speisen hD1 und die veraltete Ausgabe I wieder in den Decoder ein, um sicher “am” als unsere 2d-Ausgabe zu beschaffen. Dieser Weg der Herstellung und erneuten Zuführung von Ausgaben in den Decoder wird fortgesetzt, bis wir einen – Stopp des Satz-Tokens entwerfen, was bedeutet, dass unser Job genau hier ausgeführt wird. Das RNN Encoder-Decoder-Mannequin in Aktion. Um jegliche Verwirrung zu vermeiden, würde ich Ihre Überlegungen gerne auf eine Sache ausrichten. Die mehreren RNN-Blöcke erscheinen in der Auflösung, die auf die mehreren Seiten der Sequenz zurückzuführen sind, die in die Netze eingespeist / von diesen generiert werden, aber keine Fehler klassifiziert sind. Möglicherweise gibt es hier die einfachsten Encoder-RNNs und Decoder-RNNs. Es wird auch hilfreich sein, die wiederholten Blöcke in verschiedenen Zeitschritten als identische RNN oder als mehrere RNNs mit gemeinsamen Gewichten zu betrachten, die nacheinander aufgerufen werden. Diese Architektur kann auch einfach erscheinen (insbesondere, bis wir uns auf einen Platz setzen) In Wirklichkeit schreiben Sie den Code mit LSTMs oder GRUs, die für rechtmäßige Maßnahmen eingeworfen wurden. In Wirklichkeit stellt sich jedoch heraus, dass er für viele NLP-Projekte bemerkenswert effektiv ist. Wirklich, Google Translate wird seit 2016 unter der Haube verwendet. Alternativ haben die RNN-Codierer-Decodierer-Einheiten offensichtliche Nachteile: 1a. Erster Entwurf zurück mit RNNs: Überlegung zur Rettung Die oben beschriebene RNN-Technik funktioniert jetzt bei längeren Sätzen nicht besonders klug. Herzstück dabei: Die Bedeutung der gesamten Eingabesequenz wird voraussichtlich von einem einzelnen Kontextvektor mit montierter Dimensionalität erfasst. Dies kann auch für “Je suis étudiant” sinnvoll sein, aber was, wenn Ihre Eingabe besonders gut aussieht, ist dies: “Es war eine defekte Nummer, die sie gestartet hat, das dreimal klingelnde Mobiltelefon in der trüben Nacht und der Ruf an Das vielfältige Nachfragen nach irgendjemandem war er jetzt nicht mehr. “Ehrlicher Erfolg, der das in einen Kontextvektor verschlüsselt! Alternativ stellt sich heraus, dass es eine Antwort gibt, die als Überlegungsmechanismus identifiziert wird. Die schematische Darstellung eines (linken) ausgereiften RNN-Encoder-Decoders und eines (perfekten) RNN-Encoder-Decoders mit Aufmerksamkeit. Anstatt die schließenden versteckten Informationen (den Kontextvektor) am einfachsten an den Decoder zu übergeben, geben wir ihm die gesamten versteckten Zustände, die sich aus dem Encoder heraus verlängern. In unserem Fall kann das vielleicht hE1, hE2 und hE3 bedeuten. Der Decodierer entscheidet, welche von ihnen durch einen Auftrag einer Softmax-Schicht beaufsichtigt werden (d. H. Die Einrichtung zum Hören). Abgesehen von dieser zusätzlichen Konstruktion bleibt die elementare RNN-Codierer-Decodierer-Architektur identisch, aber das nachfolgende Mannequin arbeitet bei längeren Eingabesequenzen wesentlich besser. 1b. 2. Design zurück mit wiederkehrenden NNs: Sie sind (Schock!) Wiederkehrend Die verschiedenen RNNs, die RNNs mit Rückentwurf plagen, müssen während der gesamten Identifizierung mit R entwerfen: Die Berechnung in einer rekurrenten neuronalen Gemeinschaft ist definitionsgemäß sequentiell. Was beinhaltet diese Immobilie? Eine sequentielle Berechnung kann nicht parallelisiert werden, da wir uns jetzt auf den veralteten Entwurfsschritt vorbereiten möchten, bevor wir zum nächsten übergehen. Dies verlängert die Lernzeit und die Zeit, die benötigt wird, um Schlüsse zu ziehen. Einige der Möglichkeiten über die sequenzielle Zwangslage hinweg bestehen darin, Faltungsneuralnetze (Convolutional Neural Networks, CNNs) fairer als RNNs zu verwenden. Dieses Arrangement hat seinen Teil des Erfolgs gesehen, bis es von den … 2. Gegenleistung ist alles, was Sie brauchen (c) Google, 2017 Die Transformer-Architektur wurde früher in dem Artikel vorgestellt, dessen Titel dem eines Selbsthilfebuches entspricht: Rücksicht ist alles, was Sie brauchen. Noch eine selbsterklärende Überschrift: Die Autoren erhalten tatsächlich das RNN-Encoder-Decoder-Mannequin mit Rücksicht und werfen das RNN weg. Rücksicht ist alles, was Sie brauchen! Richtig, es wird ziemlich viel ausgefeilter als das in Frage, aber das ist die elementare Voraussetzung. Wie funktioniert das? Zum Öffnen wird jeder vorverarbeitete (zusätzliche) Schrei der Eingabesequenz als Eingabe an die Encoder-Community weitergeleitet – genau hier wird er im Gegensatz zu den RNNs parallel ausgeführt. Der Encoder hat mehrere Schichten (z. B. innerhalb des Transformer-Papiers ist ihre Anzahl sechs). Lassen Sie uns hi verwenden, um die schließenden versteckten Informationen der schließenden Encoder-Ebene für jedes wi zu beeindrucken. Der Decoder enthält zusätzlich mehrere Ebenen – in den meisten Fällen ist die Anzahl gleich der des Encoders. Alle versteckten Zustände hi werden nun als Eingänge in jede der sechs Ebenen des Decoders eingespeist. Wenn Ihnen das bekannt vorkommt, dann aus einem rechtmäßigen Grund: Hier ist die Encoder-Decoder-Überlegung des Transformators, die fairerweise dem oben diskutierten Überlegungsmechanismus entspricht. Bevor wir uns mit der Implementierung der Transformer-Überlegung befassen, wollen wir Ihnen die Vorverarbeitungsebenen erläutern (negieren Sie jeden einzelnen Encoder und Decoder, wie wir später sehen werden). Die Vorverarbeitung hat zwei Seiten: Erstens gibt es möglicherweise die vertraute Einbettung, die in den meisten Standard-NLP-Einheiten zum Einsatz kommt. Beachten Sie, dass Einbettungen möglicherweise während des Trainings richtig gelernt werden, oder verwenden Sie eine Einbettung in jeder der neuen, vorerkannten Einbettungen. Es gibt jedoch einen 2d-Teil, der sich speziell auf die Transformer-Architektur bezieht. Bisher haben keine etablierten Unternehmen Kenntnisse über das Lehren der Perimeter in der gesamten Sequenz zur Verfügung gestellt. Wie kann dies ohne die sequentielle RNN-Architektur durchgeführt werden? Nun, da wir die Positionen haben, werden wir sie als innere Vektoren kodieren, so wie wir die Bedeutung der Be-Aware-Token mit Be-Aware-Einbettungen eingebettet haben. Die darauffolgenden aufbereiteten Vektoren, die Wissen über die Bedeutung und den Platz innerhalb des Satzes jedes einzelnen Bewusstseins enthalten, werden an die Codierer- und Decodiererebenen weitergegeben. Ein Encoder mit zwei Ebenen, der eine Eingangssequenz mit drei Schreien (w1, w2 und w3) parallel verarbeitet. Der Encoder jedes Eingabeschreis erhält durch seine Self-Consideration-Unterebenen zusätzlich Kenntnisse über die verschiedenen Seiten, so dass die Beziehungen zwischen Phrasen innerhalb des Satzes erfasst werden können.2a. Berücksichtigung des linearen Algebra-Potentials Ich komme aus der Quantenphysik, die etablierten Vektoren sind der einfachste Kumpel einer bestimmten Person (manchmal ziemlich genau), aber im Falle, dass Sie eine nichtlineare algebraische Klärung des Betrachtungsmechanismus erreichen, möchte ich Sie ausdrücklich auf The Illustrated Transformer aufmerksam machen von Jay Alammar. Lassen Sie uns X verwenden, um die Vektorabsicht unserer Eingaben in die Betrachtungsebene einzudrücken. Was wir durch das Training lernen möchten, sind drei Einbettungsmatrizen, WK, WV und WQ, die es uns ermöglichen, von X zu einem Paar neuer Bereiche zu gelangen: K (Tasten), V (Werte) und Q (Werte). Abfragen): K=X WK V=X WV Q=X WQ Die Fähigkeit, dass diese eingebetteten Vektoren dann innerhalb der Encoder-Decoder-Betrachtung veraltet sind, ist die folgende. Wir erhalten einen Q-Vektor (einen Schrei, d. H. Wir spezifizieren das ungefähre Wissen, zu dem wir wieder Lust haben) vom Decoder. Darüber hinaus erhalten wir Vektoren V (Werte), die wir als eine Sache äquivalent zu linearen Kombinationen von Vektoren X ansehen können, die vom Encoder kommen (das Design erhält jetzt eigentlich keine “lineare Mischung”, wie die Dimensionalität von X und V ist, in häufig, vielfältig). Vektoren K werden zusätzlich aus dem Encoder entnommen: Jeder Schlüssel Kn indiziert das grobe Wissen, das vom Tag Vn erfasst wird. Um herauszufinden, welche Werte grundsätzlich am meisten berücksichtigt werden müssen, erhalten wir den aus der Frage Q des Decoders resultierenden Punkt mit allen Schlüsseln des Encoders K. Der Softmax des Ergebnisses ergibt die Gewichtung der jeweiligen Werte V (der obere der Gewicht, je höher die Würde). Ein solcher Mechanismus wird als die Punktproduktbetrachtung identifiziert, die durch das folgende System gegeben ist: der ermittelte kann wahlweise den aus Q und K erzeugten Punkt durch die Dimensionalität der Schlüsselvektoren dk dividieren. Um Ihnen ein Konzept für die ungefähr veralteten Dimensionen vorzustellen, ist der in “Überlegung” vorgestellte Transformator alles, was Sie brauchen, und zwar dq=dk=dv=64, wobei ich es als X bezeichne ist 512 – dimensional. 2b. Was ist neu: Selbstüberlegung Abgesehen von der Encoder-Decoder-Betrachtung enthält die Transformer-Architektur die Encoder-Selbstbetrachtung und die Decoder-Selbstbetrachtung. Diese werden innerhalb des oben diskutierten identischen Skalarproduktsystems berechnet, mit einem wirklich notwendigen Unterschied: Zur Selbstbetrachtung reichen alle drei Formen von Vektoren (K, V und Q) von der identischen Gemeinschaft aus. Diese zusätzliche Fähigkeit, dass alle drei mit dem Umfang der identischen Sequenz verknüpft sind (Eingang für den Encoder und Ausgang für den Decoder). Der Grund für die Einführung der Selbstüberlegung ist, die Beziehungen zwischen verschiedenen Sätzen innerhalb des Satzes zu lehren (diese Eigenschaft ist überholt, um von der sequentiellen RNN erfüllt zu werden). Eine Aufgabe ist es, jeden Schrei der Sequenz als gewichtete Summe der verschiedenen Seiten der Sequenz darzustellen. Warum Schmerzen? Herz der Aufmerksamkeit auf die folgenden beiden Sätze: 1. Das Tier hat die mautpflichtige Straße nicht kontaminiert, weil sie früher zu trocken war. 2. Das Tier hat die mautpflichtige Straße nicht kontaminiert, weil sie früher zu breit war. Es ist eindeutig am engsten mit dem Tier im ersten Satz und der Mautstraße im zweiten Satz verbunden: Wissen, das auch fehlt, wenn wir eine unidirektionale Vorwärts-RNN verwenden! In der Tat ist die Selbstüberlegung des Encoders, die konstruktionsbedingt bidirektional ist, ein Hauptbestandteil von BERT, den vorerkannten kontextbezogenen Einbettungen, über die wir in Kürze berichten werden. Sind die Berechnungen für die Encoder Self-Consideration implementiert? Es stellt sich heraus, dass jede Encoder-Ebene innen liegt. Auf diese Weise kann die Community in verschiedenen Abstraktionsbereichen auf verknüpfte Seiten der Eingabesequenz hören: Die Werte V der abnehmenden Encoder-Ebenen wären möglicherweise den unterscheidbaren Eingabe-Tokens am nächsten, während die Selbstüberlegung der tieferen Ebenen zusätzliche Zusammenfassungskonstruktionen erfordert . 2c. Alles zusammenstecken Inzwischen haben wir festgestellt, dass Transformatoren die sequentielle Natur von RNNs und die Route der Sequenzseiten parallel als unterschiedlich verwerfen. Wir haben gesehen, wie die Encoder-Selbstüberlegung es ermöglicht, den Umfang der Eingabesequenz nacheinander zu verarbeiten, wobei der Kontext jedes Diverses erhalten bleibt, während die Encoder-Decoder-Überlegung alle zum folgenden Schritt übergibt: Erzeugen der Ausgabesequenz mit Decoder. Was in diesem Stadium passiert, wäre vielleicht jetzt nicht so klar. Beim Empfang generiert der RNN-Encoder-Decoder die Ausgangssequenz schreiend nacheinander. Die zuvor erzeugte Ausgabe wird beim nächsten Zeitschritt in den Decoder eingespeist. Pause Transformatoren erhalten in Wirklichkeit die Option, uns von der Abfolge dieser Route zu befreien und in einem System die gesamte Ausgabesequenz jetzt korrekt zu generieren. Richtig – ja und nein. Besonders präzise lautet die Antwort [roughly] Ja beim Training und Nein zum Zeitpunkt der Schlussfolgerung. Die Transformer-Architektur mit einem zweischichtigen Encoder / Decoder. Der Encoder verarbeitet alle drei Seiten der Eingangssequenz (w1, w2 und w3) parallel, während der Decoder jeden Schrei der Reihe nach erzeugt (die einfachsten Zeitschritte 0 und 1, die die Ausgangssequenzseiten v1 und v2 erzeugen, sind abgebildet). . Die Ausgabe-Token-Erzeugung wird fortgesetzt, bis ein Halt des Satz-Tokens angezeigt wird. Die Eingaben in den Decoder erreichen zwei Formen: die verborgenen Zustände, die Ausgaben des Encoders sind (diese sind für die Encoder-Decoder-Betrachtung in jeder Decoder-Schicht veraltet) und die vorherigen erzeugte Token der Ausgabesequenz (für die Decoder-Selbstüberlegung, zusätzlich berechnet auf jeder Decoder-Ebene). Da die Ausgabesequenzen während des Lernvorgangs bereits vorhanden sind, kann man die verschiedenen Zeitschritte der Decodierungsroute parallel aufbauen, indem man die zulässigen Seiten der “zuvor erzeugten” Ausgabesequenzen abdeckt (mit Nullen ändert). Diese Abdeckung endet damit, dass die Selbstüberlegung des Decoders unidirektional ist, im Gegensatz zu der des Encoders. Beim Schließen, zum Zeitpunkt der Inferenz, werden die Ausgangsseiten nacheinander in einem sequentiellen System erzeugt. Einige abschließende Bemerkungen, bevor wir es einen Tag nennen: Der Teil des Decoders, den ich als Nachbearbeitung in der oben genannten Auflösung betrachte, entspricht dem, was man in den meisten Fällen im RNN-Decoder für einen NLP-Auftrag erhalten würde: eine vollständig verknüpfte (FC-) Schicht, die dem RNN folgt, das offensichtliche Teile extrahiert Ausgehend von den Eingaben der Community und einer Softmax-Ebene in der Höhe des FC wird einer, der Wahrscheinlichkeiten für jeden der Token im Vokabular des Mannequins zuweist, der folgende Schrei in der Ausgabesequenz sein. Auf dieser Ebene können wir auch einen Strahlensuchalgorithmus verwenden, um bei jedem Schritt die wenigen endgültigen Vorhersagen zu erhalten und im Grunde die scheinbar ausgegebene Sequenz auf dem Halt zu erhalten, oder einfach die endgültige Entscheidung zu unterstützen, wann immer dies der Fall ist. Die Transformer-Architektur ist die treibende Kraft innerhalb der Vielzahl der grundlegendsten Durchbrüche innerhalb der NLP-Disziplin. Um einige schwierige Zahlen auf dieser Behauptung zu positionieren, wechseln wir zu einer Metrik, die als BLEU bekannt ist und die die Qualität von maschinellen Übersetzungen überblickt. Der unverwechselbare Transformer führte eine Entdeckung von (************) .4 BLEU für einen Englisch-Deutsch-Übersetzungsauftrag durch, und wenn Ihnen das jetzt nicht beibringt, dass Sie mächtig sind, genügt es, dies zu erzählen war früher um mehr als 2 BLEU besser als das beste Ergebnis! Als nächstes erhalten wir innerhalb des kommenden Blogs ein Schema, das über BERT (Bidirectional Encoder Representations from Transformers) informiert: Kontextualisierte Einbettungen, die im Wesentlichen vollständig auf Einbettungen basieren der Transformer (Transformer’s Encoder) und die beste Wahl, um ein BERT-basiertes, vollständig maschinelles Leseverständnis-Mannequin unter den Scaleway-GPU-Bedingungen zu erstellen.                              
Extra lesen

Euch gefällt was ihr seht? Nehmt euch doch einen kurzen Moment und unterstützt uns auf Patreon!
Reine Sprachverarbeitung: Das Zeitalter der Transformatoren 1