شرح تفصيلي -Fully Connected Layer + softmax layer

ذكرنا في المقالات السابقة انه الشبكة العصبية CNN عادة تتكون من الطبقات layer الرئيسية التالية:
  • Input layer
  • convolutional (Conv) layer
  • Pooling layer
  • Fully connected(FC) layer
  • Softmax/logistic layer
  • Output layer
في المقالة السابقة شرحت pooling layer بشكل مفصل. في المقالة هذه حشرح Fully connected(FC) layer بالاضافة الى softmax layer.
ممكن يجي سؤال في ذهنك، هل ال Fully connected(FC) layer هيا نفس ال Multilayer perceptron؟
خلينا نشوف أول شي صورة fully connected layer ادناه:
Fully connected layer صورة رقم ١ : طبقة
هل الصورة مألوفة لك؟ طبقة fully connected layer هيا نفس Multilayer perceptron والتي شرحتها بالتفصيل في المقالة هذه. وعرفنا انه في شبكة fully connected layer يجب ان تكون كل وحدة عصبية unit او كل مدخل متصل بجميع الوحدات العصبية في الطبقة التي تليه. حعطيك مثال حتى تشوف بنفسك. انظر للصورة رقم ١ ولاحظ عندي في طبقة المدخلات، يوجد عندي مدخل input للشبكة وهي عبارة عن صورة تحتوي الرقم ٥. تمام؟ لاحظ ان الوحدة unit متصل بجميع الوحدات العصبية افي الطبقة التي تليها وهيا ال hidden layer. هذا موجود في جميع الوحدات. يعني fully connected network هي عبارة عن شبكة عصبية جميع وحداتها متصلة مع بعضها البعض.

ليه طبقة Fully connected(FC) layer عادة تكون في الاخير؟ وليه نحتاجها في شبكة CNN بما انه ذكرنا انه لها عيوب في المقالات الماضية واستغنينا عنها ب convolutional layer؟

السبب بسيط جدا وهو ان ال convolutional layer استخدمناه لنستخرج مختلف الخصائص باستخدام الفلاتر. فاكر هالكلام؟ فبالتالي وظيفتها استخراج الخصائص وليس اتخاذ القرار. ماذا تقصد؟ تعال ناخذ مثال وافرض انه نبغى ننشئ مودل model يتعلم تصنيف الصور مثلا نعطيه صورة وهو يتخذ القرار انه الصورة صورة قط او كلب اكرمك الله. حلوين؟ شفنا في المقالات السابقة كيف انه احنا نستخدم convolution operations الموجودة في convolutional layer لنستخرج الخصائص من الصورة وبعدها نستخدم pooling layer لناخذ اهم الخصائص. الان يجي دور fully connected layer وهو انه تاخذ الخصائص من pooling layer وبناء عليها تقولك تراها صورة مثلا قط. اي ان عملية التصنيف تتم في طبقة fully connected layer. هل اوضح الصورة الان؟

سؤال لك. بناء على كلامي الذي شرحته، ما هي مدخلات ومخرجات هاذي الطبقة؟

المدخلات هيا المخرجات من الطبقة التي قبلها وهيا pooling layer والمخرجات حتكون يا قط يا كلب بناء على مثالنا لان هدفنا كان تصميم شبكة عصبية CNN model يقوم بتصنيف صور القطط والكلاب. تعال نشوف مع بعض كيف التدفق للمدخلات والمخرجات يمشي من طبقة الى اخرى بناء على الطبقات التي اتكلمنا عليها بالتفصيل.
CNN صورة رقم ٢ : هيكل تفصيلي مبسط ل
وضحت لك الفكرة الان بشكل افضل؟ بس أكيد جاء في بالك هالسؤال.

كل الطبقات التي اتكلمنا عنها بالتفصيل موجودة وحسب الترتيب الذي شرحت بسثتناء شي وحيد وهو flatten؟ ما فائدتها ولماذا اضفناها قبل fully connected layer? وهل دائما تضاف قبل fully connected layer؟

طيب مو قبل شوي ذكرنا ان مخرجات pooling layer هيا مدخلات ال fully connected layer؟ صحيح هالكلام لكن اذا جينا نتكلم بشكل عملي وتطبيقي فمخرجات pooling layer واعني حجم وشكل المصفوفة لا يتناسب مع شكل البيانات المطلوب من قبل fully connected layer.

ما هيا متطلبات المدخلات ل fully connected layer؟

هذه الطبقة تطلب او تحتاج 1D feature vector اي بما معناه انها تطلب عامود واحد فيه جميع الخصائص ونحن نعرف ان مخرجات ال pooling layer هيا عبارة عن مصفوفة matrix فيها اهم الخصائص مثل ما راينا في المقالات السابقة. والحل؟ الحل بسيط جدا وهو انه ناخذ هذه المصفوفة matrix ونفردها. يعني تخيل انه عندك سجادة طويلة وانت اخذت السجادة وجالس تطويها على شكل عامود. السجادة المفروشة تمثل المصفوفة والسجادة بعد ما طويناها تمثل العامود. هذه العملية تسمى flatten. فاحنا باختصار حولنا matrix الى 1D vector اي عامود واحد يحتوى جميع الخصائص.

ماذا عن ال softmax؟ ما شرحتها يا رائد

السوفت ماكس بكل بساطة هيا تحول المخرجات الى probabilty احتمالات. ما الهدف من هذا؟

ما الهدف من تحويل المخرجات الى احتمالات؟

حشرح الفكرة عن طريق مثال ونكمل على مثالنا السابق. افرض دربنا شبكتنا العصبية CNN وتوقعت لي انه الصورة صورة قط واعطاني كمخرج الرقم الاتي : 0.3556663. جينا نشيك الرقم الخاص انه الصورة تكون كلب وكان 0.648355434. احنا ما عندنا معلومة دقيقة او موضحة بشكل اوضح عن المخرجات فلو استخدمنا softmax. حتقولي مثلا الشبكة انه نسبة الصورة تكون قط ترا 0.60 بالمية ونسبة الصورة تكون كلب ترا 0.40 يعني ٤٠ بالمية وهكذا. فنلاحظ انه يكون عندنا معلومة او تصور اوضح لمخرجات الشبكة. ولا ننسى انه من خصائص softmax انه يكون المجموع هو ١. ففي مثالنا هذا 0.60 + 0.40 يساوي 1 ونفسها لو قلنا ٦٠ بالمية + ٤٠ بالمية ويساوي ١٠٠ بالمية. طبعا نفس المنهجية تنطبق لو كان عندك اكثر من مخرجين وهكذا. بالتالي، لو عرفت قيمة مخرج واحد في هذا المثال فانا اقدر اعرف معلومة اخرى عن label الاخر. لمتابعة الفديو الخاص بالمقالة، الرجاء الضغط هنا

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

Leave a Reply

Your email address will not be published.