이 저장소는 우리의 방법을 자세히 설명하는 "비지도 학습을 위한 빠르고 정확한 심층 양방향 언어 표현" 논문을 위한 것입니다.
T-TA (변환기 기반 텍스트 자동 인코더 )는 비지도 학습 작업을 위한 새로운 심층 양방향 언어 모델입니다. T-TA는 문맥만을 사용하여 문장의 모든 토큰을 한 번에 예측하는 간단한 학습 목표인 언어 자동 인코딩을 학습합니다. "마스킹된 언어 모델"과 달리 T-TA는 입력을 출력으로 복사하는 것을 피하기 위해 자체 마스킹 메커니즘을 가지고 있습니다. BERT(사전 훈련된 전체 모델을 미세 조정하기 위한 것)와 달리 T-TA는 훈련된 언어 모델의 숨겨진 레이어에서 생성된 각 입력 토큰의 고정 표현인 상황별 임베딩을 얻는 데 특히 유용합니다.
T-TA 모델 아키텍처는 대부분 표준 Transformer 아키텍처인 BERT 모델 아키텍처를 기반으로 합니다. 우리 코드는 맞춤형 어휘 구축, Wikipedia 데이터 세트 준비 등을 위한 방법을 포함하는 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.2MB 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 ..
그러면 model/
폴더에 tta -layer-3-enwiki-lower-sub-32k
폴더가 나타납니다. 현재 모델은 max_seq_length=128
에서 작동합니다.
T-TA 사용 예시로 run_unsupervisedstsb.py
코드를 공개합니다. 이 코드를 실행하려면 numpy
, scipy
및 sklearn
과 같은 여러 Python 패키지가 필요할 수 있습니다.
STS 벤치마크 데이터세트를 얻으려면,
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
산출:
나뉘다 | 아르 자형 |
---|---|
STSb-dev | 71.88 |
STSb 테스트 | 62.27 |
전처리된 librispeech 텍스트 전용 데이터(1.66GB 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 ..
그러면 data/
폴더에 corpus-eval.librispeech-lower.sub-32k.txt
및 corpus-train.librispeech-lower.sub-32k.txt
나타납니다.
전처리된 일반 텍스트 데이터를 얻은 후 tfrecord를 만듭니다(열차 데이터의 tfrecord를 만드는 데 시간이 걸립니다).
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]
)에게 연락주시기 바랍니다.