
Hi, habrozhiteli! Natural Language Processing (NLP) ist eine äußerst wichtige Aufgabe im Bereich der künstlichen Intelligenz. Eine erfolgreiche Implementierung ermöglicht Produkte wie Amazon und Google Translate. Dieses Buch hilft Ihnen dabei, PyTorch, eine umfassende Lernbibliothek für die Python-Sprache, zu lernen, eines der führenden Tools für Datenwissenschaftler und NLP-Softwareentwickler. Delip Rao und Brian McMahan bringen Sie mit NLP und Deep Learning-Algorithmen auf den neuesten Stand. Und zeigen Sie, wie Sie mit PyTorch Anwendungen implementieren können, die Textanalysen verwenden.
In diesem Buch • Computergrafiken und das Paradigma des Lernens mit einem Lehrer. • Grundlagen der optimierten PyTorch-Bibliothek zum Arbeiten mit Tensoren. • Ein Überblick über traditionelle NLP-Konzepte und -Methoden. • Proaktive neuronale Netze (Multilayer-Perceptron und andere). • Verbesserung der RNN mit Langzeit-Kurzzeitgedächtnis (LSTM) und kontrollierten Wiederholungsblöcken • Vorhersage- und Sequenztransformationsmodelle. • Entwurfsmuster der in der Produktion verwendeten NLP-Systeme.
Auszug Verschachtelungswörter und andere Arten
Bei der Lösung von Problemen bei der Verarbeitung von Texten in natürlichen Sprachen müssen verschiedene Arten von diskreten Datentypen behandelt werden. Das offensichtlichste Beispiel sind Wörter. Viele Wörter (Wörterbuch) natürlich. Unter anderem Symbole, Beschriftungen von Wortarten, benannte Entitäten, benannte Entitätstypen, mit dem Parsen verbundene Attribute, Positionen im Produktkatalog usw. Tatsächlich wird jedes Eingabemerkmal von einem endlichen (oder unendlichen, aber nicht von einem endlichen) Objekt übernommen abzählbar) setzt.
Die Grundlage für die erfolgreiche Anwendung von Deep Learning in NLP ist die Darstellung diskreter Datentypen (z. B. Wörter) in Form dichter Vektoren. Die Begriffe "Repräsentationslernen" und "Einbetten" bedeuten das Lernen, einen diskreten Datentyp bis zu einem Punkt in einem Vektorraum anzuzeigen / darzustellen. Wenn diskrete Typen Wörter sind, wird eine dichte Vektordarstellung als Worteinbettung bezeichnet. In Kapitel 2 haben wir bereits Beispiele für Verschachtelungsmethoden basierend auf der Anzahl der Vorkommen gesehen, z. B. TF-IDF („Termhäufigkeit ist die inverse Häufigkeit eines Dokuments“) Artikel von Baroni et al. (Baroni et al., 2014), in dem Leistungstraining durchgeführt wird, indem die Zielfunktion für eine bestimmte Lernaufgabe maximiert wird; Zum Beispiel das Vorhersagen eines Wortes anhand des Kontexts. Trainingsbasierte Anlagemethoden sind aufgrund ihrer breiten Anwendbarkeit und hohen Effizienz derzeit der Standard. Tatsächlich ist die Einbettung von Wörtern in NLP-Aufgaben so weit verbreitet, dass sie als „Sriracha von NLP“ bezeichnet werden, da zu erwarten ist, dass ihre Verwendung in jeder Aufgabe die Effizienz der Lösung erhöht. Dieser Spitzname ist jedoch etwas irreführend, da Anhänge im Gegensatz zu Syraci in der Regel nicht nachträglich zum Modell hinzugefügt werden, sondern dessen Grundbestandteil sind.
In diesem Kapitel werden Vektordarstellungen im Zusammenhang mit Worteinbettungen behandelt: Worteinbettungsmethoden, Methoden zur Optimierung der Worteinbettung für Unterrichtsaufgaben mit und ohne Lehrer, Methoden zur visuellen Einbettung von Visualisierungsmethoden sowie Methoden zur Worteinbettung von Kombinationssätzen und Dokumenten. Vergessen Sie jedoch nicht, dass die hier beschriebenen Methoden für jeden diskreten Typ gelten.
Warum Investitionstraining?
In den vorherigen Kapiteln haben wir Ihnen die üblichen Methoden zum Erstellen von Vektordarstellungen von Wörtern gezeigt. Sie haben nämlich gelernt, wie man einheitliche Darstellungen verwendet - Vektoren mit einer Länge, die der Größe des Wörterbuchs entspricht, mit Nullen an allen Positionen, außer einer, die einen Wert von 1 enthält, der einem bestimmten Wort entspricht. Außerdem haben Sie Darstellungen der Anzahl der Vorkommen gefunden - Vektoren mit einer Länge, die der Anzahl der eindeutigen Wörter im Modell entspricht, die die Anzahl der Vorkommen von Wörtern im Satz an den entsprechenden Positionen enthalten. Solche Darstellungen werden auch Verteilungsdarstellungen genannt, da sich ihr sinnvoller Inhalt / ihre Bedeutung in mehreren Dimensionen des Vektors widerspiegelt. Die Geschichte der distributiven Repräsentation hat viele Jahrzehnte gedauert (siehe Firths Artikel [Firth, 1935]) und eignet sich hervorragend für viele Modelle des maschinellen Lernens und neuronaler Netze. Diese Darstellungen sind heuristisch aufgebaut1 und nicht auf Daten trainiert.
Die verteilte Darstellung hat ihren Namen erhalten, weil die Wörter in ihnen durch einen dichten Vektor mit einer viel kleineren Dimension dargestellt werden (z. B. d = 100 anstelle der Größe des gesamten Wörterbuchs, das in der Größenordnung liegen kann

), und die Bedeutung und andere Eigenschaften des Wortes sind über mehrere Dimensionen dieses dichten Vektors verteilt.
Die niederdimensionalen, dichten Darstellungen, die als Ergebnis des Trainings erhalten wurden, haben mehrere Vorteile im Vergleich zu den einheitlichen Vektoren, die die Anzahl der Vorkommen enthalten, auf die wir in den vorhergehenden Kapiteln gestoßen sind. Erstens ist die Dimensionsreduktion rechnerisch effizient. Zweitens führen Darstellungen, die auf der Anzahl der Vorkommen basieren, zu hochdimensionalen Vektoren mit übermäßiger Codierung derselben Information in verschiedenen Dimensionen, und ihre statistische Aussagekraft ist nicht zu groß. Drittens kann eine zu große Dimension der Eingabedaten zu Problemen beim maschinellen Lernen und Optimieren führen - ein Phänomen, das häufig als Dimensionsfluch bezeichnet wird (
http://bit.ly/2CrhQXm ). Um dieses Problem mit der Dimensionalität zu lösen, werden verschiedene Methoden zum Reduzieren der Dimension verwendet, beispielsweise die Singulärwertzerlegung (SVD) und die Hauptkomponentenanalyse (PCA). Ironischerweise lassen sich diese Ansätze jedoch nicht gut auf Dimensionen in der Größenordnung von Millionen skalieren ( typischer Fall in NLP). Viertens sind die Darstellungen, die aus problemspezifischen Daten gelernt (oder auf deren Grundlage angepasst) wurden, für diese spezielle Aufgabe optimal geeignet. Bei heuristischen Algorithmen wie TF-IDF und Dimensionsreduktionsmethoden wie SVD ist nicht klar, ob die objektive Optimierungsfunktion für eine bestimmte Aufgabe mit dieser Einbettungsmethode geeignet ist.
Investitionseffizienz
Um zu verstehen, wie Einbettungen funktionieren, betrachten Sie ein Beispiel eines einheitlichen Vektors, mit dem die Gewichtsmatrix in einer linearen Schicht multipliziert wird, wie in Abb. 5.1. In den Kapiteln 3 und 4 stimmte die Größe der Einheitsvektoren mit der Größe des Wörterbuchs überein. Ein Vektor wird als einheitlich bezeichnet, da er an der Position, die einem bestimmten Wort entspricht, eine 1 enthält und somit seine Anwesenheit anzeigt.

Abb. 5.1. Ein Beispiel für eine Matrixmultiplikation für den Fall eines Einheitsvektors und einer Matrix von Gewichten einer linearen Schicht. Da der Einheitsvektor alle Nullen und nur eine Einheit enthält, spielt die Position dieser Einheit die Rolle des Auswahloperators beim Multiplizieren der Matrix. Dies ist in der Figur als Verdunkelung der Zellen der Gewichtsmatrix und des resultierenden Vektors dargestellt. Obwohl diese Suchmethode funktioniert, erfordert sie einen hohen Verbrauch an Rechenressourcen und ist ineffizient, da der Einheitsvektor mit jeder der Zahlen in der Gewichtsmatrix multipliziert und die Summe in Zeilen berechnet wird
Per Definition sollte die Anzahl der Zeilen der Gewichtsmatrix einer linearen Schicht, die am Eingang einen Einheitsvektor empfängt, gleich der Größe dieses Einheitsvektors sein. Beim Multiplizieren der Matrix, wie in Abb. In 5.1 ist der resultierende Vektor tatsächlich eine Zeichenfolge, die einem Nicht-Null-Element eines einheitlichen Vektors entspricht. Basierend auf dieser Beobachtung können Sie den Multiplikationsschritt überspringen und einen ganzzahligen Wert als Index verwenden, um die gewünschte Zeile zu extrahieren.
Ein letzter Hinweis zur Anlageperformance: Trotz des Beispiels in Abbildung 5.1, wo die Dimension der Gewichtsmatrix mit der Dimension des Eingabe-Einheitsvektors übereinstimmt, ist dies bei weitem nicht immer der Fall. In der Tat werden Anhänge oft verwendet, um Wörter aus einem Raum mit geringerer Dimension darzustellen, als dies bei Verwendung eines einheitlichen Vektors oder der Darstellung der Anzahl der Vorkommen erforderlich wäre. Eine typische Investitionsgröße in wissenschaftlichen Artikeln liegt bei 25 bis 500 Messungen, und die Auswahl eines bestimmten Werts wird auf die Menge des verfügbaren GPU-Speichers reduziert.
Lernansätze für Anhänge
Der Zweck dieses Kapitels besteht nicht darin, Ihnen bestimmte Techniken zum Investieren von Wörtern beizubringen, sondern Ihnen dabei zu helfen, herauszufinden, was Investitionen sind, wie und wo sie angewendet werden können, wie sie am besten in Modellen verwendet werden können und welche Einschränkungen sie haben. Tatsache ist, dass man in der Praxis selten neue Lernalgorithmen für Worteinbettungen schreiben muss. In diesem Unterabschnitt geben wir jedoch einen kurzen Überblick über die modernen Ansätze für eine solche Ausbildung. Das Lernen in allen Methoden zum Verschachteln von Wörtern erfolgt nur mit Wörtern (d. H. Nicht beschrifteten Daten), jedoch mit einem Lehrer. Dies ist möglich, weil mit dem Lehrer zusätzliche Unterrichtsaufgaben erstellt werden, bei denen die Daten implizit markiert sind, da die für die Lösung der zusätzlichen Aufgabe optimierte Darstellung viele statistische und sprachliche Eigenschaften des Textkorpus erfassen sollte, um zumindest einen gewissen Nutzen zu erzielen. Hier einige Beispiele für solche Hilfsaufgaben.
- Sagen Sie das nächste Wort in einer bestimmten Folge von Wörtern voraus. Es trägt auch den Namen des Sprachmodellierungsproblems.
- Sagen Sie ein fehlendes Wort anhand der Wörter vorher und nachher voraus.
- Sagen Sie Wörter innerhalb eines bestimmten Fensters unabhängig von ihrer Position für ein bestimmtes Wort voraus.
Natürlich ist diese Liste nicht vollständig und die Wahl eines Hilfsproblems hängt von der Intuition des Algorithmusentwicklers und den Berechnungskosten ab. Beispiele hierfür sind GloVe, Continuous Bag-of-Words (CBOW), Skipgrams usw. Details finden Sie in Kapitel 10 von Goldbergs Buch (Goldberg, 2017), aber wir werden das CBOW-Modell hier kurz diskutieren. In den meisten Fällen ist es jedoch völlig ausreichend, vorgefertigte Wortanhänge zu verwenden und sie an die vorhandene Aufgabe anzupassen.
Praktische Anwendung von vorgefertigten Wortanhängen
Der Großteil dieses Kapitels, wie auch der Rest des Buches, befasst sich mit der Verwendung von vorgefertigten Wortanhängen. Mit einer der vielen oben beschriebenen Methoden auf einem großen Textkörper vortrainiert - zum Beispiel auf dem gesamten Textkörper von Google News, Wikipedia oder Common Crawl1 - können Wortanhänge kostenlos heruntergeladen und verwendet werden. Im weiteren Verlauf des Kapitels werden wir zeigen, wie Sie diese Anhänge korrekt finden und laden, einige Eigenschaften von Worteinbettungen untersuchen und Beispiele für die Verwendung von vorgefertigten Worteinbettungen in NLP-Aufgaben geben.
Anhänge herunterladen
Anhänge von Wörtern sind so beliebt und weit verbreitet, dass viele verschiedene Optionen zum Herunterladen zur Verfügung stehen, vom ursprünglichen Word2Vec2 bis zum Stanford GloVe (
https://stanford.io/2PSIvPZ ), einschließlich Facebooks FastText3 (
https://fasttext.cc )
/ ) und viele andere. Normalerweise werden Anhänge in folgendem Format geliefert: Jede Zeile beginnt mit einem Wort / Typ, gefolgt von einer Folge von Zahlen (d. H. Einer Vektordarstellung). Die Länge dieser Sequenz entspricht der Dimension der Präsentation (Dimension des Anhangs). Die Dimension der Investitionen liegt normalerweise in der Größenordnung von Hunderten. Die Anzahl der Tokentypen entspricht meist der Größe des Wörterbuchs und beträgt etwa eine Million. Hier sind zum Beispiel die ersten sieben Dimensionen der Hunde- und Katzenvektoren von GloVe.
Um Anhänge effizient zu laden und zu handhaben, beschreiben wir die Helferklasse PreTrainedEmbeddings (Beispiel 5.1). Es erstellt einen Index aller im RAM gespeicherten Wortvektoren, um die schnelle Suche und Abfrage der nächsten Nachbarn mit Hilfe des Berechnungspakets für die nächsten Nachbarn zu vereinfachen.
Beispiel 5.1. Verwenden von vorbereiteten Word-Anhängen
In diesen Beispielen verwenden wir die Einbettung der Wörter GloVe. Sie müssen sie herunterladen und eine Instanz der PreTrainedEmbeddings-Klasse erstellen, wie in Eingabe [1] aus Beispiel 5.1 gezeigt.
Beziehungen zwischen Wortanhängen
Die Schlüsseleigenschaft von Worteinbettungen ist die Kodierung syntaktischer und semantischer Beziehungen, die sich in Form von Wortgebrauchsmustern manifestieren. Zum Beispiel wird über Katzen und Hunde normalerweise sehr ähnlich gesprochen (sie besprechen ihre Haustiere, Fütterungsgewohnheiten usw.). Infolgedessen liegen die Anhänge für die Wörter Katzen und Hunde viel näher beieinander als die Anhänge für die Namen anderer Tiere, beispielsweise Enten und Elefanten.
Es gibt viele Möglichkeiten, semantische Beziehungen zu untersuchen, die in Wortanhängen kodiert sind. Eine der beliebtesten Methoden ist die Verwendung der Analogie-Aufgabe (eine der häufigsten Arten logischer Denkaufgaben in Prüfungen wie SAT):
Word1: Word2 :: Word3: ______
Bei dieser Aufgabe ist es erforderlich, den vierten Wert bei gegebener Verbindung zwischen den ersten beiden durch die gegebenen drei Wörter zu bestimmen. Mit Hilfe von verschachtelten Wörtern kann dieses Problem räumlich codiert werden. Subtrahieren Sie zunächst Word2 von Word1. Der Differenzvektor zwischen ihnen codiert die Beziehung zwischen Word1 und Word2. Diese Differenz kann dann zu Slovo3 addiert werden und das Ergebnis ist der Vektor, der dem vierten fehlenden Wort am nächsten kommt. Um das Analogieproblem zu lösen, ist es ausreichend, die nächsten Nachbarn unter Verwendung dieses erhaltenen Vektors nach Index abzufragen. Die in Beispiel 5.2 gezeigte entsprechende Funktion führt genau das aus, was oben beschrieben wurde: Sie verwendet Vektorarithmetik und einen ungefähren Index der nächsten Nachbarn, um das fehlende Element in der Analogie zu finden.
Beispiel 5.2. Lösen eines Analogieproblems mithilfe von Worteinbettungen
Interessanterweise kann anhand einer einfachen verbalen Analogie gezeigt werden, wie Worteinbettungen eine Vielzahl von semantischen und syntaktischen Beziehungen erfassen können (Beispiel 5.3).
Beispiel 5.3 Codierung mit Hilfe von Worteinbettungen vieler sprachlicher Zusammenhänge am Beispiel von Aufgaben nach der Analogie des SAT
Obwohl es den Anschein hat, dass Zusammenhänge das Funktionieren der Sprache deutlich widerspiegeln, ist nicht alles so einfach. Wie Beispiel 5.4 zeigt, können Verbindungen falsch definiert werden, da Wortvektoren auf der Grundlage ihres gemeinsamen Auftretens bestimmt werden.
Beispiel 5.4. Ein Beispiel, das die Gefahr der Kodierung der Bedeutung von Wörtern auf der Grundlage des gemeinsamen Vorkommens veranschaulicht - manchmal funktioniert es nicht!
Beispiel 5.5 zeigt eine der häufigsten Kombinationen beim Codieren von Geschlechterrollen.
Beispiel 5.5 Seien Sie vorsichtig mit geschützten Attributen wie Geschlecht, die durch Wortanhänge verschlüsselt sind. Sie können in zukünftigen Modellen zu unerwünschten Verzerrungen führen.
Es stellt sich heraus, dass es ziemlich schwierig ist, zwischen Sprachmustern und tief verwurzelten kulturellen Vorurteilen zu unterscheiden. Zum Beispiel sind Ärzte keineswegs immer Männer und Krankenschwestern sind nicht immer Frauen, aber solche Vorurteile sind so hartnäckig, dass sie sich in der Sprache und folglich in den Wortvektoren widerspiegeln, wie in Beispiel 5.6 gezeigt.
Beispiel 5.6. Kulturelle Vorurteile in Wortvektoren „eingenäht“
Wir sollten mögliche systematische Fehler bei Investitionen nicht vergessen, da diese in NLP-Anwendungen immer beliebter werden und häufiger vorkommen. Die Beseitigung systematischer Fehler bei der Worteinbettung ist ein neues und sehr interessantes Gebiet der wissenschaftlichen Forschung (siehe den Artikel von Bolukbashi et al. [Bolukbasi et al., 2016]). Wir empfehlen Ihnen, auf
ethicsinnlp.org nachzuschlagen, wo Sie aktuelle Informationen zu
Querschnittsethik und NLP finden.
Über Autoren
Delip Rao ist der Gründer des in San Francisco ansässigen Beratungsunternehmens Joostware, das sich auf maschinelles Lernen und NLP-Forschung spezialisiert hat. Einer der Mitbegründer der Fake News Challenge - eine Initiative, die Hacker und Forscher auf dem Gebiet der KI über die Aufgaben der Überprüfung von Fakten in den Medien zusammenbringen soll. Zuvor arbeitete Delip bei Twitter und Amazon (Alexa) an NLP-bezogenen Forschungs- und Softwareprodukten.
Brian McMahan ist wissenschaftlicher Mitarbeiter bei Wells Fargo und konzentriert sich hauptsächlich auf NLP. Zuvor bei Joostware gearbeitet.
»Weitere Informationen zum Buch finden Sie auf
der Website des Herausgebers»
Inhalt»
Auszug25%
Rabatt Gutschein für
Händler -
PyTorchNach Bezahlung der Papierversion des Buches wird ein elektronisches Buch per E-Mail verschickt.