AI सिस्टम्स का मूल्यांकन (Evaluation)मध्यमपाठ 2186 मिनट का पाठ

कंटैमिनेशन: जब टेस्ट पेपर लीक हो गया

मॉडल इंटरनेट के बहुत सारे टेक्स्ट से सीखते हैं, जिसमें वही टेस्ट के सवाल भी शामिल हो सकते हैं जिनसे उन्हें परखा जाता है। इसके संकेत पहचानें, और जानें कि हेल्ड-आउट और नए टेस्ट सेट आपकी रक्षा कैसे करते हैं।

पाठ वीडियो में

60 सेकंड में

कंटैमिनेशन: जब टेस्ट पेपर लीक हो गया

मॉडल इंटरनेट के बहुत सारे टेक्स्ट से सीखते हैं, जिसमें वही टेस्ट के सवाल भी शामिल हो सकते हैं जिनसे उन्हें परखा जाता है। इसके संकेत पहचानें, और जानें कि हेल्ड-आउट और नए टेस्ट सेट…

1/4
आसान शब्दों में
अगर बोर्ड परीक्षा का पेपर एक रात पहले WhatsApp पर लीक हो जाए, तो अगले दिन के नंबर यह नहीं बताते कि किसने पढ़ाई की थी। वे बताते हैं कि किसने पेपर देखा था। जब टेस्ट के सवाल किसी AI के ट्रेनिंग डेटा में लीक हो जाते हैं, तो उसका स्कोर यह दिखाना बंद कर देता है कि वह असल में क्या कर सकता है।
डेटा कंटैमिनेशन का मतलब है कि टेस्ट के सवाल, या उनसे मिलती-जुलती चीजें, मॉडल को ट्रेन करने के लिए इस्तेमाल किए गए डेटा में मौजूद थीं। इसके बाद मॉडल समझदारी से नहीं, बल्कि अपनी याददाश्त से सही जवाब दे सकता है। उसका स्कोर उसकी असली क्षमता से बेहतर दिखने लगता है।

टेस्ट का कंटेंट अंदर कैसे पहुँचता है

  • वेब क्रॉल: बेंचमार्क के सवाल और जवाब GitHub, ब्लॉग, फ़ोरम और कोर्स नोट्स पर पोस्ट किए जाते हैं। बड़े वेब क्रॉल उन्हें समेट लेते हैं।
  • बदले हुए रूप (रीराइटेड कॉपियां): किसी सवाल का दूसरी भाषा में अनुवाद किया गया हो या किसी ट्यूटोरियल में उसके शब्द बदल दिए गए हों, तब भी वह जवाब सिखा ही देता है।
  • फ़ाइन-ट्यूनिंग डेटा: इंस्ट्रक्शन डेटासेट में कभी-कभी बेंचमार्क जैसे सवाल होते हैं, या ऐसे मॉडल द्वारा बनाए गए सवाल होते हैं जिन्होंने उन्हें पहले देखा था।
  • आपके अपने लीक्स: आप डिबगिंग करते समय टेस्ट केस को प्रॉम्प्ट में पेस्ट कर देते हैं, या फ़ेल हुए टेस्ट सवालों को "उन्हें ठीक करने के लिए" ट्रेनिंग डेटा में जोड़ देते हैं।
सावधान रहें
आखिरी बात वही है जिसे आप खुद कंट्रोल कर सकते हैं। अगर आप अपने टेस्ट के सवालों पर ही ट्रेन या ट्यून करेंगे, तो आपका टेस्ट अब टेस्ट नहीं रह जाएगा। इवैल्यूएशन डेटा और ट्रेनिंग डेटा को हमेशा अलग रखें।

संकेत कि स्कोर कंटैमिनेटेड हो सकता है

संकेतआपको क्या दिखता हैयह लीकेज की ओर इशारा क्यों करता है
पुराना, नए से बेहतर हैबहुत पहले पब्लिश हुए सवालों पर परफ़ॉर्मेंस, उनके जैसे नए सवालों की तुलना में बहुत बेहतर है।पुराने सवालों को ट्रेनिंग से पहले इंटरनेट पर फैलने का ज़्यादा समय मिला था।
पैराफ़्रेज़ करने पर गिरावटजब आप सवालों के शब्द बदलते हैं या नंबर बदलते हैं, तो एक्यूरेसी गिर जाती है।असली समझ शब्द बदलने पर भी काम करती है। हूबहू शब्दों को याद रखना काम नहीं आता।
हूबहू याद आना (वर्बेटिम रिकॉल)टेस्ट के सवाल की शुरुआत मिलने पर मॉडल उसे शब्द-दर-शब्द पूरा कर देता है।उसने सिर्फ़ टॉपिक ही नहीं, बल्कि सवाल का पूरा टेक्स्ट देखा हुआ है।
इतना अच्छा कि यकीन न होकिसी एक बेंचमार्क पर बहुत बड़ा उछाल लेकिन उससे जुड़े दूसरे कामों में कोई बदलाव नहीं।असली सुधार आमतौर पर एक जैसे सभी कामों में दिखाई देता है।
इनमें से कोई भी संकेत अकेले कंटैमिनेशन साबित नहीं करता। कुछ सवाल बस आसान होते हैं, और शब्द बदलने से सवाल गलती से ज़्यादा कठिन भी हो सकता है। एक साथ कई संकेतों पर ध्यान दें।

ओवरलैप की जाँच करना

अगर आपके पास ट्रेनिंग टेक्स्ट का एक्सेस है (उदाहरण के लिए, आपका अपना फ़ाइन-ट्यूनिंग डेटा), तो आप सीधे ओवरलैप की जाँच कर सकते हैं। एक आम तरीका दोनों टेक्स्ट को n-grams (n शब्दों के लगातार समूह) में बाँटना है और देखना है कि टेस्ट आइटम के कितने n-grams ट्रेनिंग टेक्स्ट में भी दिखते हैं।
Python: share of a test item's 8-word runs that appear in training textpython
def ngrams(text, n=8):
    words = text.lower().split()
    return {tuple(words[i:i + n]) for i in range(len(words) - n + 1)}

def overlap(test_item, training_ngrams, n=8):
    grams = ngrams(test_item, n)
    if not grams:
        return 0.0
    return len(grams & training_ngrams) / len(grams)

training_text = "... your fine-tuning data joined together ..."
train_grams = ngrams(training_text)
score = overlap("the test question you want to check goes here in full", train_grams)
print(f"overlap: {score:.0%}")
नोट
सटीक n-gram जाँच अनुवादित या बदले हुए शब्दों वाली कॉपियों को पकड़ नहीं पाती, इसलिए कम ओवरलैप होना यह साबित नहीं करता कि सवाल साफ़-सुथरा (क्लीन) है। कुछ बेंचमार्क बनाने वाले अपनी फ़ाइलों में एक अनोखी "कैनरी" स्ट्रिंग जोड़ देते हैं ताकि मॉडल बनाने वाले उन्हें ढूँढकर ट्रेनिंग डेटा से हटा सकें।

अपने इवैल्यूएशन को सुरक्षित रखना

  1. 1

    डेटा को अलग रखें (हेल्ड-आउट)

    किसी भी ट्रेनिंग या प्रॉम्प्ट ट्यूनिंग से पहले टेस्ट डेटा को अलग कर लें, और ट्यूनिंग करते समय उसे कभी न देखें।
  2. 2

    इसे प्राइवेट रखें

    अपने टेस्ट सेट को ऑनलाइन पोस्ट न करें और न ही इसे पब्लिक टूल्स में पेस्ट करें।
  3. 3

    इसे रीफ़्रेश करते रहें

    मॉडल के ट्रेनिंग कटऑफ़ के बाद लिखे गए नए सवाल जोड़ें, उदाहरण के लिए इस महीने के असली यूज़र सवाल।
  4. 4

    पुराने और नए की तुलना करें

    अगर मॉडल नए सवालों की तुलना में पुराने सवालों पर बहुत बेहतर करता है, तो पड़ताल करें।
कुछ पब्लिक बेंचमार्क अब इसी तरीके का इस्तेमाल करते हैं: वे मॉडल ट्रेन होने के बाद पब्लिश हुई नई समस्याओं को जोड़ते रहते हैं, या एक छिपा हुआ टेस्ट सेट रखते हैं जिसे कभी रिलीज़ नहीं किया जाता। जब आप कोई स्कोर पढ़ें, तो पूछें: क्या इस मॉडल ने इन सवालों को पहले देखा हो सकता है?
इसे आज़माएँ। किसी पब्लिक क्विज़ या एग्ज़ाम पेपर से पाँच सवाल लें जो सालों से ऑनलाइन उपलब्ध हैं। हर एक के शब्द बदलें और नंबर भी बदल दें। किसी चैटबॉट से दोनों वर्शन पूछें। क्या वह दोनों पर एक जैसा अच्छा परफ़ॉर्म करता है?

और देखें और पढ़ें

लैब

एक छोटा कंटैमिनेशन चेक: एक n-gram ओवरलैप स्क्रिप्ट और साथ में पुराना बनाम बदले हुए शब्दों वाला टेस्ट।

~30 min

समस्या

  1. शुरुआती स्क्रिप्ट कॉपी करें। कोई भी ऐसा टेक्स्ट पेस्ट करें जिसे आप "ट्रेनिंग डेटा" के विकल्प के तौर पर इस्तेमाल कर सकते हैं (उदाहरण के लिए, कोई पब्लिक-डोमेन आर्टिकल या आपके अपने नोट्स)।
  2. पाँच "टेस्ट सवाल" लिखें: दो उस टेक्स्ट के अंदर से कॉपी किए गए, एक जिसके शब्द काफ़ी बदल दिए गए हों, और दो बिल्कुल नए।
  3. स्क्रिप्ट चलाएँ और हर सवाल के लिए ओवरलैप रिकॉर्ड करें। यह किन सवालों को पकड़ता है? किन्हें छोड़ देता है?
  4. यह चेक आपको क्या बता सकता है और क्या नहीं, इस पर दो वाक्य लिखें।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q18-gram चेक में संख्या 8 एक समझौता (ट्रेड-ऑफ़) क्यों है?दिखाएं

छोटे n-grams (जैसे 3 शब्द) "one of the" जैसे आम फ़्रेज़ से मैच हो जाते हैं, जिससे कई साफ़-सुथरे सवाल भी कंटैमिनेटेड लगने लगते हैं। लंबे n-grams (जैसे 20 शब्द) सिर्फ़ लगभग हूबहू कॉपियों से ही मैच होते हैं, इसलिए थोड़े-बहुत बदलाव भी असली लीक्स को छिपा देते हैं। बीच की कोई वैल्यू गलत चेतावनियों और छूट जाने वाली गलतियों के बीच संतुलन बनाती है। टीमें अक्सर कई वैल्यूज़ आज़माती हैं और खुद देखकर मैच की जाँच करती हैं।

Q2एक वेंडर कहता है कि किसी पब्लिक बेंचमार्क पर उसके मॉडल में "कोई कंटैमिनेशन नहीं है"। आप क्या पूछेंगे?दिखाएं

पूछें कि उन्होंने कैसे जाँच की: उन्होंने कौन सा ट्रेनिंग डेटा सर्च किया, मैचिंग का कौन सा तरीका और थ्रेशोल्ड इस्तेमाल किया, क्या उन्होंने पैराफ़्रेज़ और अनुवाद की जाँच की, और क्या वे अपने ट्रेनिंग कटऑफ़ के बाद पब्लिश हुए सवालों पर नतीजे रिपोर्ट करते हैं। फिर अपने खुद के बदले हुए शब्दों वाले या नए सवाल चलाकर देखें। बिना तरीके के किया गया दावा कोई सबूत नहीं होता।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या कंटैमिनेशन चीटिंग (नकल) जैसा ही है?

आमतौर पर नहीं। ज़्यादातर कंटैमिनेशन अनजाने में होता है: ट्रेनिंग सेट इतने बड़े होते हैं कि कोई भी उन्हें पूरा नहीं पढ़ता। लेकिन स्कोर पढ़ने वाले व्यक्ति के लिए इसका असर चीटिंग जैसा ही होता है, इसलिए इसकी जाँच की जानी चाहिए।

क्या मैं किसी क्लोज्ड मॉडल में कंटैमिनेशन की जाँच कर सकता हूँ?

सिर्फ़ अप्रत्यक्ष रूप से, क्योंकि आप उसका ट्रेनिंग डेटा नहीं देख सकते। संकेतों का इस्तेमाल करें: पुराने और नए सवालों की तुलना करें, सवालों के शब्द बदलें, और टेस्ट करें कि क्या वह टेस्ट सवालों को शब्द-दर-शब्द पूरा करता है। नतीजों को सबूत के तौर पर देखें, पक्के प्रमाण के रूप में नहीं।

अगर किसी मॉडल ने कोई जवाब रट लिया है, तो क्या यह हमेशा बुरा होता है?

यूज़र्स के लिए नहीं: फ़ैक्ट्स याद रखना काम आता है। यह मापने (measurement) के लिए बुरा है, क्योंकि टेस्ट का मकसद नई समस्याओं पर रीज़निंग या कोडिंग जैसी क्षमता को जाँचना था। रटा हुआ जवाब आपको अगली नई समस्या के बारे में कुछ नहीं बताता।

मुझे अपना प्राइवेट टेस्ट सेट कितनी बार रीफ़्रेश करना चाहिए?

इसका कोई तय नियम नहीं है। नियमित रूप से नए असली उदाहरण जोड़ते रहें, खासकर जब आपका प्रोडक्ट या यूज़र्स बदलें। एक स्थिर कोर सेट रखें ताकि आप समय के साथ तुलना कर सकें, साथ ही एक नया हिस्सा रखें जिसे किसी मॉडल ने न देखा हो।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें