พื้นที่เก็บข้อมูลนี้มีไว้สำหรับบทความ "การนำเสนอภาษาสองทิศทางเชิงลึกที่รวดเร็วและแม่นยำสำหรับการเรียนรู้แบบไม่มีผู้ดูแล" ซึ่งอธิบายวิธีการของเราโดยละเอียด
T-TA หรือ T ext A utoencoder ที่ ใช้ ransformer เป็นโมเดลภาษาเชิงลึกแบบสองทิศทางใหม่สำหรับงานการเรียนรู้แบบไม่มีผู้ดูแล T-TA เรียนรู้วัตถุประสงค์การเรียนรู้ที่ตรงไปตรงมา การเข้ารหัสภาษาอัตโนมัติ ซึ่งคือการทำนายโทเค็นทั้งหมดในประโยคพร้อมกันโดยใช้เพียงบริบทเท่านั้น ต่างจาก "โมเดลภาษาที่ปกปิด" T-TA มีกลไกการ ปิดบังตัวเอง เพื่อหลีกเลี่ยงการคัดลอกอินพุตไปยังเอาต์พุตเท่านั้น ต่างจาก BERT (ซึ่งใช้สำหรับการปรับแต่งโมเดลที่ได้รับการฝึกล่วงหน้าทั้งหมดอย่างละเอียด) T-TA มีประโยชน์อย่างยิ่งในการได้รับการฝังตามบริบท ซึ่งเป็นการนำเสนอแบบตายตัวของโทเค็นอินพุตแต่ละรายการที่สร้างจากเลเยอร์ที่ซ่อนอยู่ของโมเดลภาษาที่ได้รับการฝึก
สถาปัตยกรรมโมเดล T-TA ขึ้นอยู่กับสถาปัตยกรรมโมเดล BERT ซึ่งส่วนใหญ่เป็นสถาปัตยกรรม Transformer มาตรฐาน รหัสของเราอิงตาม BERT github ของ Google ซึ่งรวมถึงวิธีการสร้างคำศัพท์ที่กำหนดเอง การเตรียมชุดข้อมูล Wikipedia ฯลฯ
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 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 ..
จากนั้นโฟลเดอร์ tta -layer-3-enwiki-lower-sub-32k
จะปรากฏใน model/
โฟลเดอร์ ในตอนนี้โมเดลใช้งานได้กับ max_seq_length=128
เราเผยแพร่โค้ด run_unsupervisedstsb.py
เป็นตัวอย่างการใช้งาน T-TA ในการรันโค้ดนี้ คุณอาจต้องใช้แพ็คเกจหลามหลายแพ็คเกจ: 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
เอาท์พุท:
แยก | ร |
---|---|
STSb-dev | 71.88 |
การทดสอบ STSb | 62.27 |
เราเผยแพร่ข้อมูลแบบข้อความอย่างเดียวของ librispeech ที่ประมวลผลล่วงหน้าแล้ว (ไฟล์ tar.gz ขนาด 1.66 GB) ในคลังข้อมูลนี้ แต่ละบรรทัดเป็นประโยคเดียว ดังนั้นเราจึงใช้หน่วยประโยค (แทนที่จะเป็นหน่วยย่อหน้า) สำหรับอินสแตนซ์การฝึกอบรม ข้อมูลต้นฉบับสามารถพบได้ใน 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]
)