ACL2020 Best Paper لديها جائزة ترشيح الورق ، "لا تتوقف عن التدريب: تكييف نماذج اللغة مع المجالات والمهام". أجرت هذه الورقة الكثير من التجارب على تدريب نموذج اللغة مسبقًا وتحليلها بشكل منهجي تحسين نموذج اللغة قبل التدريب على المهام الفرعية. هناك العديد من الاستنتاجات الرئيسية:
يمكن استمرار التدريب (DAPT) على مجموعة البيانات في الحقل الهدف تحسين التأثير ؛ كلما كان الأمر الأكثر ارتباطًا بمجموعة الحقل المستهدف في مجموعة روبرتا الأصلية قبل التدريب ، كلما كان التأثير DAPT أكثر وضوحًا.
يمكن أن يحسن استمرار التدريب (TAPT) على مجموعة بيانات المهام المحددة تأثير "رخيص" للغاية.
الجمع بين الاثنين (DAPT أولاً ، ثم TAPT) يمكن أن يحسن التأثير.
يكون التأثير الأفضل إذا تمكنت من الحصول على مزيد من البيانات غير المميزة المتعلقة بالمهمة والاستمرار في التدريب المسبق (TAPT).
إذا لم تتمكن من الحصول على مزيد من البيانات غير المسماة ذات الصلة بالمهمة ، فاعتمد استراتيجية تخفيف البيانات الخفيفة والخفيفة للغاية ، وسيتم تحسين التأثير أيضًا.
على الرغم من أن النموذج اللغوي المسبق للتدريب على BET هو بالفعل عملية مستقرة في مسابقات الخوارزمية. ولكن ما هو يستحق الثناء في المقالة أعلاه هو أنه يحلل بشكل منهجي هذه العملية. يتم تدريب معظم نماذج اللغة الصينية على TensorFlow ، والمثال المشترك هو مشروع Roberta الصيني. يمكنك الرجوع إلى https://github.com/brightmart/roberta_zh
هناك أمثلة أقل من نماذج لغة بيرت الصينية قبل التدريب باستخدام Pytorch. في محولات Huggingface ، تدعم بعض الكود نموذج اللغة قبل التدريب (ليست غنية جدًا ، ولا تدعم العديد من الوظائف مثل WWM). من أجل إكمال التدريب المسبق لنموذج لغة Bert مع الحد الأدنى من تكلفة الكود ، تستعير هذه المقالة بعض التعليمات البرمجية الجاهزة منه. حاول أيضًا مشاركة بعض التجارب في استخدام 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 ، مثل القناع الديناميكي ، ومزيد من بيانات التدريب ، وما إلى ذلك في العديد من المهام ، هذا النموذج أفضل من Bert-Base-Chinese. نظرًا لأن ملفات التكوين لفئة Roberta الصينية مثل vocab.txt مصممة باستخدام طريقة Bert. التنسيق الافتراضي لملف تكوين طراز Roberta English هو vocab.json. بالنسبة لبعض طرز Roberta الإنجليزية ، يمكن قراءتها تلقائيًا من خلال Automodel. وهذا ما يفسر لماذا لا يمكن تشغيل رمز عينة روبرتا الصينية لمكتبة النموذج في 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)
Ernie هو نموذج تدريب مسبقًا أصدره 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