पाठ 9 / 29

Test-Set स्वच्छता: Leakage और Contamination

Test मामलों को prompts, प्रशिक्षण डेटा और उदाहरणों से बाहर रखें।

Test लीक हो तो score झूठ बोलता है

Score तभी ईमानदार है जब system ने उत्तर नहीं देखे। Leakage आम है: test मामले prompt के few-shot उदाहरणों में कॉपी; वही दस्तावेज़ fine-tuning डेटा और मूल्यांकन set दोनों में; test सवाल उत्तरों समेत retrieval index में; सार्वजनिक benchmark items जो मॉडल ने pretraining में देखे (contamination)। अभ्यास: काम शुरू होने से पहले डेटा train/dev/test में बाँटें और हर मामला tag करें; sets के बीच लगभग-duplicates जाँचें (जैसे साझा शब्द n-grams, उदाहरण की तरह); test मामले prompt उदाहरणों के रूप में कभी उपयोग न करें; ऐसा निजी held-out set रखें जिस पर कोई tune न करे; समय के साथ नए असली मामलों से set ताज़ा करें; और अपने निर्णयों के लिए सार्वजनिक benchmark scores पर संशयी रहें। Test set की विफलता ठीक करने के बाद प्रमाण के रूप में पुराना मामला दोबारा उपयोग करने की जगह नया समान मामला जोड़ें।

n-grams से leaked test मामले पहचानना, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। साफ़ test मामला प्रशिक्षण पाठ से 5-शब्द क्रम साझा नहीं करता, जबकि leaked वाला (प्रशिक्षण से एक शब्द जोड़कर कॉपी किया) 9 साझा करता है और चिह्नित होता है।

def ngrams(text, n=5):
    w = text.lower().split(); return {" ".join(w[i:i + n]) for i in range(len(w) - n + 1)}

train = ["Our refund policy allows returns within thirty days of delivery for unused items",
         "Passwords must be at least twelve characters and include a symbol"]
test_ok  = "How long do I have to return an item I bought last week"
test_bad = "Our refund policy allows returns within thirty days of delivery for unused items today"

train_grams = set().union(*(ngrams(t) for t in train))
for name, t in (("clean test case", test_ok), ("leaked test case", test_bad)):
    overlap = ngrams(t) & train_grams
    print(f"{name:17} shared 5-grams with training data: {len(overlap)}", "-> LEAK" if overlap else "")

Output:

clean test case   shared 5-grams with training data: 0 
leaked test case  shared 5-grams with training data: 9 -> LEAK

नए मामले जोड़ें, पुराना प्रमाण दोबारा न उपयोग करें

विफलता ठीक करने के बाद नए समान मामले से परखें।

त्वरित जाँच: Prompt के few-shot उदाहरणों में test सवाल हों तो समस्या क्यों है?

  • Few-shot उदाहरण निषिद्ध हैं
  • यह prompt छोटा करता है
  • System ने उत्तर देख लिए हैं, इसलिए score असली प्रदर्शन बढ़ाकर बताता है
  • कोई प्रभाव नहीं
Answer

System ने उत्तर देख लिए हैं, इसलिए score असली प्रदर्शन बढ़ाकर बताता है — मूल्यांकन को ऐसे मामले चाहिए जो system को दिखाए नहीं गए।