Dieses Repository enthält Implementierungen einiger der wichtigsten Artikel zur Beantwortung von Fragen. Die Implementierungen erfolgen in Form von Tutorials und sind ungefähr Anmerkungen der genannten Papiere. Dieses Repository ist möglicherweise hilfreich für diejenigen, die die Grundlagen von Deep Learning und NLP kennen, mit dem Lesen leicht komplexer Papiere beginnen und sehen, wie sie implementiert werden. Dieses Repository setzt auch eine gewisse Vertrautheit mit Pytorch -Grundlagen aus, obwohl ich mein Bestes versucht habe, alles in einfachen Worten zu zerstören.
Die Beantwortung von Frage ist eine wichtige Aufgabe, die auf der Basis von Intelligenz von NLP -Systemen und KI im Allgemeinen beurteilt werden kann. Ein QA -System erhält einen kurzen Absatz oder einen kurzen Kontext zu einem Thema und wird auf der Grundlage der Passage einige Fragen gestellt. Die Antworten auf diese Fragen sind Spannweiten des Kontextes, dh direkt in der Passage verfügbar. Um solche Modelle zu trainieren, verwenden wir den Squad -Datensatz.
Das Notizbuch mit dem Namen "NLP -Vorverarbeitungspipeline für QA" enthält den gesamten Vorverarbeitungscode, den ich geschrieben habe. Der Vorverarbeitungscode verwendet keine Bibliothek auf hoher Ebene und ich habe alle Funktionen von Grund auf neu geschrieben. Es verwendet nur Spacy für Tokenisierung. Die hier implementierten Funktionen sind vielen NLP -Aufgaben gemeinsam und können daher für jemanden nützlich sein, der gerade erst anfängt. Zum Beispiel: Erstellen von Vokabularen, Gewichtsmatrizen für vorgezogene Einbettungen, Datensätze/Dataloader usw. im Nachhinein wäre es eine bessere Idee gewesen, eine Bibliothek auf hoher Ebene zu verwenden, und ich arbeite derzeit daran.
Alle Notizbücher basieren auf diesem Ansatz. Letztendlich geht es bei neuronalen Netzen um die Arbeit mit Tensoren. Die Form und den Inhalt jedes Tensors zu kennen, ist etwas, das ich beim Lernen sehr nützlich gefunden habe. Nach jeder Codezeile habe ich die Tensorform und Änderungen, die aufgrund der Transformationen im Code geschehen, kommentiert. Dies macht den Prozess, zu verstehen, was in neuronalen Netzen vor sich geht, intuitiver.
Ich habe keinen unbegrenzten Zugriff auf schnellere GPUs. Die folgenden Modelle wurden geschult, indem GPUs auf Vast.ai gemietet wurden. Ich habe GTX 1080 TI für den Großteil meiner Experimente verwendet.
Im ersten Notebook implementieren wir ein vergleichsweise einfaches Modell, das mehrschichtige LSTMs und bilineare Aufmerksamkeit umfasst. Die Details und die Intuition jeder Ebene/Komponente werden vor dem Einspringen in den Code erklärt. Dieses Modell ist dem in diesem Artikel diskutierten und auch die gleichen ersten Autoren: Danqi Chen. Das zweite Modell ist auch als "Stanfor aufmerksam" bekannt. Das im Notizbuch implementierte Modell ist eine leicht erweiterte Version davon. Die Ergebnisse des erhaltenen Dev -Sets sind:
| Epochen | Em | F1 |
|---|---|---|
| 5 | 56,4 | 68,2 |
Ich werde dies mehr trainieren, um die Ergebnisse zu verbessern und sie bald aktualisieren.
Als nächstes gehen wir auf ein bisschen komplexeres Papier. Dieses Papier verbessert die Ergebnisse des vorherigen Papiers. Das hier implementierte Modell ist im Gegensatz zu früheren eine mehrstufige hierarchische Architektur, die den Kontext und die Abfrage auf mehreren Granularitätsebenen darstellt. Dieses Papier beinhaltet auch ein Wiederauftreten, da es ausgiebig LSTMs und einen auf Gedächtnislosen aufmerksamen Aufmerksamkeitsmechanismus verwendet, der von der Natur bidirektional ist. In diesem Notebook werden unter anderem einige wichtige NLP -Techniken wie Charakter -Einbettungen und Autobahnnetzwerke ausführlich beschrieben. Ergebnisse auf Dev Set:
| Epochen | Em | F1 |
|---|---|---|
| 5 | 60.4 | 70.1 |
Schließlich machen wir uns von Wiederholungen ab und verwenden nur Selbstbeziehung und Konvolutionen. Dieses Papier lässt sich von "Aufmerksamkeit ist alles, was Sie brauchen" inspirieren. Die Hauptmotivation für das Design des Modells ist: Faltung erfasst die lokale Struktur des Textes, während die Selbstbekämpfung die globale Interaktion zwischen jedem Wörterpaar lernt. Dieses Tutorial erklärt Themen wie Selbstbekämpfung und tiefe trennbare Wäldungen . Ergebnisse auf Dev Set:
| Epochen | Em | F1 |
|---|---|---|
| 3 | * | 36.6 |
Ich trainiere derzeit dieses Modell. Ich bin derzeit kurz und habe keinen Zugriff auf schnellere GPUs. Das Training für 1 Epoche dauert ungefähr 1 Stunde bei GTX 1080 Ti.
Ich bin kein Experte. Mein Hauptmotiv für dieses Projekt war es, etwas über eine NLP -Domäne zu erfahren. Wenn Sie einen konzeptionellen oder albernen Fehler finden, erstellen Sie bitte ein Problem und ich werde mein Bestes geben, um sie schnell zu korrigieren. Andere Beiträge sind ebenfalls willkommen. Wenn Sie ein Modell trainieren und verbesserte Ergebnisse erzielen, machen Sie bitte eine PR. Wenn Sie daran interessiert sind, weitere Artikel in dieser Domain zu implementieren und sie diesem Repository hinzuzufügen, würde ich gerne helfen. Obwohl ich derzeit kurz bin, werde ich dieses Repository aktiv aufrechterhalten.