مقدّمة الى الشبكات العصبية الالتفافيّة
تعد الشّبكات العصبيّة الالتفافيّة CNN نوعاً من بنى التّعلُّم العميق الذي يكثُر استخدامها في مهمات تصنيف الصور والتّعرّف، حيث تتكوّن من عدّة طبقات هي: الطّبقات الالتفافية، وطبقات التجميع، وطبقة كاملة الاتصال التي تحوي وحدة إدخال ووحدة إخراج بينهما طبقات مخفيّة.
تختلف المهمة بين كل طبقة، إذ يتم تطبيق الطبقة الالتفافية مرشّحات (Filters) لاستخراج سمات معيّنة من صورة الدخل، وتقوم طبقة التجميع باستخراج أفضل القيم للسّمات النّاتجة عن طبقة الالتفاف لتقليل عددها، وبالتالي تقليص عدد الحسابات الرّياضيّة المنجزة، ومن ثم تعطي الطبقة كاملة الاتصال التنبّؤ النهائي للخرج.
ونتيجةً لاختلاف المرشّحات فإن الشبكة تتعلّم اختيار المرشّح الأمثل عبر خوارزمية الانحدار التّدريجي (Gradient Descent) وخوارزمية الانتشار العكسي (Backpropagation).
تستخدم الشبكات العصبية الاصطناعية عادةً في مهمّات تصنيف متنوّعة مثل تصنيف الصور والتعرف على الصوت والكلمات، وتختلف هذه الشبكات باختلاف الأغراض المستخدمة لأجلها، فعلى سبيل المثال يتم استخدام الشبكات العصبية الارتجاعية Recurrent Neural) Network) للتّنبؤ بالكلمات في سلسلة متتابعة بدقّة أكبر من الشبكات ذات الذّاكرة الطويلة قصيرة المدى LSTM والتي هي نوع من أنواع الشبكات الارتجاعية RNN. وبشكل مشابه نستخدم لتصنيف الصور الشبكات الالتفافية CNN.
سنركّز في هذا المقال على الهيكلية الأساسية للشبكات الالتفافية، موضّحين قبل ذلك محتويات الشبكات العصبية التقليدية، وهي مكونة من ثلاث طبقات:
- طبقة الدخل: وهي الطبقة التي ندخل البيانات عبرها إلى نموذج التدريب (model)، ويساوي عدد عصبونات هذه الطبقة عدد السّمات الكُلّي المستخرج من البيانات المدخلة (إذا كان الدخل صورة فالسّمات عبارة عن بكسلات الصورة).
- الطبقة الخفية: مدخلات هذه الطبقة هي مخرجات طبقة الدخل، ويمكن للشبكة العصبية أن تحتوي على عدة طبقات خفية اعتماداً على حجم البيانات ونموذج التدريب، ويمكن لكل طبقة أن تتكون من عدد مختلف من العصبونات التي عموماً عددها أكبر من عدد السمات.
يتم حساب خرج كل طبقة عن طريق ضرب مصفوفة خرج الطبقة السابقة بأوزان قابلة للتعلُّم لتلك الطبقة، ثم نجمع انحيازيات أيضاً قابلة للتعلم، ومن ثم يتبعها تابع التنشيط الذي يجعل الشبكة غير خطية.
- طبقة الخرج: يُطبّق تابع منطقي مثل توابع Sigmoid أو Softmax على خرج الطبقة الخفية، والذي بدوره يحوّل خرج كل صنف إلى نتيجة احتمالية لكل صنف.
تدخل بعدها البيانات إلى نموذج التدريب، ويسمى خرج كل طبقة بالتغذية الأمامية (Feedforward)، ثم نحسب الخطأ باستخدام تابع معيّن لحسابه مثل تابع الانتروبيا (Cross_Entropy)، وتابع الخطأ التربيعي (Square Loss Error).
ثم ننتقل مرة أخرى الى نموذج التدريب من خلال حساب المشتقّات، وتسمى هذه الخطوة بالانتشار العكسي، التي تستخدم خصّيصاً من أجل تقليل الخسارة.
الشبكة العصبية الالتفافية:
تعتبر هذه الشبكات نسخة موسّعة للشبكات العصبية ANN، والتي تستخدم المصفوفات لاستخراج البيانات من المجموعات المرئية مثل الصور أو مقاطع الفيديو، حيث تلعب أنواع البيانات دوراً مهما في اختيار الشبكة للتدريب.
هيكلية الشبكات الالتفافية:
تتألف هذه الشبكات من طبقات متعددة، مثل طبقة الدخل، طبقة الالتفاف، وطبقة التجميع وطبقة كاملة الاتصال، كما هو موضح في الشكل التالي:
آلية عمل الشبكات الالتفافية:
تسمّى الشبكات العصبية الالتفافية اختصاراً بـ Covnets، وهي الشبكات التي تشارك بارامتراتها.
بفرض لدينا صورة يمكن تمثيلها بمكعب لديه طول وعرض (وهي أبعاد الصورة)، وارتفاع (حيث أن الصورة تملك عموماً ثلاث تدرُّجات لونية هي الأحمر والأزرق والأخضر).
والآن إذا أخذنا جزء صغير من الصورة وطبّقنا عليها شبكة عصبية صغيرة، نحصل على شعاع الخرج k ونمثله بشكل عمودي، وبتطبيق هذه الشبكة العصبية على كامل أجزاء الصورة سنحصل على صورة أخرى مختلفة بالعرض والارتفاع والعمق، وبدلاً من التدرجات اللونية R، G، B سيكون لدينا تدرُّجات أكثر لكن بعمق وارتفاع أقل.
تسمى هذه العملية بالالتفاف (Convolution).
عندما يكون حجم المرشح المطبق على جزء الصورة يساوي حجم الصورة فهذا يعني أننا نطبق شبكة عصبية تقليدية على الصورة بسبب الأوزان القليلة لهذا المرشح.
سنوضح الآن جزء من العمليات الرياضية التي تتضمنها عملية الالتفاف:
- تتألف الطبقات الالتفافية من مجموعة من المرشحات القابلة للتعلم (المرشح عبارة عن جزء صغير من الصورة كما هو موضح في الشكل الأول، ويمتلك كل مرشح عرض صغير وارتفاع وعمق مساوٍ لعمق صورة الدخل (إذا كانت طبقة الدخل عبارة عن صورة الدخل نفسها).
- على سبيل المثال، إذا طبقنا عملية الالتفاف على صورة بأبعاد 3×34×34 فإن أبعاد المرشحات الممكن تطبيقها على الصورة هي 3×a×a حيث أن قيمة a يمكن أن تكون 3,5,7…، بحيث تكون صغيرة مقارنةً بأبعاد الصورة.
- خلال عملية التغذية الأمامية، نطبق المرشح على كامل حجم صورة الدخل خطوة بخطوة وتسمى كلاً منها بـ Stride (التي يمكن أن تكون قيمتها 2أو 3 أو حتى 4 للصور عالية الأبعاد)، ثم حساب ناتج الجداء بين أوزان المرشحات والجزء من صورة الدخل.
- بتطبيق المرشحات على الصورة بشكل متتالي نحصل على خرج بأبعاد 2D لكل مرشح ومن ثم نجمعهم مع بعضهم البعض، ونتيجةً لذلك نحصل على خرج بعمق مساوٍ لعدد المرشحات المطبقة، بحيث أن الشبكة تتعلم كافة هذه المرشحات.
الطبقات المستخدمة لبناء الشبكات الالتفافية Covnets:
الشبكات الالتفافية عبارة عن تتالي من الطبقات، كل طبقة تغير بأبعاد الصورة من خلال توابع رياضية مختلفة.
أنواع الطبقات:
سنوضح أنواع الطبقات بتطبيق شبكة عصبية على صورة بأبعاد 32*32*3:
- طبقة الدخل: تتضمن هذه الطبقة صورة الدخل التي عرضها 32 وارتفاعها 32 وبعمق 3، على شكل مصفوفة سطرية.
- طبقة الالتفاف: تحسب هذه الطبقة حجم مصفوفة الخرج بإيجاد ناتج جداء جميع المرشحات مع أجزاء الصورة كاملة، وبفرض أننا نستخدم 12 مرشح في هذه الطبقة فسيكون حجم مصفوفة الخرج بأبعاد 32*32*12.
- طبقة التنشيط: بإضافة تابع التنشيط إلى خرج الطبقات السابقة تصبح الشبكة لا خطية، حيث سيطبق تابع element_wise (هو عبارة عن تابع لجداء مصفوفتين من نفس الأبعاد) على الطبقات الالتفافية. بعض توابع التفعيل الشائعة RELUmax(0,x)، Tanh، Leaky RELU، ويبقى حجم الخرج دون تغيير محافظاً على أبعاد 32*32*12.
- طبقة التجميع: تتواجد هذه الطبقة بشكل أساسي في الشبكات الالتفافية ووظيفتها الرّئيسية هي إيجاد حجم الخرج الذي يجعل انجاز العمليات الحسابية سريعاً ويقلل من الذاكرة المطلوبة، ويمنع حدوث حالة Overfitting.
كما يوجد نوعان رئيسيان من توابع التجميع هي maxpooling وaveragepooling، وإذا استخدمنا تابع maxpool بمرشح أبعاده 2*2 وبخطوة 2 فستكون أبعاد الخرج 16*16*12.
- التسوية (التنعيم): يتم تسوية مجموعة السمات الناتجة في مصفوفة أحادية البعد وذلك بعد مرورها في الطبقات الالتفافية وطبقات التجميع، وبذلك تكون هذه السمات جاهزة لتمريرها إلى طبقة مترابطة تماماً من أجل التصنيف أو الانحدار.
- الطبقات كاملة الاتصال: تأخذ الدخل من خرج الطبقة السابقة لها، وتقوم بحساب ناتج مهمة التصنيف أو الانحدار النهائي.
طبقة الخرج: يدخل الخرج من الطبقات كاملة الاتصال إلى تابع منطقي مثل Sigmoid أو Softmax الذي يحوّل خرج كل صنف إلى نتيجة احتمالية.
مثال:
بفرض لدينا الصورة في الشكل التالي، سنطبق عليها عمليات طبقة الالتفاف، وطبقة التفعيل وطبقة التجميع لاستخراج الميزات منها:
- استيراد المكتبات الضّرورية اللازمة.
- ضبط البارامترات.
- تعريف المرشح.
- تحميل الصورة وتحضيرها.
- إعادة تمثيل الصورة.
- تطبيق عملية طبقة الالتفاف على الصورة ثم عرض صورة الخرج.
- تطبيق عملية طبقة التفعيل على الصورة ثم عرض صورة الخرج.
- تطبيق عملية طبقة التجميع على الصورة ثم عرض صورة الخرج.
لتحميل الكود البرمجي اضغط هنا
مزايا الشبكات الالتفافية CNN:
- جيدة بالتعرف على النماذج والسمات في الصور والفيديوهات والمقاطع الصوتية.
- قوية في الانسحاب والتدوير وتقليل أبعاد الصور.
- لا تحتاج لاستخراج يدوي للسمات، وذلك من بداية التدريب حتى نهايته.
- تستطيع التعامل مع كميات ضخمة من البيانات وتحقق دقّة عالية.
مساوئ الشبكات الالتفافية CNN:
- تعقيدها الحسابي العالي في التدريب، وتتطلب حجم ذاكرة كبير.
- يمكن حدوث حالة Overfitting إذا لم يتم استخدام بيانات كافية أو لم يتم تقليل الأبعاد بشكل مناسب.
- تحتاج إلى كميات ضخمة من البيانات المصنفة.
- قابلية التفسير محدودة، أي هناك صعوبة في فهم ما تعلّمته الشبكة بالضبط
المصدر :هنا.
ترجمة: اسراء اسماعيل، مراجعة: إيليا سليمان، تديق لغوي:علي يونس، تصميم: علي العلي، تحرير: نور شريفة.