該存儲庫適用於論文“無監督學習的快速準確的深度雙向語言表示”,該論文詳細描述了我們的方法。
T-TA ,即基於Transformer的文字自動編碼器,是一種用於無監督學習任務的新型深度雙向語言模型。 T-TA 學習簡單的學習目標,即語言自動編碼,即僅使用上下文來預測句子中的所有標記。與「屏蔽語言模型」不同,T-TA具有自我屏蔽機制,以避免僅將輸入複製到輸出。與 BERT(用於微調整個預訓練模型)不同,T-TA 特別有利於獲得上下文嵌入,上下文嵌入是從訓練語言模型的隱藏層生成的每個輸入標記的固定表示。
T-TA模型架構是基於BERT模型架構,大多是標準的Transformer架構。我們的程式碼基於Google的BERT github,其中包括建立自訂詞彙表、準備維基百科資料集等的方法。
Ubuntu 16.04 LTS
Python 3.6.10
TensorFlow 1.12.0
git clone https://github.com/joongbo/tta.git
cd tta
我們發布了預先訓練的 T-TA 模型(262.2 MB tar.gz 檔案)。
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 ..
然後, tta -layer-3-enwiki-lower-sub-32k
資料夾將出現在model/
資料夾中。目前,模型適用於max_seq_length=128
。
我們發布了程式碼run_unsupervisedstsb.py
作為 T-TA 的使用範例。為了運行此程式碼,您可能需要幾個 python 套件: numpy
、 scipy
和sklearn
。
若要取得 STS 基準資料集,
cd data
wget http://ixa2.si.ehu.es/stswiki/images/4/48/Stsbenchmark.tar.gz
tar -xvzf Stsbenchmark.tar.gz
cd ..
然後, data/
資料夾中將出現stsbenchmark
資料夾。
跑步:
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
輸出:
分裂 | r |
---|---|
STSb-dev | 71.88 |
STSb測試 | 62.27 |
我們發布了預處理的librispeech 純文字資料(1.66 GB tar.gz 檔案)。在這個語料庫中,每一行都是一個句子,因此我們使用句子單元(而不是段落單元)作為訓練實例。原始數據可以在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 ..
然後, corpus-eval.librispeech-lower.sub-32k.txt
和corpus-train.librispeech-lower.sub-32k.txt
將出現在data/
資料夾中。
得到預處理後的純文字資料後,我們製作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 的個人交流,請聯絡 Joongbo Shin ( [email protected]
)。