CNN & RNN Overview
Slide 01
Chapter Outline: What we will cover
Slide 02
في هاض الجزء رح نغوص في عالم الشبكات العصبية العميقة المتخصصة. الشابتر مقسوم لجزئين أساسيين:
1. الـ RNN: رح نفهم أساسيات الشبكات المتكررة، ونشوف وحوش زي
الـ LSTM والـ GRU وكيف بنستخدمهم
في تطبيقات الداتا المتسلسلة.
2. الـ CNN: رح نحكي عن أساسيات شبكات الرؤية، ونمر على
معمارياتها الأسطورية زي ResNet و UNet و MobileNet، ونشوف وين
بنستعملهم في حياتنا.
Training: Forward & Backward Pass
Slide 03
Introduction to Recurrent Neural Networks (RNN)
Slide 04
الـ
Recurrent Neural Networks (RNNs) بتشتغل بطريقة مختلفة عن
الشبكات اللي تعودنا عليها.
الشبكات العادية بتاخد كل المدخلات مرة وحدة وبتمشي باتجاه واحد (One
Direction). بس في الـ RNN، المعلومات "بتلف وبترجع"
للنظام بعد كل خطوة. تخيلها زي قراءة جملة؛ عشان تتوقع الكلمة الجاية، لازم تتذكر الكلمات اللي
مرت عليك قبل، مش بس الكلمة الحالية.
RNNs: The Power of Memory
Slide 05
الـ
RNNs بتسمح للشبكة إنها "تتذكر" المعلومات السابقة عن طريق تمرير
مخرجات خطوة معينة للخطوة اللي بعدها.
عشان تتذكر، بنحتاج "ذاكرة" (Memory). هاض الإشي بيساعد الشبكة
تفهم "السياق" (Context) للي صار قبل، وبالتالي بطلع توقعات أدق
بكثير، زي لما نقرر شو الكلمة الأنسب لتكملة جملة معينة بناءً على تاريخ الجملة.
RNN vs Feedforward: Key Differences
Slide 06
الـ
Feedforward Neural Networks (FNNs) بتعالج البيانات في اتجاه
واحد من المدخلات للمخرجات، وبدون ما تحتفظ بأي معلومة من المدخلات القديمة.
المشكلة: الـ FNN بتعاني
مع البيانات المتسلسلة لأنها "بدون ذاكرة". الـ RNN بتحل هاي
المشكلة عن طريق إضافة حلقات (Loops) بتسمح للمعلومات ترجع وتغذي
الشبكة، وهيك بصير عندها قدرة على فهم السياق.
Visual Comparison: RNN vs Feedforward
Slide 07
الرسمة بوضوح بكتير الفرق:
- (b) Feed-Forward: خطوط مستقيمة من الشمال لليمين. كل مدخل
بطلع مخرج وانتهى.
- (a) Recurrent: بنشوف "حلقات" دائرية فوق النيورونات. هاي
الحلقات هي اللي بتخلي المعلومة "تكرر" نفسها وتدخل في الحسبة الجاية. !
RNN vs FNN: Data & Applications
Slide 08
مقارنة في نوع الداتا والتطبيق:
- FNN: بتنفع للداتا الثابتة الطول (Fixed-length) زي تصنيف الصور.
- RNN: بتلمع في الداتا المتسلسلة (Sequential) زي الكلام، الترجمة، وتوقع أسعار الأسهم. السياق
والترتيب هون هم كل إشي.
RNN Unrolling (Unfolding through Time)
Slide 09
الـ RNN في الحقيقة هي "لوب" (حلقة)، بس عشان نقدر نحسبها رياضياً، لازم "نفكها" (
Unfold).
الفكرة: السلايد بفرجينا كيف الـ Rolled RNN بتتحول لـ Unrolled RNN.
كل مربع بيمثل خطوة زمنية (t-1, t, t+1).
بنشوف الأوزان:
- U: وزن المدخلات (x).
- W: وزن المخرجات (o).
- V: وزن الحالة المخفية السابقة (الذاكرة اللي بتنتقل
عبر الزمن).
Backpropagation Through Time (BPTT)
Slide 10
عشان الشبكة تتعلم، لازم ترجع بالعكس وتصلح الأوزان بناءً على الخطأ (
Loss
L). في الـ RNN الموضوع أصعب لأن الخطأ مربوط بالزمن.
العملية: بنحسب الـ Loss
الإجمالي اللي هو مجموع الأخطاء عند كل خطوة زمنية (L = Σ
Li). بعدين الـ Backpropagation Through
Time بتمشي بالعكس عبر كل الخطوات السابقة عشان تعدل الأوزان (U, V, W). هاي هي الطريقة اللي الشبكة بتفهم فيها إن "غلطي هسا"
يمكن كان سببه "إشي صار قبل ٥ خطوات".
Gradient Vanishing & Explosion
Slide 11
لما نكون عنا تسسلسلات طويلة، عملية الـ
Backpropagation بتواجه
مشكلتين "قاتلات":
1. Gradient Vanishing (التلاشي): قيمة التعديل بتصغر
بشكل مرعب لحد ما تصير صفر. هون الشبكة "بتنسى" تماماً المعلومات البعيدة وبتبطل تتعلم منها.
2. Gradient Explosion (الانفجار): قيمة التعديل بتكبر بشكل
جنوني لحد ما توصل لـ NaN (غير معرف)، وهاض بيخلي الموديل غير
مستقر ويخرب التدريب كله.
Problems of Vanilla (Original) RNNs
Slide 12
الـ RNN الأصلية (الـ Vanilla) عندها مشاكل بتمنعها من أداء المهام المعقدة:
- صعوبة التعلم: بسبب الـ Vanishing Gradient، التحديثات بتصير صغيرة جداً وما بتأثر
بالأوزان.
- عدم الاستقرار: الـ Exploding
Gradient بيخلي الأوزان تتذبذب بشكل عشوائي.
- Long Range Memory: هي "ذاكرتها قصيرة". المفروض تتذكر
معلومات من أول الجملة لعشان تستخدمها في آخرها، بس عملياً بتفشل في هاض الإشي. هاض هو السبب
اللي خلانا نخترع الـ LSTM لاحقاً.
Long Short-Term Memory (LSTM)
Slide 14
الـ
LSTM هي نوع خاص من الـ RNN تم اختراعه عشان يحل مشكلة الـ
Gradient Vanishing.
السر: استخدام نظام بوابات (Gated
Structure) بتقدر تتحكم شو "تحفظ" وشو "تنسى". هاي البوابات هي عبارة عن شبكات عصبية
صغيرة بتستخدم دالة الـ Sigmoid (اللي بتعطي قيم بين ٠ و ١) عشان
تقرر هل تمرر المعلومة أو تمنعها.
LSTM: Practical Implementation
Slide 15
هاي الرسمة هي "العمود الفقري" للـ LSTM. بنشوف فيها:
- Cell State (Ct): هاذ هو الطريق السريع اللي بتمشي
عليه المعلومات عبر الزمن مع تعديلات بسيطة.
- Forget Gate (ft): المحبس اللي بقرر شو المعلومات
القديمة اللي ما عاد نحتاجها.
- Input Gate (it): المحبس اللي بقرر شو
المعلومات الجديدة اللي رح ندخلها على الذاكرة.
- Output Gate (ot): المحبس اللي بقرر شو نطلّع
مخرجات للخطوة الجاية.
Mathematical Formulations
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
كل بوابة إلها مهمة محددة:
- Input Gate (it): بتتحكم بكمية "المعلومات
الجديدة" اللي رح تتدفق جوا الـ Cell State.
- Forget Gate (ft): هي اللي بتحدد شو المعلومات
اللي لازم "نرميها" من الـ Cell State لأنها بطلت مفيدة.
- Process Input (~Ct): بتجهز "قيم مرشحة" جديدة
(Candidate Values) عشان تنضاف للذاكرة.
Roles of Different Gates in LSTM (Cont.)
Slide 18
بنكمل مع باقي العمليات:
- Cell Update (Ct): هي عملية "دمج" بين القديم
والجديد. بنضرب القديم بالـ Forget Gate وبنجمعله الجديد مضروب بالـ
Input Gate.
- Output (ht): بقرر شو المخرج النهائي (Hidden State) بناءً على حالة الخلية الحالية وبوابة المخرجات.
الخلاصة: الـ LSTM بخليك تتذكر المعلومات المهمة لفترات
طويلة جداً وتنسى "الحشو" اللي ما إله داعي.
Gated Recurrent Unit (GRU)
Slide 20
الـ
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
كيف بتشتغل بوابات الـ GRU؟
- Reset Gate (rt): وظيفته يحدد كمية "المعلومات
القديمة" اللي لازم ننساها. هاذ بيسمح للموديل إنه يرمي أي معلومة مالها داعي من الماضي عشان يركز
على المهم.
- Update Gate (zt): بيعمل توازن (Balance) بين المدخلات الجديدة وبين الذاكرة القديمة، وبقرر كم لازم
يضل من الحالة القديمة مقابل المدخل الجديد.
Roles of GRU (Cont.)
Slide 22
تكملة لعمليات الـ GRU:
- Process Input (~ht): بيجهز قيم "مرشحة" لتمثيل
الحالة المخفية الجديدة، وبتكون متأثرة بـ Reset Gate.
- Hidden State Update: هون السحر؛ بنجمع الحالة القديمة (مضروبة
بـ 1-z) مع الحالة الجديدة المرشحة (مضروبة بـ z).
- Output (ht): الحالة المخفية المحدثة هي نفسها
المخرج، وهي بتمثل الذاكرة الحالية للشبكة.
Compare LSTM with GRU (Part 1)
Slide 23
مين أحسن؟ المقارنة بتبلش هون:
- Complexity (التعقيد): الـ LSTM أعقد بكتير (٣ بوابات)،
بينما الـ GRU أبسط (بوابتين).
- Memory (الذاكرة): الـ LSTM بحتاج ذاكرة أكبر بسبب كثرة الأوزان
والتعقيد.
- Training Time (وقت التدريب): الـ GRU أسرع في التدريب
لأن هيكله أبسط ومعادلاته أقل.
Compare LSTM with GRU (Part 2)
Slide 24
بقية المقارنة:
- Performance: الـ GRU ممكن تعطي أداء أحسن على الداتا
الصغيرة، بس الـ LSTM بتلمع في المهمات الصعبة والتسلسلات الطويلة جداً.
- Overfitting: الـ LSTM معرضة أكتر للـ Overfitting على الداتا الصغيرة لأن فيها أوزان كثير.
- Mechanism: الـ LSTM عندها Cell
State و Hidden State منفصلين، بينما الـ GRU عندها حالة
مخفية وحدة بس.
القرار: الاختيار بعتمد على نوع الداتا وحجمها والتطبيق
اللي بتشتغل عليه!
Advantages of GRU
Slide 25
الـ GRU إلها نقاط قوة بتخليها خيار ممتاز في حالات معينة:
- Faster Training (تدريب أسرع): لأن عدد الـ Parameters فيها أقل، هاض بيخلي تدريبها أسرع وبتحتاج موارد حاسوبية
أقل.
- Efficient on Smaller Datasets: الـ GRU بتقدر تلقط العلاقات
بين البيانات حتى لو حجم الداتا مش ضخم جداً، عكس الـ LSTM اللي "بتجوع" للداتا الكثير.
- Flexibility: بفضل نظام البوابات المبسط، عندها مرونة عالية في
إدارة الذاكرة قصيرة المدى وتوزيع المعلومات عبر الخطوات الزمنية بكفاءة.
Basics of CNN
Slide 28
الـ
Convolutional Neural Network (CNN) هي النوع الأساسي اللي بنستخدمه
في الـ
Computer Vision.
- الفكرة: هي تطوير للـ ANN العادية، بس بدل ما تتعامل مع
البيانات كخيوط، بتتعامل معها كـ Grid-like matrix (زي بكسلات
الصور).
- المُرشحات (Filters): الشبكة بتتعلم "فلاتر" معينة
(مصفوفات أوزان صغيرة) بتمشي على الصورة عشان تلقط ملامح معينة مثل الزوايا، الألوان، أو الأشكال
المعقدة.
- Feature maps: نواتج هاي الفلاتر بنسميها "خرائط الميزات" وهي
اللي بتمثل "فهم" الشبكة للصورة.
Layers Used to Build CNN
Slide 29
عشان تبني CNN، الصورة بتمر برحلة عبر طبقات مخصصة:
1. Conv Layer: لاستخلاص الميزات.
2. ReLU: دالة تفعيل بتخلي الـ Negative values تصير صفر عشان نضيف "غير خطية".
3. Pooling: تقليل أبعاد الصورة (تصغيرها) مع الحفاظ على أهم
المعلومات.
4. FC Layer (Fully Connected): هي الطبقة النهائية اللي "بتقرر"
شو نوع الصورة (سيارة، طيارة، حصان.. إلخ).
Basics of CNN: Operations
Slide 30
في عمليتين بتموا جوا الـ CNN:
- Convolution Operation: عملية ضرب (Dot Product) بين
الصورة والـ Filter. بنمشي الفلتر خطوة بخطوة وبنجمع النواتج عشان
نطلع الـ Feature Map.
- Pooling Operation: مثل الـ MaxPooling؛ بنختار أكبر قيمة في منطقة معينة بالصورة. ليش؟ عشان نصغر
حجم الحسابات ونركز على "أقوى" إشارة موجودة.
Variants of CNN
Slide 31
العلماء طوروا نسخ كثير من الـ CNN، وكل وحدة إلها ميزة:
- AlexNet/LeNet: البدايات الكلاسيكية.
- ResNet: اللي حلت مشكلة العمق باستخدام الـ Residual Connections.
- MobileNet: مصممة تكون خفيفة للموبايلات.
- U-Net: متخصصة في الـ Image
Segmentation.
قاعدة عامة: الموديلات العميقة (Deep) بتتذكر ميزات أعقد، والموديلات العريضة (Wide) بتتذكر ميزات أكثر.
Is Deeper Network always better?
Slide 32
المفروض كل ما زدنا طبقات تزيد الدقة، بس الواقع بيحكي غير هيك لسببين:
1. Overfitting: لما الموديل يصير "ببصم" البيانات بدل ما
يفهمها، فبفشل في التعميم على داتا جديدة.
2. Vanishing/Exploding Gradients: في الموديلات العميقة جداً،
قيم التحديث بتصير صفر أو بتنفجر، وهاض بيخرب التدريب.
الحل: بنستخدم تقنيات مثل Batch
Normalization والـ ReLU عشان نخفف من هاي المشاكل.
Is deeper Network always better? (Cont.)
Slide 33
تكملة لمشاكل الموديلات العميقة (Deeper Networks):
- Complexity: زيادة الطبقات بتعني تعقيد أكبر، وهاذ بيصعّب
عملية ضبط الـ Hyperparameters وبطوّل وقت التدريب.
- Diminishing Returns: بعد نقطة معينة، إضافة طبقات جديدة ما رح
تحسن الأداء بشكل ملحوظ، بالعكس ممكن تضيّع وقت وموارد عبث.
- Data Requirements: الموديلات العميقة "جوّاعة" داتا. إذا ما
عندك داتا كافية وبجودة عالية، الشبكة الضخمة رح تعمل Overfitting
وتفشل.
Summary of CNN Variants and Apps
Slide 34
بنشوف هون خريطة الطريق للـ CNN وكيف تطورت عبر السنين:
- التطور الزمني: بلشنا بـ LeNet-5 (قبل ٢٠١٢)، بعدين القفزة التاريخية بـ AlexNet (٢٠١٢)، ووصولاً لموديلات ذكية مثل ConvNeXt (٢٠٢٠).
- تطبيقات متخصصة:
* U-Net: لتقسيم الصور (Segmentation).
* YOLO: اللي الكل بعرفه لتحديد الأجسام (Object Detection).
* MobileNet: للموبايلات والأجهزة الضعيفة.
LeNet-5: 1988 to 1998
Slide 35
هاض الموديل هو اللي بدأ كل شي، صممه العبقري
Yann LeCun.
المواصفات القديمة:
- كان يستخدم Sigmoid كدالة تفعيل (قبل ما نكتشف الـ ReLU).
- كان يستخدم Average Pooling بدل الـ Max Pooling المشهور هسا.
- صُمم بالأصل عشان يقرأ الأرقام المكتوبة بالإيد (مثل الرموز البريدية).
ImageNet Dataset
Slide 36
عشان تدرب وحوش، لازمك داتا وحش!
شو هو؟ هو أضخم قاعدة بيانات صور في العالم (في وقتها).
- فيه أكثر من 15 مليون صورة مصنفة بدقة عالية.
- الصور موزعة على 22,000 تصنيف (من الكلاب والقطط للسيارات
والطيارات). هاض "البحر" هو اللي خلى موديلات الـ Deep Learning تنجح.
AlexNet (2012): GPUs are Here
Slide 37
في ٢٠١٢، الـ
AlexNet قلب الموازين في مسابقة ImageNet:
- GPU Power: كان أول موديل ضخم يتم تدريبه باستخدام كروت
الشاشة (GPUs)، وهاذ اللي سمح بتدريب شبكات عميقة جداً بوقت قياسي.
- الأرقام: الموديل كان فيه 60
مليون وزن (Parameter) و 650,000 عصبون.
تنبيه: الشبكة هاي ضخمة لدرجة إنها ممكن تحفظ الداتا
(Overfitting)، فعشان هيك لازم تكون حذر وتستخدم تقنيات تنظيم.
AlexNet: Technical Details
Slide 38
خلينا نشوف كيف بُنيت هاي الأسطورة:
- المكونات: بتتكون من ٥ طبقات Convolutional و٣ طبقات Fully
Connected.
- السرعة: كانت تستخدم الـ ReLU
بعد كل طبقة كونفولوشن، وهاذ سرع التدريب بـ ٦ أضعاف مقارنة بالـ Tanh.
- Pooling: فيها ٣ طبقات Max
Pooling عشان تصغر أبعاد المعلومات وتركز على المهم.
VGGNet (2014): Deeper is Better
Slide 39
في ٢٠١٤، جماعة VGG قرروا يرفعوا شعار "كل ما زاد العمق، زاد الأداء":
- VGG Block: ميزتها إنها استخدمت بلوكات ثابتة وسهلة، كل
بلوك فيه فلاتر صغيرة (3x3).
- الخلاصة: من خلال "تصفيف" هاي البلوكات فوق بعض، قدروا يوصلوا
لأعماق كبيرة (مثل VGG-16 و VGG-19) وطلعوا بنتيجة إن Deeper is
Better.
ResNet (2015): Residual Neural Network
Slide 40
لما الموديلات صارت عميقة جداً (مئات الطبقات)، ظهرت مشكلة إن الأداء ببدأ "يخرب" مش بس يثبت.
- المشكلة: Vanishing
Gradients وتدهور الأداء في الشبكات العميقة جداً.
- الحل (Residual Connection): بدل ما نخلي المعلومات تمر
بسلاسل معقدة، بنعمل "طريق مختصر" (Skip Connection).
- النتيجة: المشاكل اختفت، وصار بإمكاننا نبني شبكات فيها ١٥٠
طبقة وأكثر وأداؤها خرافي.
ResNet: Skip Connections
Slide 41
كيف بتشتغل الـ
Residual Connection رياضياً؟
- Plain Network (العادية): xl = f(xl-1)
- ResNet (المطورة): xl = f(xl-1) +
xl-1
إضافة xl-1 (المدخل الأصلي) للمخرج بيخلي الشبكة
تتعلم "الباقي" (Residual) بس، وهاض بيسهل عملية التدريب بشكل مرعب.
DenseNet (2016)
Slide 42
هاي هي التطوير المنطقي للـ ResNet.
- الفكرة: بدل ما نوصل الطبقة باللي قبلها مباشرة بس، بنوصل
كل طبقة بكل الطبقات اللي سبقتها.
- المعادلة: xl = f([x0, x1,
..., xl-1])
- الميزات: هاض الإشي بيقوي تدفق المعلومات والـ Gradient عبر الشبكة، وبيخلي الموديل يستفيد من ميزات الطبقات الأولى
حتى في آخر الموديل.
DenseNet: Efficiency & Bottlenecks
Slide 43
بالرغم من إنها بتشبك كل شي ببعضه، بس الـ
DenseNet ذكية جداً في إدارة
الموارد:
- Bottleneck Layer: بستخدموا فلاتر (1x1) قبل الفلاتر
الكبيرة عشان يقللوا عدد المدخلات والحسابات.
- الأداء: بتعطي دقة زي الـ ResNet أو أحسن، بس بمواصفات "أخف":
* Fewer Parameters: أوزان أقل بالنموذج.
* Less Computation (FLOPs): حسابات أقل، يعني أسرع في
التنفيذ.
GoogLeNet/Inception (2014): Wider is Better
Slide 44
جماعة جوجل سألوا حالهم: بدل ما نطوّل الموديل بزيادة، ليش ما نعرّضه؟
- الفكرة: بدل ما نختار حجم فلتر واحد (مثلاً 3x3)، بنستخدم كذا
حجم بنفس الوقت وبشكل متوازي.
- Inception Block: هاي الوحدة بتعمل 1x1 و 3x3 و 5x5 و pooling
كلهم مع بعض، وبعدين بتجمع النتائج. هاد بخلي الموديل يتعرف على الميزات بأحجام مختلفة.
Inception: Reducing Cost with 1x1 Conv
Slide 45
عشان الـ
Inception ما يصير وزنه ثقيل جداً بسبب التشعبات:
- التحدي: استخدام فلاتر 5x5 مباشرة مكلف جداً حسابياً.
- الحل: حطوا طبقة (1x1) قبل الفلاتر الكبيرة عشان "تضغط"
المعلومات وتقلل العمق قبل الانتقال للحسابات الثقيلة.
- الاستراتيجية: سموها split-transformation-merge (افلق، حوّل، ادمج).
ResNeXt (2016): Wider ResNet
Slide 46
هاذ الموديل هو هجين بين قوة الـ **ResNet** وتشعب الـ **Inception**:
- Cardinality: هون الكلمة السرية. بدل ما نزيد العمق
(Depth) أو العرض (Width)، بنزيد الـ Cardinality (عدد المسارات
المتوازية داخل البلوك الواحد).
- النتيجة: أداء أقوى بكتير من الـ ResNet العادية مع الحفاظ على
نفس مستوى التعقيد الحسابي تقريباً.
ConvNeXt (2022): The Return of CNNs
Slide 47
بعد ما طلعت الـ
Vision Transformers (ViT) وصارت الكل يحكي فيها، رجعوا
جماعة الـ CNN بـ
ConvNeXt:
- تحديث التصميم: أخدوا الـ ResNet-50 القديمة وحدثوا
تصميمها بأفكار مستوحاة من الـ Transformers (مثل الـ Layer Normalization والـ Large Kernels).
- الضربة القاضية: أثبتت الدراسات إن الـ ConvNeXt بتقدر تهزم الـ ViT وتتفوق عليها بالأداء، وعلمت الجميع إن
الـ CNN لسا الها هيبتها.
ConvNeXt: Micro & Training Design
Slide 48
مش بس التصميم اللي فرق، حتّى طريقة التدريب تطورت:
- Training Strategy: زودوا عدد الـ Epochs لـ ٣٠٠، واستخدموا الـ AdamW
كمحسن (Optimizer).
- Data Augmentation: استخدموا تقنيات خرافية مثل Mixup و CutMix اللي بتخلط الصور ببعض
عشان الموديل يصير أقوى.
- Inverted Bottleneck: فكرة ذكية بتخلي الشبكة تركز على الميزات
في مساحة أوسع، وهاذ اللي خلى أداءها يكتسح الـ Transformers.
ConvNeXt: Macro vs Micro Design
Slide 49
هون بنشوف كيف "نظّفوا" التصميم من جوا:
- Macro Design: غيروا طريقة توزيع الحسابات واستخدموا الـ
Patchify (تقطيع الصورة لمربعات) زي الـ ViT.
- Micro Design:
* بدل الـ ReLU استخدموا الـ GELU.
* قللوا عدد الـ Norms والـ Activations عشان الشبكة تكون أنحف وأسرع.
* بدل الـ BatchNorm استخدموا الـ LayerNorm، وهاذ إشي كان
مستحيل زمان في الـ CNN.
CNN for Downstream Applications
Slide 50
بعد ما خلصنا من المعماريات، خلينا نشوف التطبيقات الواقعية:
- Image Segmentation (U-Net): لتقسيم الصور (مثلاً تحديد
الأورام في صور الأشعة).
- Object Detection (YOLO): عشان تحديد الأجسام وحساب عددها وتتبع
حركتها.
- Mobile Efficiency: موديلات مثل MobileNet و SqueezeNet بتخلينا نشغل
الـ AI على الموبايل بسهولة وبدون ما يعلق.
U-Net (2015): Image Segmentation
Slide 51
في الـ
Semantic Segmentation، إحنا بدنا نعرف "كل بكسل" لمين برجع:
- الفكرة: الموديل بياخد الصورة، "بصغرها" عشان يفهم السياق،
وبعدين "برجع بكبرها" عشان يرجع الدقة العالية للبكسلات.
- الشكل: الموديل جاي على شكل حرف U، والنصين مشبوكين ببعض بـ Skip
Connections عشان المعلومات ما تضيع في النص.
U-Net: Up-convolution & Metrics
Slide 52
الـ 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
عشان تشغل 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
خلينا نشوف الفرق في التصميم المعماري:
- Standard Block: عبارة عن Conv 3x3 متبوع بـ BN و ReLU.
بلوك واحد ثقيل.
- MobileNet Block: جزؤوا البلوك لجزئين:
١. بلوك للـ Depthwise Conv مع الـ BN و الـ ReLU تبعونه.
٢. متبوع مباشرة ببلوك 1x1 Conv (Pointwise) وبرضه معاه BN و
ReLU.
- النتيجة: نفس جودة النتائج تقريباً، بس بكسر من التكلفة
الحسابية. هاذ اللي بخلي الـ AI يشتغل بسلاسة على موبايلك.