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