الشبكات العصبية الترشيحية CNNs


شرح مبسط عن التعلم العميق بإستخدام الشبكات العصبية الترشيحية (Convolutional Neural Networks)


إعداد مروج المهاجري - مترجم بتصرف من المدونة An Intuitive Explanation of Convolutional Neural Networks



 

ماهي الشبكات العصبية الترشيحية؟ وماهي اهميتها؟




الشبكات العصبية الترشيحية (شبكات الالتفاف) أو كما يطلق عليها اختصاراً (ConvNets or CNNs) هي نوع من انواع الشبكات العصبية التي تم اثبات فاعليتها في مجالات متعددة مثل تمييز الصور وتصنيفها. لاقت الشبكات العصبية الترشيحية نجاحا كبيرا في تمييز الأوجه والجمادات والإشارات المرورية.

شكل (١)



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

شكل(٢)



وبالتالي فإن الشبكات العصبية التشريحية تعتبر من الأدوات المهمة لمعظم مستخدمي طرق تعلم الآلة في الوقت الحالي، ومع ذلك فإن فهم وتعلم واستخدام الشبكات العصبية التشريحية للمبتدئين قد تكون مهيبة. لذلك فإن الهدف الأساسي من هذا المقال هو تبسيط طريقة عمل الشبكات العصبية التشريحية على الصور.



إذا كنت جديد للغاية على مجال التعلم العميق والشبكات العصبية فمن الافضل ان تقرأ بعض الشروحات المبسطة قبل الخوض في نوع الشبكات العصبية التشريحية التي تقوم في اساسها على المستقبلات متعددة الطبقات أو كما تعرف ب Multi Layer Perceptrons والتي تستخدم بإسم الطبقات الكاملة الاتصال Fully Connected Layer في شرح الشبكات العصبية التشريحية في هذا المقال.



تاريخ بداية الشبكات العصبية الترشيحية LeNet Architecture 1990s




تعتبر LeNet من اولى انواع  الشبكات العصبية التشريحية التي ساعدت ظهور مجال التعلم العميق بشكل فعال، ومن اوائل من قدموا هذا النوع هو يان لوكون حيث انه بعد عدة تكرارات ناجحة عام ١٩٨٨ تم تسميته بهذا الاسم LeNet5. وفي ذلك الوقت كان استخدام هذا النوع ينحصر في مهام  تمييز الأحرف والارقام فقط مثل قراءة الرمز البريدي.



سنقوم بشرح LeNet Architecture وكيفية تعلمه لتمييز الصور بطريقة مبسطة. وبالرغم من وجود انواع اخرى متطورة تم استحداثها مؤخراً إلا ان جميعها تستخدم نفس المبدأ الخاص ب LeNet وبالتالي فهمك للأساس سيسهل من فهم بقية الأنواع لاحقاً.




شكل(٣): نموذج بسيط للشبكات العصبية التشريحية  ConvNet



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



هنالك اربع عمليات أساسية في ConNet في الشكل(٣) كالتالي:



١- الالتفاف أو الترشيح Convolution
٢- انعدام الخطية Non Linearity (او كما تعرف باستخدام ReLU)
٣- التجميع أو أخذ عينات فرعية  Pooling or Subsampling
٤- التصنيف (يكون في الطبقة الكاملة الاتصال) Classification



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



قبل ان نبدأ، لابد من معرفة كيف يرى الكمبيوتر الصورة المدخلة؟ الصورة هي عبارة عن مصفوفة من البكسلات ذات قيم رقمية معينة كما هو واضح في شكل(٤)
شكل(٤): الصورة عبارة عن مصفوفة من البكسلات ذات قيم رقمية معينة



القناة (Channel) هي مصطلح متعارف عليه ويشير الى عنصر اساسي في الصورة. في العادة تتكون الصورة القياسية المأخوذة من الكاميرات الرقمية من ٣ قنوات: احمر، اخضر، ازق. يمكنكم تخيل المصفوفة ثنائية البعد في شكل(٤) كثلاث طبقات متراكمة فوق بعضها بحيث كل طبقة تخص قناة لونية معينة وكل بكسل فيها يحتوي على قيمة عددية تتراوح مابين الصفر و ٢٥٥.



في المقابل، الصور الرمادية (grayscale) تتكون من قناة واحدة فقط. في هذا المقال سنقوم باعتبار الصور الرمادية فقط وبالتالي سيكون لدينا مصفوفة واحدة  ثنائية البعد لتمثيل الصورة. قيم البكسلات في المصفوفة ستتراوح ايضا مابين الصفر (والذي يمثل اللون الاسود) و ٢٥٥ (والذي يمثل اللون الابيض).



والان سنبدأ في العمليات الاربع الاساسية



١- الالتفاف أو الترشيح Convolution

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



قمنا مسبقا بتقديم تشريح تفصيلي للصورة وبأنها مكونة من مصفوفة تحتوي علي قيم البكسلات. لنفترض الآن بأنه لدينا صورة مكونة من مصفوفة بمقاس ٥x٥ وقيم البكسلات ستكون اما صفر او واحد من باب التبسيط (مع ملاحظة ان قيم الصورة الرمادية تترواح مابين الصفر و ٢٥٥). المصفوفة التالية الخضراء تمثل حالة خاصة حيث ان قيم البكسلات اما صفر او واحد:






ايضاً، قمنا بافتراض مصفوفة اخرى اصغر بحجم ٣x٣ والتي ستقوم بدور Kernel






ما سيحدث الآن كما هو واضح في شكل(٥) هو أن الخصائص الناتجة عن عملية الالتفاف (تعرف بإسم خريطة الخصائص أو الخصائص الملتفة Feature map or Convolved Feature) سيتم استخراجها عن طريق تمرير مربع Kernel (المصفوفة الصفراء) على المصفوفة الخضراء (الصورة الاصلية) بمقدار بكسل واحد (وهو حجم الخطوة التمريرية او مايعرف ب Stride) لكل بكسل في الصورة. في كل خطوة (Stride) سيتم ضرب المصفوفتين ببعضها وجمع ناتج الضرب لاستخراج قيمة واحدة في خريطة الخصائص (المصفوفة الوردية) والتي سيكون حجمها ٣x٣. يجب ملاحظة ان مربع Kernel الاصفر لا يرى إلا جزء من الصورة المدخلة فقط في كل خطوة تمريرية.



شكل(٥)



سنقوم الان بتفصل مفهوم مربع Kernel وهو في مثالنا الحالي عبارة عن مصفوفة ثنائية البعد بحجم ٣x٣ وفي العادة تسمى ب (المرشح filter) أو (النواة kernel) أو (محدد الخصائص feature detector) والناتج من تمرير هذه المصفوفة على المصفوفة الأصلية (الصورة المدخلة) هو ايضاً مصفوفة جديدة تعرف بإسم (الخصائص الملتفة convolved feature) أو (خريطة التنشيط Activation map) أو الاسم الأكثر شيوعا (خريطة الخصائص feature map). الجدير بالذكر أن هذه المرشحات filters تعمل كمحدد للخصائص من الصورة المدخلة.



ربما يتبادر إلى ذهن القارئ ماهي القيم الموجودة في مصفوفة المرشحات أو kernels وللتوضيح فإنه يوجد انواع مختلفة من المرشحات حيث أن كل نوع يقوم بتأثر معين على الصورة المدخلة واختيارنا للمرشح يكون حسب احتياج المشروع. على سبيل المثال لنفترض الصورة ادناه على أنها الصورة المدخلة:






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






طريقة أخرى لإستيعاب عملية الالتفاف بأخذ نظرة على الصورة المتحركة في شكل(٦)



شكل(٦): عملية الالتفاف، المصدر



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



حجم خريطة الخصائص (الخصائص الملتفة) يتحدد بثلاث معاملات اساسية يجب معرفتها قبل تنفيذ الخطوة الاولى (خطوة الالتفاف او الترشيح Convilution):



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



شكل(٧)



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



  • التبطين الصفري Zero-padding
احيانا من المقنع أن نقوم بتبطين مصفوفة الصورة المدخلة بأصفار حول اطراف الصورة وبالتالي بإمكاننا القيام بتمرير مرشح على هذه الأطراف. الخصائص المستخرجة من التبطين الصفري تسمح لنا بالتحكم في حجم خرائط الخصائص. إضافة التبطين الصفري يعرف ايضا ب الالتفاف العريض wide convolution، وعدم اضافته يعرف ب الالتفاف الضيق narrow convolution.




٢- انعدام الخطية Non Linearity (او كما تعرف باستخدام ReLU)

عملية إضافية تسمى الريلو ReLU يتم استخدامها بعد كل عملية التفاف convolution في شكل(٣) بالاعلى. ReLU هي اختصار للوحدة الخطية المصححة Rectified Linear Unit وهي عملية غير خطية يحث يكون مخرجها كالتالي في شكل(٨):



شكل(٨): عملية الوحدة الخطية المصححة ReLU



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



يمكن استيعاب عملية الريلو ReLU بشكل اوضح من خلال شكل(٩) حيث يوضح تطبيق الريلو على احدى خرائط الخصائص المستخرجة من شكل(٦) بالاعلى. الناتج من تطبيق الريلو على خريطة الخصائص يسمى خريطة الخصائص المصححة Rectified feature map.



شكل(٩): عملية الريلو ReLU (المصدر)



دالة ReLU ليست هي الدالة اللاخطية الوحيدة فهناك دوال اخرى مثل tanh او sigmoid ولكن الريلو ReLU تميزت بأداء افضل في معظم الحالات.



٣- التجميع أو أخذ عينات فرعية  Pooling or Subsampling

التجميع المكاني أو كما يعرف ايضا ب اخذ عينات فرعية subsampling أو الاختزال downsampling يقوم بتقليص الأبعاد لكل خريطة خصائص مع اعتبار الإبقاء على المعلومات المهمة. التجميع المكاني له عدة انواع مثل: Max (اعلى قيمة)، Average (حساب المتوسط)، Sum (المجموع) … الخ.



في حالة التجميع باستخدام اعلى قيمة Max Pooling فإننا نقوم بتحديد المنطقة المكانية المتجاورة (نافذة بحجم ٢x٢ على سبيل المثال) ونقوم باستخراج العنصر (البكسل) صاحب اعلى قيمة في النافذة المحددة من خريطة الخصائص المصححة. وبنفس الطريقة لو استخدمنا المتوسط Average فسنقوم بحساب متوسط الاعداد في تلك النافذة فقط او مجموعهم في حال Sum. بشكل عام فإن التجميع باستخدام اعلى قيمة Max Pooling قد اظهر اداء افضل.



شكل(١٠) يستعرض مثال لاستخدام التجميع باستخدام اعلى قيمة Max Pooling على خريطة الخصائص المصححة المستخرجة بعد عملية الالتفاف convolution بالاضافة لعملية الريلو ReLU باستخدام نافذة ذات حجم ٢x٢



شكل(١٠): التجميع باستخدام اعلى قيمة Max Pooling (المصدر)



قمنا بتمرير نافذة بحجم ٢x٢ حيث ان الخطوة التمريرية stride قيمتها ٢ ثم قمنا بأخذ اعلى قيمة في كل منطقة مكانية. كما هو ملاحظ في شكل(١٠) فإن هذه العملية تقوم بتقليص ابعاد خريطة الخصائص من ٤x٤ إلى ٢x٢



في الشبكة الظاهرة في شكل(١١) فإن عملية التجميع pooling تم تطبيقها بشكل منفصل على كل خريطة خصائص وبالتالي حصلنا على ثلاثة خرائط ناتجة من ثلاث خرائط مدخلة.



شكل(١١): عملية التجميع pooling عند تطبيقها على خرائط الخصائص المصححة



شكل(١٢) يوضح تأثير عملية التجميع pooling على خريطة الخصائص المصححة التي حصلنا عليها بعد عملية الريلو ReLU في شكل(٩) بالاعلى.



شكل(١٢): التجميع Pooling (المصدر)



عملية التجميع pooling تقوم بتقليص حجم المدخلات المكانية بشكل مستمر، وبشكل مفصل فإنها تقوم بالتالي:
  • تجعل تمثيل المدخلات في مصفوفة الخصائص اصغر حجما من ناحية حجم ابعاد المصفوفة وبالتالي تكون ادارتها اسهل
  • تقلل من حجم المعاملات والحسابات في الشبكة وبالتالي يمكن التحكم في مشكلة فرط التخصيص overfitting
  • يجعل الشبكة ثابته ومقاومة للتغييرات الصغيرة والتشوهات والتحولات في الصورة المدخلة (بمعنى انه لن يؤدي التشوه البسيط في المدخلات إلى تغيير ناتج عملية التجميع pooling نظراً لأننا نأخذ القيمة القصوى/المتوسطة في المنطقة المحلية المتجاورة.
  • تساعد في الوصول إلى تمثيل ثابت ومستقر للصورة (المصطلح الدقيق هو متساوي equivariant) وهذه ميزة قوية جداً لأنها تمكننا من تحديد الكائنات الموجودة في الصورة بغض النظر عن مكان وجودها (يمكنك الحصول على تفاصيل اكثر من هنا او هنا)
شكل(١٣)



حتى الان قمنا بمعرفة كيف تعمل عملية الالتفاف Convolution، عملية الريلو ReLU، وعملية التجميع pooling. من المهم فهم أن هذه الطبقات هي أساس بناء اي جزء من CNN. وكما هو متضح في شكل(١٣) فهنالك مجموعتان من من عملية الالتفاف Convolution، والريلو ReLU وطبقات التجميع pooling. الطبقة الثانية من طبقات الالتفاف Convolution تنفذ عملية الالتفاف على مخرجات طبقة التجميع الأولى pooling باستخدام ٦ فلاتر او مرشحات لاستخراج ٦ خرائط خصائص. بعد ذلك يتم تطبيق عملية التجميع باستخدام القيمة القصوى Max Pooling لكل خريطة خصائص بشكل منفصل.



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



مخرجات طبقة التجميع الثانية pooling هي عبارة عن مدخلات الطبقة الكاملة الاتصال Fully Connected Layer وهي ماسيتم نقاشه في الجزء التالي.



٤- التصنيف في الطبقة الكاملة الاتصال Fully Connected Layer

الطبقة كاملة الاتصال عبارة عن الطبقة التقليدية متعددة الطبقات والتي تستخدم دالة التنشيط سوفت ماكس softmax في طبقة المخرجات (من الممكن استخدام مصنفات اخرى في طبقة المخرجات مثل آلة المتجهات الداعمة SVM ولكننا في هذا المقال سنلتزم بدالة السوفت ماكس softmax). مصطلح "كاملة الاتصال" يشير إلى أن كل خلية عصبية في الطبقة السابقة متصلة بكل خلية عصبية في الطبقة التالية. من الافضل قراءة هذا المقال اذا لم تكن تعرف بعد ماهي Multi Layer Perceptron.



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




شكل(١٤): الطبقة كاملة الاتصال - كل خلية عصبية متصلة بكل خلية عصبية في الطبقة المجاورة
بعيداً عن عملية التصنيف فإن إضافة الطبقة كاملة الاتصال هو عادة طريقة غير مكلفة لتعليم مركبات غير خطية من هذه الخصائص. معظم الخصائص المستخرجة  من طبقتي الالتفاف Convolution والتجميع pooling قد تكون جيدة لمهمة التصنيف ولكن المركبات المكونة من هذه الخصائص قد تكون افضل.



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



عملية التدريب واستخدام الانتشار العكسي Backpropagation 

كما تم شرحه في الاعلى فإن طبقة الالتفاف Convolution + طبقة التجميع Pooling تعمل كمستخرج للخصائص من الصورة المدخلة، بينما الطبقة كاملة الاتصال فإنها تعمل كمصنف للصورة المدخلة باستخدام الخصائص المستخرجة.



لاحظ في شكل(١٥) ادناه أن الصورة المدخلة هي عبارة عن مركب وبالتالي فإن احتمالية فئة المركب في المخرجات تساوي واحد بينما تساوي صفر لبقية الفئات.



الصورة المدخلة = مركب
الفيكتور الهدف = [0,0,1,0]




شكل(١٥): تدريب ConvNet



عملية تدريب الشبكة العصبية الترشيحية (شبكة الالتفاف) Convolution Network يمكن تلخيصها في الخطوات التالية:



الخطوة ١: نقوم بتهيئة كل المرشحات والمعاملات والأوزان بقيم ابتدائية عشوائية



الخطوة ٢: تقوم الشبكة بأخذ صورة التدريب المدخلة وتمر بعملية الانتشار الامامي forward propagation (الالتفاف، الريلو، التجميع بالاضافة للانتشار الامامي في الطبقة كاملة الاتصال) ثم تقوم باستخراج احتمالات التصنيف لكل فئة.
  • لنفترض بأن احتمالات التصنيف المخرجة لصورة المركب المدخلة بالاعلى هي كالتالي [0.2,0.4,0.1,0.3]
  • بما أن الاوزان هي اوزان عشوائية في الخطوة الاولى في عملية التدريب فإن احتمالات التصنيف المخرجة ستكون عشوائية ايضاً.



الخطوة ٣: حساب مجموع الخطأ في الطبقة المخرجة (عبارة عن المجموع لكل الاربع فئات باستخدام المعادلة ادناه)



  • Total Error = ∑  ½ (target probability – output probability) ²



الخطوة ٤: استخدام الانتشار العكسي لحساب مشتقة الخطأ gradients مع اعتبار جميع الاوزان في الشبكة واستخدام النزول الاشتقاقي gradient descent لتحديث جميع قيم المرشحات والأوزان والمعاملات لتقليل نسبة الخطأ المخرج.
  • يتم تعديل الأوزان بما يتناسب مع مساهمتها في الخطأ الكلي.
  • عندما يتم ادخال نفس الصورة مجددا فإن احتماليات المخرجات ستكون [0.1,0.1,0.7,0.1] وهي الان اقرب للفيكتور الهدف [0,0,1,0]
  • هذا يعني ان الشبكة تعلمت كيف تصنف هذه الصورة بالتحديد بشكل صحيح بعد تعديل قيم الأوزان والمرشحات التي تم تحديدها في البداية بشكل عشوائي وبالتالي فإن نسبة الخطأ تقل
  • بعض المعاملات مثل عدد المرشحات، حجم المرشحات، نوع بناء الشبكة … الخ تكون ثابتة قبل الخطوة ١ ولاتتغير خلال عملية التدريب. الذي يتغير هو قيم مصفوفات المرشحات والاوزان يتم تحديثها فقط.



الخطوة ٥: اعادة تنفيذ الخطوات من ٢ الى ٤ مع كل الصور المدخلة في مجموعة التدريب.



الخطوات المذكورة أعلاه لتدريب ConvNet تعني بشكل اساسي ان كل الأوزان والمعاملات الخاصة بالشبكة ConvNet قد تم تحسينها لتقوم بتصنيف الصور المدخلة من مجموعة التدريب بشكل صحيح



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



ملاحظة ١: الخطوات السابقة تم تبسيطها واستبعاد التفاصيل الحسابية من باب التسهيل لعملية التدريب. اذا اردت الاطلاع على التفاصيل الحسابية والمعادلات المستخدمة لفهم اعمق يمكنك الذهاب إلى هنا أو هنا.



ملاحظة ٢: في المثال أعلاه قمنا باستخدام مجموعتان فقط لطبقات الالتفاف Convolution والتجميع Pooling ولكن هذا لايعني ان هذا العدد ثابت! يمكنك استخدام اي عدد ممكن في شبكة ConvNet. في الحقيقة بعض من شبكات ConvNet ذات افضل اداء تستخدم عشرات الطبقات للالتفاف Convolution والتجميع Pooling. كما هو متضح في شكل١٦، بإمكاننا استخدام عدة طبقات التفاف + عمليات ريلو بشكل متسلسل قبل عملية التجميع pooling. لاحظ ايضاً كيف يمكننا تصور كل طبقة في ConvNet في شكل(١٦).



شكل(١٦): المصدر



تصور الشبكات العصبية الترشيحية (شبكات الالتفاف) CNN 

بشكل عام، كلما زادت خطوات الالتفاف Convolution، زاد تعقيد الخصائص التي يمكن للشبكة تعلمها وتمييزها. على سبيل المثال، في مجال تصنيف الصور فإن شبكة ConvNet يمكنها تعلم تحديد الحواف edges من البكسلات في الطبقة الأولى، ثم استخدام هذه الحواف لتحديد الأشكال البسيطة في الطبقة الثانية، ثم استخدام هذه الأشكال لتحديد مستوى اعلى من الخصائص مثل اشكال الأوجه في طبقات اعلى وهذا موضح في شكل(١٧) حيث ان الخصائص التي تم تعلمها باستخدام شبكة الاعتقادات العميقة Convolutional Deep Belief Network (مع ملاحظة انه في هذا المثال يمكن تحديد خصائص قد لايكون لها معنى لدينا نحن البشر).



شكل(١٧): الخصائص التي تم تعلمها من شبكة الاعتقادات العميقة، المصدر



قام ادم هارلي Adam Harley بإنشاء تصور رائع للشبكات العصبية الترشيحية CNN والتي تم تدريبها على قاعدة البيانات MINST الخاصة بالاعداد المكتوبة بخط اليد. يمكنك استكشاف هذا التصور واللعب في المعاملات لاستيعاب فكر عمل CNN.



سنرى كيفية عمل الشبكة للمدخل "رقم 8" مع ملاحظة ان التصور الموجود في شكل(١٨) لايوضح عملية الريلو بشكل منفصل.




شكل(١٨): تصور شبكة ConvNet التي تم تدريبها على الاعداد المكتوبة بخط اليد



الصورة المدخلة تحتوي على ١٠٢٤ بكسل (٣٢x٣٢) وفي الطبقة الأولى Convolution Layer1 تم تشكيلها باستخدام ٦ مرشحات فريدة بحجم ٥x٥ (بحجم تمريري = ١ Stride). كما هو واضح فإن استخدام ٦ مرشحات مختلفة ينتج خريطة خصائص بعمق يساوي ٦.



طبقة الالتفاف الأولى يتبعها طبقة التجميع الأولى Pooling Layer 1 وهي تستخدم ٢x٢ max pooling (مع قيمة تمريرية بحجم ٢ Stride) بشكل منفصل على خرائط الخصائص الستة في طبقة الالتفاف الأولى. بإمكانك تحريك مؤشر الماوس على اي بكسل في طبقة التجميع وملاحظة الشبكة بحجم ٢x٢ المستخرجة من طبقة الالتفاف السابقة شكل١٩. يمكنك ملاحظة بأن قيمة البيكسل صاحب القيمة القصوى (الاكثر سطوعاً) في الشبكة ٢x٢ تجعله يصل إلى طبقة التجميع pooling.



شكل(١٩): تصور عملية التجميع Pooling، المصدر



طبقة التجميع الأولى Pooling1 يتبعها ١٦ مرشح التفافي Convolutional filters بحجم ٥x٥ (وبخطوة تمريرية واحدة Stride) ثم بعد ذلك يليها طبقة التجميع الثانية Pooling2 والتي تستخدم ٢x٢ max pooling (الخطوة التمريرية = ٢ Stride). هذه الطبقتان تستخدم نفس المفاهيم المذكورة مسبقاً.
بعد ذلك سيكون لدينا ثلاث طبقات كاملة الاتصال كالتالي:
  • ١٢٠ خلية عصبية في الطبقة الأولى كاملة الاتصال
  • ١٠٠ خلية عصبية في الطبقة الثانية كاملة الاتصال
  • ١٠ خلايا عصبية في الطبقة الثالثة كاملة الاتصال بحيث كل خلية تمثل احد الاعداد العشرة (تسمى طبقة المخرجات)



لاحظ في شكل(٢٠) ان كل خلية من العشر خلايا في طبقة المخرجات متصلة بجميع ال ١٠٠ خلية في الطبقة الثانية كاملة الاتصال (لذلك تم تسميتها ب "كاملة الاتصال").



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



شكل(٢٠): تصور الطبقات كاملة الاتصال، المصدر



يتوفر ايضاً نفس التصور بنسخة ثلاثية الابعاد موجودة هنا.



بنيات أخرى لـ ConvNet




الشبكات العصبية الترشيحية (شبكات الالتفاف) موجودة منذ بداية التسعينات، وقد ناقشنا LeNet في هذا المقال وهو من اول انواع الشبكات العصبية الترشيحية، ولكن يوجد انواع اخرى سيتم ادراجها بشكل مختصر وسريع كالتالي:



  • AlexNet (2012)
  • ZF Net (2013)
  • GoogLeNet (2014)
  • VGGNet (2014)
  • ResNets (2015)
  • DensNet (Aug 2016)



الخاتمة

في هذا المقال حاولنا شرح المفاهيم الأساسية للشبكات العصبية الترشيحية Convolutional Neural Networks بطريقة مبسطة. كثير من التفاصيل تم استبعادها او تبسيطها جداً ولكن نتمنى ان يكون هذا المقال قد قدم فكرة عامة عن طريق عمل هذا النوع من الشبكات.



تم ترجمة هذا المقال ببعض من التصرف حيث ان كل الصور والرسومات تم جلبها من المقال الأصلي والذي يمكن الوصول اليه من هنا.





تعليقات

Popular Posts

أبرز ست وظائف سيقضي عليها الذكاء الاصطناعي

سبعة مبادئ أساسية للذكاء الإصطناعي من شركة قوقل

الذكاء الإصطناعي و مشروع نيوم

أربعة أمور بديهية للبشر تصعب على الذكاء الإصطناعي

أبرز أربعة تقنيات عملية للذكاء الإصطناعي

أربعة مراحل لتطبيقات الذكاء الإصطناعي

خمسة طرق لزيادة أرباح الشركات بالذكاء الإصطناعي

أربعة تعقيدات في فهم وتحليل اللغة

أربعة استخدامات للذكاء الإصطناعي في التعليم