جدول المحتويات:
- مقدمة لمكتبة Torch's Tensor
- الرسوم البيانية الحسابية والتمايز التلقائي
- لبنات بناء التعلم العميق: خرائط Affine ، غير الخطية ، والأهداف
- التحسين والتدريب
- إنشاء مكونات الشبكة في Pytorch
- مثال: مصنف النصوص اللوجستية للاختراق
- تضمينات الكلمات: ترميز دلالات المعجمية
- مثال: نمذجة لغة n-gram
- تمرين: حقيبة كلمة مستمرة لتعلم تضمينات الكلمات
- نمذجة التسلسل وشبكات الذاكرة على مصطلحات طويلة
- مثال: LSTM لعلامة جزء من الكلام
- التمرين: زيادة tagger LSTM بميزات على مستوى الأحرف
- متقدم: مجموعات أدوات ديناميكية ، برمجة ديناميكية ، و BILSTM-CRF
- مثال: حقل عشوائي مشروط ثنائية LSTM للتعرف على الدنيوية المسماة
- التمرين: وظيفة خسارة جديدة للعلامة التمييزية
ما هو هذا البرنامج التعليمي؟
أنا أكتب هذا البرنامج التعليمي لأنه على الرغم من وجود الكثير من البرامج التعليمية الأخرى هناك ، يبدو أن جميعها تواجه واحدة من ثلاث مشاكل:
- لديهم الكثير من المحتوى على رؤية الكمبيوتر والشبكات القادمة ، وهو أمر غير ذي صلة بمعظم NLP (على الرغم من أن الشبكات القادمة قد تم تطبيقها بطرق باردة لمشاكل NLP).
- يعد Pytorch جديدًا ، والكثير من التعلم العميق للدروس التعليمية في NLP موجود في الأطر الأقدم ، وعادة ما لا يكون في الأطر الديناميكية مثل Pytorch ، التي لها نكهة مختلفة تمامًا.
- الأمثلة لا تتجاوز نماذج لغة RNN وتُظهر الأشياء الرائعة التي يمكنك القيام بها عند محاولة تنبؤات الهيكل اللغوي. أعتقد أن هذه مشكلة ، لأن الرسوم البيانية الديناميكية لـ Pytorch تجعل البنية تنبؤًا أحد أكبر نقاط القوة.
على وجه التحديد ، أكتب هذا البرنامج التعليمي لفئة معالجة اللغة الطبيعية في Georgia Tech ، للتخفيف من مجموعة مشكلة كتبتها للفصل حول تحليل الانتقال العميق. تستخدم مجموعة المشكلة بعض التقنيات المتقدمة. تهدف هذا البرنامج التعليمي إلى تغطية الأساسيات ، بحيث يمكن للطلاب التركيز على الجوانب الأكثر تحديا لمجموعة المشكلات. الهدف من ذلك هو البدء بالأساسيات والانتقال إلى التنبؤ بالهيكل اللغوي ، والتي أشعر أنها غائبة تمامًا تقريبًا في دروس Pytorch الأخرى. أساسيات التعلم العميق العام لها معارض قصيرة. تلقى المزيد من الموضوعات الخاصة بـ NLP المزيد من المناقشات المتعمقة ، على الرغم من أنني أشرت إلى مصادر أخرى عندما شعرت أن الوصف الكامل سيؤدي إلى إعادة اختراع العجلة وتشغيل مساحة كبيرة.
مجموعة مشكلة التحليل التبعية
كما ذكر أعلاه ، إليك مجموعة المشكلة التي تمر بتنفيذ محلل التبعية عالي الأداء في Pytorch. أردت إضافة رابط هنا لأنه قد يكون مفيدًا ، شريطة أن تتجاهل الأشياء التي كانت خاصة بالفصل. بعض الملاحظات:
- هناك الكثير من التعليمات البرمجية ، وبالتالي فإن بداية مجموعة المشكلات كانت أساسًا أن تعرف الأشخاص على الطريقة التي يمثل بها الرمز الخاص بي البيانات ذات الصلة ، والواجهات التي تحتاج إلى استخدامها. بقية مجموعة المشكلات هي في الواقع تنفيذ مكونات المحلل. نظرًا لأننا لم نفعل التعلم العميق في الفصل من قبل ، فقد حاولت تقديم قدر هائل من التعليقات والتلميحات عند كتابتها.
- يوجد اختبار للوحدة لكل تسليم ، والذي يمكنك تشغيله باستخدام NoSetests.
- نظرًا لأننا نستخدم هذه المشكلة المحددة في الفصل ، يرجى عدم نشر حلول علانية.
- يحتوي نفس Repo على بعض الملاحظات التي تتضمن قسمًا عن تحليل التبعية Reduce ، إذا كنت تبحث عن مصدر مكتوب لاستكمال مجموعة المشكلات.
- قد لا يعمل الرابط أعلاه إذا تم إنزاله في بداية فصل دراسي جديد.
مراجع:
- لقد تعلمت الكثير عن التنبؤ في الهيكل العميق في EMNLP 2016 من هذا البرنامج التعليمي على Dynet ، الذي قدمه كريس داير وغراهام نيوبيج من CMU و YOAV Goldberg من جامعة بار إيلان. Dynet هي حزمة رائعة ، خاصة إذا كنت ترغب في استخدام C ++ وتجنب الكتابة الديناميكية. إن تمرين BILSTM CRF النهائي وممارسة ميزات مستوى الشخصية هي الأشياء التي تعلمتها من هذا البرنامج التعليمي.
- كتاب رائع عن التنبؤ هيكل هو التنبؤ الهيكل اللغوي من قبل نوح سميث. لا يستخدم التعلم العميق ، لكن هذا جيد.
- أفضل كتاب التعلم العميق الذي أدركه هو التعلم العميق ، وهو بعض المساهمين الرئيسيين في هذا المجال وشامل للغاية ، على الرغم من عدم وجود تركيز على NLP. إنه مجاني عبر الإنترنت ، ولكن يستحق وجودك على رفك.
التمارين:
هناك بعض التمارين في البرنامج التعليمي ، إما لتنفيذ نموذج شهير (CBOW) أو زيادة أحد طرازي. إن تمرين ميزات مستوى الشخصية بشكل خاص غير تميز للغاية ، ولكنه مفيد للغاية (لا يمكنني اقتباس الأرقام الدقيقة ، لكنني قمت بتشغيل التجربة من قبل وعادة ما تزيد ميزات مستوى الشخصية من 2-3 ٪). نظرًا لأنهم ليسوا تمارين بسيطة ، سأقوم قريبًا بتنفيذها بنفسي وأضفها إلى الريبو.
الاقتراحات:
يرجى فتح مشكلة github إذا وجدت أي أخطاء أو تعتقد أن هناك نموذجًا معينًا سيكون مفيدًا لإضافته.