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

إيجابية


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


مقارنة بين التعلم الآلي التقليدي وطرق التعلم الاستقرائي. صورة مأخوذة من إدخال مدونة S. Ruder
"ما هو التعلم الاستقرائي؟" .
هناك
ثلاثة سيناريوهات رئيسية لاستخدام التعلم الاستقرائي:
- نماذج تدريب مسبق . يمكن لأي مستخدم ببساطة أخذ نموذج تم تدريبه من قبل شخص آخر واستخدامه لمهامه. مثل هذا السيناريو ممكن إذا كانت المهام متشابهة للغاية.
- منع اختيار العلامات . عند هذه النقطة ، نعلم أن بنية النموذج يمكن تقسيمها إلى قسمين رئيسيين: وحدة استخراج الميزات ، وهي المسؤولة عن استخراج الميزات من بيانات الإدخال ، ووحدة التصنيف ، التي تصنف الأمثلة بناءً على الميزات المستلمة. عادةً ما تكون كتلة استخراج الميزة هي الجزء الرئيسي من النموذج. تتمثل فكرة الطريقة في أخذ كتلة لتمييز الميزات من نموذج تم تدريبه على مشكلة أخرى ، وإصلاح معاملات وزنه (جعلها غير مدربة) ، ثم البناء على أساسها وحدات تصنيف جديدة للمشكلة قيد النظر. عادة ما تكون وحدة التصنيف غير عميقة جدًا وتتكون من عدة طبقات متصلة بالكامل ، لذا فإن هذا النموذج أسهل في التدريب.
- ضبط دقيق وعميق . هذه الطريقة تشبه السيناريو باستخدام كتلة استخراج الميزة. يتم تنفيذ نفس الإجراءات باستثناء "تجميد" كتلة استخراج الميزة. على سبيل المثال ، يمكنك أن تأخذ شبكة VGG ككتلة استخلاص للميزات و "تجميد" فيها فقط أول ثلاث كتل تلافيفية (من أصل أربعة). في هذه الحالة ، يمكن لوحدة استخراج الميزة التكيف بشكل أفضل مع المهمة الحالية. لمزيد من المعلومات ، راجع منشور مدونة F. Chollet. قم بإنشاء نماذج تصنيف صور قوية باستخدام كمية صغيرة جدًا من البيانات .
يمكن العثور على وصف تفصيلي لسيناريوهات استخدام التعلم الاستقرائي في
الشبكات العصبية التلافيفية لدورة جامعة ستانفورد
CS231n للتعرف البصري من خلال Fei-Fei Li وإدخالات المدونة بواسطة S. Ruder
الاستقرائي هي الحدود التالية في التطوير التعلم الآلي (تمت مناقشة المواضيع بشكل أكثر شمولاً).
قد يكون لديك أسئلة: لماذا كل هذه الأساليب مطلوبة ولماذا يمكن أن تعمل؟ سنحاول الإجابة عليها.
- فوائد استخدام مجموعات البيانات الكبيرة. على سبيل المثال ، يمكننا أن نأخذ كتلة استخراج الميزة من نموذج تم تدريبه على 14 مليون صورة واردة في مجموعة بيانات مسابقة ImageNet . هذه النماذج معقدة بما يكفي للسماح باستخراج ميزات عالية الجودة من بيانات الإدخال.
- اعتبارات تتعلق بالوقت. تدريب نماذج كبيرة يمكن أن يستغرق أسابيع أو حتى أشهر. في هذه الحالة ، يمكن للجميع توفير قدر كبير من الوقت وموارد الحوسبة .
- من الافتراضات الجوهرية التي تكمن وراء سبب نجاح كل ذلك ما يلي: يمكن أن تكون السمات التي تم الحصول عليها من التدريب في مهمة واحدة مفيدة ومناسبة لمهمة أخرى. وبعبارة أخرى ، فإن الميزات لها خاصية الثبات فيما يتعلق بالمشكلة. لاحظ أن نطاق المهمة الجديدة يجب أن يكون مشابهًا لنطاق المهمة الأصلية. خلاف ذلك ، قد تؤدي وحدة استخراج الميزة إلى تفاقم النتائج.
هيكل نموذج محسن
نحن الآن على دراية بمفهوم التعلم الاستقرائي. نحن نعلم أيضًا أن ImageNet هو حدث كبير ، حيث تم اختبار جميع معماريات الشبكات العصبية التلافيفية المتقدمة تقريبًا. دعنا نحاول أخذ كتلة استخراج الميزة من إحدى هذه الشبكات.
لحسن الحظ ، تزودنا مكتبة Keras
بالعديد من نماذج التدريب المسبق (من خلال ImageNet) التي تم إنشاؤها داخل هذا النظام الأساسي. نحن نستورد ونستخدم أحد هذه النماذج.

في هذه الحالة ، سنستخدم شبكة ذات بنية VGG. لتحديد وحدة استخلاص المعالم فقط ، نحذف وحدة التصنيف (أعلى ثلاث طبقات متصلة بالكامل) للشبكة من خلال تعيين معلمة
include_top على
False . نريد أيضًا تهيئة شبكتنا باستخدام أوزان الشبكة المدربة في ImageNet. المعلمة النهائية هي حجم الإدخال.
يرجى ملاحظة أن حجم الصور الأصلية في مسابقة ImageNet هو (224 ، 224 ، 3) ، بينما حجم صورنا (400 ، 500 ، 3). ومع ذلك ، فإننا نستخدم طبقات تلافيفية - وهذا يعني أن أوزان الشبكة هي أوزان النوى المتحركة في عملية الالتفاف. جنبًا إلى جنب مع خاصية فصل المعلمات (توجد مناقشة حول هذا في مقالتنا النظرية
نظرة عامة على الشبكات العصبية التلافيفية لتصنيف الصور ) ، وهذا يؤدي إلى حقيقة أن حجم بيانات الإدخال يمكن أن يكون تقريبًا تعسفيًا ، حيث يتم تنفيذ الالتفاف عن طريق نافذة منزلقة ، ويمكن أن تنزلق هذه النافذة على طول صورة من أي حجم. القيد الوحيد هو أن حجم بيانات الإدخال يجب أن يكون كبيرًا بما يكفي بحيث لا ينهار إلى نقطة واحدة (القياسات المكانية) في بعض الطبقة المتوسطة ، لأنه بخلاف ذلك سيكون من المستحيل إجراء مزيد من الحسابات.
خدعة أخرى نستخدمها هي
التخزين المؤقت . VGG هي شبكة كبيرة جدًا. يستغرق المرور المباشر لجميع الصور (أمثلة 1630) من خلال وحدة استخراج الميزات حوالي 50 ثانية. ومع ذلك ، يجب أن نتذكر أن أوزان وحدة استخراج الميزة ثابتة ، وأن التمرير المباشر دائمًا ما يعطي نفس النتيجة للصورة نفسها. يمكننا استخدام هذه الحقيقة لإجراء تمرير مباشر من خلال وحدة استخراج الميزات
مرة واحدة فقط ثم تخزين النتائج مؤقتًا في صفيف متوسط. لتنفيذ هذا السيناريو ، نقوم أولاً بإنشاء مثيل لفئة
ImageDataGenerator لتحميل الملفات من محرك الأقراص الثابتة مباشرة (لمزيد من المعلومات ، راجع المقالة
الأساسية النموذج الأساسي للتعرف على العواطف في الصور ).

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

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


تذكر أنه عند إخراج كتلة استخلاص ميزات الشبكة العصبية التلافيفية ، يتم إصدار موتر رباعي الأبعاد (الأمثلة والارتفاع والعرض والقنوات) ، والطبقة المتصلة بالكامل للتصنيف تأخذ موترًا ثنائي الأبعاد (الأمثلة والميزات). إحدى الطرق لتحويل موتر رباعي الأبعاد مع الميزات هي ببساطة محاذاة حول المحاور الثلاثة الأخيرة (استخدمنا تقنية مماثلة في النموذج الأساسي). في هذا السيناريو ، نستخدم نهجًا مختلفًا يسمى
أخذ عينات فرعية لقيمة المتوسط العالمي (GAP). بدلاً من محاذاة المتجهات رباعية الأبعاد ، سنأخذ متوسط القيمة بناءً على بعدين مكانيين. في الواقع ، نأخذ خريطة السمات ونحسب ببساطة جميع القيم فيها. تم تقديم طريقة GAP لأول مرة في العمل الممتاز
لشبكة Min Lin
Network on the Net (هذا الكتاب يستحق حقًا التعرف عليه لأنه يناقش بعض المفاهيم المهمة - على سبيل المثال ، 1 × 1 الالتواءات). ميزة واحدة واضحة لنهج GAP هو انخفاض كبير في عدد المعلمات. باستخدام GAP ، نحصل على 512 ميزة فقط لكل مثال ، أثناء محاذاة البيانات الأولية ، سيكون عدد الميزات 15 × 12 × 512 = 92 160. يمكن أن يؤدي هذا إلى زيادة النفقات العامة ، حيث في هذه الحالة سيكون جزء التصنيف من النموذج حوالي 50 مليون معلمات! تتم مناقشة العناصر الأخرى لجزء التصنيف من النموذج ، مثل الطبقات والطبقات المتصلة بالكامل التي تطبق طريقة الاستبعاد ، بالتفصيل في المقالة
النموذج الأساسي للتعرف على العواطف في الصور .
الإعدادات وخيارات التدريب
بعد أن قمنا بإعداد بنية نموذجنا باستخدام Keras ، تحتاج إلى تكوين النموذج بأكمله للتدريب باستخدام طريقة التجميع.

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

vector هي متجه معلمات النموذج (في حالتنا ، هذه هي معاملات الترجيح للشبكة العصبية) ، - هي الوظيفة الموضوعية ، ∇ هي عامل التدرج (محسوبة باستخدام خوارزمية انتشار الخطأ مرة أخرى) ، α هي سرعة التعلم. وبالتالي ، يمثل تدرج دالة الهدف اتجاه خطوة التحسين في مساحة المعلمة ، وسرعة التعلم هي حجمها. عند استخدام سرعة تعلم عالية بشكل غير معقول ، هناك احتمال للانزلاق المستمر للنقطة المثلى بسبب حجم الخطوة الكبير جدًا. من ناحية أخرى ، إذا كانت سرعة التعلم منخفضة للغاية ، فإن التحسين سيستغرق الكثير من الوقت ويمكن أن يضمن التقارب فقط إلى الحد الأدنى المحلي منخفض الجودة بدلاً من الحد الأقصى العالمي. لذلك ، في كل حالة محددة ، من الضروري البحث عن حل وسط مناسب. يعد استخدام الإعدادات الافتراضية لخوارزمية آدم نقطة بداية جيدة للبدء.
ومع ذلك ، في هذه المهمة ، تُظهر إعدادات Adam الافتراضية نتائج ضعيفة. نحتاج إلى تخفيض معدل التعلم الأولي إلى 0.0001. خلاف ذلك ، لن يكون التدريب قادراً على ضمان التقارب.
في النهاية ، يمكننا البدء في تعلم أكثر من 100 حقبة ثم حفظ النموذج نفسه وتاريخ التعلم. الأمر
٪ time هو أمر سحري Ipython * يسمح لك بقياس وقت تنفيذ التعليمات البرمجية.

التقييم

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

كلما كان منحنى ROC أقرب إلى النقطة اليسرى العلوية من الرسم البياني وكلما كانت المساحة تحته (مقياس AUC) ، كان المصنف يعمل بشكل أفضل. يوضح هذا الشكل بوضوح أن النموذج المحسّن والمتدرب مسبقًا يُظهر نتائج أفضل مقارنة بالنموذج الأساسي الذي تم إنشاؤه من البداية. قيمة AUC لنموذج التدريب المسبق هي 0.82 ، وهي نتيجة جيدة.

الخلاصة
في هذه المقالة ، التقينا بتقنية قوية - التعلم الاستقرائي. قمنا أيضًا ببناء مصنف شبكة عصبية تلافيفية باستخدام وحدة استخلاص الميزات المدربة مسبقًا بناءً على بنية VGG. تجاوز هذا المصنف في خصائص أدائه النموذج التلافيفي الأساسي ، المدرب من الصفر. كانت الزيادة في الدقة 18 في المائة ، وكانت الزيادة في مقياس الجامعة الأمريكية بالقاهرة 0.25 ، مما يدل على زيادة كبيرة جدًا في جودة النظام.