دليل سريع حول نقل التعلم وكيفية تطبيقه على الشبكة العصبية الخاصة بك

أمثلة لتصنيف الصور ومعالجة اللغات الطبيعية

متوفر أيضًا باللغة الإسبانية | También disponible en español

لا يمكن تفسير التقدم الكبير الذي تم تحقيقه مؤخرًا في عالم التعلم العميق بدون اتحاد عدة عوامل ، مثل تطور أدوات المعالجة وإضفاء الطابع الديمقراطي عليها ، أو إدخال منصات وأطر عمل جديدة ، أو وصول تقنيات متعددة لتحسين العصبية تدريب على الشبكة. ولكن من حيث الفعالية أو الدقة نجد عاملاً رئيسيًا أحدث ثورة في رؤية الكمبيوتر أو مجالات معالجة اللغة الطبيعية. في هذه المقالة سوف أشرح ما هو نقل التعلم وحالات الاستخدام.

تصوير دوج لينستيدت على Unsplash

ملحوظة: معظم ما أقول هنا تعلمته من دورة التعلم العميق للمبرمجين التي يدرسها جيريمي هوارد في جامعة سان فرانسيسكو.

عندما نواجه مشكلة تتطلب تطبيق التعلم الآلي لحلها ، ونختار استخدام شبكة عصبية عميقة ، كمهمة أولى سيتعين علينا اختيار البنية الأكثر ملاءمة لحالتنا المحددة. بمجرد اتخاذ قرار التصميم هذا ، نواجه مشكلة تهيئة معلماته (الأوزان والتحيز) لكل طبقة في شبكتنا. حتى وقت قريب ، كان الإجراء الأكثر شيوعًا هو تهيئة هذه المعلمات بشكل عشوائي ضمن نطاق صغير ، للمساعدة بطريقة ما في الخوارزمية المسؤولة عن تعديل هذه القيم في عملية التدريب. كنقطة انطلاق ليس سيئًا (دائمًا أفضل من تهيئتها إلى الصفر) ولكنه كان دائمًا موضوعًا به مساحة كافية للتحسين.

المستفيد الأول الكبير: رؤية الكمبيوتر

تخيل للحظة أننا نواجه مشكلة تصنيف الصورة ، واضطررًا إلى التفريق بين سلالات القطط.

برادي بانش ، نسخة القط

ماذا لو بدأنا بدلاً من التهيئة العشوائية لمعلمات شبكتنا باستخدام القيم التي تم الحصول عليها بعد تدريب نفس البنية الأساسية مع مجموعة ضخمة من الصور المصنفة حيث توجد القطط بالفعل (من بين أشياء أخرى)؟ بهذه الطريقة سننقل المعرفة المكتسبة في مهمة أكثر عمومية إلى حالتنا الخاصة ، ولن نبدأ بالكامل من الصفر.

هذا ما نحصل عليه عند اعتماد نماذج تم تدريبها سابقًا على مجموعة بيانات ImageNet الهائلة ، والتي تحتوي حاليًا على أكثر من 14 مليون صورة وما يقرب من 22000 ملصق مختلف. ولعل أفضل حالة معروفة هي بنية ResNet ، الفائزة في مسابقة التعرف على الصور التي أجرتها ImageNet في عام 2015. إن حقيقة استخدام نفس البنية مع نفس المعلمات مثل النموذج المدرب مسبقًا ستمنح شبكتنا القدرة على التعرف على العديد من الأشياء من البداية ، مما يعني أيضًا فترة تدريب قصيرة جدًا. هذا الاستخدام لبيانات ImageNet كنقطة انطلاق يعني قفزة هائلة في مجال رؤية الكمبيوتر.

عينة من بيانات ImageNet

كما ذكرنا سابقًا ، ما سنفعله في المقام الأول هو اختيار البنية الأساسية ، والتي تعتمد على المشكلة المحددة التي يتعين حلها وعلى معرفتنا بأفضل التقنيات الموجودة للسيناريو المحدد (المزيد عن هذا الموضوع في وقت لاحق مقالات). سنقوم بتهيئة هذه البنية بقيم المعلمات من النموذج المدرب مسبقًا ، لذا ستكون نتائجنا النهائية أفضل ويتم تحقيقها قبل ذلك بكثير. ما يلي بعد ذلك هو إزالة طبقة الإخراج من البنية الأساسية وإلحاق طبقات إضافية بدلاً من ذلك ، حتى نتمكن من تنقيح النموذج الأصلي من أجل تكييفه مع حالتنا الخاصة.

في مثال سلالات القطط ، سنستخدم نموذج ResNet الذي تم تدريبه مسبقًا على بيانات ImageNet كنقطة انطلاق ؛ ثم قم بإزالة طبقة الإخراج المسؤولة عن تقرير ما إذا كان لدينا قطة أو سمكة (أو أي شيء آخر) ، وأخيرًا إلحاق زوج من الطبقات النهائية لإعادة توجيه مهمة النموذج الأولي ، مع التركيز على تصنيف سلالات القطط وفقًا للاختلافات الملحوظة بينهم.

مثال (Mathworks)

خدعة تعلمتها من دورة Fast.ai: عند تطبيق نتائج التعلم على النقل يمكن تحسينها بشكل كبير إذا دربنا نموذجنا أولاً باستخدام إصدارات مصغرة من الصور الأصلية ، وبعد ذلك قمنا بتدريبه على صور أكبر. تم تحسين النتائج لأنه يبدو في نظر شبكتنا مجموعة بيانات مختلفة. تُعرف هذه التقنية باسم تغيير الحجم التدريجي ، وهي تعمل على الحد الأدنى لحجم الصورة البالغ 64 × 64 بكسل.

استراتيجية التدريب للشبكة العصبية مع نقل التعلم

يمكننا اتباع إجراء شبه عام عند تدريب أي شبكة باستخدام التعلم عن طريق النقل. سنطبق إستراتيجية من مرحلتين:

في المرحلة الأولى ، سنقوم بتجميد المعلمات التي تنتمي إلى البنية الأساسية. سيكون من السخف بعض الشيء إعادة ضبط المعلمات من الطبقات الأولى بنفس طريقة تلك التي تمت إضافتها حديثًا ، نظرًا لأنه بالكاد سنحسن قدرة النموذج الأساسي على اكتشاف الأشكال البسيطة ، مثل الأقطار أو التدرجات (شيء تم تحقيقه بالفعل بواسطة الطبقة الأولى). سنختار معدل تعلم مناسبًا لضبط المعلمات في الطبقات الإضافية (ليست عالية جدًا لمنع التذبذبات ، ولا منخفضة جدًا لتجنب الانتظار إلى الأبد). سيكون وقت التدريب صغيرًا نظرًا لعدم وجود العديد من المعلمات لضبطها ؛ يجب أن يكون عدد قليل من الفترات (التكرار الكامل على جميع البيانات) كافية.

في المرحلة الثانية سنحاول تحسين النموذج عن طريق إجراء تعديل دقيق. أول شيء سنفعله هو إلغاء تجميد المعلمات من الطبقات الأساسية لتعديل قيمها قليلاً. سنختار نطاقًا لمعدل التعلم الأقصى من خلال الطبقات المختلفة بحيث لا تتغير أوزان الطبقات الأساسية بالكاد ، في حين أن الأوزان النهائية لها هامش تعديل أكبر (على الرغم من أنها ستكون أقل مما كانت عليه في المرحلة الأولى). سنقوم بتدريب شبكتنا لمزيد من العصور. بشكل أساسي حتى يتفاقم خطأ التحقق بشكل ثابت.

نقل التعلم لمعالجة اللغات الطبيعية

كان السبب الرئيسي وراء التحسينات الجذرية التي تم تحقيقها قبل عامين في مجال معالجة اللغات الطبيعية (NLP) هو أيضًا نقل التعلم.

نبدأ من فرضية: عادة ما تكون مجموعة بياناتنا محدودة ضمن موضوع معين ، ولن تكون كبيرة بما يكفي للسماح لنا بفهم التعقيد وراء اللغة.

في عام 2018 ، نشر جيريمي هوارد وسيباستيان رودر ورقة تقدم ULMFiT (الضبط الدقيق لنموذج اللغة العالمي) ، وهي طريقة عامة لتطبيق نقل التعلم على أي مشكلة في البرمجة اللغوية العصبية ، مما يجلب إلى هذا المجال التقدم الذي تم تحقيقه مسبقًا في مجال رؤية الكمبيوتر. النتيجة: أفضل النتائج التي شوهدت حتى الآن (مع تحسين الدقة بنسبة 18-24٪) في العديد من مجموعات البيانات الكلاسيكية ، مثل تلك المستخدمة لتصنيف مراجعات أفلام IMDB إلى إيجابية وسلبية.

معالجة اللغة الطبيعية ليست بهذه البساطة

الخطوات التي تم اتخاذها لهذا المثال ومشاكل أخرى مماثلة ستكون التالية:

1. اختر نموذجًا مدربًا مسبقًا (أو أنشئ نموذجًا جديدًا ودربه) في مهمة نصية عامة كنقطة بداية. في البرمجة اللغوية العصبية ، سنستخدم ما يُعرف بنموذج اللغة ، الذي يحاول على سبيل المثال التنبؤ بالكلمة التالية في جملة ، كما نرى في لوحات المفاتيح التنبؤية. تتطلب هذه المهمة معرفة عميقة باللغة والعالم من حولنا ؛ إن العمل باستخدام n-grams (الكلمات التي تظهر عادةً معًا) كما كان من قبل لا يكفي لاكتساب القدرة اللازمة لمواصلة الجمل. لكن ... ماذا لو طبقنا التعلم العميق باستخدام مجموعة بيانات أكبر مثل كومة كبيرة من المقالات المأخوذة من ويكيبيديا؟ يبدو وكأنه فكرة جيدة! إن التنبؤ بالكلمة التالية لن يكون مفيدًا جدًا لمهمة التصنيف النهائية ، ولكن من خلال تحقيق ذلك ، سنكتسب معرفة قيّمة جدًا باللغة وحول الواقع الذي يتم تطبيقه فيه. أفضل بكثير من البدء بمعلمات عشوائية ، أليس كذلك؟

لن تتكرر هذه الخطوة الأولى حتى إذا تغيرت مشكلتنا أو المجال ، طالما تم استخدام نفس اللغة.

2. صقل نموذج اللغة من خلال تطبيق Transfer Learning ، من أجل إنشاء نموذج جديد جيد للتنبؤ بالكلمة التالية ولكن ضمن مجالنا المحدد ؛ في هذه الحالة يستعرض الفيلم. سنقوم بتغذية الشبكة بمجموعة البيانات الخاصة بنا ، والتي تسمى أيضًا مجموعة الهدف ، وسنطبق الترميز (تجزئة النص إلى وحدات أو رموز مميزة) ، والتطبيع والرقمنة (كن حذرًا مع الرموز المميزة الخاصة). يوصى باستخدام جميع البيانات المتاحة ، بما في ذلك عينات الاختبار ؛ نظرًا لأن ملصقاتها (التي سيتم استخدامها للتصنيف) ليست ضرورية للتنبؤ بالكلمة التالية. سننضم إلى جميع العينات ونحتفظ على سبيل المثال بنسبة 10٪ من الإجمالي للتحقق من صحة النموذج.

ليست هناك حاجة للحفاظ على النموذج الكامل ؛ يكفي مع برنامج التشفير ، وهو الجزء الذي تعلم اللغة (وليس الجزء الذي يولد الكلمة التالية).

حتى الآن لدينا ما يُعرف بالتعلم الخاضع للإشراف الذاتي ، دون الحاجة إلى استخدام عينات ذات علامات بشرية ، لأن مجموعة البيانات نفسها تتضمنها بالفعل. سيتعلم النموذج في حالتنا كيفية كتابة مراجعات الفيلم ، حتى بدون معرفة ما إذا كانت إيجابية أو سلبية.

3. قم بإنشاء المصنف المحدد لمهمتنا الخاصة (للتمييز بين المراجعات الإيجابية والسلبية) ، ونقل ما تعلمه النموذج السابق (سيكون هذا النموذج صالحًا أيضًا لأي مصنف آخر بناءً على نفس البيانات).

تم نقل الصورة من fast.ai

في المرحلة الأولى سوف ندرب فقط الطبقات الملحقة. سنستمر في التدريب في المرحلة الثانية ولكن دون إلغاء تجميد الشبكة بأكملها في الحال كما فعلنا لتصنيف الصور ؛ سنقوم أولاً بإلغاء تجميد الطبقات الأخيرة من البنية الأساسية وتدريبها لفترة من الوقت ... ثم سنفتح بعض الطبقات الأخرى ونتدرب على شيء آخر ... وهكذا حتى يتم إلغاء تجميدها بالكامل وتدريبها للمرة الأخيرة.

سيكون النموذج الناتج بعد هذه النقطة قادرًا بالفعل على تمييز ما إذا كانت المراجعة إيجابية أم سلبية :)

خاتمة

عندما نعمل على مشكلة التعلم الآلي المتعلقة بالصور أو النص ، من المناسب دائمًا التفكير في نقل التعلم لتهيئة معلمات الشبكة العصبية لدينا.

لحل المشاكل المؤطرة في هذه المجالات ، نحسب مع العديد من النماذج المدربة مسبقًا التي ستكون مفيدة جدًا لنا ؛ علينا فقط اختيار الحق:

  • رؤية الكمبيوتر: نماذج ل PyTorch ، Keras
  • معالجة اللغات الطبيعية: المحولات ([*] BERT ، GPT-2 ، ...) ، ULMFiT ، إلخ.
إرني وإلمو وبيرت

نقل التعلم هو تقنية جديدة نسبيًا ، مع وجود مجال للتحسين في المجالات السابقة (تظهر نماذج جديدة كل أسبوع) ، ولا يزال يتعين استكشافها واستغلالها في البعض الآخر. إنه بالتأكيد موضوع يجب متابعته عن كثب ويستحق التحقيق إذا كنت تعمل مع الشبكات العصبية :)

ملاحظة- ألق نظرة على دفاتر Python المحمولة للحصول على أمثلة كاملة باستخدام fastai: تصنيف الصور + تصنيف مراجعة IMDB.

أتمنى أن يعجبك! اشترك في # اليوتيوب حتى لا تفوتك مقالات كهذه :)