تم تقديم البرنامج التعليمي في 2 يونيو في NAACL 2019 في مينيابوليس ، مينيسوتا ، الولايات المتحدة الأمريكية من قبل سيباستيان رودر ، ماثيو بيترز ، سوبها سويامديبتا وتوماس وولف.
فيما يلي صفحة الويب الخاصة بالدروس التعليمية NAACL لمزيد من المعلومات.
يمكن العثور على شرائح البرنامج التعليمي هنا: https://tinyurl.com/naacltransfer.
يمكن الاطلاع على دفتر Google Colab مع كل رمز البرنامج التعليمي هنا: https://tinyurl.com/naacltransfercolab.
يمكن أيضًا الوصول إلى المستودع الحالي مع عنوان URL القصير التالي: https://tinyurl.com/naacltransfercode
يعتمد نموذج التعلم الآلي الكلاسيكي الخاضع للإشراف على التعلم في عزلة نموذج تنبؤي واحد لمهمة باستخدام مجموعة بيانات واحدة. يتطلب هذا النهج عددًا كبيرًا من أمثلة التدريب ويؤدي بشكل أفضل للمهام المحددة جيدًا والضيقة. يشير التعلم النقل إلى مجموعة من الأساليب التي تمتد هذا النهج عن طريق الاستفادة من البيانات من المجالات أو المهام الإضافية لتدريب نموذج مع خصائص تعميم أفضل.
على مدار العامين الماضيين ، شهد مجال معالجة اللغة الطبيعية (NLP) ظهور العديد من أساليب وأبنيس التعلم النقل ، والتي تحسنت بشكل كبير على أحدث طراز على مجموعة واسعة من مهام NLP.
هذه التحسينات مع توفر وسهولة تكامل هذه الأساليب على نطاق واسع العوامل التي أدت إلى نجاح تضمينات الكلمات المسبقة والتدريب المسبق في رؤية الكمبيوتر ، وتشير إلى أن هذه الأساليب ستصبح على الأرجح أداة شائعة في مشهد NLP بالإضافة إلى اتجاه بحث مهم.
سنقدم نظرة عامة على أساليب التعلم النقل الحديثة في NLP ، وكيفية تدريب النماذج مسبقًا ، والمعلومات التي يتعلمونها التقاط ، ومراجعة الأمثلة ودراسات الحالة حول كيفية دمج هذه النماذج وتكييفها في مهام NLP المصب.
تحاول قاعدة الشفرة هذه تقديم بأبسط وأكثر الطرق إحكامًا على عدد قليل من تقنيات التعلم الرئيسية للنقل ، والتي ظهرت على مدار السنوات الماضية. لا يحاول الرمز في هذا المستودع أن يكون أحدث حالة. ومع ذلك ، فقد بذل الجهد لتحقيق أداء معقول ومع بعض التعديلات لتكون قادرة على التنافس مع الوضع الحالي للفن.
تم بذل جهد خاص ل
حاليًا تتألف قاعدة الكود:
pretraining_model.py : نموذج محول مع بنية تشبه GPT-2 كنموذج أساسي pretrained ؛pretraining_train.py : برنامج نصي قبل تدريب هذا النموذج بهدف نمذجة اللغة على مجموعة مختارة من مجموعات البيانات الكبيرة (Wikitext-103 ، Simplebooks-92) باستخدام التدريب الموزع إذا كان ذلك متاحًا ؛finetuning_model.py : العديد من البنى المستندة إلى نموذج المحولات للضبط (مع رأس التصنيف في الأعلى ، مع المحولات) ؛finetuning_train.py : نص نصي لضبط هذه الهياكل على مهمة التصنيف (IMDB). لاستخدام قاعدة البيانات هذه ، ما عليك سوى استنساخ مستودع 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أو باستخدام التدريب الموزع مثل هذا (لخادم GPU 8):
python -m torch.distributed.launch --nproc_per_node 8 ./pretraining_train.pyسوف السيناريو قبل التدريب:
wikitext-103 للتدريب المسبق (الافتراضي) ،./runs ،سيستغرق التدريج في حيرة التحقق من صحة ~ 29 على Wikitext-103 حوالي 15 ساعة على 8 V100 وحدات معالجة الرسومات (يمكن إيقافها في وقت مبكر). إذا كنت مهتمًا بـ SOTA ، فهناك بعض الأسباب التي تجعل من الحيرة في التحقق من الصحة أعلى قليلاً من الحيرة المكافئة للمحول (حوالي 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
أو باستخدام التدريب الموزع مثل هذا (لخادم GPU 8):
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