Test Data
بيانات الاختبار هي جزء محجوب يُقيّم مرة واحدة بعد اكتمال التدريب والضبط، لتقدير الأداء على بيانات جديدة. يتناول الشرح تقسيم البيانات وحجمها والمآزق والشفرة البرمجية.
بيانات الاختبار، التي تُسمى أيضًا مجموعة الاختبار أو مجموعة الحجز، هي الجزء من مجموعة البيانات المخصص لقياس أداء نموذج تعلّم الآلة (ML) مكتمل. ولا تشارك هذه البيانات في ملاءمة أوزان النموذج أو في أي قرار تطوير، مثل البنية أو المعلمات الفائقة أو نقطة التحقق أو عتبة الثقة، ويُقاس الأداء عليها بعد حسم تلك القرارات. ولأن النموذج ومطوريه لم يتكيفوا معها قط، فإن دقته أو استدعاءه أو متوسط دقته (mAP) يقدّر دون تحيز أداء النموذج على بيانات جديدة من التوزيع نفسه، وهو الرقم الذي تستخدمه الفرق لتحديد ما إذا كان النموذج جاهزًا لـالنشر.
تقسيمات التدريب والتحقق والاختبار#
عادةً ما تُقسّم مجموعة البيانات إلى ثلاثة أقسام منفصلة، لكل منها وظيفة مختلفة:
- بيانات التدريب: الأمثلة التي يتعلم منها المحسِّن، إذ يعدّل الأوزان لتقليل الخسارة.
- بيانات التحقق: تُقيّم مرارًا أثناء التطوير لمقارنة المعلمات الفائقة وإيقاف التدريب مبكرًا واختيار أفضل نقطة تحقق.
- بيانات الاختبار: تُقيّم مرة واحدة في النهاية للإبلاغ عن المقياس الذي يُحكم على المشروع بناءً عليه.
تُعد تقسيمات 80/10/10 أو 70/15/15 شائعة لمجموعات البيانات التي تضم آلاف الأمثلة، بينما يمكن لمجموعات البيانات التي تضم ملايين الأمثلة تخصيص بضعة بالمئة للاختبار. ويتوقف حجم مجموعة الاختبار المطلوبة على الدقة المنشودة: فالخطأ المعياري لدقة p المقيسة على n من الأمثلة هو الجذر التربيعي لـ p(1 − p)/n؛ لذا تعطي 1,000 صورة اختبار بدقة 90% مجال ثقة 95% يبلغ نحو ±1.9 نقطة مئوية، وتضيّقه 10,000 صورة إلى نحو ±0.6. تختلف التسميات بين المجالات، وتعرض أوراق بحثية كثيرة نتائجها النهائية على ImageNet باستخدام مجموعة التحقق الرسمية، لأن تسميات الاختبار في ImageNet غير متاحة للعامة. في Ultralytics YOLO، تتطلب YAML مجموعة البيانات مساري train وval، وتقبل مسار test اختياريًا؛ ويقيّم التدريب val بعد كل حقبة لاختيار best.pt، بينما يقيّم model.val(data="data.yaml", split="test") النموذج المكتمل على الصور المحجوبة في وضع التحقق.
لماذا يجب عدم المساس بمجموعة الاختبار#
يؤدي اتخاذ أي قرار بالاستناد إلى نتيجة ما إلى ملاءمة تلك البيانات قليلًا. وعندما تتنافس إعدادات كثيرة على مجموعة التحقق، يكون الفائز جزئيًا هو الإعداد الذي حالفه الحظ في تلك الأمثلة بعينها، لذا تبالغ نتيجة التحقق في تقدير أدائه على بيانات أخرى. تختار تجربة scikit-learn التالية أفضل عدد من الجيران لمصنف أقرب الجيران (k) على مجموعة بيانات صغيرة ومشوّشة، وتقارن دقة الفائز على مجموعتي التحقق والاختبار عبر 30 مجموعة بيانات عشوائية:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
val_scores, test_scores = [], []
for seed in range(30):
# A small, noisy dataset split 60/20/20 into train, validation, and test
X, y = make_classification(n_samples=400, n_features=20, n_informative=4, flip_y=0.2, random_state=seed)
X_train, X_rest, y_train, y_rest = train_test_split(X, y, test_size=0.4, random_state=seed)
X_val, X_test, y_val, y_test = train_test_split(X_rest, y_rest, test_size=0.5, random_state=seed)
# Model selection: keep the neighbor count with the best validation accuracy
scores = {k: KNeighborsClassifier(k).fit(X_train, y_train).score(X_val, y_val) for k in range(1, 51)}
best_k = max(scores, key=scores.get)
val_scores.append(scores[best_k])
# The test set is scored once, after the choice is final
test_scores.append(KNeighborsClassifier(best_k).fit(X_train, y_train).score(X_test, y_test))
print(f"Chosen model, mean of 30 runs: validation {np.mean(val_scores):.3f}, test {np.mean(test_scores):.3f}")يحقق النموذجان المختاران متوسطًا قدره 0.805 على مجموعة التحقق و0.758 على مجموعة الاختبار، لذا أدى الاختيار من بين 50 مرشحًا إلى تضخيم تقدير مجموعة التحقق بنحو خمس نقاط. ومن شأن الضبط استنادًا إلى مجموعة الاختبار إخفاء هذه الفجوة ونقل التفاؤل نفسه إلى النتيجة المعلنة، وهو شكل من تسرّب البيانات. وتحمي المعايير العامة نفسها من ذلك بحجب التسميات: إذ تُحصل نتائج مجموعة الاختبار التطويرية في COCO عبر إرسال التنبؤات إلى خادم تقييم. وبالنسبة إلى النماذج اللغوية الكبيرة (LLMs)، تلوّث أسئلة الاختبار التي تظهر في بيانات التدريب المسبق واسعة النطاق على الويب المعيار؛ ولهذا تضيف LiveCodeBench مسائل مسابقات جديدة باستمرار، وتقيّم كل نموذج على المسائل المنشورة بعد تاريخ توقف تدريبه.
إنشاء مجموعة اختبار موثوقة#
لا تتنبأ نتيجة الاختبار بالأداء في العالم الحقيقي إلا إذا شابهت مجموعة الاختبار البيانات التي سيواجهها النموذج، سواء أكانت مشاهد شوارع تخص المركبات ذاتية القيادة أم صورًا تخص تحليل الصور الطبية:
- مطابقة ظروف النشر: ينبغي أن تعكس الكاميرات والإضاءة والفصول والمناطق الجغرافية وتوازن الفئات ظروف بيئة الإنتاج. يحتاج كاشف القيادة إلى مشاهد ليلية وماطرة ومثلجة في مجموعة الاختبار، حتى لو جرت معظم رحلات القيادة في طقس صافٍ.
- حافظ على استقلالية التقسيم: تنتمي إطارات الفيديو نفسه ومسوح المريض نفسه وصور المشهد نفسه إلى تقسيم واحد. وتُقسّم البيانات المرتبة زمنيًا بحسب التاريخ، كي يُختبر النموذج على المستقبل.
- الاختبار عبر مصادر متعددة: في التصوير الطبي، يكشف التحقق الخارجي على صور مأخوذة من مستشفيات وأجهزة تصوير أخرى ما إذا كان النموذج قد تعلّم التشريح أم معدات مؤسسة واحدة.
- تنظيف التسميات: تحد الأخطاء في تسميات الاختبار من الدقة القابلة للقياس، وقد تغيّر ترتيب النماذج، لذا تستحق تسميات الاختبار أدق مراجعة.
- الإبلاغ حسب الشرائح: تكشف المقاييس لكل فئة ولكل ظرف عن إخفاقات يخفيها المتوسط الواحد.
حتى مجموعة الاختبار التي أُعيد بناؤها بعناية قد تغيّر النتائج: فعندما أعاد الباحثون إنشاء مجموعة اختبار ImageNet وفق عملية الجمع الأصلية، انخفضت الدقة من 11 إلى 14 نقطة مئوية عبر نطاق واسع من النماذج، مع أن المكاسب على مجموعة الاختبار الأصلية ظلت قائمة؛ وعزا المؤلفون الانخفاض إلى أن الصور أصعب قليلًا، لا إلى سنوات من إعادة استخدام مجموعة الاختبار.
بيانات الاختبار والمصطلحات ذات الصلة#
- التحقق المتقاطع: يبدّل الجزء الذي يؤدي دور التحقق من بيانات التطوير، ما يوفر تقديرًا أكثر استقرارًا لاختيار النموذج. وتظل مجموعة اختبار منفصلة ضرورية للحصول على النتيجة النهائية.
- مجموعة بيانات معيارية: مجموعة اختبار عامة مشتركة بين الباحثين في مجال ما. ولأن كل فريق يقيّم نماذجه عليها لسنوات، فإنها تتوقف تدريجيًا عن تمثيل بيانات لم يسبق للنماذج رؤيتها.
- مجموعة بيانات مرجعية ذهبية: مجموعة مرجعية منتقاة وعالية الجودة ذات إجابات مدققة، وغالبًا ما تُستخدم مجموعة اختبار ثابتة لاختبارات الانحدار لتطبيقات LLM.










