В этом репозитории находится статья «Быстрые и точные глубокие двунаправленные языковые представления для обучения без учителя», в которой подробно описан наш метод.
T-TA , или текстовый автокодировщик на основе преобразователя , — это новая глубокая двунаправленная языковая модель для задач обучения без учителя. T-TA изучает простую цель обучения — автоматическое кодирование языка , которое заключается в одновременном прогнозировании всех токенов в предложении, используя только их контекст. В отличие от «модели языка в маске», T-TA имеет механизм самомаскирования , позволяющий избежать простого копирования ввода на вывод. В отличие от BERT (который предназначен для точной настройки всей предварительно обученной модели), T-TA особенно полезен для получения контекстных вложений, которые представляют собой фиксированные представления каждого входного токена, сгенерированного из скрытых слоев обученной языковой модели.
Архитектура модели T-TA основана на архитектуре модели BERT, которая в основном представляет собой стандартную архитектуру Transformer. Наш код основан на GitHub BERT от Google, который включает методы для создания индивидуального словаря, подготовки набора данных Википедии и т. д.
Ubuntu 16.04 LTS
Python 3.6.10
TensorFlow 1.12.0
git clone https://github.com/joongbo/tta.git
cd tta
Выпускаем предварительно обученную модель T-TA (файл tar.gz размером 262,2 МБ).
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 ..
Затем в папке model/
появится папка tta -layer-3-enwiki-lower-sub-32k
. На данный момент модель работает с max_seq_length=128
.
Мы публикуем код run_unsupervisedstsb.py
как пример использования T-TA. Для запуска этого кода вам может понадобиться несколько пакетов Python: numpy
, scipy
и sklearn
.
Чтобы получить набор данных STS Benchmark,
cd data
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -xvzf Stsbenchmark.tar.gz
cd ..
Затем папка stsbenchmark
появится в папке data/
.
Бегать:
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
Выход:
Расколоть | р |
---|---|
СТСб-дев | 71,88 |
СТСб-тест | 62,27 |
Мы публикуем предварительно обработанные текстовые данные librispeech (файл tar.gz размером 1,66 ГБ). В этом корпусе каждая строка представляет собой одно предложение, поэтому для обучающего примера мы используем единицу предложения (а не единицу абзаца). Исходные данные можно найти в 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 ..
Затем в папке data/
появятся corpus-eval.librispeech-lower.sub-32k.txt
и corpus-train.librispeech-lower.sub-32k.txt
.
После получения предварительно обработанных текстовых данных делаем tfrecords (создание tfrecords данных поезда занимает некоторое время):
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
Мы обучаем модель (случайная инициализация) следующим образом:
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
Для лучшей инициализации мы можем добавить строку --init_checkpoint "models/ tta -layer-3-enwiki-lower-sub-32k/model.ckpt"
(после загрузки предварительно обученных весов).
Весь код и модели выпускаются под лицензией Apache 2.0. Дополнительную информацию смотрите в файле LICENSE
.
А пока процитируем статью 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}
}
Если вам нужна помощь или возникли проблемы с использованием T-TA, отправьте сообщение на GitHub.
Для личного общения по поводу T-TA обращайтесь к Джунбо Шину ( [email protected]
).