Test इस उम्मीद में order नहीं होता कि positive आए
जब कोई डॉक्टर troponin order करती हैं, तो वे यह नहीं पूछ रही होतीं कि “क्या इस मरीज़ को heart attack है?” वे पूछ रही होती हैं कि “इस नतीजे को देखते हुए मुझे अपनी सोच कितनी बदलनी चाहिए?” ये दो अलग सवाल हैं।
Test order होने से पहले ही उनके मन में एक अनुमान होता है। 62 साल का एक पुरुष, जिसके सीने का दर्द बाएँ हाथ की ओर जा रहा हो और जिसे पसीना आ रहा हो, उसमें acute coronary syndrome की pre-test probability ज़्यादा है। 28 साल की एक महिला, जिसे यही शिकायत तीन espresso पीने के बाद हुई हो, उसमें कम। Troponin का नतीजा दोनों के लिए अलग मायने रखता है। पहले मरीज़ में हल्का-सा बढ़ा troponin उसी शक की पुष्टि करता है जो पहले से था। दूसरी मरीज़ में इसी नतीजे के false positive होने की संभावना ज़्यादा है, क्योंकि test ख़ुद perfect नहीं है, और जब ऐसा test किसी ऐसे व्यक्ति पर लगाया जाए जिसे शायद बीमारी है ही नहीं, तो गणित आपके ख़िलाफ़ जाता है।
हर test की एक sensitivity होती है और एक specificity। Sensitivity बताती है कि बीमारी सचमुच मौजूद हो तो test उसे कितनी बार पकड़ता है। Specificity बताती है कि जिसे बीमारी नहीं है, उसे test कितनी बार सही-सही clear करता है। कोई भी test किसी भी पैमाने पर 100% नहीं होता। 95% sensitivity वाला test भी 5% असली cases छोड़ देता है। 90% specificity वाला test भी 10% स्वस्थ लोगों पर ग़लत flag लगा देता है। ये आँकड़े test के गुण हैं, मरीज़ के नहीं। और इनका मतलब यह है कि हर नतीजा अपने साथ एक अनिश्चितता लाता है, जो आपके भरोसे को बदले, उसकी जगह न ले।
Bayesian reasoning यही है। आप मरीज़ के बारे में अपनी मौजूदा जानकारी से शुरू करते हैं। एक नई जानकारी मिलती है। वह कितनी भरोसेमंद है, उसी हिसाब से आप अपना अनुमान update करते हैं। फिर अगली जानकारी के साथ यही दोहराते हैं।
ज़्यादातर clinical AI इसका उल्टा करती है
Healthcare के ज़्यादातर AI systems पीछे की ओर काम करते हैं। वे नतीजों का एक संग्रह लेते हैं, यानी vitals, labs, diagnoses, medications, और उसे training data से सीखे गए patterns से पीछे मुड़कर मिलाते हैं। System को creatinine 1.6, diabetes की history और medication list में एक ACE inhibitor दिखता है, और वह “likely CKD” लिख देता है, क्योंकि जिन cases पर उसकी training हुई, उनमें ये features अक्सर साथ-साथ आते थे।
यह तब तक ठीक लगता है जब तक आप यह न सोचें कि इसमें क्या ग़ायब है। System को नहीं पता कि creatinine बढ़ रहा है या stable है। उसे नहीं पता कि ACE inhibitor kidney protection के लिए दिया गया था या blood pressure के लिए। उसे नहीं पता कि दो साल पहले मरीज़ का creatinine 0.9 था और तब से लगातार चढ़ रहा है। वह इस तथ्य को हिसाब में नहीं लेता कि इस आबादी में urine albumin test का false positive rate 15% है। वह बस आज के snapshot को पुराने patterns से मिलाता है और एक label चिपका देता है।
उसी मरीज़ को देख रही डॉक्टर आगे की ओर सोचेंगी। वे मरीज़ की उम्र, लिंग और risk factors के आधार पर CKD की prior probability से शुरू करेंगी। फिर creatinine के आधार पर update करेंगी, मगर उस update का वज़न इस बात से तय करेंगी कि एक अकेली creatinine reading पर वे कितना भरोसा करती हैं। वे सिर्फ़ आज का नंबर नहीं, trend देखेंगी। ACE inhibitor को भी ध्यान में रखेंगी, मगर उसे kidney disease का सबूत मानने से पहले पूछेंगी कि यह दिया क्यों गया था। हर सबूत probability को कुछ खिसकाता है, और हर सबूत का वज़न उसकी विश्वसनीयता के हिसाब से होता है।
पीछे देखने वाला तरीक़ा पूछता है: यह किससे मिलता-जुलता है? आगे देखने वाला तरीक़ा पूछता है: अब तक जो कुछ पता है, उसके रहते यह नई जानकारी हमें क्या बताती है, और उस पर कितना भरोसा किया जाए?
पूरा मरीज़ देखना, बनाम सिर्फ़ नतीजे देखना
Clinical training में सबसे पहले सिखाई जाने वाली बातों में से एक यह है कि इलाज मरीज़ का होता है, lab का नहीं। Hemolyzed sample में potassium 5.8 का कोई मतलब नहीं। जो मरीज़ दौड़ता हुआ appointment पर पहुँचा हो, उसका 160 का blood pressure hypertension नहीं है। Context तय करता है कि नतीजा signal है या noise, और context के लिए मरीज़ को आज के chart से आगे जानना पड़ता है।
General-purpose AI नतीजों को process करती है। वह नंबर, notes और coded diagnoses पढ़ती है और text के patterns के आधार पर एक output दे देती है। इस काम में वह बहुत अच्छी है। Discharge note की summary किसी भी इंसान से तेज़ बना सकती है। बेतरतीब clinical text से structured data निकाल सकती है। मगर वह chart को उसी तरह पढ़ रही होती है जैसे आप textbook में कोई case study पढ़ते हैं: सब कुछ हो चुकने के बाद।
मरीज़ को उसी पल देख रही डॉक्टर कुछ और कर रही होती हैं। वे अनिश्चितता के बीच, समय के साथ आगे बढ़ते हुए सोच रही होती हैं; हर नई जानकारी आने पर अपना assessment update करती हैं, और हर जानकारी को उतना वज़न देती हैं जितना उस पर भरोसा किया जा सके। वे जानती हैं कि low-risk मरीज़ में positive D-dimer शायद false positive है। वे जानती हैं कि normal chest X-ray शुरुआती pneumonia को rule out नहीं करता। Prior probability उनके दिमाग़ में रहती है और हर finding के साथ बदलती है, सबके साथ बराबर नहीं, बल्कि हर finding की diagnostic value के अनुपात में।
Chroneme बनाते समय हम चाहते थे कि system वैसे सोचे जैसे ये डॉक्टर सोचती हैं, search engine की तरह नहीं। आगे की ओर, पीछे की ओर नहीं। हर नए सबूत के साथ probabilities को update करते हुए, और हर सबूत को उतना वज़न देते हुए जितना वह सचमुच भरोसेमंद है।
अमल में यह कैसे काम करता है
Type 2 diabetes का एक 58 साल का मरीज़ routine labs के लिए आता है। उम्र, लिंग और diabetes के diagnosis के आधार पर उसमें chronic kidney disease की baseline probability एक ख़ास स्तर से शुरू होती है। शून्य नहीं, क्योंकि CKD की सबसे बड़ी वजह diabetes है। ज़्यादा भी नहीं, क्योंकि न कोई symptoms हैं, न kidney की कोई पुरानी finding।
उसका creatinine 1.2 आता है। तकनीकी तौर पर normal range में है, मगर पिछले नतीजे से ज़्यादा। System update करता है, पर थोड़ा, क्योंकि एक ज़रा-से बढ़े creatinine की diagnostic value मामूली है। अकेले creatinine की CKD के लिए sensitivity और specificity अपने आप में कुछ ख़ास मज़बूत नहीं।
दस महीने बाद creatinine 1.4 है और eGFR 60 से नीचे आ गया है। अब update बड़ा है, क्योंकि 60 से कम eGFR की CKD के लिए diagnostic value कहीं ज़्यादा है। मगर system को वह चीज़ भी दिखती है जो कोई static model नहीं देख सकता: trajectory। Creatinine सिर्फ़ बढ़ा हुआ नहीं है, ऐसी रफ़्तार से चढ़ रहा है कि आगे बढ़ाएँ तो चिंताजनक दायरे में पहुँच जाता है।
एक साल बाद proteinuria दिखता है। Probability अब इतनी ऊँची है कि क़दम उठाना बनता है। मगर clinically अहम हिस्सा यह है: system इस मरीज़ पर proteinuria आने से कई महीने पहले से flag लगा रहा था। यक़ीन के साथ नहीं, बल्कि एक ऐसी probability के साथ जो इस तरह चढ़ रही थी कि ध्यान माँगती थी। Chart देख रही डॉक्टर हर update देख सकती हैं, यह देख सकती हैं कि उसके पीछे क्या था, और तय कर सकती हैं कि वे सहमत हैं या नहीं। अगर उन्हें लगता है कि ACE inhibitor kidney के लिए नहीं, blood pressure के लिए दिया गया था, तो वे अपने clinical judgment में उस factor को अलग वज़न दे सकती हैं। System अपना तर्क दिखाता है। डॉक्टर अपना लगाती हैं।
Trajectory ख़ुद एक सबूत बन जाती है, किसी एक नंबर से स्वतंत्र।
भरोसे के लिए यह क्यों अहम है
जब कोई neural network कहता है “CKD की 73% संभावना”, तो यह पूछने का कोई रास्ता नहीं कि क्यों। यह नंबर लाखों parameters से निकलता है, जिनका किसी clinical अवधारणा से कोई लेना-देना नहीं। डॉक्टर इसे देखकर यह नहीं कह सकतीं कि “creatinine वाले हिस्से से मैं सहमत हूँ, मगर medication history को तुम ज़रूरत से ज़्यादा वज़न दे रहे हो।” कोई creatinine वाला हिस्सा है ही नहीं। कोई medication वाला हिस्सा नहीं। बस एक नंबर है।
जब एक Bayesian system कहता है 73%, तो डॉक्टर पूछ सकती हैं क्यों। वे देख सकती हैं कि किस सबूत ने probability को कितना खिसकाया। वे किसी ख़ास factor से असहमत होकर अपना विवेक लगा सकती हैं। Clinical AI इलाज को असल में इसी संवाद से बदलती है। इसके बिना नतीजा सिर्फ़ एक दावा है। इसके साथ, नतीजा एक दलील है।
एक nephrologist को जब हमने यह system दिखाया, तो उन्होंने यही बात बहुत साफ़ कही। एक मरीज़ की evidence chain देखकर बोले कि ज़्यादातर से वे सहमत हैं, मगर एक factor को ज़रूरत से ज़्यादा वज़न मिल रहा है, क्योंकि दवा जिस संदर्भ में लिखी गई थी वह system की मान्यता से अलग था। वे सही थे। और यह कि वे यह बात पकड़ पाए, ख़ास factor की ओर इशारा कर पाए और अपनी विशेषज्ञता लगा पाए, ठीक यही वह चीज़ है जो clinical decision support को मुमकिन बनानी चाहिए। Black box उन्हें यही probability देता, मगर इस बातचीत की कोई गुंजाइश न होती।
सीमाएँ, जिन्हें हम खुलकर मानते हैं
Bayesian inference यह मानकर चलता है कि बीमारी की मौजूदगी में सबूत एक-दूसरे से conditionally independent हैं। Clinical medicine में अक्सर ऐसा नहीं होता। CKD के संदर्भ में creatinine और proteinuria आपस में correlated हैं। यह एक जानी-पहचानी limitation है, और इसे पूरी तरह हल करना इस क्षेत्र का एक खुला सवाल है।
नतीजे की गुणवत्ता सबूतों को दिए गए वज़न की गुणवत्ता पर टिकी है। इनमें से कुछ वज़न प्रकाशित literature में अच्छी तरह स्थापित हैं। कुछ अनुमान हैं, जिन्हें हम validation के ज़रिए निखारते रहते हैं। Calibration का काम जारी है, और हम इससे उलट कोई दावा नहीं करते।
Bayesian inference structured और मापे जा सकने वाले सबूतों को अच्छी तरह सँभालता है: labs, vitals, medications, coded diagnoses। Unstructured clinical notes और मरीज़ के बताए लक्षणों को यह उतनी अच्छी तरह नहीं सँभालता। हम अलग-अलग तरह के clinical data के लिए अलग-अलग तरीक़े इस्तेमाल करते हैं, जैसी समस्या वैसा औज़ार।
हमने Bayesian inference इसलिए चुना कि यह डॉक्टरों के पहले से मौजूद सोचने के ढंग का ही आईना है। एक अच्छा clinician जो सहज बुद्धि से करता है, system उसे व्यवस्थित रूप देता है, बड़े पैमाने पर, हर मरीज़ के लिए, लगातार। बस इतना ही। कोई जादू नहीं। सिर्फ़ clinical reasoning के पीछे का गणित, खोलकर सामने रखा हुआ।
