تخطَّ إلى المحتوى

Regularization

التنظيم (Regularization) Regularization

التنظيم يضيف عقوبة لتعقيد النموذج لمنع فرط التعلّم — L1/L2 للأوزان، Dropout للشبكات العصبية، Early Stopping لمراقبة خطأ التحقّق.

التنظيم مصطلح شامل لتقنيات تقلل فرط التعلّم بإضافة قيود أو عقوبات على النموذج. الفكرة: نموذج أبسط يتعمّم أفضل من نموذج معقّد يحفظ البيانات. الأنواع الرئيسية: L2 (Ridge، عقوبة مجموع مربعات الأوزان)، L1 (Lasso، عقوبة مجموع القيم المطلقة — يفرز بعض الأوزان صفرًا)، ElasticNet (مزيج).

في الشبكات العصبية: Dropout (يجبر الشبكة على عدم الاعتماد على خلايا محددة بإسقاطها عشوائيًا أثناء التدريب)، BatchNorm (تطبيع activations لكل دفعة — له أثر تنظيمي)، Data Augmentation (تكبير البيانات بصريًا أو لغويًا)، Early Stopping (إيقاف التدريب حين يبدأ خطأ التحقق بالارتفاع).

مستوى التنظيم = معامل تشعبسي: C (عكسي) في scikit-learn، weight_decay في PyTorch. قيمة صغيرة جدًا = نموذج منظّم بشدة (قد يقترب من underfitting)، قيمة كبيرة جدًا = تنظيم ضعيف (قد يقترب من overfitting).

الصياغة

L2:  loss + λ · Σ w²
L1:  loss + λ · Σ |w|
Dropout: في التدريب، كل خلية تُسقط باحتمال p
Early Stopping: حفظ أفضل نموذج حسب val_loss

📄 مثال

import torch.nn as nn

# L2 regularization في PyTorch عبر AdamW
# (weight_decay يُنفّذ L2 regularization بشكل صحيح)
# optimizer = torch.optim.AdamW(model.parameters(), weight_decay=1e-2)

# Dropout داخل الشبكة
model = nn.Sequential(
    nn.Linear(64, 32),
    nn.ReLU(),
    nn.Dropout(p=0.3),      # يُسقط 30% من الخلايا عشوائيًا أثناء التدريب
    nn.Linear(32, 16),
    nn.ReLU(),
    nn.Dropout(p=0.3),
    nn.Linear(16, 1)
)

# Dropout لا يعمل في evaluation — تأكد من model.eval() قبل التقييم

أهم النقاط

النقطةالوظيفة
L1 / Lassoعقوبة مجموع |w| — يدفع بعض الأوزان للصفر (feature selection تلقائي)
L2 / Ridgeعقوبة مجموع w² — يخفّض الأوزان الكبيرة بدل إصفارها
Dropoutإسقاط خلايا عشوائيًا أثناء التدريب — قوي للشبكات العصبية
Early Stoppingإيقاف التدريب حين يرتفع val_loss — أبسط تنظيم وأكثره فعالية

💡 نصائح عملية

  • model.eval() قبل التقييم/التنبؤ حيوي — Dropout/BatchNorm تتصرف بشكل مختلف في الـ eval، عدم التبديل يعطيك نتائج خاطئة
  • Early Stopping أبسط تنظيم يمكنك تطبيقه — احفظ أفضل نموذج حسب val_loss، أوقف التدريب حين يرتفع

⚠️ أخطاء شائعة

  • نسيان model.eval() قبل التقييم — Dropout ما زال يعمل، فالنتائج سيئة جدًا ومضللة
  • تطبيق weight_decay على biases و LayerNorm — يقيد معاملات لا يجب تنظيمها (استخدم parameter groups في PyTorch)

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: PyTorch Documentation