Dieses Repository ist für den Artikel „Fast and Accurate Deep BiDirectional Language Representations for Unsupervised Learning“ bestimmt, der unsere Methode ausführlich beschreibt.
T -TA (Transformer-based T ext A utoencoder) ist ein neues tiefes bidirektionales Sprachmodell für unbeaufsichtigte Lernaufgaben. T-TA erlernt das einfache Lernziel, die automatische Sprachkodierung , bei der alle Token in einem Satz gleichzeitig nur anhand ihres Kontexts vorhergesagt werden sollen. Im Gegensatz zum „maskierten Sprachmodell“ verfügt T-TA über einen Selbstmaskierungsmechanismus , um zu vermeiden, dass die Eingabe lediglich in die Ausgabe kopiert wird. Im Gegensatz zu BERT (das der Feinabstimmung des gesamten vorab trainierten Modells dient) ist T-TA besonders nützlich, um kontextbezogene Einbettungen zu erhalten, bei denen es sich um feste Darstellungen jedes Eingabetokens handelt, die aus den verborgenen Schichten des trainierten Sprachmodells generiert werden.
Die T-TA-Modellarchitektur basiert auf der BERT-Modellarchitektur, bei der es sich größtenteils um eine Standard-Transformer-Architektur handelt. Unser Code basiert auf Googles BERT-Github, der Methoden zum Erstellen eines benutzerdefinierten Vokabulars, zum Vorbereiten des Wikipedia-Datensatzes usw. enthält.
Ubuntu 16.04 LTS
Python 3.6.10
TensorFlow 1.12.0
git clone https://github.com/joongbo/tta.git
cd tta
Wir veröffentlichen das vorab trainierte T-TA-Modell (262,2 MB tar.gz-Datei).
cd models
wget http://milabfile.snu.ac.kr:16000/tta/ tta -layer-3-enwiki-lower-sub-32k.tar.gz
tar -xvzf tta -layer-3-enwiki-lower-sub-32k.tar.gz
cd ..
Dann wird der Ordner tta -layer-3-enwiki-lower-sub-32k
im Ordner model/
angezeigt. Derzeit funktioniert das Modell mit max_seq_length=128
.
Wir veröffentlichen den Code run_unsupervisedstsb.py
als Beispiel für die Verwendung von T-TA. Zum Ausführen dieses Codes benötigen Sie möglicherweise mehrere Python-Pakete: numpy
, scipy
und sklearn
.
Um den STS-Benchmark-Datensatz zu erhalten,
cd data
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -xvzf Stsbenchmark.tar.gz
cd ..
Anschließend wird der Ordner stsbenchmark
im Ordner data/
angezeigt.
Laufen:
python run_unsupervisedstsb.py
--config_file models/ tta -layer-3-enwiki-lower-sub-32k/config.layer-3.vocab-lower.sub-32k.json
--model_checkpoint models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt
--vocab_file models/ tta -layer-3-enwiki-lower-sub-32k/vocab-lower.sub-32k.txt
Ausgabe:
Teilt | R |
---|---|
STSb-Entwickler | 71,88 |
STSb-Test | 62,27 |
Wir veröffentlichen die vorverarbeiteten Librispeech-Textdaten (1,66 GB tar.gz-Datei). In diesem Korpus ist jede Zeile ein einzelner Satz, daher verwenden wir die Satzeinheit (anstelle der Absatzeinheit) für eine Trainingsinstanz. Die Originaldaten finden Sie in LibriSpeech-LM.
cd data
wget http://milabfile.snu.ac.kr:16000/tta/corpus.librispeech-lower.sub-32k.tar.gz
tar -xvzf corpus.librispeech-lower.sub-32k.tar.gz
cd ..
Anschließend werden corpus-eval.librispeech-lower.sub-32k.txt
und corpus-train.librispeech-lower.sub-32k.txt
im Ordner data/
angezeigt.
Nachdem wir die vorverarbeiteten Klartextdaten erhalten haben, erstellen wir Tfrecords (das Erstellen von Tfrecords für Zugdaten dauert einige Zeit):
rm tfrecords/ tta -librispeech-lower-sub-32k # delete dummy (symbolic link)
python create_tfrecords.py
--input_file data/corpus-eval.librispeech-lower.sub-32k.txt
--vocab_file configs/vocab-lower.sub-32k.txt
--output_file tfrecords/ tta -librispeech-lower-sub-32k/eval.tfrecord
--num_output_split 1
python create_tfrecords.py
--input_file data/corpus-train.librispeech-lower.sub-32k.txt
--vocab_file configs/vocab-lower.sub-32k.txt
--output_file tfrecords/ tta -librispeech-lower-sub-32k/train.tfrecord
Wir trainieren das Modell (zufällige Initialisierung) wie folgt:
python run_training.py
--config_file configs/config.layer-3.vocab-lower.sub-32k.json
--input_file " tfrecords/ tta -librispeech-lower-sub-32k/train-* "
--eval_input_file " tfrecords/ tta -librispeech-lower-sub-32k/eval-* "
--output_dir " models/ tta -layer-3-librispeech-lower-sub-32k "
--num_train_steps 2000000
--num_warmup_steps 50000
--learning_rate 0.0001
Für eine bessere Initialisierung können wir eine Zeile hinzufügen --init_checkpoint "models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt"
(nach dem Herunterladen vorab trainierter Gewichte).
Sämtlicher Code und alle Modelle werden unter der Apache 2.0-Lizenz veröffentlicht. Weitere Informationen finden Sie in der LICENSE
Datei.
Zitieren Sie vorerst das Arxiv-Papier:
@article{shin2020fast,
title={Fast and Accurate Deep Bidirectional Language Representations for Unsupervised Learning},
author={Shin, Joongbo and Lee, Yoonhyung and Yoon, Seunghyun and Jung, Kyomin},
journal={arXiv preprint arXiv:2004.08097},
year={2020}
}
Wenn Sie Hilfe oder Probleme mit T-TA benötigen, senden Sie bitte ein GitHub-Problem.
Für persönliche Kommunikation im Zusammenhang mit T-TA wenden Sie sich bitte an Joongbo Shin ( [email protected]
).