چرا باید بهت اعتماد کنم؟


یا خروجی یک مدل یادگیری ماشین چقدر قابل اعتماد است.

کلی‌ترین نگاهی که به علم هوش مصنوعی در حوزه یادگیری می‌شه کرد اینه که ما به یک سیستم یاد می‌دیم که چطوری یاد بگیره! و بعدش اگه همه چیز بر وفق مراد پیش بره (مثلاً به تعداد کافی داده در اختیار داشته باشیم، سخت‌افزار پردازشگر مناسب مثل کارت گرافیک نسبتاً قدرتمند در اختیار داشته باشیم، مدلی که برای مسأله مورد نظر انتخاب می‌کنیم انتخاب خوبی باشه، یا ویژگی‌هایی که برای آموزش دادن مدل انتخاب می‌شن هوشمندانه و درخور باشند، ابرپارامترها تنظیم شده باشند و ....) بعدش می‌شه پا روی پا انداخت و امیدوار بود که مدل روی داده‌های آزمایش هم نتیجه خوبی بده. کل هدف من از نوشتن این متن اینه که «نتیجه خوب» چیه؟ بعد از اینکه دونه دونه دستورالعمل پخت یک مدل از مرحله پیش‌پردازش داده، مهندسی ویژگی و انتخاب ویژگی، انتخاب مدل و اعتبارسنجی رو اجرا کردیم در مرحله تست برای اینکه بفهمیم مدلمون عملکرد خوبی داره یا نه به معیارهای ارزیابی نیاز داریم. اکثر مدل‌های یادگیری ماشین معیار اصلی ارزیابی‌شون accuracy است. معیارهای ارزیابی دیگه‌ای هم مثل امتیاز اف، precision و recall هم با توجه به مسأله اهمیتشون کم و زیاد میشه. اگر معیار ارزیابی بالا باشه معمولا توی یک جدول توی صفحه‌های آخر مقاله‌تون قرار می‌گیره، کل دنیا هم روش قسم حضرت عباس می‌خوره که مدلت خوبه.

اکثر مدل‌های یادگیری ماشین (مثل شبکه‌های عصبی) جعبه سیاه هستند. به این معنی که ورودی و خروجی مطلوب معلوم شده و این وسط مدل تخمین خوبی می‌زنه از اینکه با چه تابعی ورودی رو به خروجی نگاشت کنه. اما سوال اینجاست وقتی شما نمی‌دونین اون وسط تو دل مدل چه اتفاقاتی افتاده تا این خروجی حاصل بشه، چقدر به خروجی مدل اعتماد می‌کنید؟ به طور مثال مسأله تشخیص ناهنجاری روی نوار قلب یک بیمار رو در نظر بگیرید. ECG فرد با یک سری الکترود که به بدنش متصل شده هر دو دهم میلی ثانیه سینگال قلب طرف رو ضبط می‌کنه. فرض کنید ۶۰هزار گام زمانی ثبت شده که در انتها یک سری زمانی از نوار قلب رو نشون می‌دن که فقط ۲۰۰گام زمانیش نارسایی قلبی فرد رو نشون می‌ده. اونوقت اگه مدل ما فقط خروجی بده که سالمه همه چیز معیار ارزیابی accuracyش میشه ۹۹.۷ درصد که نتیجه فوق العاده‌ست. خب قبل از اینکه ژورنالش کنیم شما به این مدل اعتماد می‌کنین؟ یک سری نقد و سوال تو ذهنتون احتمالاً پیش اومده که نویسنده یه طرفه به قاضی رفته و چرا معیار ارزیابیش رو یه چیز دیگه مثل recall نذاشت؟ یا چرا اصلاً پارامتر ریسک رو در نظر نگرفت؟ (اگه این سوال تو ذهنتون پیش اومده حتماً اول بی‌شاپ یا تئودوریس یا کتاب مشابهی در زمینه پترن و ام‌ال رو خوندین! درود به تو) یا چرا هر گام زمانی رو ورودی گرفته و زیررشته یا کیف نکرده سری زمانی رو؟ یا.... همه این‌ها درست اما در مفهومی که می خوام به شما انتقال بدم خدشه‌ای وارد نمی‌کنه. حوزه‌هایی مثل تشخیص‌های پزشکی و موارد امنیتی مثل شناسایی تروریست و ... اعتماد کردن بیش از پیش اهمیت پیدا می‌کنه و به شخصه من به تشخیص یک دکتر تا تشخیص یک مدل ماشین لرنینگ اعتماد می‌کنم. (احتمالاً باز تو ذهنتون این سوال پیش اومده که پزشک diagnose می‌کنه مدل detect می‌کنه چه ربطی اینا به هم دارن؟ که باید بگم درست فکر می‌کنید. ولی می‌خوام این دو تا رو بهم ربطشون بدم. یعنی قراره مدل یادگیری ماشین رو به عنوان کمک‌کننده به یک پزشک مطرح کنم.) با این حال یک مثال دیگه می‌زنم. فرض کنید آنفولانزا گرفتید و توهم کرونا مثل کابوس شده براتون، اینجا قطعیت حرف اول رو می‌زنه: من چمه؟ مدل تشخیص بیماری‌ با star فراوان از گیت‌هاب پیدا کردید و وقتی علائمتون (داده‌ها) رو به مدل می‌دید خروجی می‌ده: آنفولانزا. شاید برای یک ثانیه نفس راحتی بکشید اما اگه همون اطراف مامانتون باشه بلند می‌گه از کجا معلوم راست بگه؟ اینجاست که لیست مفسر (Explanation) برگ برنده‌ای است که یه دانشمند داده یا ماشین‌لرنینگ‌کار رو می‌کنه تا جامعه پزشکی و مردم عادی رو از خودش ناامید نکنه. لیست مفسر کارش شبیه پرتو ایکسه. پرتو ایکس رو می‌ندازی روی جعبه سیاه مدل و مشخص میشه که مدل کدوم ویژگی‌ها رو بیشتر بهش اهمیت می‌ده و خروجی نهایی رو بر اساس تأثیر کدوم ویژگی‌ها بیرون می‌ده. به تصویر زیر نگاه کنید.

مدل، بر پایه داده‌های ورودیش مثل عطسه، وزن، سردرد، خستگی و سن، آنفولانزا رو تشخیص داده. اما روی خروجی نهایی مدل واقعاً کدوم یکی از این‌ها باعث شده که خروجی بشه آنفولانزا؟ لیست مفسر از روی مدل فهمیده که مدل با توجه به ویژگی‌های عطسه کردن و سردرد و عدم خستگی تشخیص داده که فرد آنفولانزا داره. حالا میشه به این مدل اعتماد کرد؟ اگه پزشک نیستید باید بگین نه. لیست مفسر برای پزشک معالج کاملاً قابل درکه. خبری از صفر و یک و چیزای عجیب غریب کامپیوتر داخلش نیست. در عوض فوق العاده کمک‌کننده می‌شه. عطسه کردن و سردرد از علائم آنفولانزا هست و همچنین خستگی. اما مدل عدم خستگی رو هم به عنوان یکی از پارامترهای تاثیرگذار برای تشخیصش قرار داده. اما با این همه خیلی به بیراهه نرفته و تا حد قابل قبولی میشه به مدل اعتماد کرد. اما تصمیم آخر رو پزشک می‌گیره. اینه که می‌گن کامپیوتر در خدمت انسان نه انسان در خدمت کامپیوتر و مابقی اشعار پشت اتوبوسی. همین‌طور که مشخصه همین لیست‌مفسر رو وقتی به یه فرد متخصص (اینجا پزشک) نشون می‌دید نظر اون در مورد لیست باعث میشه که با اطلاعاتی که از فرد متخصص می‌گیرین بتونین مدلتون رو ارتقا بدین و چیزایی که اشتباه یاد گرفته رو حالیش کنین که دیگه یاد نگیره. خیلی جالبه نه؟ حالا این لیست مفسر چطور ساخته میشه؟ هیهات داره. مقاله رفرنس رو بخونین. هنوزم به معیارهای ارزیابی که تو مقاله‌ها هست اعتماد می‌کنین؟ می‌تونم بهت اعتماد کنم؟


مرجع

Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. "" Why should I trust you?" Explaining the predictions of any classifier." Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. 2016.‏