Ich habe GPT mit Microsoft Cognitive Toolkit (CNTK) ausprobiert.
Halten Sie einen japanischen Korpus für das Training bereit. Es wird davon ausgegangen, dass NVIDIA GPU CUDA installiert ist.
Dieses Mal habe ich einen japanischen Korpus vorbereitet und ein japanisches Modell zur Satzgenerierung trainiert. Erstellen Sie für die Wortteilung ein Unterwortmodell mit dem Satzstück [1].
GPT Generative Pretraining Transformer (GPT) [2] verwendet nur den Decoder-Teil von Transformer [3]. Transformatoren werden in Natürliche Sprache: Maschinelle Übersetzung Teil 2 - Neuronale maschinelle Übersetzungstransformator eingeführt.
Auch diesmal, wie im Fall von Natural Language: BERT Part2 - Unbeaufsichtigtes Pretraining ALBERT, Pre-Layer Normalization Transformer [4] Ich habe es konfiguriert. Die Details der Schichtstruktur sind in der folgenden Abbildung dargestellt.
Wir haben auch die faktorisierte Einbettungsparametrisierung und die schichtübergreifende Parameterfreigabe verwendet, um das Gewicht des Modells zu reduzieren.
GPTs Multi-Head Attention verwendet Masked Self-Attention für das selbstüberwachte, überwachte Lernen.
Der Anfangswert jedes Parameters wurde auf eine Normalverteilung mit einer Varianz von 0,02 eingestellt.
Die Verlustfunktion verwendet den Cross Entropy Error.
Adam [5] wurde als Optimierungsalgorithmus verwendet. Adams Hyperparameter $ β_1 $ wird auf 0,9 und $ β_2 $ auf den Standardwert von CNTK gesetzt.
Die Lernrate ist die zyklische Lernrate (CLR) [6], die maximale Lernrate beträgt 1e-4, die Basislernrate beträgt 1e-8, die Schrittgröße beträgt das 10-fache der Anzahl der Epochen und die Richtlinie ist Auf triangular2 setzen.
Das Modelltraining führte eine Iteration von 1.000.000 durch Mini-Batch-Training durch.
・ CPU Intel (R) Core (TM) i7-5820K 3,30 GHz ・ GPU NVIDIA Quadro RTX 6000 24 GB
・ Windows 10 Pro 1909 ・ CUDA 10.0 ・ CuDNN 7.6 ・ Python 3.6.6 ・ Cntk-gpu 2.7 ・ Cntkx 0.1.53 ・ Pandas 1.1.2 ・ Satzstück 0.1.91
Das Schulungsprogramm ist auf [GitHub] verfügbar (https://github.com/sho-watari/NaturalLanguage/tree/master/JGPT).
jgpt_training.py
Ich werde die für diese Implementierung erforderlichen Inhalte ergänzen.
OpenAI GPT GPT wurde als Vorlernmodell für die Verarbeitung natürlicher Sprache vorgeschlagen. Ein selbstrückkehrendes Sprachmodell, das das Wort $ w_ {t + 1} $ vom Eingabewort $ w_1, w_2, ..., w_ {t} $ bis zum Zeitpunkt $ t $ bis zum nächsten Mal $ t + 1 $ vorhersagt. ..
p(w) = \prod^T_{t=1} p(w_{t+1} | w_1, w_2, ..., w_t)
Wie BERT führt GPT unbeaufsichtigtes Pre-Training durch und optimiert dann die Feinabstimmung mit einem Datensatz mit mehreren Aufgaben. In BERT wurde unbeaufsichtigtes Lernen mithilfe eines speziellen [MASK] -Tokens realisiert. In GPT wird unbeaufsichtigtes Vorlernen mithilfe der Selbstrückgabe durchgeführt, wie in der folgenden Abbildung dargestellt.
Die folgende Abbildung zeigt die Multi-Head-Aufmerksamkeit von BERT und GPT. BERT kann sowohl vergangene als auch zukünftige Informationen verwenden, GPT maskiert jedoch zukünftige Informationen und verwendet nur unidirektionale Informationen.
GPT-2 GPT-2 [7] besteht aus Pre-Layer-Normalisierung, und Transformer Decoder verfügt über bis zu 48 Layer und 1,5 Milliarden Parameter.
GPT-2 hat bei mehreren Aufgaben in Zero-shot durch das Pre-Training mit einem riesigen 40-GB-Datensatz namens WebText, der 8 Millionen Sätze enthält, gute Ergebnisse erzielt.
GPT-3 GPT-3 [8] hat ein genaueres Sprachmodell erhalten, indem die Größe des Netzwerks und des Datensatzes von GPT-2 maximiert wurde.
Das Modell von GPT-3 hat die gleiche Konfiguration wie GPT-2, führt jedoch Sparse Transformer [[9]](# reference) in Transformer Decoder ein und verfügt über 175 Billionen Parameter in bis zu 96 Schichten. Es scheint, dass das Erlernen von GPT-3 ungefähr 490 Millionen Yen kostet, und wenn das Training mit einer GPU durchgeführt wird, wird es ungefähr 355 Jahre dauern.
GPT-3 soll in der Lage sein, Sätze auf einer Ebene zu generieren, die es nicht unangenehm macht, Sätze mit Menschen auszutauschen, hat jedoch die Schwäche, dass es dem BERT-Modell bei Aufgaben, die bidirektionale Informationen erfordern, unterlegen ist. Scheint offenkundig zu sein.
Training Loss
>
>Die folgende Abbildung zeigt das Protokoll der Verlustfunktion während des Trainings. Die horizontale Achse repräsentiert die Anzahl der Wiederholungen und die vertikale Achse repräsentiert den Wert der Verlustfunktion. Beispiel für die Erzeugung japanischer Sätze Ein Beispiel für die Erzeugung durch ein trainiertes Modell ist unten dargestellt. Geben Sie ein Wort ein, das mit> beginnt, und generieren Sie die Fortsetzung. Die Menschheit ändert den Preis für das Erlernen dieses rekonstruierten Uterus der Biotechnik zum ersten Mal in der Wirtschaft nicht. Magie
Magie ist derjenige, der großen Erfolg hat.
>Erde
Die Bedeutung des letzteren wird auf der Erde betont.
>Aoi Hazuki ist
Aoi Hazuki duckte sich, sei nicht so friedlich.
Es sieht so aus, als wäre ein japanischer Satz erzeugt worden, aber es ist ein bedeutungsloser Satz geworden. Sie werden feststellen, dass Sie ein größeres Modell, ein Trainingsdatensatz und genügend Hardware benötigen, um es auszuführen und eine komfortable Textstufe zu generieren.
Natural Language : Machine Translation Part2 - Neural Machine Translation Transformer Natural Language : BERT Part2 - Unsupervised pretraining ALBERT
Recommended Posts