Post Top Ad

Your Ad Spot

الأحد، 27 يناير 2019

Convolutional Neural Networks

Convolutional Neural Networks 

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

الصور بتتكون من حاجات صغيرة أسمها pixel ال CNN دي كل الي هتعمله انها هتحاول تجمع اكتر عدد من ال pixel المميزة في كل صورة علشان تقدر تميز ما بنها سواء كنوع او كشكل او تقولك الحاجات الي في الصورة دي عبارة عن ايه .. خلينا نمشي خطوة خطوة شوف ال CNN بتتكون من 3 حاجات اساسين زي ما هتشوف في الصورة الجاية :

انتا هتدخلها الصورة , الصورة دي هتعدي علي ال convolutions layers وهتطلع output معين والي بدوره هيتاخد وهيروح علي Pooling layer الي بدورها هتعمل حاجة معينة وهتطلع output معين وهتوديها علي ال Fully connected layer الي بدورها هتطلع ال output بتاعك مظبوط طيب حاليا عندنا 3 layers احنا مش عارفين هما بيعملو ايه فا تعالا نمسك كل واحدة واحدة ونشوف هي بتعمل ايه !

اول حاجة هنتكلم علي CONV :
ودي الي هي ال CONVOLUTIONS LAYERS الي اتكلمنا عندها قبل كداه طيب هي دي بتعمل ايه دي بكل بساطة بتعمل Scan ل Input بتاعتك وبتعديه علي حاجة اسمها Filter كل Filter بيكون ليه Size معين يعني طول وعرض وال Output بتاعه بيكون مختلف عن ال Output بتاع ال Filter التاني ال Conv دي ليها حاجة اسمها Hyperparameters ودي بتكون عبارة عن :
Filter Size : F
Stride : S
وهنتكلم علي كل واحد منهم بالتفصيل كمان شوية .. المهم ان بعد ما العملية دي بتخلص الناتج بتاعك بيكون حاجة تانية خالص غير ال Input بتاعك الناتج بتاعك هنا بيكون عبارة عن ال Features Map بتاعت الصورة دي .. يعني ايه ال Features Map شوف زي ال output الموجود في الصورة


انتا بتعمل كل داه ليه ؟
علشان تعرف ان القطة بيبقي ليها ديل 
ان الكلب بيبقي ليه شكل مختلف عن القطة
ان الانسان عنده عينين ووش وبوق وشكل يختلف عن الكلب
الجهاز مش هيفهم الكلام داه بسهولة شبه ما انتا بتفهمه لانه في النهاية عبارة عن عقله مكون من 0-1 فا انتا بتحاول انك تقوله ان مثلا الانسان بيكون عنده عينين بشكل معين وحواجب , تروح رايح عند صورتك وترميها هو تلقائيا باستخدام ال CNN هيطلع Features Map من ضمنها خصائصك كأنسان بس مش هيقولك انا لقيت ان عندك عينين .. لأ هو هيحتفظ بال Features دي بطريقة معينة لأنها بالنسبالة عبارة عن Pixels فهمت فا متفكرش انه ذكي كفاية .. هو ما زال ألة بس احنا بنحاول نحتويه لعل وعسي يكبر ويبقي حاجة ربنا يسهل .. نكمل بقي .


طيب احنا الحمد لله طلعنا من المطحنة بتاعت ال Features Map وفرحانين اوي بنفسنا وفكرنا نفسنا خلاص بقي بقينا احرار بندخل علي ال Layer رقم 2 وهي الي بنقول عليها POOL

POOLING Layer :

بيقولو علي ال Layer دي انها طبقة الاختزال والعملية الي بتقوم بيها انها بتعمل تثبيت مكاني لل output بتاع ال Conv عن طريق انها بتعدي علي كل مجموعة Pixel وتقولهم مين الكبير فيكم , يروح واحد قايلها انا الكبير تروح قايلاله أركب معانا الطريقة دي اسمها Max pooling في طريقة تانية اسمها
 AVG POOLING  طبعا هنا هي بتلم الي في النص وبتركبهم معاها طب والي هي اختارتهم بتعمل بيهم ايه دول حتي لسة طالعين من اختبارات ال Filters وطالع عينهم  قالولك لأ دول ملهمش لازمة احنا هناخد بس الكبار وخلاص
ودا شكل توضيحي عن العملية دي ازاي بتتم , بالمناسبة اكتر حاجة بيتم استخدامها هي ال Max pooling يا جماعة لأنها بتحافظ علي ال Features Map بشكل كويس .
فرحان انتا عشان انتا فهمت حاجة كنت فقدت الامل في انك تفهمها في يوم لأ باذن الله كل الي جي هيكون اسهل من كل الي فات متقلقش , الي جاي بقي احنا هنتكلم علي اخر Layer معانا FC 
الي  هو Full Connected :

شايف طبعا المربع الصغير الي طالع من ال pool layer صح عايزك تعد المربعات الي فيه , تبقي مصيبة لو عدتهم احنا قولنا تفكيرك يكون مرن فا دول 3 صفوف و 3 اعمدة فا هيكونو مكونين من 9 مربعات , كل مربع من دول بيمثل pixel طيب ال FC دي دورها بتعمل ايه ..
هي كل الي بتعمله انها بتفك المربعات دي وتخليهم كلهم صف واحد فا بتخلي ال INPUT الي داخلها مسطح طب ليه مسطح علشان يرتبط بكل ال Neurons التانية يعني من أول الخطوة دي تقدر تعتبر ان دي ال Input بتاعها عبارة عن Features لداتا عادية مثلا وبتعديها بقي علي اكتر من layer علشان توصل في النهاية ل output فهمت الفكرة .. عامة ال FC Layer دي بتكون موجودة في الاخر خالص بتكون دايما بعد ال Pool layer وبيتسخدموها في تحسين الأداء يعني هي بس بتوقفهم صف واحد وتفضل تربطهم في بعض وفي ال Neurons علشان يكتشفو فيهم الحاجة المميزة .

طيب كدا احنا خلصنا خلاص الفكرة بتاعت ال CNN ودا كان ال Architecture بتاعتها تعالا بقي نرجع للنقطة الي قولنا هنتكلم عليها في الاخر وهي ال Hyperparameters دي :

هنتكلم علي أول حاجة وهي ال Filter :
شوف احنا بيبقي عندنا Filter وهيكون ليه حجم وليكن هنرمز ليه ب F x F الفلتر دا هيتم تطبيقه علي input وال input دا بيحتوي علي Channels والي بنرمز ليها بالرمز C وبكدا حجم ال Filter هيكون F x FC وهيتم تطبيقه علي Input وهيكون حجم ال input بتاعنا :  I x I x C وظيفة الفلتر دي انه ينفذ ال CONV Layer وبالتالي طبعا ال output هيكون ايه ؟
- Features map طبعا .



اما بالنسبة للخاصية التانية Stride فاحنا بنرمز ليها بالرمز S :
طيب دي بتكون عبارة عن اننا هنعمل حاجة ظريقة جدا خلال تحركنا في ال POOL فوق بص علي الصورة انتا شايف احنا بنتحرك ازاي .. ايه الي بيحكمنا في عملية التحرك دي .. ال Stride تعتبر الحاجة الي بتحكمنا وهي عدد المربعات او الPixel الي هنتحركها في كل لفة في ال pool علشان نوصل لل output .

اخر عملية عندنا بقي وهي تعتبر ال Padding ودي قصته لطيفة خالص , طبعا هو فيه تفاصيل كتير اوي بس انا هحاول اختصر ليك علي قد ما تقدر , احنا هنضيف عدد p من الاصفار علي كل الحواف بتاعت input حاجة زي كداه مثلا :
طيب تعالا بقي نبص بصة كاملة علي ال معادلة الي هيتم تطبيقها علي الصورة ونشوف كدا احنا وصلنا لأيه وايه هيكون شكل الصورة بعد ما هنطبق عليها كل الكلام داه .


الصورة هتدخل هنشيل منها الفلتر وبعدين هنزود عليها الحواف الي هي عبارة عن عدد من الأصفار وبعدين هنقسمها علي عدد ال Stride الي عندنا والناتج بتاعت صورة الدبدوب الكيوت الي كان فوق هتكون دي :


حاليا احنا هنراجع مراجعة سريعة علي كل حاجة عرفناها وهنشوفها في المخطط داه وياريت اننا نقرا الكلام دا مرة واتنين وتلاتة وبعدين نقرا المصادر وبعدين نرجع للكلام داه نسمعه لنفسنا ونفتكر ان احسن طريقة لحفظ وفهم الاوراق العلمية والNN التقيلة دي اننا نحولها للغتنا العامية البسيطة ونحاول نبسطها بدل ما نعقدها ونحسس الناس انها حاجة فوق مستوي الفهم البشري عشان نبان اننا سوبر مان 

كنا احنا شرحان ال CNN بأسفتاضة هنرفق ليها شرح عملي ولينك بالمصادر والمقالات ولينكات Wikipedia وكل تفاصيلها أتعود انك دايما متكتفيش بالشرح الي بقدمهولك وحاول انك تدور وتقري كلام كتير واحسن طريقة انك المعلومة تثبت في دماغك انك تشرحها لغيرك وافتكر ان السبب الاساسي الي خلاني اعمل ال Blog دي هو ايماني بالمقولة الشهيرة " ان اردت ان  تفهم شيئا فهما صحيحا عليك ان تشرحه لغيرك " انا الي قولتها المقولة الشهيرة دي علفكرا ..

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

بالنسبة للمصادر :

ملاحظة : دا يعتبر تلخيص بسيط جدا عن عمق المشروع او ال Paper دي او التقنية دي كعلم كامل فا لا يتم مقارنتها اطلاقا بكمية المعلومات المطروحة ولكنها اقل عدد من المعلومات تقدر تعتمد عليها علشان تقدر تطبق عمليا

هناك تعليق واحد:

Post Top Ad

Your Ad Spot

Datalizer