# شبكة عصبونية التفافية

الشبكات العصبونية الالتفافية أو الشبكة العصبية الترشيحية (بالإنجليزية: Convolutional neural network)‏، نوع خاص من أنواع الشبكات العصبونية بالتغذية الأمامية (بالإنجليزية: Feed forward neural network)‏ و تستمد إلهامها من العمليات البيولوجية الحاصلة في الفص البصري بالتحديد في دماغ الكائنات الحية، وتعتبر حلاً للكثير من مشاكل الرؤية الحاسوبية في الذكاء الاصطناعي مثل معالجة الصور والفيديوهات، يوجد لبنيتها عدة تصاميم ولكن Le-Net 5 يعتبر النموذج الأكثر شهرة وتطبيقاً عملياً وقد قدمه عالم الحاسوب الفرنسي «يان لوكون» (Yann André LeCun) عام 1998م.

## مقدمة

تعتبر الشبكات العصبونية الالتفافية نوعاً خاصاً وهاماً من أنواع الشبكات العصبونية ولكن قبل البدء فيها من الضروري أن تتعرف على المفاهيم الأساسية في الشبكات العصبونية الصناعية (بالإنجليزية: Artificial Neural Network)‏.

### العصبون Neuron

العصبون (بالإنجليزية neuron) يمثل العصبون الوحدة الأساسية الصغرى لبناء الشبكة العصبونية ويقابل الخلية العصبية في النموذج البيولوجي، وهو عبارة عن عنصر حاسوبي له عدة أقنية دخل وقناة خرج واحدة، حيث تأتي أقنية الدخل بمعلومات ولكن لا تكون جميعها بنفس الأهمية ولذلك نثقل كل معلومة بوزن weight , تكون هذه الأوزان عشوائية في البداية ثم يتم تعديلها أثناء عملية التدريب، في بعض النماذج قد نضع لكل عصبون عتبة base وهي بمثابة عتبة التنبيه في النموذج البيولوجي. يجري كل عصبون العمليات التالية لإيجاد الخرج :
* جداء كل قيمة من قيم الدخل بالوزن المرفق به، ثم جمع قيم نتائج الجداء جميعها لنحصل على ما يسمى بقيمة نشاط العصبون Neuron activity.
* جمع قيمة العتبة إلى النشاط السابق.
* تطبيق تابع التنشيط (بالإنجليزية Activation function)على ناتج الجمع لإيجاد قيمة خرج العصبون.
يعتبر اختيار تابع التنشيط المناسب خطوة هامة في تصميم الشبكة العصبونية، ويكون هدفه الأساسي سحب الخرج للمنطقة المقبولة وتكون قيمها إما : -1,1 إن كان bipolar ثنائي القطب أو 0,1 إن كان binary ثنائي.

### الشبكات العصبونية متعددة الطبقات

تتركب الشبكة العصبونية من مجموعة من العصبونات المرتبة ضمن طبقات تتألف بشكل أساسي من طبقة دخل وطبقة خرج وواحدة أو أكثر من الطبقات المخفية. تعد الشبكات العصبونية بالدخل الأمامي Feed forward neural network $^{[الإنجليزية]}$ من أهم أنواع الشبكات العصبونية متعددة الطبقات، وسميت بذلك لأنها تعتمد مبدأ الانتشار الأمامي حيث يكون خرج جميع عصبونات الطبقة m دخلاً لكل عصبون في الطبقة الموجودة أمامها m+1.

### التعلم والتدريب

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

## بنية الشبكة العصبونية الالتفافية

تترتب عصبونات هذا النوع من الشبكات ضمن طبقات من أنواع مختلفة :

### الطبقات الالتفافية Convolutional layers

تأتي تسمية هذا النوع من الطبقات من عملية الطي أو الالتفاف الرياضية وهي عملية تطبق على تابعين f, g و تنتج التابع o وهو نسخة معدلة عن التابعين ويعطي المنطقة المتداخلة بينهما، لهذه العملية أثر كبير في معالجة الصور تنتج إذاً هذه الطبقات عن تطبيق عملية الطي أو الالتفاف الرياضية على عناصر الدخل (عصبونات الطبقة السابقة أو بيكسلات الصورة المدخلة ) مع عدد من المرشحات filters أو نوى الالتفاف التفاف kernels وتكرر عملية الالتفاف السابقة على كل مجموعة عناصر من الدخل بحجم المرشح الواحد، لتنتج لدينا قيم واحدة من خرائط الميزات أو feature map , ثم نكرر كامل العمليات السابقة من أجل كل مرشح فينتج خريطة ميزات أخرى وهكذا...,تعبر قيم هذه المرشحات عن أوزان الشبكة weights . نلاحظ ما يلي في هذه الطبقات:

#### الأوزان المشتركة shared weights

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

#### مضاعفة المرشحات

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

### طبقات انتقائية subsampling layers

تعد هذه الطبقات خيارية في تصميم الشبكة أي لا يشترط وجودها، وإن وجدت فستأتي بعد كل طبقة من الطبقات الالتفافية وتهدف إلى تخفيض عدد العينات أو العصبونات حيث ستقوم باختصار كل مجموعة من عصبونات الدخل بحجم معين إلى عصبون واحد، ويحدد هذا الحجم ضمن تصميم الشبكة وتكون قيمته المثلى 2×2 لأن تكبيرها قد يؤدي إلى ضياع في المعلومات ويتم التخفيض بعدة طرق منها :
* القيمة العليا المشتركة max pooling : تأخذ القيمة الأعلى بينها .
* المعدل المشترك average pooling : تأخذ معدل جميع القيم .

### طبقات الاتصال الكامل fully connected

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

## البرمجة

هناك العديد من المكتبات المساعدة في نمذجة الشبكات العصبونية الالتفافية أهمها : Theano, caffe, cuda-convent