บทช่วยสอนได้รับเมื่อวันที่ 2 มิถุนายนที่ NAACL 2019 ใน Minneapolis, MN, USA โดย Sebastian Ruder, Matthew Peters, Swabha Swayamdipta และ Thomas Wolf
นี่คือหน้าเว็บของบทช่วยสอน NAACL สำหรับข้อมูลเพิ่มเติม
สไลด์สำหรับการสอนสามารถดูได้ที่นี่: https://tinyurl.com/naacltransfer
สมุดบันทึก Google Colab พร้อมรหัสทั้งหมดสำหรับการสอนสามารถดูได้ที่นี่: https://tinyurl.com/naacltransfercolab
ที่เก็บปัจจุบันสามารถเข้าถึงได้ด้วย URL สั้น ๆ ต่อไปนี้: https://tinyurl.com/naacltransfercode
กระบวนทัศน์การเรียนรู้ของเครื่องจักรแบบคลาสสิกภายใต้การเรียนรู้การแยกแบบจำลองการทำนายเดียวสำหรับงานโดยใช้ชุดข้อมูลเดียว วิธีการนี้ต้องใช้ตัวอย่างการฝึกอบรมจำนวนมากและทำงานได้ดีที่สุดสำหรับงานที่กำหนดและแคบ การถ่ายโอนการเรียนรู้หมายถึงชุดของวิธีการที่ขยายวิธีการนี้โดยใช้ประโยชน์จากข้อมูลจากโดเมนหรืองานเพิ่มเติมเพื่อฝึกอบรมแบบจำลองที่มีคุณสมบัติการวางนัยทั่วไปที่ดีขึ้น
ในช่วงสองปีที่ผ่านมาสาขาการประมวลผลภาษาธรรมชาติ (NLP) ได้เห็นการเกิดขึ้นของวิธีการเรียนรู้การถ่ายโอนและสถาปัตยกรรมหลายอย่างซึ่งดีขึ้นอย่างมีนัยสำคัญเมื่ออยู่ในงานที่ทันสมัยในงาน NLP ที่หลากหลาย
การปรับปรุงเหล่านี้พร้อมกับความพร้อมใช้งานที่กว้างและความสะดวกในการรวมวิธีการเหล่านี้เป็นสิ่งชวนให้นึกถึงปัจจัยที่นำไปสู่ความสำเร็จของการฝังคำที่ผ่านการฝึกฝนและจินตนาการในการมองเห็นคอมพิวเตอร์และระบุว่าวิธีการเหล่านี้น่าจะกลายเป็นเครื่องมือทั่วไปในภูมิทัศน์ NLP และทิศทางการวิจัยที่สำคัญ
เราจะนำเสนอภาพรวมของวิธีการเรียนรู้การถ่ายโอนที่ทันสมัยใน NLP วิธีการที่ได้รับการฝึกอบรมล่วงหน้าข้อมูลที่พวกเขาเรียนรู้การจับภาพและตรวจสอบตัวอย่างและกรณีศึกษาเกี่ยวกับวิธีการที่โมเดลเหล่านี้สามารถรวมและปรับตัวในงาน NLP ดาวน์สตรีมได้อย่างไร
codebase นี้พยายามที่จะนำเสนอในวิธีที่ง่ายที่สุดและกะทัดรัดที่สุดของเทคนิคการเรียนรู้การถ่ายโอนที่สำคัญบางอย่างซึ่งเกิดขึ้นในช่วงหลายปีที่ผ่านมา รหัสในที่เก็บนี้ไม่ได้พยายามที่จะเป็นล้ำสมัย อย่างไรก็ตามมีความพยายามในการบรรลุประสิทธิภาพที่สมเหตุสมผลและมีการปรับเปลี่ยนบางอย่างเพื่อแข่งขันกับสถานะปัจจุบันของศิลปะ
มีความพยายามพิเศษ
ปัจจุบัน codebase ประกอบด้วย:
pretraining_model.py : โมเดลหม้อแปลงที่มีสถาปัตยกรรมเหมือน GPT-2 เป็นแบบจำลองเบื้องต้นpretraining_train.py : สคริปต์ pretraining เพื่อฝึกอบรมโมเดลนี้โดยมีวัตถุประสงค์การสร้างแบบจำลองภาษาในการเลือกชุดข้อมูลขนาดใหญ่ (Wikitext-103, SimpleBooks-92) โดยใช้การฝึกอบรมแบบกระจายหากมี;finetuning_model.py : สถาปัตยกรรมหลายอย่างที่ใช้โมเดลหม้อแปลงสำหรับการปรับแต่ง (มีหัวการจำแนกด้านบนพร้อมอะแดปเตอร์);finetuning_train.py : สคริปต์การปรับแต่งเพื่อปรับแต่งสถาปัตยกรรมเหล่านี้ในงานการจำแนกประเภท (IMDB) ในการใช้ codebase นี้เพียงโคลนที่เก็บ GitHub และติดตั้งข้อกำหนดเช่นนี้:
git clone https://github.com/huggingface/naacl_transfer_learning_tutorial
cd naacl_transfer_learning_tutorial
pip install -r requirements.txt ในการฝึกอบรมหม้อแปลงล่วงหน้าให้เรียกใช้สคริปต์ pretraining_train.py เช่นนี้:
python ./pretraining_train.pyหรือใช้การฝึกอบรมแบบกระจายเช่นนี้ (สำหรับเซิร์ฟเวอร์ 8 GPU):
python -m torch.distributed.launch --nproc_per_node 8 ./pretraining_train.pyสคริปต์การฝึกอบรมล่วงหน้าจะ:
wikitext-103 สำหรับการฝึกอบรมล่วงหน้า (ค่าเริ่มต้น)./runs ,การเตรียมการตรวจสอบความน่าสะพรึงกลัวของ ~ 29 ใน Wikitext-103 จะใช้เวลาประมาณ 15 ชั่วโมงใน 8 V100 GPU (สามารถหยุดได้ก่อนหน้านี้) หากคุณมีความสนใจใน SOTA มีเหตุผลบางประการที่ทำให้การตรวจสอบความน่าสะพรึงกลัวนั้นสูงกว่า Transformer-XL ที่เทียบเท่าเล็กน้อย (ประมาณ 24) เหตุผลหลักคือการใช้คำศัพท์แบบเปิด (คำย่อยสำหรับ Bert Tokenizer) แทนคำศัพท์ปิด (ดูโพสต์บล็อกนี้โดย Sebastian Mielke สำหรับคำอธิบายบางอย่าง)
มีตัวเลือกการฝึกอบรมล่วงหน้าที่หลากหลายคุณสามารถแสดงรายการได้ด้วย:
python ./pretraining_train.py --help ในการปรับแต่งหม้อแปลงที่ผ่านการฝึกอบรมล่วงหน้าให้เรียกใช้สคริปต์ finetuning_train.py เช่นนี้:
python ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER สามารถเป็นเช่น ./runs/May17_17-47-12_my_big_server may17_17-47-12_my_big_server
หรือใช้การฝึกอบรมแบบกระจายเช่นนี้ (สำหรับเซิร์ฟเวอร์ 8 GPU):
python -m torch.distributed.launch --nproc_per_node 8 ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDERมีตัวเลือกการปรับแต่งที่หลากหลายคุณสามารถแสดงรายการได้ด้วย:
python ./finetuning_train.py --help