ML Learning Hub
التعلم العميقمتوسط

معماريات CNN: الكلاسيكية → ResNet → ViT

كاشفات الأنماط المحلية التي ترى الحواف ثم الملمس ثم الوجوه — بتراكم المرشحات

الشبكات الالتفافية من الصفر: عملية الالتفاف والتجميع والحقل الاستقبالي، ثم الكلاسيكية وInception وResNet (الاتصالات القافزة) ومحول الرؤية ViT.

55 min
14 مخططات
7 المفاهيم المغطاة

المتطلبات الأساسية

Neural Networks
Deep Learning Optimization

المفاهيم المغطاة

ConvolutionPoolingSkip ConnectionsInceptionResNetViTPatch Embeddings

الصيغ الرئيسية

الالتفاف

تمرير نواة K على المدخل I بحساب الضرب النقطي — تكتشف الأنماط المحلية

حجم الخرج

H=الارتفاع، k=حجم النواة، p=الحشو، s=الخطوة — يحدد الدقة المكانية للخرج

الاتصال القافز ResNet

الاتصال المتبقي: يُضيف المدخل مباشرةً للخرج — يحل مشكلة التدرج المتلاشي في العمق

محاكاة تفاعلية

Loading visualization…
Loading visualization…

هندسة النموذج

Loading visualization…
Loading visualization…
Loading visualization…
🎯

لماذا تهم البنية المكانية

motivation

تسطيح صورة 224×224 إلى متجه يفقد جميع العلاقات المكانية — البكسل (0,0) ليس له علاقة خاصة بـ(0,1) في شبكة كثيفة. تستغل CNNs ثبات الترجمة: الفلتر الذي يكتشف حافة أفقية يعمل بنفس الطريقة سواء كانت الحافة في أعلى أو أسفل الصورة. هذا التشارك في الأوزان يقلل المعاملات بشكل جذري ويمنح CNNs تحيزها الاستنتاجي للرؤية.

💡

تسلسل الميزات: من الحواف إلى الأشياء

intuition

كاشفات الطبقة 1: حواف موجهة وبقع لونية (فلاتر شبيهة بـGabor). الطبقة 2: قوام مبني من تركيبات الحواف. الطبقة 3: أجزاء الأجسام (عجلات، عيون، نوافذ). الطبقات الأخيرة: أجسام كاملة. هذا التسلسل وصّفه Zeiler و Fergus (2013) بـDeconvNets — يمكن رؤية ما 'تراه' كل طبقة بالحرف.

في CNN عميق بـ3 طبقات، كل خلية عصبية للمخرج لها حقل استقبال (k-1)·3+1 بكسل — مثال: ثلاث طبقات 3×3 تعطي حقلاً فعالاً 7×7، مطابق لـ7×7 لكن بمعاملات أقل وغير خطيات أكثر.

عملية الالتفاف

math

الالتفاف ثنائي الأبعاد يُمرر نواة K×K على المدخل محسوباً الضرب النقطي في كل موضع. مع C_in قنوات إدخال وC_out قنوات إخراج، لدينا C_in × C_out × K² معاملاً — أقل بكثير من طبقة متصلة بالكامل (H·W·C_in × H·W·C_out معاملاً).

مخرج الالتفاف وعدد المعاملات
🔬

ResNet: حل مشكلة التدهور

deepdive

إضافة المزيد من الطبقات إلى CNN عادي لا يجب أن يضر (تعيين الهوية). لكن الشبكات العميقة جداً تدرّبت بشكل أسوأ. وجد He وآخرون (2015) السبب: صعوبة التحسين لا الإفراط. الاتصالات المتبقية تتيح للشبكة تعلم البواقي F(x) = H(x) - x بدلاً من H(x) مباشرة. إذا كانت الهوية هي التعيين الأمثل، تدفع الشبكة F(x) → 0. هذا يجعل تدريب 100+ طبقة ممكناً.

الكتلة المتبقية: المخرج = الباقي المتعلَّم + اختصار الهوية
⚙️

وصفة التدريب الحديثة (ResNet / EfficientNet)

algorithm
1

التوسيع: RandomHorizontalFlip، RandomCrop، ColorJitter، MixUp/CutMix

2

البنية: استخدام الأوزان المُدرَّبة مسبقاً (ImageNet) — دائماً أفضل من التهيئة العشوائية

3

جدول إلغاء التجميد: تجميد العمود الفقري، تدريب الرأس لـ5 حقب، ثم إلغاء تجميد الكل

4

معدل التعلم: تضاؤل LR حسب الطبقة (الطبقات الأعمق = LR × 0.1 لكل كتلة)

5

التنظيم: Dropout قبل FC الأخير، weight decay 1e-4، label smoothing 0.1

6

المحسِّن: AdamW + CosineAnnealing مع إحماء

</>

ضبط EfficientNet للتصنيف المخصص

code
python38 lines
import timm
import torch.nn as nn
import torch.optim as optim

class="tok-comment"># ── Config ─────────────────────────────────────────────────────────────
num_classes = class="tok-num">10   class="tok-comment"># e.g. class="tok-num">10-class image dataset

class="tok-comment"># Load pretrained EfficientNet-B4
model = timm.create_model(
    class="tok-str">'efficientnet_b4',
    pretrained=True,
    num_classes=class="tok-num">0         class="tok-comment"># Remove classifier head
)

class="tok-comment"># Freeze backbone initially
for param in model.parameters():
    param.requires_grad = False

class="tok-comment"># Custom head
classifier = nn.Sequential(
    nn.AdaptiveAvgPool2d(class="tok-num">1),
    nn.Flatten(),
    nn.BatchNorm1d(model.num_features),
    nn.Dropout(class="tok-num">0.4),
    nn.Linear(model.num_features, num_classes)
)

class="tok-comment"># Stage class="tok-num">1: train head only (high LR)
optimizer = optim.AdamW(classifier.parameters(), lr=class="tok-num">1e-3)
class="tok-comment"># ... train for class="tok-num">5 epochs

class="tok-comment"># Stage class="tok-num">2: unfreeze + fine-tune all (low LR)
for param in model.parameters():
    param.requires_grad = True
optimizer = optim.AdamW([
    {class="tok-str">'params': model.parameters(), class="tok-str">'lr': class="tok-num">1e-5},
    {class="tok-str">'params': classifier.parameters(), class="tok-str">'lr': class="tok-num">1e-4}
])

?اختبار المعرفة

يتم حفظ التقدم في متصفحك — لا حاجة لحساب.

تحتاج مهندس ذكاء اصطناعي أو عالم بيانات؟

أبني نماذج تعلم آلي مخصصة، ووكلاء ذكاء اصطناعي، ورؤية حاسوب، وأتمتة — من الفكرة إلى الإنتاج.