أسئلة أساسيات ML
التحسين والتدريب
5 دقيقة للقراءة
متغيرات Gradient Descent
سؤال المقابلة: "اشرح خوارزميات gradient descent المختلفة والمقايضات."
1. Batch Gradient Descent (BGD)
- الإيجابيات: تقارب مستقر، تدرج دقيق
- السلبيات: بطيء للبيانات الكبيرة، كثيف الذاكرة
- الاستخدام: مجموعات بيانات صغيرة
2. Stochastic Gradient Descent (SGD)
- الإيجابيات: تحديثات سريعة، يمكن الهروب من الحد الأدنى المحلي
- السلبيات: تحديثات صاخبة، لا يتقارب بدقة
- الاستخدام: التعلم عبر الإنترنت، مجموعات بيانات كبيرة
3. Mini-Batch SGD
- الإيجابيات: أفضل ما في العالمين، صديق لـ GPU
- السلبيات: يتطلب ضبط حجم الدفعة
- الاستخدام: الأكثر شيوعاً في الممارسة
4. Momentum
- الفائدة: يتسارع في الاتجاه ذي الصلة، يخمد التذبذبات
- Hyperparameter: β عادة 0.9
5. Adam
- الإيجابيات: معدلات تعلم تكيفية، يعمل جيداً خارج الصندوق
- الافتراضيات: β1=0.9, β2=0.999, ε=1e-8
- الاستخدام: الاختيار الافتراضي لمعظم التعلم العميق
استراتيجيات معدل التعلم
سؤال المقابلة: "كيف تختار وتضبط معدل التعلم؟"
1. معدل تعلم ثابت
- بسيط لكن دون المستوى الأمثل
2. Step Decay
lr = initial_lr * (decay_rate ** (epoch // drop_every))
3. Exponential Decay
lr = initial_lr * exp(-decay_rate * epoch)
4. Cosine Annealing
- تسوس سلس يتبع منحنى جيب التمام
- يُستخدم في النماذج الحديثة
5. Learning Rate Warmup
- ابدأ صغيراً، زد خطياً للهدف
- يمنع عدم الاستقرار المبكر
- شائع في تدريب transformer
دوال الخسارة
سؤال المقابلة: "ما دالة الخسارة التي يجب استخدامها للمهمة X؟"
التصنيف
Binary Cross-Entropy:
- الاستخدام: تصنيف ثنائي مع إخراج sigmoid
Categorical Cross-Entropy:
- الاستخدام: تصنيف متعدد الفئات مع إخراج softmax
Focal Loss:
- يقلل وزن الأمثلة السهلة
- الاستخدام: عدم توازن فئة شديد
الانحدار
Mean Squared Error (MSE):
- حساس للقيم الشاذة
- يعاقب الأخطاء الكبيرة أكثر
Mean Absolute Error (MAE):
- قوي للقيم الشاذة
- وزن متساوٍ لجميع الأخطاء
Huber Loss:
- يجمع MSE وMAE
- L2 للأخطاء الصغيرة، L1 للكبيرة
أفضل ممارسات التدريب
1. معالجة البيانات المسبقة
- التطبيع (mean=0، std=1)
- تحجيم Min-max
2. تهيئة الأوزان
- Xavier/Glorot لـ tanh/sigmoid
- He Initialization لـ ReLU
3. Batch Normalization
- يطبع مدخلات الطبقة
- يسمح بمعدلات تعلم أعلى
4. Gradient Clipping
- يمنع تدرجات منفجرة
5. Early Stopping
- يراقب خسارة التحقق
- يوقف عند توقف التحسن
سيناريوهات التصحيح في المقابلة
س: "خسارة التدريب تستقر عند قيمة عالية. ما الخطأ؟" ج:
- معدل تعلم منخفض جداً → زد
- تهيئة سيئة → جرّب He/Xavier
- تدرج متلاشٍ → تحقق من التنشيطات، أضف batch norm
- نموذج بسيط جداً → زد السعة
س: "خسارة التدريب تنخفض لكن خسارة التحقق تزداد؟" ج:
- Overfitting
- الحلول: Dropout، L2 regularization، بيانات أكثر، early stopping
س: "الخسارة NaN أو تنفجر؟" ج:
- معدل تعلم مرتفع جداً → قلل
- تدرجات منفجرة → Gradient clipping
- قسمة على صفر → أضف epsilon
- إدخال غير مطبّع → طبّع الميزات
النقاط الرئيسية
- Adam افتراضي - يعمل جيداً لمعظم المشاكل
- LR أهم hyperparameter - استخدم LR finder أو ابدأ بـ 3e-4
- طبّع المدخلات - حاسم للتقارب
- He init لـ ReLU - يمنع تدرجات متلاشية
- راقب خسارتي التدريب والتحقق - Early stopping يمنع overfitting
:::