Overfitting
يحدث فرط التكيّف عندما يحفظ النموذج بيانات التدريب، بما فيها الضوضاء، ويعجز عن التعامل مع بيانات جديدة. تعرّف إلى طرق اكتشافه والأساليب التي تمنعه.
يحدث فرط التكيّف عندما يلائم نموذج التعلم الآلي بيانات التدريب بدقة مفرطة، فيتعلّم ضوضاء تلك الأمثلة وخصائصها العرضية إلى جانب الأنماط الحقيقية. ويحقق النموذج مفرط التكيّف نتائج جيدة على البيانات التي دُرّب عليها، وأداءً أسوأ بوضوح على البيانات الجديدة؛ ويقيس حجم هذه الفجوة شدة فرط تكيّفه. ووفق مصطلحات الانحياز والتباين، فإن فرط التكيّف يعني تباينًا مرتفعًا: إذ تعتمد تنبؤات النموذج أكثر مما ينبغي على العينات المحددة التي صادفها.
التعرّف على فرط التكيّف#
تتمثل العلامة الواضحة في اتساع الفجوة بين أداء بيانات التدريب وبيانات التحقق. فعلى منحنيات التعلم المرسومة لكل حقبة، تستمر خسارة التدريب في الانخفاض، بينما تستوي خسارة التحقق ثم ترتفع، وتتوقف مقاييس التحقق مثل متوسط الدقة المتوسطة (mAP) عن التحسن أو تتراجع. ويعرض المثال الكلاسيكي المصغّر ملاءمة كثيرات حدود بدرجتين مختلفتين إلى 12 نقطة مشوشة مأخوذة من موجة جيبية:
import numpy as np
from numpy.polynomial import Polynomial
rng = np.random.default_rng(0)
# 12 noisy training points from a sine wave, plus clean test points
x_train = rng.uniform(0, 1, 12)
y_train = np.sin(2 * np.pi * x_train) + rng.normal(0, 0.2, 12)
x_test = np.linspace(0, 1, 200)
y_test = np.sin(2 * np.pi * x_test)
for degree in (3, 9):
fit = Polynomial.fit(x_train, y_train, degree)
train_mse = np.mean((fit(x_train) - y_train) ** 2)
test_mse = np.mean((fit(x_test) - y_test) ** 2)
print(f"Degree {degree:2d}: train MSE {train_mse:.4f}, test MSE {test_mse:.4f}")تتمتع كثيرة الحدود من الدرجة 9 بمرونة كافية للانحناء نحو الضوضاء، ما يخفض خطأ التدريب من 0.0356 إلى 0.0148، لكنه يرفع خطأ الاختبار عشرة أضعاف، من 0.0182 إلى 0.1859.
فرط التكيّف مقابل قصور التكيّف#
قصور التكيّف هو الإخفاق المعاكس: إذ يكون النموذج بسيطًا أكثر من اللازم، أو مدرّبًا مدة أقصر مما ينبغي، فلا يلتقط الأنماط في البيانات، ويكون أداؤه ضعيفًا على بيانات التدريب والتحقق معًا. وتُبيّن مقارنة الخطأين الحالتين وتوجّه إلى حلول مختلفة.
الأسباب الشائعة#
- سعة كبيرة جدًا مقارنةً بالبيانات: يمكن لـشبكة عصبية تضم ملايين المعلمات أن تحفظ بضع مئات من الصور بالكامل.
- بيانات مشوشة أو موسومة بتسميات خاطئة: تمنح الصناديق المفقودة والفئات الخاطئة والقيم الشاذة النموذج أخطاءً ليلائمها، مع أنها غير موجودة في العالم الحقيقي.
- التدريب لمدة طويلة جدًا: بعد تعلّم الأنماط المفيدة، ينصرف التدريب في الحقب الإضافية غالبًا إلى ملاءمة ما تبقى من الضوضاء.
- بيانات تدريب محدودة التنوع: قد يعتمد كاشف دُرّب على صور نهارية من كاميرا واحدة على خلفية تلك الكاميرا وإضاءتها، ويفوّت الأجسام في موقع جديد.
الوقاية من فرط التكيّف#
- بيانات أكثر وأكثر تنوعًا: تُعد الأمثلة الحقيقية الإضافية الحل الأكثر مباشرة، ويضاعف تعزيز البيانات التنوع بقلب الصور وتحجيمها وإعادة تلوينها ومزجها.
- التنظيم: يعاقب اضمحلال الأوزان الأوزانَ الكبيرة، بينما يعطّل الإسقاط الوحدات عشوائيًا أثناء التدريب كي لا تصبح أي سمة أساسية لا غنى عنها.
- نماذج أصغر أو مدرّبة مسبقًا: يتيح النموذج الأصغر مساحة أقل للحفظ، كما يقلل التعلّم بالنقل مع تجميد الطبقات المبكرة عدد الأوزان التي يجب تعلّمها من مجموعة بيانات صغيرة.
- الإيقاف المبكر: يمنع تقييم بيانات التحقق بعد كل حقبة وإيقاف التدريب بمجرد توقف النتيجة عن التحسن النموذجَ من مواصلة التدريب على الضوضاء.
- تقييم نزيه: يوفّر التحقق المتقاطع تقديرًا أوثق لـخطأ التعميم في مجموعات البيانات الصغيرة، وتكشف مجموعة اختبار منفصلة فرط التكيّف مع بيانات التحقق أثناء ضبط المعلمات الفائقة.
يطبّق تدريب Ultralytics YOLO الإيقاف المبكر عبر الوسيطة patience، التي تنهي التشغيل بعد ذلك العدد من الحقب من دون تحسن في ملاءمة التحقق (mAP50-95 للكشف)، ويحفظ أوزان أفضل حقبة باسم best.pt حتى إذا استمر التدريب حتى نهايته.
from ultralytics import YOLO
# حمّل نموذج YOLO26n مدرّبًا مسبقًا
model = YOLO("yolo26n.pt")
# اسمح بما يصل إلى 100 حقبة، لكن أوقف التدريب بعد 20 حقبة من دون تحسن في التحقق
results = model.train(data="coco8.yaml", epochs=100, patience=20)القيمة الافتراضية هي patience=100، وبالنسبة إلى مجموعات البيانات التي تقل عن 1,000 صورة، توصي إرشادات الضبط الدقيق لـYOLO26 باستخدام epochs=50 مع patience=20.
فرط التكيّف والمصطلحات ذات الصلة#
- تسرّب البيانات: تداخل بيانات التدريب والتقييم، ما يخفي فرط التكيّف. عندما تقع إطارات شبه مكررة من الفيديو نفسه في مجموعتي التدريب والتحقق، يظل أداء النموذج الذي حفظ مجموعة التدريب جيدًا على بيانات التحقق، ولا تظهر المشكلة إلا بعد النشر. يمنع ذلك التقسيم حسب الفيديو أو المشهد.
- التعلّم بالاختصارات: يعتمد النموذج على مؤشر زائف، مثل علامة مائية أو خلفية، موجود في بيانات التدريب والتحقق معًا. تبدو نتائج التحقق سليمة، لكن النموذج يخفق في البيانات الجديدة عند غياب ذلك المؤشر.










