आपका मॉडल 99% सही है। यही पहली चीज़ है जिस पर शक करना चाहिए
🌐 Read this article in English
संक्षेप में: मशीन लर्निंग के मॉडल अक्सर बेहतरीन टेस्ट सटीकता दिखाकर असली डेटा पर नाकाम हो जाते हैं। यह लेख इसके चार कारण समझाता है: असंतुलित वर्गों में सटीकता का बेमानी हो जाना, डेटा लीकेज के कई रूप — मरीज़-स्तर और समय-आधारित लीकेज समेत, शॉर्टकट लर्निंग जिसमें मॉडल आसान समस्या हल कर लेता है, और तैनाती के बाद डेटा का बदल जाना। साथ में झूठे पॉज़िटिव के पीछे का बेस-रेट गणित, मेडिकल इमेजिंग की दर्ज नाकामियाँ, और वह मूल्यांकन अनुशासन जो असली नतीजे को दिखावटी नतीजे से अलग करता है।
ज़्यादातर विद्यार्थियों का पहला मशीन लर्निंग प्रोजेक्ट 95 प्रतिशत से ऊपर की सटीकता दिखाता है, और स्वाभाविक प्रतिक्रिया होती है संतोष। सही प्रतिक्रिया है शक। इसलिए नहीं कि अच्छे मॉडल बन ही नहीं सकते, बल्कि इसलिए कि व्यवहार में अपने ही टेस्ट सेट पर बहुत ऊँचा नंबर मॉडल के चलने का सबूत कम और मूल्यांकन के टूटे होने का लक्षण ज़्यादा होता है — और टूटने के तरीक़े इतने गिने-चुने और इतने ठोस हैं कि एक-एक करके जाँचे जा सकते हैं।
वह आँकड़ा जिसका कोई मतलब नहीं
शुरुआत ख़ुद उसी माप से कीजिए। सटीकता का मतलब है कुल में से कितने अनुमान सही निकले — और जहाँ भी वर्ग असंतुलित हों, यह लगभग बेकार हो जाती है।
मान लीजिए आप ऐसी बीमारी के लिए स्क्रीनिंग मॉडल बना रहे हैं जो हज़ार में एक को होती है। जो मॉडल हर इनपुट पर बिना कुछ सीखे "स्वस्थ" लिख देता है, वह 99.9 प्रतिशत सही है। उसने एक भी मरीज़ नहीं पकड़ा, जबकि पकड़ना ही पूरा मक़सद था। जिस भी डेटा में दिलचस्प वर्ग दुर्लभ हो — धोखाधड़ी, मशीन का ख़राब होना, दुर्लभ रोग, उत्पादन में दोष — वहाँ सटीकता मॉडल को नहीं, बीमारी के फैलाव को नापती है।
मॉडल को अच्छा बना दीजिए तो गणित और उलझ जाता है। मान लीजिए वह असली मरीज़ों में से 99 प्रतिशत पकड़ लेता है और स्वस्थ लोगों में से 99 प्रतिशत को सही ढंग से छोड़ देता है — किसी भी पैमाने पर बढ़िया। अब इसे एक लाख लोगों पर चलाइए, जहाँ हज़ार में एक को बीमारी है: यह 100 असली मरीज़ों में से क़रीब 99 पकड़ेगा, और साथ में क़रीब 999 स्वस्थ लोगों पर भी निशान लगा देगा। यानी जिन सबको मॉडल ने पॉज़िटिव कहा, उनमें से दस में एक से भी कम को सचमुच बीमारी है। मॉडल में कोई ख़राबी नहीं है। दुर्लभ बीमारी किसी भी जाँच के साथ यही करती है — और इसीलिए तैनाती के फ़ैसले एक सुर्ख़ी वाले आँकड़े से नहीं, प्रिसिज़न, रिकॉल और पूरे कन्फ़्यूज़न मैट्रिक्स से होने चाहिए।
लीकेज: जब जवाब ट्रेनिंग डेटा में ही बैठा हो
दूसरी नाकामी वही है जो ये शक़ के लायक़ ख़ूबसूरत नंबर पैदा करती है। डेटा लीकेज का मतलब है कि टेस्ट सेट की, या भविष्य की, या ख़ुद जवाब की जानकारी ट्रेनिंग के दौरान मॉडल तक पहुँच गई। मॉडल ने सामान्यीकरण नहीं किया। उसने देखकर बता दिया।
यह कई रूपों में आती है, और इनमें से सिर्फ़ पहला ही ज़ाहिर है।
दोनों तरफ़ एक ही रिकॉर्ड। अगर वही तस्वीर, उसकी बदली हुई नक़ल, या लगभग एक जैसी पंक्ति ट्रेनिंग और टेस्ट दोनों में है, तो टेस्ट आंशिक रूप से याददाश्त की परीक्षा बन जाता है।
ग़लत इकाई पर बँटवारा। यही सबसे बारीक़ है और स्वास्थ्य डेटा में हर जगह मिलता है। दो हज़ार मरीज़ों के दस हज़ार छाती के एक्स-रे लीजिए और बेतरतीब ढंग से बाँट दीजिए — एक ही मरीज़ के स्कैन दोनों तरफ़ चले जाएँगे। अब मॉडल बीमारी के बजाय मरीज़ को पहचान सकता है, और टेस्ट सेट चुपचाप "अनदेखा" रहना बंद कर देता है। नियम यह है कि बँटवारा उसी इकाई पर हो जिस पर आप सामान्यीकरण चाहते हैं — मरीज़, केंद्र, मशीन, व्यक्ति — पंक्ति पर नहीं।
समय की लीकेज। जिस मॉडल का काम भविष्यवाणी है, उसे सिर्फ़ वही जानकारी दी जानी चाहिए जो उस क्षण से पहले मौजूद थी जिसका अनुमान लगाया जा रहा है। समय-शृंखला को बेतरतीब फेंटने का मतलब है मॉडल को भविष्य दिखा देना, और वित्त तथा माँग के पूर्वानुमान वाले मॉडल यहाँ लगातार गिरते हैं।
लक्ष्य की लीकेज। कोई विशेषता चुपचाप नतीजा ही बता रही होती है — निदान का अनुमान लगाने वाले मॉडल में "इलाज शुरू हुआ" वाला कॉलम, या ऐसी पहचान संख्या जो घटना के बाद ही दी जाती है। नंबर लगभग पूर्ण आते हैं, क्योंकि जवाब दूसरे नाम से इनपुट में ही बैठा है।
बँटवारे से पहले प्रीप्रोसेसिंग। पूरे डेटा पर निकाले गए आँकड़ों से नॉर्मलाइज़ करना, ख़ाली जगहें भरना या विशेषताएँ चुनना — तीनों टेस्ट सेट की जानकारी ट्रेनिंग में टपका देते हैं। ऐसा हर क़दम क्रॉस-वैलिडेशन के भीतर होना चाहिए, उससे पहले नहीं।
यह शुरुआती लोगों की समस्या नहीं है। मशीन लर्निंग आधारित विज्ञान की 2023 की एक समीक्षा में सत्रह क्षेत्रों के सैकड़ों प्रकाशित शोध-पत्रों में लीकेज मिली, जिनके नतीजे सुधार के बाद टिके नहीं।
मॉडल आपको यह नहीं बता सकता कि उसने सीखा क्या। वह सिर्फ़ यह बता सकता है कि नंबर कितने आए — और नंबर का मतलब तभी है जब टेस्ट में सचमुच कुछ भी ऐसा न हो जो मॉडल पहले देख चुका हो।
शॉर्टकट लर्निंग: आसान समस्या हल कर लेना
बँटवारा साफ़ हो तब भी मॉडल ख़ुशी-ख़ुशी वह सीख लेगा जो आपने सिखाना नहीं चाहा था, बशर्ते वह आपके डेटा में लेबल के साथ चलता हो। न्यूरल नेटवर्क बेरहम अनुकूलक हैं, उनके पास "प्रासंगिक क्या है" जैसी कोई धारणा नहीं होती, और वे नुक़सान घटाने का सबसे सस्ता रास्ता हमेशा पकड़ लेते हैं।
सबसे साफ़ दर्ज उदाहरण मेडिकल इमेजिंग से आए हैं। छाती के एक्स-रे से निमोनिया पकड़ने के लिए सिखाए गए मॉडलों ने यह पहचानना सीख लिया कि स्कैन किस अस्पताल और किस विभाग से आया है — ज़्यादा बीमार मरीज़ों का एक्स-रे पोर्टेबल मशीन से होता है, पोर्टेबल तस्वीरें अलग दिखती हैं, और तस्वीर पर छपा मेटाडेटा फेफड़ों से ज़्यादा भविष्यसूचक निकला। अपने संस्थान में प्रदर्शन शानदार रहा और दूसरे अस्पतालों में तेज़ी से गिर गया। त्वचा रोग के मॉडलों ने सीख लिया कि फ़्रेम में रखा पैमाना उस घाव का संकेत है जिसे डॉक्टर पहले ही नापने लायक़ समझ चुका था। महामारी के दौरान सैकड़ों कोविड इमेजिंग मॉडलों की व्यवस्थित समीक्षाओं में लगभग कोई भी क्लीनिकल इस्तेमाल लायक़ नहीं मिला — कुछ ने तो स्वस्थ तुलना-समूह के तौर पर बच्चों के स्कैन इस्तेमाल किए थे, यानी मॉडल ने असल में बच्चों और बड़ों में फ़र्क़ करना सीखा था।
इनमें से कोई भी सिस्टम बिगड़ा नहीं था। हर एक ने वही समस्या हल की जो डेटा ने सचमुच सामने रखी थी, और वह उस समस्या से आसान थी जो शोधकर्ता सामने रखे होने का यक़ीन कर रहे थे। इसी वजह से उसी स्रोत से निकाला गया टेस्ट सेट कमज़ोर सबूत है, और असली परीक्षा बाहरी सत्यापन है — दूसरे केंद्र, दूसरी मशीन या दूसरी आबादी के डेटा पर।
बदलाव: तैनाती के बाद दुनिया रुकती नहीं
आख़िरी नाकामी के लिए तो कोई ग़लती करनी भी नहीं पड़ती। मॉडल उस डेटा का जमा हुआ सार है जिस पर उसे सिखाया गया, और डेटा पैदा करने वाली प्रक्रिया ठहरती नहीं।
कोवैरिएट शिफ़्ट का मतलब है इनपुट बदल जाना — नई इमेजिंग मशीन, अलग कैमरा, नए इलाक़े तक फैला ग्राहक-वर्ग। लेबल शिफ़्ट का मतलब है नतीजे की बारंबारता बदल जाना, जो किसी प्रकोप, धोखाधड़ी की लहर या मौसमी उतार-चढ़ाव में ठीक यही होता है। कॉन्सेप्ट ड्रिफ़्ट का मतलब है रिश्ता ही बदल जाना: ब्याज दर बदलने से पहले जो विशेषताएँ चूक का अनुमान देती थीं, बाद में नहीं देतीं।
तैनात मॉडलों का एक अपना फंदा भी है। अगर मॉडल उन्हीं फ़ैसलों को प्रभावित करता है जिनसे आगे का डेटा बनता है, तो वह अपनी ही ट्रेनिंग-वितरण बिगाड़ देता है — जो धोखाधड़ी मॉडल कुछ लेन-देन रोक देता है वह कभी नहीं जान पाता कि उनका होता क्या, और जो रखरखाव मॉडल पहले ही सर्विसिंग करा देता है वह उन ख़राबियों को कभी नहीं देखता जो उसने रोक दीं। इसीलिए तैनाती के बाद इनपुट और नतीजों की निगरानी कोई दफ़्तरी काम नहीं है; यही इकलौता तरीक़ा है जिससे किसी को पता चलता है कि मॉडल चुपचाप काम करना बंद कर चुका है।
असली मूल्यांकन दिखता कैसा है
जो अनुशासन सच्चे नतीजे को दिखाए गए नतीजे से अलग करता है, वह जटिल नहीं है — बस बेरौनक़ है।
बँटवारा उसी इकाई पर कीजिए जिस पर सामान्यीकरण चाहिए, और किसी भी प्रीप्रोसेसिंग से पहले कीजिए। ऐसा टेस्ट सेट रखिए जिसे आप ठीक एक बार छुएँ — हर झाँकना उसे वैलिडेशन सेट बना देता है, और जो मॉडल उसी टेस्ट डेटा के सामने पचास प्रयोगों में ट्यून किया गया है वह उस पर ओवरफ़िट है, चाहे उसके वज़न वहाँ से सीखे गए हों या नहीं। बीमारी के फैलाव के हिसाब से माप चुनिए, पूरा कन्फ़्यूज़न मैट्रिक्स दीजिए, और जो मॉडल संभावना बताता हो उसकी कैलिब्रेशन जाँचिए: जो मॉडल "80 प्रतिशत" कह रहा है वह उन मौक़ों में से क़रीब 80 प्रतिशत पर सही होना चाहिए। तुलना ऐसे बेसलाइन से कीजिए जो शर्मिंदा करने लायक़ बेवक़ूफ़ हो — सबसे बड़ा वर्ग, पिछले हफ़्ते का मान, एक सादा रिग्रेशन — क्योंकि जो डीप नेटवर्क इन्हें नहीं हरा पाता वह आपको कुछ अहम बता रहा है। और फिर बाहरी डेटा पर सत्यापन कीजिए, और अगर फ़ैसला मायने रखता हो तो आगे की तारीख़ के, मॉडल जमने के बाद जुटाए गए डेटा पर।
विद्यार्थियों और शोधकर्ताओं के लिए क्यों मायने रखता है
इनमें से हर नाकामी असल में सामान्यीकरण के बारे में एक दावा है, और मॉडल बनता ही सामान्यीकरण के लिए है। इसीलिए मूल्यांकन इस क्षेत्र का मुख्य वैज्ञानिक हुनर है — दिलचस्प काम के बाद निपटाई जाने वाली काग़ज़ी कार्रवाई नहीं।
यही वह जगह भी है जहाँ मशीन लर्निंग आम शोध-पद्धति से मिलती है, और जहाँ यह क्षेत्र एक दशक तक शर्मिंदा होकर फिर सँभला। मशीन लर्निंग आधारित विज्ञान की पुनरुत्पादकता की दिक़्क़तें लगभग पूरी तरह मूल्यांकन से आती हैं, आर्किटेक्चर से नहीं — और यह अच्छी ख़बर है, क्योंकि इसका मतलब है कि इलाज उसके पास है जो कड़ाई बरतने को तैयार हो, न कि उसके पास जिसके पास सबसे बड़ा क्लस्टर है। विद्यार्थी के लिए यही सबसे ज़्यादा फ़ायदे वाली चीज़ है: ईमानदार मूल्यांकन वाला मामूली मॉडल एक नतीजा है, और लीक हुए टेस्ट सेट वाला अत्याधुनिक मॉडल कुछ भी नहीं — नंबर चाहे जितना अच्छा दिखे।
अक्सर पूछे जाने वाले सवाल
मशीन लर्निंग में ऊँची सटीकता ख़राब संकेत क्यों है?
क्योंकि उसकी वजह आम तौर पर अच्छा मॉडल नहीं, कुछ और होती है — या तो असंतुलित डेटा, जिसमें बड़ा वर्ग बोल देना लगभग हमेशा सही बैठता है, या लीकेज, जिससे टेस्ट सेट की जानकारी ट्रेनिंग तक पहुँच गई। असली दुनिया की कठिन समस्या पर 95 प्रतिशत से ऊपर का नंबर जश्न से पहले जाँच माँगता है।
डेटा लीकेज क्या है?
यह हर वह स्थिति है जिसमें मॉडल तक ट्रेनिंग के दौरान ऐसी जानकारी पहुँच जाए जो उसे नहीं मिलनी चाहिए थी: दोनों हिस्सों में एक ही रिकॉर्ड, एक ही मरीज़ दोनों तरफ़, समय-शृंखला में भविष्य की जानकारी, ऐसी विशेषता जो जवाब ही बता रही हो, या बँटवारे से पहले पूरे डेटा पर की गई प्रीप्रोसेसिंग।
शॉर्टकट लर्निंग क्या है?
जब मॉडल सही जवाब किसी अनचाहे संयोग से निकाल ले — एक्स-रे पर अस्पताल के निशान, त्वचा की तस्वीर में रखा पैमाना, जानवरों के डेटा में पृष्ठभूमि का रंग। ऐसा मॉडल मिलते-जुलते डेटा पर अच्छा चलता है और कहीं और गिर जाता है, क्योंकि उसने असली संकेत सीखा ही नहीं।
तैनाती के बाद मॉडल ख़राब क्यों होने लगते हैं?
क्योंकि डेटा बदल जाता है। नई मशीनें, नई आबादी, मौसमी असर और बदलते रिश्ते — सब वितरण को उससे दूर खिसका देते हैं जिस पर मॉडल सिखाया गया था; और तैनात मॉडल उस डेटा को भी बिगाड़ सकता है जिससे वह आगे सीखेगा।
मॉडल का सही मूल्यांकन कैसे करें?
प्रीप्रोसेसिंग से पहले उसी इकाई पर बँटवारा कीजिए जिस पर सामान्यीकरण चाहिए, टेस्ट सेट सिर्फ़ एक बार इस्तेमाल कीजिए, अकेली सटीकता के बजाय प्रिसिज़न-रिकॉल और कन्फ़्यूज़न मैट्रिक्स दीजिए, एक बेहद सादे बेसलाइन से तुलना कीजिए, और दूसरे स्रोत या बाद की अवधि के डेटा पर सत्यापन कीजिए।