شبكة عصبونية التفافية
{{لا صندوق معلومات}}
[[ملف:Conv layers.png|تصغير|200بك|يسار]]
'''الشبكات العصبونية الالتفافية''' أو '''الشبكة العصبية الترشيحية'''<ref>{{استشهاد بويكي بيانات|Q111421033|صفحة=55}}</ref> {{إنج|Convolutional neural network}}، نوع خاص من أنواع الشبكات العصبونية بالتغذية الأمامية {{إنج|Feed forward neural network}} و تستمد إلهامها من العمليات البيولوجية الحاصلة في الفص البصري بالتحديد في دماغ الكائنات الحية، وتعتبر حلاً للكثير من مشاكل [[رؤية حاسوبية|الرؤية الحاسوبية]] في الذكاء الاصطناعي مثل معالجة الصور والفيديوهات، يوجد لبنيتها عدة تصاميم ولكن Le-Net 5 <ref>[http://deeplearning.net/tutorial/lenet.html Le-Net 5 ] {{Webarchive|url=https://web.archive.org/web/20171228091645/http://deeplearning.net/tutorial/lenet.html |date=28 ديسمبر 2017}}</ref> يعتبر النموذج الأكثر شهرة وتطبيقاً عملياً وقد قدمه [[عالم حاسوب|عالم الحاسوب]] الفرنسي «يان لوكون» (Yann André LeCun) عام 1998م.

== مقدمة ==
تعتبر الشبكات العصبونية الالتفافية نوعاً خاصاً وهاماً من أنواع الشبكات العصبونية ولكن قبل البدء فيها من الضروري أن تتعرف على المفاهيم الأساسية في [[شبكة عصبونية اصطناعية|الشبكات العصبونية الصناعية]] {{إنج|Artificial Neural Network}}.<ref>[http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf Convolutional neural network] {{Webarchive|url=http://web.archive.org/web/20171215083109/http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf |date=15 ديسمبر 2017}}
</ref>

=== العصبون Neuron ===
العصبون (بالإنجليزية neuron)<ref>
[https://www.toptal.com/machine-learning/an-introduction-to-deep-learning-from-perceptrons-to-deep-networks مقال ل Ivan Vasilev عن أساسيات الشبكات العصبونية]
 {{Webarchive|url=https://web.archive.org/web/20230220233402/https://www.toptal.com/machine-learning/an-introduction-to-deep-learning-from-perceptrons-to-deep-networks|date=2023-02-20}}</ref>
يمثل العصبون الوحدة الأساسية الصغرى لبناء الشبكة العصبونية ويقابل الخلية العصبية في النموذج البيولوجي، وهو عبارة عن عنصر حاسوبي له عدة أقنية دخل وقناة خرج واحدة، حيث تأتي أقنية الدخل بمعلومات ولكن لا تكون جميعها بنفس الأهمية ولذلك نثقل كل معلومة بوزن weight , تكون هذه الأوزان عشوائية في البداية ثم يتم تعديلها أثناء عملية التدريب، في بعض النماذج قد نضع لكل عصبون عتبة base وهي بمثابة عتبة التنبيه في النموذج البيولوجي.
يجري كل عصبون العمليات التالية لإيجاد الخرج :
* جداء كل قيمة من قيم الدخل بالوزن المرفق به، ثم جمع قيم نتائج الجداء جميعها لنحصل على ما يسمى بقيمة نشاط العصبون Neuron activity.
* جمع قيمة العتبة إلى النشاط السابق.
* تطبيق تابع التنشيط (بالإنجليزية Activation function)على ناتج الجمع لإيجاد قيمة خرج العصبون.
يعتبر اختيار تابع التنشيط المناسب خطوة هامة في تصميم الشبكة العصبونية، ويكون هدفه الأساسي سحب الخرج للمنطقة المقبولة وتكون قيمها إما :
-1,1 إن كان bipolar ثنائي القطب أو 0,1 إن كان binary ثنائي.

=== الشبكات العصبونية متعددة الطبقات ===
تتركب الشبكة العصبونية من مجموعة من العصبونات المرتبة ضمن طبقات تتألف بشكل أساسي من طبقة دخل وطبقة خرج وواحدة أو أكثر من الطبقات المخفية.
تعد الشبكات العصبونية بالدخل الأمامي {{وإو|عر=Feedforward_neural_network|تر=Feedforward_neural_network|لغ=en|نص=Feed forward neural network}} من أهم أنواع الشبكات العصبونية متعددة الطبقات، وسميت بذلك لأنها تعتمد مبدأ الانتشار الأمامي حيث يكون خرج جميع عصبونات الطبقة m دخلاً لكل عصبون في الطبقة الموجودة أمامها m+1.
=== التعلم والتدريب ===
تشكل مرحلة تدريب الشبكة العصبونية مرحلة أساسية وهامة تأتي بعد مرحلة تصميمها، حيث يجري تدريبها على مجموعة من الأمثلة لتعطي الشبكة نتائج صحيحة على كل الأمثلة التي قمنا بتدريبها عليها، ولكن عملية التدريب لا تتوقف عند هذا الهدف المحدود بل يأتي امتياز فكرة الشبكات العصبونية بعملية ''التعميم'' أي قدرة الشبكة على إيجاد المخرج الصحيح لأمثلة جديدة لم يسبق لها التدريب عليها.
الخوارزمية الأكثر شيوعاً لتدريب الشبكات العصبونية هي الانتشار نحو الخلف Back propagation<ref>
[http://neuralnetworksanddeeplearning.com/ مرجع عن deep learning بدءاً من الأساسيات ] {{Webarchive|url=https://web.archive.org/web/20170729043304/http://neuralnetworksanddeeplearning.com/ |date=29 يوليو 2017}}</ref>
و هي عملية تكرارية تبدأ من الطبقة الأخيرة وتحسب الخطأ الحاصل على الخرج عبر إيجاد الفرق الحاصل بين قيمته وقيمة الخرج المطلوب، ثم تحاول تخفيض قيمة هذا الخطأ باستخدام خوارزمية تخفيض الميل العشوائي Stochastic gradient descent أو خوارزميات استمثال أخرى والتي تقوم بتعديل قيم أوزان طبقة الخرج بشكل يخفف من الخطأ الحاصل، ثم تكرر هذه العملية على الطبقة قبل الأخيرة وهكذا باتجاه الوراء وصولاً للطبقة الأولى، ثم قد تكرر جميع ما سبق على جميع الطبقات وصولاً للأوزان المثلى التي تحقق القيمة الأدنى المقبولة لخطأ الشبكة.

== بنية الشبكة العصبونية الالتفافية ==
تترتب عصبونات هذا النوع من الشبكات ضمن طبقات من أنواع مختلفة :
=== الطبقات الالتفافية Convolutional layers ===
تأتي تسمية هذا النوع من الطبقات من عملية [[الطي (رياضيات)|الطي أو الالتفاف الرياضية]] وهي عملية تطبق على تابعين f, g و تنتج التابع o وهو نسخة معدلة عن التابعين ويعطي المنطقة المتداخلة بينهما، لهذه العملية أثر كبير في معالجة الصور <ref>[https://developer.apple.com/library/archive/documentation/Performance/Conceptual/vImage/ConvolutionOperations/ConvolutionOperations.html عملية الالتفاف و استخدامها في معالجة الصور] {{Webarchive|url=https://web.archive.org/web/20160905025718/https://developer.apple.com/library/ios/documentation/Performance/Conceptual/vImage/ConvolutionOperations/ConvolutionOperations.html |date=05 سبتمبر 2016}}</ref>
تنتج إذاً هذه الطبقات عن تطبيق عملية [[الطي (رياضيات)|الطي]] أو [[الطي (رياضيات)|الالتفاف]] الرياضية على عناصر الدخل (عصبونات الطبقة السابقة أو بيكسلات الصورة المدخلة ) مع عدد من المرشحات filters أو نوى ال[[الطي (رياضيات)|التفاف]] [[الطي (رياضيات)|التفاف]] kernels
وتكرر عملية الالتفاف السابقة على كل مجموعة عناصر من الدخل بحجم المرشح الواحد، لتنتج لدينا قيم واحدة من خرائط الميزات أو feature map , ثم نكرر كامل العمليات السابقة من أجل كل مرشح فينتج خريطة ميزات أخرى وهكذا...,تعبر قيم هذه المرشحات عن أوزان الشبكة weights .<ref>
[https://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ملاحظات هامة في تصميم الشبكات العصبونية الالتفافية ] {{Webarchive|url=https://web.archive.org/web/20171217123525/https://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi |date=17 ديسمبر 2017}}</ref>
نلاحظ ما يلي في هذه الطبقات:
==== الأوزان المشتركة shared weights ====
تكرار تطبيق عملية التفاف المرشح على كامل عناصر الدخل سيحسن الأداء بشكل كبير لأنه سيؤدي إلى وجود عدد كبير من الوصلات ولكن بأوزان مشتركة فيما بينها shared weights وهذه إحدى أهم ميزات هذا النوع من الشبكات لأنها تزيد فاعلية التعلم وتجعل الشبكة مؤهلة لتحقيق نتائج أفضل في التعميم، فمثلاً سيتصل كل عصبون ناتج في خريطة الميزات بوصلات بعدد عناصر المرشح ولكن أوزان هذه الوصلات ستكون ذاتها أوزان العصبون المجاور له في نفس خريطة الميزات، كما ستؤمن هذه العملية التعرف على ميزات الصورة بالنظر إلى موقعها في الصورة الأساسية لأنها تربط النقاط المتجاورة مع بعضها وتسمح أيضاً بتمثيل المناطق المتداخلة .
==== مضاعفة المرشحات ====
وجود عدة مرشحات تطبق عليها عملية ال[[الطي (رياضيات)|طي]] مع نفس الدخل سيسمح بالتعرف على مجموعات مختلفة من الميزات في الصورة بما أن كل منها سينتج خريطة ميزات فريدة، ولكن عددها يجب أن يوضع بشكل لا يتغاضى عن تعقيد العمليات الحسابية الحاصلة كما أنه يعتمد على عدد الأمثلة المتوفرة للتدريب وتعقيد المهمة وتباين وأبعاد الصورة المدخلة، بينما يعتمد حجم المرشح الواحد أي أبعاده بشكل أساسي على البيانات الموجودة في مجموعة أمثلة التدريب .

=== طبقات انتقائية subsampling layers ===
تعد هذه الطبقات خيارية في تصميم الشبكة أي لا يشترط وجودها، وإن وجدت فستأتي بعد كل طبقة من الطبقات الالتفافية وتهدف إلى تخفيض عدد العينات أو العصبونات حيث ستقوم باختصار كل مجموعة من عصبونات الدخل بحجم معين إلى عصبون واحد، ويحدد هذا الحجم ضمن تصميم الشبكة وتكون قيمته المثلى 2×2 لأن تكبيرها قد يؤدي إلى ضياع في المعلومات ويتم التخفيض بعدة طرق منها :
* القيمة العليا المشتركة max pooling : تأخذ القيمة الأعلى بينها .
* المعدل المشترك average pooling : تأخذ معدل جميع القيم .
=== طبقات الاتصال الكامل fully connected ===
بعد عدة طبقات من النوعين السابقين تأتي هذه الطبقات لتربط كل عصبونات الطبقة السابقة (مهما كان نوعها) و تجعلها دخل لكل عصبون فيها كما في الشبكات العصبونية العادية، لا يشترط كونها بعدد معين ولكن غالباً يوجد منها طبقتان متتاليتان كطبقات أخيرة في الشبكة إذ لا يمكن أن تأتي قبل طبقة من النوع الالتفافي <ref>
[https://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks. مقال موضح لتصميم الشبكات العصبونية الالتفافية مع العمليات الرياضية كاملة] {{Webarchive|url=https://web.archive.org/web/20170505020443/http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks. |date=05 مايو 2017}} {{وصلة مكسورة|تاريخ=2020-10-13|bot=JarBot}}</ref>
== البرمجة ==
هناك العديد من المكتبات المساعدة في نمذجة الشبكات العصبونية الالتفافية أهمها :
[[deeplearning.net/software/theano|Theano]], [http://caffe.berkeleyvision.org/ caffe], cuda-convent
== المراجع ==
{{مراجع}}
{{شريط سفلي ذكاء اصطناعي}}
{{شريط بوابات|إحصاء|ذكاء اصطناعي|طب|علم الحاسوب|علوم عصبية}}

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

 مقدمة 
تعتبر الشبكات العصبونية الالتفافية نوعاً خاصاً وهاماً من أنواع الشبكات العصبونية ولكن قبل البدء فيها من الضروري أن تتعرف على المفاهيم الأساسية في الشبكات العصبونية الصناعية .Convolutional neural network 

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

 الشبكات العصبونية متعددة الطبقات 
تتركب الشبكة العصبونية من مجموعة من العصبونات المرتبة ضمن طبقات تتألف بشكل أساسي من طبقة دخل وطبقة خرج وواحدة أو أكثر من الطبقات المخفية.
تعد الشبكات العصبونية بالدخل الأمامي  من أهم أنواع الشبكات العصبونية متعددة الطبقات، وسميت بذلك لأنها تعتمد مبدأ الانتشار الأمامي حيث يكون خرج جميع عصبونات الطبقة m دخلاً لكل عصبون في الطبقة الموجودة أمامها m+1.
 التعلم والتدريب 
تشكل مرحلة تدريب الشبكة العصبونية مرحلة أساسية وهامة تأتي بعد مرحلة تصميمها، حيث يجري تدريبها على مجموعة من الأمثلة لتعطي الشبكة نتائج صحيحة على كل الأمثلة التي قمنا بتدريبها عليها، ولكن عملية التدريب لا تتوقف عند هذا الهدف المحدود بل يأتي امتياز فكرة الشبكات العصبونية بعملية التعميم أي قدرة الشبكة على إيجاد المخرج الصحيح لأمثلة جديدة لم يسبق لها التدريب عليها.
الخوارزمية الأكثر شيوعاً لتدريب الشبكات العصبونية هي الانتشار نحو الخلف Back propagationمرجع عن deep learning بدءاً من الأساسيات  
و هي عملية تكرارية تبدأ من الطبقة الأخيرة وتحسب الخطأ الحاصل على الخرج عبر إيجاد الفرق الحاصل بين قيمته وقيمة الخرج المطلوب، ثم تحاول تخفيض قيمة هذا الخطأ باستخدام خوارزمية تخفيض الميل العشوائي 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
 المراجع 

تصنيف:تعلم الآلة
تصنيف:رؤية حاسوبية
تصنيف:شبكات عصبونية اصطناعية
تصنيف:طب الجهاز العصبي
تصنيف:علوم عصبية حاسوبية