الشبكات العصبية الترشيحية CNNs
شرح مبسط عن التعلم العميق بإستخدام الشبكات العصبية الترشيحية (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
ليست
هي الدالة اللاخطية الوحيدة فهناك دوال
اخرى مثل tanh
او
sigmoid
ولكن
الريلو ReLU
تميزت
بأداء افضل في معظم الحالات.
٣- التجميع أو أخذ عينات فرعية Pooling or Subsampling
التجميع
المكاني أو كما يعرف ايضا ب اخذ
عينات فرعية subsampling
أو
الاختزال downsampling
يقوم
بتقليص الأبعاد لكل خريطة خصائص مع اعتبار
الإبقاء على المعلومات المهمة.
التجميع
المكاني له عدة انواع مثل:
Max (اعلى
قيمة)،
Average
(حساب
المتوسط)،
Sum
(المجموع)
… الخ.
في
حالة التجميع باستخدام اعلى قيمة Max
Pooling فإننا
نقوم بتحديد المنطقة المكانية المتجاورة
(نافذة
بحجم ٢x٢
على سبيل المثال)
ونقوم
باستخراج العنصر (البكسل)
صاحب
اعلى قيمة في النافذة المحددة من خريطة
الخصائص المصححة.
وبنفس
الطريقة لو استخدمنا المتوسط Average
فسنقوم
بحساب متوسط الاعداد في تلك النافذة فقط
او مجموعهم في حال Sum.
بشكل
عام فإن التجميع باستخدام اعلى قيمة Max
Pooling قد
اظهر اداء افضل.
شكل(١٠)
يستعرض
مثال لاستخدام التجميع باستخدام اعلى
قيمة Max
Pooling على
خريطة الخصائص المصححة المستخرجة بعد
عملية الالتفاف convolution
بالاضافة
لعملية الريلو ReLU
باستخدام
نافذة ذات حجم ٢x٢
قمنا
بتمرير نافذة بحجم ٢x٢
حيث ان الخطوة التمريرية stride
قيمتها
٢ ثم قمنا بأخذ اعلى قيمة في كل منطقة
مكانية.
كما
هو ملاحظ في شكل(١٠)
فإن
هذه العملية تقوم بتقليص ابعاد خريطة
الخصائص من ٤x٤
إلى ٢x٢
في
الشبكة الظاهرة في شكل(١١)
فإن
عملية التجميع pooling
تم
تطبيقها بشكل منفصل على كل خريطة خصائص
وبالتالي حصلنا على ثلاثة خرائط ناتجة
من ثلاث خرائط مدخلة.
شكل(١١):
عملية
التجميع pooling
عند
تطبيقها على خرائط الخصائص المصححة
شكل(١٢)
يوضح
تأثير عملية التجميع pooling
على
خريطة الخصائص المصححة التي حصلنا عليها
بعد عملية الريلو ReLU
في
شكل(٩)
بالاعلى.
عملية
التجميع pooling
تقوم
بتقليص حجم المدخلات المكانية بشكل مستمر،
وبشكل مفصل فإنها تقوم بالتالي:
-
تجعل تمثيل المدخلات في مصفوفة الخصائص اصغر حجما من ناحية حجم ابعاد المصفوفة وبالتالي تكون ادارتها اسهل
-
تقلل من حجم المعاملات والحسابات في الشبكة وبالتالي يمكن التحكم في مشكلة فرط التخصيص overfitting
-
يجعل الشبكة ثابته ومقاومة للتغييرات الصغيرة والتشوهات والتحولات في الصورة المدخلة (بمعنى انه لن يؤدي التشوه البسيط في المدخلات إلى تغيير ناتج عملية التجميع pooling نظراً لأننا نأخذ القيمة القصوى/المتوسطة في المنطقة المحلية المتجاورة.
شكل(١٣)
حتى
الان قمنا بمعرفة كيف تعمل عملية الالتفاف
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.
طبقة
التجميع الأولى 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 بطريقة
مبسطة.
كثير
من التفاصيل تم استبعادها او تبسيطها
جداً ولكن نتمنى ان يكون هذا المقال قد
قدم فكرة عامة عن طريق عمل هذا النوع من
الشبكات.
تم
ترجمة هذا المقال ببعض من التصرف حيث ان
كل الصور والرسومات تم جلبها من المقال
الأصلي والذي يمكن الوصول اليه من هنا.
تعليقات
إرسال تعليق