ACL2020 Best Paper ได้รับรางวัลการเสนอชื่อกระดาษ "Don't Stop Pretraining: ปรับรูปแบบภาษาเข้ากับโดเมนและงาน" บทความนี้ทำการทดลองจำนวนมากเกี่ยวกับรูปแบบภาษาก่อนการฝึกอบรมและวิเคราะห์อย่างเป็นระบบการปรับปรุงรูปแบบภาษาก่อนการฝึกอบรมในงานย่อย มีข้อสรุปหลักหลายประการ:
การฝึกอบรมล่วงหน้า (DAPT) ต่อเนื่องในชุดข้อมูลของฟิลด์เป้าหมายสามารถปรับปรุงผลกระทบได้ ยิ่งคลังข้อมูลของสนามเป้าหมายที่ไม่เกี่ยวข้องมากขึ้นคือคลังการฝึกอบรมก่อนการฝึกอบรมดั้งเดิมของโรเบอร์ต้า
การฝึกอบรมล่วงหน้า (TAPT) ต่อเนื่องในชุดข้อมูลของงานที่เฉพาะเจาะจงสามารถปรับปรุงเอฟเฟกต์ "ราคาถูก" ได้มาก
การรวมทั้งสอง (DAPT ก่อนจากนั้น TAPT) สามารถปรับปรุงเอฟเฟกต์เพิ่มเติมได้
เอฟเฟกต์จะดีที่สุดหากคุณสามารถรับข้อมูลที่ไม่มีการทำเครื่องหมายที่เกี่ยวข้องกับงานมากขึ้นและดำเนินการต่อไปก่อนการฝึกอบรม (curated-tapt)
หากคุณไม่สามารถรับข้อมูลที่ไม่มีป้ายกำกับที่เกี่ยวข้องกับงานได้มากขึ้นให้ใช้กลยุทธ์การเลือกข้อมูลที่มีน้ำหนักเบาและง่ายมากและจะได้รับการปรับปรุงให้ดีขึ้น
แม้ว่ารูปแบบภาษาการฝึกอบรมล่วงหน้าเกี่ยวกับการเดิมพันนั้นเป็นการดำเนินการแบบจุดที่มีเสถียรภาพในการแข่งขันอัลกอริทึม แต่สิ่งที่น่ายกย่องในบทความข้างต้นคือการวิเคราะห์การดำเนินการนี้อย่างเป็นระบบ แบบจำลองภาษาจีนส่วนใหญ่ได้รับการฝึกฝนเกี่ยวกับ TensorFlow และตัวอย่างทั่วไปคือโครงการ Roberta จีน คุณสามารถอ้างถึง https://github.com/brightmart/roberta_zh
มีตัวอย่างน้อยกว่าของแบบจำลองภาษาเบิร์ตจีนก่อนการฝึกอบรมโดยใช้ pytorch ใน Transformers ของ HuggingFace บางรหัสสนับสนุนรูปแบบภาษาก่อนการฝึกอบรม (ไม่รวยมากและฟังก์ชั่นจำนวนมากไม่สนับสนุนเช่น WWM) เพื่อให้การฝึกอบรมก่อนการฝึกอบรมแบบจำลองภาษาเบิร์ตด้วยค่าใช้จ่ายรหัสน้อยที่สุดบทความนี้ยืมรหัสสำเร็จรูปบางส่วนจากมัน ลองแบ่งปันประสบการณ์บางอย่างในการใช้ Pytorch สำหรับการฝึกอบรมแบบจำลองภาษา มีรูปแบบภาษาจีนทั่วไปสามแบบ
(https://huggingface.co/bert-base-chinese)
นี่เป็นรูปแบบภาษาเดิมพันของจีนที่พบบ่อยที่สุดซึ่งได้รับการฝึกฝนมาก่อนตามคลังข้อมูลที่เกี่ยวข้องกับวิกิพีเดียจีน มันเป็นเรื่องง่ายที่จะใช้โมเดลภาษาล่วงหน้าเป็นพื้นฐานโดยไม่มีข้อมูลการกำกับดูแลในโดเมน เพียงแค่ใช้ตัวอย่างอย่างเป็นทางการ
https://github.com/huggingface/transformers/tree/master/examples/language-modeling (หม้อแปลงที่ใช้ในบทความนี้ได้รับการปรับปรุงเป็น 3.0.2)
python run_language_model_bert.py --output_dir=output --model_type=bert --model_name_or_path=bert-base-chinese --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
(https://github.com/ymcui/chinese-bert-wwm)
รูปแบบภาษาที่ผ่านการฝึกอบรมมาก่อนซึ่งเปิดตัวโดยห้องปฏิบัติการร่วมของสถาบันเทคโนโลยีฮาร์บิน วิธีการฝึกอบรมล่วงหน้าคือการใช้วิธีการที่คล้ายกันของโรเบอร์ต้าเช่นหน้ากากแบบไดนามิกข้อมูลการฝึกอบรมเพิ่มเติม ฯลฯ ในหลาย ๆ งานโมเดลนี้ดีกว่าเบิร์ต-เบส-จีน เนื่องจากไฟล์การกำหนดค่าของคลาส Roberta จีนเช่น Vocab.txt ได้รับการออกแบบทั้งหมดโดยใช้วิธี Bert รูปแบบเริ่มต้นของไฟล์การกำหนดค่าการอ่านโมเดลภาษาอังกฤษภาษาอังกฤษคือ Vocab.json สำหรับรุ่นภาษาอังกฤษโรเบอร์ต้าบางรุ่นพวกเขาสามารถอ่านผ่านอัตโนมัติได้โดยอัตโนมัติ สิ่งนี้อธิบายได้ว่าทำไมรหัสตัวอย่าง Roberta จีนของห้องสมุดโมเดลของ HuggingFace จึงไม่สามารถเรียกใช้ได้ https://huggingface.co/models?
หากคุณต้องการดำเนินการฝึกอบรมล่วงหน้า Roberta ตามรหัสด้านบน RUN_LANGUAGE_MODELING.PY จำเป็นต้องมีการเปลี่ยนแปลงอีกสองครั้ง
สมมติว่า config.json ได้รับการแก้ไขแล้วคุณสามารถเรียกใช้คำสั่งต่อไปนี้
python run_language_model_roberta.py --output_dir=output --model_type=bert --model_name_or_path=hflroberta --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4
https://github.com/nghuyong/ernie-pytorch)
เออร์นี่เป็นแบบจำลองที่ได้รับการฝึกฝนมาก่อนที่ Baidu ซึ่งตั้งอยู่บนพื้นฐานของคลังภาษาจีนเช่น Baidu Zhitieba รวมกับการทำนายเอนทิตีและงานอื่น ๆ ความแม่นยำของโมเดลนี้ดีกว่าของ Bert-Base-Chinese และ Roberta ในงานบางอย่าง หากคุณทำข้อมูลภาคสนามก่อนการฝึกอบรมตามรุ่น ERNIE1.0 คุณจะต้องแก้ไขในขั้นตอนเดียวเท่านั้น
python run_language_model_ernie.py --output_dir=output --model_type=bert --model_name_or_path=ernie --do_train --train_data_file=train.txt --do_eval --eval_data_file=eval.txt --mlm --per_device_train_batch_size=4