Repositori ini untuk makalah "Representasi Bahasa Dua Arah Mendalam yang Cepat dan Akurat untuk Pembelajaran Tanpa Pengawasan", yang menjelaskan metode kami secara rinci.
T-TA , atau T ext A utoencoder berbasis transformator, adalah model bahasa dua arah yang dalam dan baru untuk tugas pembelajaran tanpa pengawasan. T-TA mempelajari tujuan pembelajaran langsung, pengkodean otomatis bahasa , yaitu memprediksi semua token dalam sebuah kalimat sekaligus hanya dengan menggunakan konteksnya. Berbeda dengan "model bahasa bertopeng", T-TA memiliki mekanisme self-masking untuk menghindari penyalinan masukan ke keluaran. Tidak seperti BERT (untuk menyempurnakan seluruh model yang telah dilatih sebelumnya), T-TA sangat bermanfaat untuk mendapatkan penyematan kontekstual, yang merupakan representasi tetap dari setiap token masukan yang dihasilkan dari lapisan tersembunyi model bahasa yang dilatih.
Arsitektur model T-TA didasarkan pada arsitektur model BERT, yang sebagian besar merupakan arsitektur Transformer standar. Kode kami didasarkan pada github BERT Google, yang mencakup metode untuk membangun kosa kata yang disesuaikan, menyiapkan kumpulan data Wikipedia, dll.
Ubuntu 16.04 LTS
Python 3.6.10
TensorFlow 1.12.0
git clone https://github.com/joongbo/tta.git
cd tta
Kami merilis model T-TA terlatih (file tar.gz 262,2 MB).
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 ..
Kemudian, folder tta -layer-3-enwiki-lower-sub-32k
akan muncul di folder model/
. Untuk saat ini, model berfungsi pada max_seq_length=128
.
Kami merilis kode run_unsupervisedstsb.py
sebagai contoh penggunaan T-TA. Untuk menjalankan kode ini, Anda mungkin memerlukan beberapa paket python: numpy
, scipy
, dan sklearn
.
Untuk mendapatkan dataset STS Benchmark,
cd data
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -xvzf Stsbenchmark.tar.gz
cd ..
Kemudian, folder stsbenchmark
akan muncul di folder data/
.
Berlari:
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
Keluaran:
Membelah | R |
---|---|
STSb-dev | 71.88 |
Tes STSb | 62.27 |
Kami merilis data hanya teks librispeech yang telah diproses sebelumnya (file tar.gz 1,66 GB). Dalam korpus ini, setiap baris merupakan satu kalimat, jadi kami menggunakan satuan kalimat (bukan satuan paragraf) untuk contoh pelatihan. Data asli dapat ditemukan di 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 ..
Kemudian, corpus-eval.librispeech-lower.sub-32k.txt
dan corpus-train.librispeech-lower.sub-32k.txt
akan muncul di folder data/
.
Setelah mendapatkan data teks biasa yang telah diproses sebelumnya, kami membuat tfrecords (membutuhkan beberapa waktu untuk membuat tfrecords data kereta):
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
Kami melatih model (inisialisasi acak) sebagai berikut:
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
Untuk inisialisasi yang lebih baik, kita dapat menambahkan baris --init_checkpoint "models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt"
(setelah mengunduh bobot yang telah dilatih sebelumnya).
Semua kode dan model dirilis di bawah lisensi Apache 2.0. Lihat file LICENSE
untuk informasi lebih lanjut.
Untuk saat ini, kutip makalah Arxiv:
@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}
}
Untuk bantuan atau masalah dalam menggunakan T-TA, silakan kirimkan masalah GitHub.
Untuk komunikasi pribadi terkait T-TA, silakan menghubungi Joongbo Shin ( [email protected]
).