العودة للوحة التحكم

QudahWay SS

CNN and RNN Architectures | معماريات الشبكات التلافيفية والمتكررة

CNN & RNN Overview Slide 01
Slide 1
Chapter Outline: What we will cover Slide 02
Slide 2
شو رح نغطي في هاض الشابتر؟ 🗺️🧭
في هاض الجزء رح نغوص في عالم الشبكات العصبية العميقة المتخصصة. الشابتر مقسوم لجزئين أساسيين:
1. الـ RNN: رح نفهم أساسيات الشبكات المتكررة، ونشوف وحوش زي الـ LSTM والـ GRU وكيف بنستخدمهم في تطبيقات الداتا المتسلسلة.
2. الـ CNN: رح نحكي عن أساسيات شبكات الرؤية، ونمر على معمارياتها الأسطورية زي ResNet و UNet و MobileNet، ونشوف وين بنستعملهم في حياتنا.
Training: Forward & Backward Pass Slide 03
Slide 3
Introduction to Recurrent Neural Networks (RNN) Slide 04
Slide 4
مقدمة في الـ RNN.. مش زي الشبكات العادية! �🧠
الـ Recurrent Neural Networks (RNNs) بتشتغل بطريقة مختلفة عن الشبكات اللي تعودنا عليها.
الشبكات العادية بتاخد كل المدخلات مرة وحدة وبتمشي باتجاه واحد (One Direction). بس في الـ RNN، المعلومات "بتلف وبترجع" للنظام بعد كل خطوة. تخيلها زي قراءة جملة؛ عشان تتوقع الكلمة الجاية، لازم تتذكر الكلمات اللي مرت عليك قبل، مش بس الكلمة الحالية.
RNNs: The Power of Memory Slide 05
Slide 5
قوة الذاكرة في الـ RNN 💾�
الـ RNNs بتسمح للشبكة إنها "تتذكر" المعلومات السابقة عن طريق تمرير مخرجات خطوة معينة للخطوة اللي بعدها.
عشان تتذكر، بنحتاج "ذاكرة" (Memory). هاض الإشي بيساعد الشبكة تفهم "السياق" (Context) للي صار قبل، وبالتالي بطلع توقعات أدق بكثير، زي لما نقرر شو الكلمة الأنسب لتكملة جملة معينة بناءً على تاريخ الجملة.
RNN vs Feedforward: Key Differences Slide 06
Slide 6
شو الفرق بين الـ RNN والشبكات العادية (FNN)؟ ⚖️🛠️
الـ Feedforward Neural Networks (FNNs) بتعالج البيانات في اتجاه واحد من المدخلات للمخرجات، وبدون ما تحتفظ بأي معلومة من المدخلات القديمة.
المشكلة: الـ FNN بتعاني مع البيانات المتسلسلة لأنها "بدون ذاكرة". الـ RNN بتحل هاي المشكلة عن طريق إضافة حلقات (Loops) بتسمح للمعلومات ترجع وتغذي الشبكة، وهيك بصير عندها قدرة على فهم السياق.
Visual Comparison: RNN vs Feedforward Slide 07
Slide 7
مقارنة بصرية بالرسم 🎨🖌️
الرسمة بوضوح بكتير الفرق:
- (b) Feed-Forward: خطوط مستقيمة من الشمال لليمين. كل مدخل بطلع مخرج وانتهى.
- (a) Recurrent: بنشوف "حلقات" دائرية فوق النيورونات. هاي الحلقات هي اللي بتخلي المعلومة "تكرر" نفسها وتدخل في الحسبة الجاية. !
RNN vs FNN: Data & Applications Slide 08
Slide 8
مين بنستخدم ومتى؟ (البيانات والتطبيقات) 📊🚀
مقارنة في نوع الداتا والتطبيق:
- FNN: بتنفع للداتا الثابتة الطول (Fixed-length) زي تصنيف الصور.
- RNN: بتلمع في الداتا المتسلسلة (Sequential) زي الكلام، الترجمة، وتوقع أسعار الأسهم. السياق والترتيب هون هم كل إشي.
RNN Unrolling (Unfolding through Time) Slide 09
Slide 9
فك اللغز: عملية الـ Unrolling 🌀➡️📏
الـ RNN في الحقيقة هي "لوب" (حلقة)، بس عشان نقدر نحسبها رياضياً، لازم "نفكها" (Unfold).
الفكرة: السلايد بفرجينا كيف الـ Rolled RNN بتتحول لـ Unrolled RNN. كل مربع بيمثل خطوة زمنية (t-1, t, t+1). بنشوف الأوزان:
- U: وزن المدخلات (x).
- W: وزن المخرجات (o).
- V: وزن الحالة المخفية السابقة (الذاكرة اللي بتنتقل عبر الزمن).
Backpropagation Through Time (BPTT) Slide 10
Slide 10
الـ BPTT: كيف بنعدل أخطاء الماضي؟ ⏪🛠️
عشان الشبكة تتعلم، لازم ترجع بالعكس وتصلح الأوزان بناءً على الخطأ (Loss L). في الـ RNN الموضوع أصعب لأن الخطأ مربوط بالزمن.
العملية: بنحسب الـ Loss الإجمالي اللي هو مجموع الأخطاء عند كل خطوة زمنية (L = Σ Li). بعدين الـ Backpropagation Through Time بتمشي بالعكس عبر كل الخطوات السابقة عشان تعدل الأوزان (U, V, W). هاي هي الطريقة اللي الشبكة بتفهم فيها إن "غلطي هسا" يمكن كان سببه "إشي صار قبل ٥ خطوات".
Gradient Vanishing & Explosion Slide 11
Slide 11
كابوس الـ Gradient: التلاشي والانفجار �️💨
لما نكون عنا تسسلسلات طويلة، عملية الـ Backpropagation بتواجه مشكلتين "قاتلات":
1. Gradient Vanishing (التلاشي): قيمة التعديل بتصغر بشكل مرعب لحد ما تصير صفر. هون الشبكة "بتنسى" تماماً المعلومات البعيدة وبتبطل تتعلم منها.
2. Gradient Explosion (الانفجار): قيمة التعديل بتكبر بشكل جنوني لحد ما توصل لـ NaN (غير معرف)، وهاض بيخلي الموديل غير مستقر ويخرب التدريب كله.
Problems of Vanilla (Original) RNNs Slide 12
Slide 12
ليش الـ Vanilla RNN "محدودة"؟ 🍦🥀
الـ RNN الأصلية (الـ Vanilla) عندها مشاكل بتمنعها من أداء المهام المعقدة:
- صعوبة التعلم: بسبب الـ Vanishing Gradient، التحديثات بتصير صغيرة جداً وما بتأثر بالأوزان.
- عدم الاستقرار: الـ Exploding Gradient بيخلي الأوزان تتذبذب بشكل عشوائي.
- Long Range Memory: هي "ذاكرتها قصيرة". المفروض تتذكر معلومات من أول الجملة لعشان تستخدمها في آخرها، بس عملياً بتفشل في هاض الإشي. هاض هو السبب اللي خلانا نخترع الـ LSTM لاحقاً.
Slide 13 Title Slide 13
Slide 13
Long Short-Term Memory (LSTM) Slide 14
Slide 14
الـ LSTM: الذاكرة "الحديدية" 🦾🧠
الـ LSTM هي نوع خاص من الـ RNN تم اختراعه عشان يحل مشكلة الـ Gradient Vanishing.
السر: استخدام نظام بوابات (Gated Structure) بتقدر تتحكم شو "تحفظ" وشو "تنسى". هاي البوابات هي عبارة عن شبكات عصبية صغيرة بتستخدم دالة الـ Sigmoid (اللي بتعطي قيم بين ٠ و ١) عشان تقرر هل تمرر المعلومة أو تمنعها.
LSTM: Practical Implementation Slide 15
Slide 15
تشريح خلية الـ LSTM 🧪🛠️
هاي الرسمة هي "العمود الفقري" للـ LSTM. بنشوف فيها:
- Cell State (Ct): هاذ هو الطريق السريع اللي بتمشي عليه المعلومات عبر الزمن مع تعديلات بسيطة.
- Forget Gate (ft): المحبس اللي بقرر شو المعلومات القديمة اللي ما عاد نحتاجها.
- Input Gate (it): المحبس اللي بقرر شو المعلومات الجديدة اللي رح ندخلها على الذاكرة.
- Output Gate (ot): المحبس اللي بقرر شو نطلّع مخرجات للخطوة الجاية.
Mathematical Formulations Slide 16
Slide 16
لغة الرياضيات: معادلات التحديث 🧮🔢
خلينا "نترجم" الرسمة لمعادلات:
1. Input Gate: it = σ(Wi[xt, ht-1] + bi)
2. Forget Gate: ft = σ(Wf[xt, ht-1] + bf)
3. Output Gate: ot = σ(Wo[xt, ht-1] + bo)
4. Cell Update: Ct = ft ⊙ Ct-1 + it ⊙ ~Ct
المعادلة الأخيرة (Cell Update) هي السحر؛ لأنها بتجمع بين "المعلومات المحفوظة" من الماضي والـ "معلومات الجديدة" اللي دخلت هسا.
Roles of Different Gates in LSTM Slide 17
Slide 17
وظيفة كل بوابة (الجزء الأول) 🚦🛂
كل بوابة إلها مهمة محددة:
- Input Gate (it): بتتحكم بكمية "المعلومات الجديدة" اللي رح تتدفق جوا الـ Cell State.
- Forget Gate (ft): هي اللي بتحدد شو المعلومات اللي لازم "نرميها" من الـ Cell State لأنها بطلت مفيدة.
- Process Input (~Ct): بتجهز "قيم مرشحة" جديدة (Candidate Values) عشان تنضاف للذاكرة.
Roles of Different Gates in LSTM (Cont.) Slide 18
Slide 18
وظيفة كل بوابة (تكملة) 🔄🏁
بنكمل مع باقي العمليات:
- Cell Update (Ct): هي عملية "دمج" بين القديم والجديد. بنضرب القديم بالـ Forget Gate وبنجمعله الجديد مضروب بالـ Input Gate.
- Output (ht): بقرر شو المخرج النهائي (Hidden State) بناءً على حالة الخلية الحالية وبوابة المخرجات.
الخلاصة: الـ LSTM بخليك تتذكر المعلومات المهمة لفترات طويلة جداً وتنسى "الحشو" اللي ما إله داعي.
Slide 19 Title Slide 19
Slide 19
Gated Recurrent Unit (GRU) Slide 20
Slide 20
الـ GRU: الذكاء في البساطة 🧠⚡
الـ Gated Recurrent Unit (GRU) هي نسخة مطورة ومبسطة من الـ LSTM.
الفرق الجوهري: ما فيها Cell State منفصل؛ بتعتمد بس على Hidden State واحد. كمان فيها بوابتين بس بدل ٣، وهاض بيخليها أقل تعقيداً وأسرع في التدريب. بنشوف المعادلات:
- Reset Gate (rt): بقرر شو "يمسح" من الماضي.
- Update Gate (zt): بقرر شو "يحدث" من الذاكرة الحالية.
- Hidden State (ht): هو الخليط النهائي بين الماضي والحاضر.
Roles of Gates in GRU Slide 21
Slide 21
وظيفة البوابات في الـ GRU 🚦🚥
كيف بتشتغل بوابات الـ GRU؟
- Reset Gate (rt): وظيفته يحدد كمية "المعلومات القديمة" اللي لازم ننساها. هاذ بيسمح للموديل إنه يرمي أي معلومة مالها داعي من الماضي عشان يركز على المهم.
- Update Gate (zt): بيعمل توازن (Balance) بين المدخلات الجديدة وبين الذاكرة القديمة، وبقرر كم لازم يضل من الحالة القديمة مقابل المدخل الجديد.
Roles of GRU (Cont.) Slide 22
Slide 22
كيف المخرج بيتكون؟ 🔄🏁
تكملة لعمليات الـ GRU:
- Process Input (~ht): بيجهز قيم "مرشحة" لتمثيل الحالة المخفية الجديدة، وبتكون متأثرة بـ Reset Gate.
- Hidden State Update: هون السحر؛ بنجمع الحالة القديمة (مضروبة بـ 1-z) مع الحالة الجديدة المرشحة (مضروبة بـ z).
- Output (ht): الحالة المخفية المحدثة هي نفسها المخرج، وهي بتمثل الذاكرة الحالية للشبكة.
Compare LSTM with GRU (Part 1) Slide 23
Slide 23
المواجهة: LSTM vs GRU (التعقيد والوقت) ⚖️🥊
مين أحسن؟ المقارنة بتبلش هون:
- Complexity (التعقيد): الـ LSTM أعقد بكتير (٣ بوابات)، بينما الـ GRU أبسط (بوابتين).
- Memory (الذاكرة): الـ LSTM بحتاج ذاكرة أكبر بسبب كثرة الأوزان والتعقيد.
- Training Time (وقت التدريب): الـ GRU أسرع في التدريب لأن هيكله أبسط ومعادلاته أقل.
Compare LSTM with GRU (Part 2) Slide 24
Slide 24
مين نختار؟ (الأداء والمتطلبات) 🛰️🎯
بقية المقارنة:
- Performance: الـ GRU ممكن تعطي أداء أحسن على الداتا الصغيرة، بس الـ LSTM بتلمع في المهمات الصعبة والتسلسلات الطويلة جداً.
- Overfitting: الـ LSTM معرضة أكتر للـ Overfitting على الداتا الصغيرة لأن فيها أوزان كثير.
- Mechanism: الـ LSTM عندها Cell State و Hidden State منفصلين، بينما الـ GRU عندها حالة مخفية وحدة بس.
القرار: الاختيار بعتمد على نوع الداتا وحجمها والتطبيق اللي بتشتغل عليه!
Advantages of GRU Slide 25
Slide 25
مميزات الـ GRU: ليش بنحبها؟ 🚀💡
الـ GRU إلها نقاط قوة بتخليها خيار ممتاز في حالات معينة:
- Faster Training (تدريب أسرع): لأن عدد الـ Parameters فيها أقل، هاض بيخلي تدريبها أسرع وبتحتاج موارد حاسوبية أقل.
- Efficient on Smaller Datasets: الـ GRU بتقدر تلقط العلاقات بين البيانات حتى لو حجم الداتا مش ضخم جداً، عكس الـ LSTM اللي "بتجوع" للداتا الكثير.
- Flexibility: بفضل نظام البوابات المبسط، عندها مرونة عالية في إدارة الذاكرة قصيرة المدى وتوزيع المعلومات عبر الخطوات الزمنية بكفاءة.
Slide 26 Title Slide 26
Slide 26
Slide 27 Title Slide 27
Slide 27
Basics of CNN Slide 28
Slide 28
مقدمة في الـ CNN: كيف "بتشوف" الشبكة؟ 👁️🖼️
الـ Convolutional Neural Network (CNN) هي النوع الأساسي اللي بنستخدمه في الـ Computer Vision.
- الفكرة: هي تطوير للـ ANN العادية، بس بدل ما تتعامل مع البيانات كخيوط، بتتعامل معها كـ Grid-like matrix (زي بكسلات الصور).
- المُرشحات (Filters): الشبكة بتتعلم "فلاتر" معينة (مصفوفات أوزان صغيرة) بتمشي على الصورة عشان تلقط ملامح معينة مثل الزوايا، الألوان، أو الأشكال المعقدة.
- Feature maps: نواتج هاي الفلاتر بنسميها "خرائط الميزات" وهي اللي بتمثل "فهم" الشبكة للصورة.
Layers Used to Build CNN Slide 29
Slide 29
هيكل الـ CNN: من البكسل للتصنيف 🏗️🧱
عشان تبني CNN، الصورة بتمر برحلة عبر طبقات مخصصة:
1. Conv Layer: لاستخلاص الميزات.
2. ReLU: دالة تفعيل بتخلي الـ Negative values تصير صفر عشان نضيف "غير خطية".
3. Pooling: تقليل أبعاد الصورة (تصغيرها) مع الحفاظ على أهم المعلومات.
4. FC Layer (Fully Connected): هي الطبقة النهائية اللي "بتقرر" شو نوع الصورة (سيارة، طيارة، حصان.. إلخ).
Basics of CNN: Operations Slide 30
Slide 30
العمليات الأساسية: الضرب والتقليص 🧮📉
في عمليتين بتموا جوا الـ CNN:
- Convolution Operation: عملية ضرب (Dot Product) بين الصورة والـ Filter. بنمشي الفلتر خطوة بخطوة وبنجمع النواتج عشان نطلع الـ Feature Map.
- Pooling Operation: مثل الـ MaxPooling؛ بنختار أكبر قيمة في منطقة معينة بالصورة. ليش؟ عشان نصغر حجم الحسابات ونركز على "أقوى" إشارة موجودة.
Variants of CNN Slide 31
Slide 31
سلالات الـ CNN: من LeNet لـ MobileNet 👪🛰️
العلماء طوروا نسخ كثير من الـ CNN، وكل وحدة إلها ميزة:
- AlexNet/LeNet: البدايات الكلاسيكية.
- ResNet: اللي حلت مشكلة العمق باستخدام الـ Residual Connections.
- MobileNet: مصممة تكون خفيفة للموبايلات.
- U-Net: متخصصة في الـ Image Segmentation.
قاعدة عامة: الموديلات العميقة (Deep) بتتذكر ميزات أعقد، والموديلات العريضة (Wide) بتتذكر ميزات أكثر.
Is Deeper Network always better? Slide 32
Slide 32
هل "الأعمق" دايماً "أحسن"؟ لا! ⚠️🛑
المفروض كل ما زدنا طبقات تزيد الدقة، بس الواقع بيحكي غير هيك لسببين:
1. Overfitting: لما الموديل يصير "ببصم" البيانات بدل ما يفهمها، فبفشل في التعميم على داتا جديدة.
2. Vanishing/Exploding Gradients: في الموديلات العميقة جداً، قيم التحديث بتصير صفر أو بتنفجر، وهاض بيخرب التدريب.
الحل: بنستخدم تقنيات مثل Batch Normalization والـ ReLU عشان نخفف من هاي المشاكل.
Is deeper Network always better? (Cont.) Slide 33
Slide 33
ليش العمق الزيادة بوجع الراس؟ 🤕📉
تكملة لمشاكل الموديلات العميقة (Deeper Networks):
- Complexity: زيادة الطبقات بتعني تعقيد أكبر، وهاذ بيصعّب عملية ضبط الـ Hyperparameters وبطوّل وقت التدريب.
- Diminishing Returns: بعد نقطة معينة، إضافة طبقات جديدة ما رح تحسن الأداء بشكل ملحوظ، بالعكس ممكن تضيّع وقت وموارد عبث.
- Data Requirements: الموديلات العميقة "جوّاعة" داتا. إذا ما عندك داتا كافية وبجودة عالية، الشبكة الضخمة رح تعمل Overfitting وتفشل.
Summary of CNN Variants and Apps Slide 34
Slide 34
ملخص السلالات والتطبيقات 🛰️🗺️
بنشوف هون خريطة الطريق للـ CNN وكيف تطورت عبر السنين:
- التطور الزمني: بلشنا بـ LeNet-5 (قبل ٢٠١٢)، بعدين القفزة التاريخية بـ AlexNet (٢٠١٢)، ووصولاً لموديلات ذكية مثل ConvNeXt (٢٠٢٠).
- تطبيقات متخصصة:
* U-Net: لتقسيم الصور (Segmentation).
* YOLO: اللي الكل بعرفه لتحديد الأجسام (Object Detection).
* MobileNet: للموبايلات والأجهزة الضعيفة.
LeNet-5: 1988 to 1998 Slide 35
Slide 35
الجد الأكبر: LeNet-5 👴🏛️
هاض الموديل هو اللي بدأ كل شي، صممه العبقري Yann LeCun.
المواصفات القديمة:
- كان يستخدم Sigmoid كدالة تفعيل (قبل ما نكتشف الـ ReLU).
- كان يستخدم Average Pooling بدل الـ Max Pooling المشهور هسا.
- صُمم بالأصل عشان يقرأ الأرقام المكتوبة بالإيد (مثل الرموز البريدية).
ImageNet Dataset Slide 36
Slide 36
المحيط: ImageNet 🌊📸
عشان تدرب وحوش، لازمك داتا وحش!
شو هو؟ هو أضخم قاعدة بيانات صور في العالم (في وقتها).
- فيه أكثر من 15 مليون صورة مصنفة بدقة عالية.
- الصور موزعة على 22,000 تصنيف (من الكلاب والقطط للسيارات والطيارات). هاض "البحر" هو اللي خلى موديلات الـ Deep Learning تنجح.
AlexNet (2012): GPUs are Here Slide 37
Slide 37
عصر الـ GPUs: الثورة بتبلش من هون 🎮🔥
في ٢٠١٢، الـ AlexNet قلب الموازين في مسابقة ImageNet:
- GPU Power: كان أول موديل ضخم يتم تدريبه باستخدام كروت الشاشة (GPUs)، وهاذ اللي سمح بتدريب شبكات عميقة جداً بوقت قياسي.
- الأرقام: الموديل كان فيه 60 مليون وزن (Parameter) و 650,000 عصبون.
تنبيه: الشبكة هاي ضخمة لدرجة إنها ممكن تحفظ الداتا (Overfitting)، فعشان هيك لازم تكون حذر وتستخدم تقنيات تنظيم.
AlexNet: Technical Details Slide 38
Slide 38
جهاز الـ AlexNet من جوا 🔍⚙️
خلينا نشوف كيف بُنيت هاي الأسطورة:
- المكونات: بتتكون من ٥ طبقات Convolutional و٣ طبقات Fully Connected.
- السرعة: كانت تستخدم الـ ReLU بعد كل طبقة كونفولوشن، وهاذ سرع التدريب بـ ٦ أضعاف مقارنة بالـ Tanh.
- Pooling: فيها ٣ طبقات Max Pooling عشان تصغر أبعاد المعلومات وتركز على المهم.
VGGNet (2014): Deeper is Better Slide 39
Slide 39
الـ VGG: سحر الطبقات المتكررة 🏗️🧱
في ٢٠١٤، جماعة VGG قرروا يرفعوا شعار "كل ما زاد العمق، زاد الأداء":
- VGG Block: ميزتها إنها استخدمت بلوكات ثابتة وسهلة، كل بلوك فيه فلاتر صغيرة (3x3).
- الخلاصة: من خلال "تصفيف" هاي البلوكات فوق بعض، قدروا يوصلوا لأعماق كبيرة (مثل VGG-16 و VGG-19) وطلعوا بنتيجة إن Deeper is Better.
ResNet (2015): Residual Neural Network Slide 40
Slide 40
مشكلة العمق وحلها الثوري 🧗‍♂️💡
لما الموديلات صارت عميقة جداً (مئات الطبقات)، ظهرت مشكلة إن الأداء ببدأ "يخرب" مش بس يثبت.
- المشكلة: Vanishing Gradients وتدهور الأداء في الشبكات العميقة جداً.
- الحل (Residual Connection): بدل ما نخلي المعلومات تمر بسلاسل معقدة، بنعمل "طريق مختصر" (Skip Connection).
- النتيجة: المشاكل اختفت، وصار بإمكاننا نبني شبكات فيها ١٥٠ طبقة وأكثر وأداؤها خرافي.
ResNet: Skip Connections Slide 41
Slide 41
الرياضيات وراء الـ Residual 🧮🛣️
كيف بتشتغل الـ Residual Connection رياضياً؟
- Plain Network (العادية): xl = f(xl-1)
- ResNet (المطورة): xl = f(xl-1) + xl-1

إضافة xl-1 (المدخل الأصلي) للمخرج بيخلي الشبكة تتعلم "الباقي" (Residual) بس، وهاض بيسهل عملية التدريب بشكل مرعب.
DenseNet (2016) Slide 42
Slide 42
الـ DenseNet: الكل بحكي مع الكل! 🕸️🗣️
هاي هي التطوير المنطقي للـ ResNet.
- الفكرة: بدل ما نوصل الطبقة باللي قبلها مباشرة بس، بنوصل كل طبقة بكل الطبقات اللي سبقتها.
- المعادلة: xl = f([x0, x1, ..., xl-1])
- الميزات: هاض الإشي بيقوي تدفق المعلومات والـ Gradient عبر الشبكة، وبيخلي الموديل يستفيد من ميزات الطبقات الأولى حتى في آخر الموديل.
DenseNet: Efficiency & Bottlenecks Slide 43
Slide 43
الـ DenseNet الشاطرة: ذكاء في التوفير 🧠💰
بالرغم من إنها بتشبك كل شي ببعضه، بس الـ DenseNet ذكية جداً في إدارة الموارد:
- Bottleneck Layer: بستخدموا فلاتر (1x1) قبل الفلاتر الكبيرة عشان يقللوا عدد المدخلات والحسابات.
- الأداء: بتعطي دقة زي الـ ResNet أو أحسن، بس بمواصفات "أخف":
* Fewer Parameters: أوزان أقل بالنموذج.
* Less Computation (FLOPs): حسابات أقل، يعني أسرع في التنفيذ.
GoogLeNet/Inception (2014): Wider is Better Slide 44
Slide 44
جوجل قررت "تعرّض" الموديلات ↔️🏢
جماعة جوجل سألوا حالهم: بدل ما نطوّل الموديل بزيادة، ليش ما نعرّضه؟
- الفكرة: بدل ما نختار حجم فلتر واحد (مثلاً 3x3)، بنستخدم كذا حجم بنفس الوقت وبشكل متوازي.
- Inception Block: هاي الوحدة بتعمل 1x1 و 3x3 و 5x5 و pooling كلهم مع بعض، وبعدين بتجمع النتائج. هاد بخلي الموديل يتعرف على الميزات بأحجام مختلفة.
Inception: Reducing Cost with 1x1 Conv Slide 45
Slide 45
توفير التكاليف بذكاء 💳📉
عشان الـ Inception ما يصير وزنه ثقيل جداً بسبب التشعبات:
- التحدي: استخدام فلاتر 5x5 مباشرة مكلف جداً حسابياً.
- الحل: حطوا طبقة (1x1) قبل الفلاتر الكبيرة عشان "تضغط" المعلومات وتقلل العمق قبل الانتقال للحسابات الثقيلة.
- الاستراتيجية: سموها split-transformation-merge (افلق، حوّل، ادمج).
ResNeXt (2016): Wider ResNet Slide 46
Slide 46
الـ ResNext: دمج القوة بالعرض 🧬⛓️
هاذ الموديل هو هجين بين قوة الـ **ResNet** وتشعب الـ **Inception**:
- Cardinality: هون الكلمة السرية. بدل ما نزيد العمق (Depth) أو العرض (Width)، بنزيد الـ Cardinality (عدد المسارات المتوازية داخل البلوك الواحد).
- النتيجة: أداء أقوى بكتير من الـ ResNet العادية مع الحفاظ على نفس مستوى التعقيد الحسابي تقريباً.
ConvNeXt (2022): The Return of CNNs Slide 47
Slide 47
رجعة الـ CNN بقوة للساحة! 🥊🔥
بعد ما طلعت الـ Vision Transformers (ViT) وصارت الكل يحكي فيها، رجعوا جماعة الـ CNN بـ ConvNeXt:
- تحديث التصميم: أخدوا الـ ResNet-50 القديمة وحدثوا تصميمها بأفكار مستوحاة من الـ Transformers (مثل الـ Layer Normalization والـ Large Kernels).
- الضربة القاضية: أثبتت الدراسات إن الـ ConvNeXt بتقدر تهزم الـ ViT وتتفوق عليها بالأداء، وعلمت الجميع إن الـ CNN لسا الها هيبتها.
ConvNeXt: Micro & Training Design Slide 48
Slide 48
سر الخلطة في الـ ConvNeXt 🥗🧪
مش بس التصميم اللي فرق، حتّى طريقة التدريب تطورت:
- Training Strategy: زودوا عدد الـ Epochs لـ ٣٠٠، واستخدموا الـ AdamW كمحسن (Optimizer).
- Data Augmentation: استخدموا تقنيات خرافية مثل Mixup و CutMix اللي بتخلط الصور ببعض عشان الموديل يصير أقوى.
- Inverted Bottleneck: فكرة ذكية بتخلي الشبكة تركز على الميزات في مساحة أوسع، وهاذ اللي خلى أداءها يكتسح الـ Transformers.
ConvNeXt: Macro vs Micro Design Slide 49
Slide 49
التفاصيل الصغيرة بتعمل فرق كبير 🤏✨
هون بنشوف كيف "نظّفوا" التصميم من جوا:
- Macro Design: غيروا طريقة توزيع الحسابات واستخدموا الـ Patchify (تقطيع الصورة لمربعات) زي الـ ViT.
- Micro Design:
* بدل الـ ReLU استخدموا الـ GELU.
* قللوا عدد الـ Norms والـ Activations عشان الشبكة تكون أنحف وأسرع.
* بدل الـ BatchNorm استخدموا الـ LayerNorm، وهاذ إشي كان مستحيل زمان في الـ CNN.
CNN for Downstream Applications Slide 50
Slide 50
وين بنستخدم كل هالعضلات؟ 🏋️‍♂️🏙️
بعد ما خلصنا من المعماريات، خلينا نشوف التطبيقات الواقعية:
- Image Segmentation (U-Net): لتقسيم الصور (مثلاً تحديد الأورام في صور الأشعة).
- Object Detection (YOLO): عشان تحديد الأجسام وحساب عددها وتتبع حركتها.
- Mobile Efficiency: موديلات مثل MobileNet و SqueezeNet بتخلينا نشغل الـ AI على الموبايل بسهولة وبدون ما يعلق.
U-Net (2015): Image Segmentation Slide 51
Slide 51
الـ U-Net: ملكة التفاصيل 👑📐
في الـ Semantic Segmentation، إحنا بدنا نعرف "كل بكسل" لمين برجع:
- الفكرة: الموديل بياخد الصورة، "بصغرها" عشان يفهم السياق، وبعدين "برجع بكبرها" عشان يرجع الدقة العالية للبكسلات.
- الشكل: الموديل جاي على شكل حرف U، والنصين مشبوكين ببعض بـ Skip Connections عشان المعلومات ما تضيع في النص.
U-Net: Up-convolution & Metrics Slide 52
Slide 52
كيف بنقيس شطارة الـ U-Net؟ 📏🤔
الـ U-Net بتستخدم حركتين فنيات:
- Up-convolution: عكس الكونفولوشن العادي، هاض بكبر الصورة وبرجع تفاصيلها.
- Metric (IOU): عشان نعرف الموديل صح، بنستخدم الـ Intersection over Union:
IOU = (Area of Interaction) / (Area of Union)
ببساطة: التقاطع بين توقع الموديل والصح مقسوم على مجموع مساحتهم. كل ما قرب الرقم لـ ١، كل ما كان الموديل شاطر (وU-Net جابت أرقام خرافية!).
MobileNet: Depth-wise Separate Convolution Slide 53
Slide 53
سرعة البرق على الموبايل 📱⚡
عشان تشغل CNN على الموبايل، لازم توفر في الحسابات. الـ MobileNet عملت ثورة بحركة ذكية:
- Vanilla Conv Cost: الطريقة التقليدية مكلفة جداً، كل فلتر بضرب كل القنوات (Channels) مرة وحدة.
- الحل (Depth-wise Separate): قسموا العملية لخطوتين:
* Depth-wise: كل فلتر بمسك قناة وحدة بس.
* Point-wise: بنستخدم فلتر 1x1 عشان نجمع النتائج ونغير عدد القنوات.
- Speed Up: الحسبة الرياضية بتقول إن الموديل صار أسرع بمقدار (1/Cout + 1/WK·HK). يعني توفير مرعب في الوقت والطاقة!
MobileNet: Building Blocks Comparison Slide 54
Slide 54
الـ Block العادي vs الـ Mobile Block 🏗️⚙️
خلينا نشوف الفرق في التصميم المعماري:
- Standard Block: عبارة عن Conv 3x3 متبوع بـ BN و ReLU. بلوك واحد ثقيل.
- MobileNet Block: جزؤوا البلوك لجزئين:
١. بلوك للـ Depthwise Conv مع الـ BN و الـ ReLU تبعونه.
٢. متبوع مباشرة ببلوك 1x1 Conv (Pointwise) وبرضه معاه BN و ReLU.
- النتيجة: نفس جودة النتائج تقريباً، بس بكسر من التكلفة الحسابية. هاذ اللي بخلي الـ AI يشتغل بسلاسة على موبايلك.