Validation Data
بيانات التحقق هي جزء محجوب يُقيّم أثناء التطوير لضبط المعلمات الفائقة واختيار نقاط التحقق واكتشاف فرط التعلّم قبل الاختبار النهائي.
بيانات التحقق هي جزء من البيانات الموسومة يُستبعد من التدريب ويُقيَّم مرارًا أثناء التطوير لمقارنة النماذج، وضبط المعلمات الفائقة، واختيار نقاط حفظ النموذج، واكتشاف فرط التكيّف. ولا يحدّث النموذج أوزانه باستخدام بيانات التحقق مطلقًا، لذا تُظهر درجة التحقق مدى تعميم النموذج لما تعلّمه من بيانات التدريب على صور لم يسبق له رؤيتها. ومجموعة التحقق ومجموعة التطوير (dev) مترادفتان. وكل قرار يستند إلى درجات التحقق يدفع النموذج إلى التكيّف بدرجة أكبر قليلًا مع ذلك التقسيم تحديدًا، ولهذا تُحجز مجموعة اختبار منفصلة للحصول على التقدير النهائي غير المتحيز.
تقسيمات التدريب والتحقق والاختبار#
تُقسَّم مجموعة البيانات الموسومة عادةً إلى ثلاثة أجزاء:
- مجموعة التدريب: الأمثلة التي يكيّف المحسِّن الأوزان عليها، وتشكل عادةً 70 إلى 80 بالمئة من البيانات.
- مجموعة التحقق: تُقيَّم بعد دورات التدريب أو الحقب لتوجيه خيارات مثل معدل التعلّم وحجم النموذج وشدة زيادة البيانات وموعد إيقاف التدريب.
- مجموعة الاختبار: تُقيَّم مرة واحدة بعد تثبيت جميع الخيارات، للإبلاغ عن الأداء المتوقع في العالم الحقيقي.
تشيع تقسيمات 70/15/15 أو 80/10/10 في مجموعات البيانات التي تضم آلاف الصور. وتحتاج مجموعات البيانات الكبيرة جدًا إلى حصة أصغر للحصول على تقديرات موثوقة: إذ تحجز ImageNet-1k 50,000 صورة للتحقق مقابل 1,281,167 صورة للتدريب. ولأن تسميات اختبار ImageNet ليست متاحة للعامة، يُبلَّغ تقليديًا عن الدقة على مجموعة التحقق هذه، التي تؤدي عندئذ دور مجموعة الاختبار.
تطابق مجموعة التحقق المفيدة البيانات التي سيواجهها النموذج عند النشر، وألا تشترك مع مجموعة التدريب بأي بيانات. وتسرّب التقسيمات العشوائية على مستوى الصور معلومات عندما تأتي صور عدة من الفيديو أو المريض أو الموقع نفسه، لأن النموذج قد يتعرف على المشهد بدلًا من الجسم. ويمنع التقسيم بحسب المجموعة، مثل التقسيم حسب المريض أو جلسة التسجيل، هذا التسرّب في البيانات.
ضبط المعلمات الفائقة واختيار النموذج#
تُتعلّم الأوزان بواسطة الانحدار المتدرج، بينما تُختار المعلمات الفائقة بتدريب عدة نماذج مرشحة والإبقاء على النموذج صاحب أفضل درجة تحقق. ولا تصلح درجات التدريب لاتخاذ هذا القرار، لأن النماذج الأكبر والأطول تدريبًا تلائم بيانات تدريبها بصورة أفضل دائمًا تقريبًا. ويضبط النص البرمجي التالي في scikit-learn عمق شجرة القرار على مجموعة بيانات الأرقام المضمنة:
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Split 1,797 digit images 60/20/20 into training, validation, and test sets
X, y = load_digits(return_X_y=True)
X_train, X_rest, y_train, y_rest = train_test_split(X, y, test_size=0.4, random_state=0, stratify=y)
X_val, X_test, y_val, y_test = train_test_split(X_rest, y_rest, test_size=0.5, random_state=0, stratify=y_rest)
# Fit one model per candidate tree depth and score each on the validation set
val_scores = {}
for depth in (2, 4, 8, 16):
model = DecisionTreeClassifier(max_depth=depth, random_state=0).fit(X_train, y_train)
val_scores[depth] = model.score(X_val, y_val)
print(f"depth {depth}: train {model.score(X_train, y_train):.3f}, validation {val_scores[depth]:.3f}")
# Refit the winner and score the test set exactly once
best = max(val_scores, key=val_scores.get)
final = DecisionTreeClassifier(max_depth=best, random_state=0).fit(X_train, y_train)
print(f"Chosen depth {best}: test accuracy {final.score(X_test, y_test):.3f}")تواصل دقة التدريب الارتفاع مع زيادة العمق، وتبلغ 1.000 عند العمق 16، بينما تبلغ دقة التحقق ذروتها عند 0.836 في العمق 8 وتنخفض إلى 0.825 عند العمق 16 مع بدء الشجرة في حفظ البيانات. ويُختار العمق 8 استنادًا إلى التحقق، محققًا درجة 0.853 على مجموعة الاختبار التي لم تُمس.
الإيقاف المبكر واختيار نقاط التحقق#
تقيّم حلقات التعلّم العميق مجموعة التحقق عادةً بعد كل حقبة. وتواصل خسارة التدريب الانخفاض كلما زادت ملاءمة الشبكة لبيانات تدريبها، لكن خسارة التحقق أو دقته تستقر في نهاية المطاف ثم تتدهور. وينهي الإيقاف المبكر التدريب عندما تتوقف درجة التحقق عن التحسن لعدد محدد من الحقب، يُسمى الصبر، ويحتفظ بالأوزان من أفضل حقبة.
يجري تدريب YOLO26 في Ultralytics هذه الدورة افتراضيًا: إذ يقيّم قسم val من ملف YAML لمجموعة البيانات بعد كل حقبة، ويحفظ الحقبة صاحبة أعلى ملاءمة تحقق (mAP50-95 للكشف) باسم best.pt، ويتوقف بعد patience حقب دون تحسن، والعدد الافتراضي 100.
from ultralytics import YOLO
# تحميل كاشف YOLO26 nano مدرّب مسبقًا
model = YOLO("yolo26n.pt")
# تحقّق باستخدام قسم val بعد كل حقبة، وأوقف التدريب بعد 10 حقب دون تحسن
results = model.train(data="coco8.yaml", epochs=50, patience=10)التحقق المتقاطع لمجموعات البيانات الصغيرة#
عندما تكون البيانات شحيحة، يهدر تقسيم محجوب واحد بعض الأمثلة وينتج درجة متذبذبة. يقسم التحقق المتقاطع K-fold البيانات إلى K طيات، ويدرّب K نموذجًا، يحجب كل منها طية مختلفة للتحقق، ثم يحسب متوسط الدرجات K، وبذلك يُستخدم كل مثال في التدريب والتحقق معًا. وتشيع خمس طيات وعشر طيات، كما تحافظ النسخ الطبقية والمجمّعة على توازن نسب الفئات أو إبقاء الصور المرتبطة معًا ضمن كل طية. وتظل مجموعة الاختبار خارج جميع الطيات.
بيانات التحقق والمصطلحات ذات الصلة#
- بيانات الاختبار: تُقيَّم مرة واحدة في النهاية. ويؤدي استخدامها مجددًا لاتخاذ القرارات إلى تحويلها إلى مجموعة تحقق ثانية، فتكف درجتها عن كونها تقديرًا غير متحيز.
- بيانات التدريب: التقسيم الوحيد الذي يتعلم منه المحسّن الأوزان.
- التحقق المتقاطع: إجراء يبدّل الأمثلة المستخدمة بيانات تحقق، وينتج K درجة تحقق من مجموعة بيانات واحدة.
- التحقق في الكتابات السريرية والتنظيمية: يعني التحقق من النموذج في الطب والصناعات الخاضعة للتنظيم غالبًا تقييم النموذج المكتمل على بيانات خارجية مستقلة، وهو ما يقابل مجموعة الاختبار في مصطلحات تعلّم الآلة.










