←Chronicle

Clinical AI میں Bayesian inference کا اصل مطلب

آگے بڑھتا استدلال، یا پیچھے مڑ کر مماثلت

Chroneme / Chronicle

Test اس امید پر order نہیں کیا جاتا کہ positive آئے

جب کوئی ڈاکٹر troponin order کرتی ہے تو وہ یہ نہیں پوچھ رہی ہوتی کہ “کیا اس مریض کو heart attack ہے؟” وہ پوچھ رہی ہوتی ہے کہ “اس نتیجے کی روشنی میں مجھے اپنی سوچ کتنی بدلنی چاہیے؟” یہ دو الگ سوال ہیں۔

Test order ہونے سے پہلے ہی اس کے ذہن میں ایک اندازہ موجود ہوتا ہے۔ 62 سال کا ایک مرد جس کے سینے کا درد بائیں بازو کی طرف جا رہا ہو اور جسے پسینہ آ رہا ہو، اس میں acute coronary syndrome کی pre-test probability زیادہ ہے۔ 28 سال کی ایک عورت، جسے یہی شکایت تین espresso پینے کے بعد ہوئی ہو، اس میں کم۔ Troponin کا نتیجہ دونوں کے لیے الگ معنی رکھتا ہے۔ پہلے مریض میں ہلکا سا بڑھا ہوا troponin وہی تصدیق کرتا ہے جس کا شبہ پہلے سے تھا۔ دوسری مریضہ میں زیادہ امکان یہی ہے کہ یہی نتیجہ false positive ہو، کیونکہ test خود کامل نہیں، اور جب ایک ناقص test کسی ایسے شخص پر لگایا جائے جسے غالباً بیماری ہے ہی نہیں، تو حساب آپ کے خلاف جاتا ہے۔

ہر test کی ایک sensitivity ہوتی ہے اور ایک specificity۔ Sensitivity بتاتی ہے کہ جب بیماری واقعی موجود ہو تو test اسے کتنی بار پکڑتا ہے۔ Specificity بتاتی ہے کہ جسے بیماری نہیں، اسے test کتنی بار درست طور پر clear کرتا ہے۔ کوئی test ان دونوں میں سے کسی پر بھی 100% نہیں۔ 95% sensitivity والا test بھی 5% اصل cases چھوڑ دیتا ہے۔ 90% specificity والا test بھی 10% صحت مند لوگوں پر غلط flag لگا دیتا ہے۔ یہ اعداد test کی خصوصیات ہیں، مریض کی نہیں۔ اور ان کا مطلب یہ ہے کہ ہر نتیجے میں کچھ نہ کچھ uncertainty ہوتی ہے، جسے آپ کے اعتماد کو بدلنا چاہیے، اس کی جگہ نہیں لینی چاہیے۔

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 گردوں کی حفاظت کے لیے دیا گیا تھا یا 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 پڑھتی ہے اور تحریری patterns کی بنیاد پر جواب دیتی ہے۔ اس کام میں وہ بہت اچھی ہے۔ Discharge note کا خلاصہ کسی بھی انسان سے تیز بنا سکتی ہے۔ بے ترتیب clinical text سے structured data نکال سکتی ہے۔ مگر وہ chart کو اسی طرح پڑھ رہی ہوتی ہے جیسے آپ textbook میں کوئی case study پڑھتے ہیں: سب کچھ ہو چکنے کے بعد۔

مریض کو اسی لمحے دیکھنے والی ڈاکٹر کچھ اور کر رہی ہوتی ہے۔ وہ uncertainty کے عالم میں، وقت کے ساتھ آگے کی سمت سوچ رہی ہوتی ہے۔ ہر نئی معلومات آنے پر اپنا 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 سالہ مریض معمول کی labs کے لیے آتا ہے۔ عمر، جنس اور diabetes کی diagnosis کی بنیاد پر اس میں chronic kidney disease کی baseline probability ایک خاص سطح سے شروع ہوتی ہے۔ صفر نہیں، کیونکہ CKD کی سب سے بڑی وجہ diabetes ہے۔ زیادہ بھی نہیں، کیونکہ نہ کوئی symptoms ہیں نہ گردوں کی کوئی پرانی 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 گردوں کے لیے نہیں، blood pressure کے لیے دیا گیا تھا، تو وہ اپنے clinical judgment میں اس factor کو مختلف وزن دے سکتی ہے۔ System اپنا استدلال دکھاتا ہے، ڈاکٹر اپنا۔

Trajectory خود ایک ثبوت بن جاتی ہے، کسی ایک نمبر سے آزاد۔

اعتماد کے لیے یہ کیوں اہم ہے

جب کوئی neural network کہتا ہے کہ “CKD کا 73% امکان”، تو یہ پوچھنے کا کوئی راستہ نہیں کہ کیوں۔ یہ نمبر لاکھوں parameters سے نکلتا ہے جن کا کسی clinical تصور سے کوئی تعلق نہیں۔ ڈاکٹر اسے دیکھ کر یہ نہیں کہہ سکتی کہ “creatinine والے حصے سے میں متفق ہوں، مگر medication history کو تم ضرورت سے زیادہ وزن دے رہے ہو۔” کوئی creatinine والا حصہ ہے ہی نہیں۔ کوئی medication والا حصہ نہیں۔ بس ایک نمبر ہے۔

جب ایک Bayesian system کہتا ہے 73%، تو ڈاکٹر پوچھ سکتی ہے کہ کیوں۔ وہ دیکھ سکتی ہے کہ کس ثبوت نے probability کو کتنا سرکایا۔ وہ کسی مخصوص factor سے اختلاف کر کے اپنا judgment لگا سکتی ہے۔ Clinical AI علاج کو اصل میں اسی مکالمے سے بدلتی ہے۔ اس کے بغیر نتیجہ محض ایک دعویٰ ہے۔ اس کے ساتھ، نتیجہ ایک دلیل ہے۔

ایک nephrologist کو جب ہم نے یہ system دکھایا تو انہوں نے یہی بات بہت صاف کہی۔ ایک مریض کی evidence chain دیکھ کر بولے کہ زیادہ تر سے وہ متفق ہیں، مگر ایک factor کو ضرورت سے زیادہ وزن مل رہا ہے، کیونکہ دوا جس پس منظر میں لکھی گئی تھی وہ system کے مفروضے سے مختلف تھا۔ وہ درست تھے۔ ان کا یہ بات پکڑ لینا، اس مخصوص factor کی نشاندہی کرنا اور اپنی مہارت بروئے کار لانا، ٹھیک یہی وہ چیز ہے جسے clinical decision support کو ممکن بنانا چاہیے۔ Black box انہیں یہی probability دیتا، مگر اس گفتگو کی کوئی گنجائش نہ ہوتی۔

حدود، جن کا ہم کھل کر اعتراف کرتے ہیں

Bayesian inference یہ فرض کرتا ہے کہ بیماری کی موجودگی میں شواہد ایک دوسرے سے conditionally independent ہیں۔ Clinical medicine میں اکثر ایسا نہیں ہوتا۔ CKD کے context میں 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 کے پیچھے کا حساب، کھول کر سامنے رکھا ہوا۔