از شبکه عصبی تا درخت تصمیم: چطور مدل‌های هوش مصنوعی رو شفاف و قابل فهم کنیم؟

خب بیا یه کم درباره هوش مصنوعی (همون AI) حرف بزنیم، همون چیزی که این روزا همه جا هست، از چت‌بات‌ها گرفته تا ماشین‌هایی که خودشون رانندگی می‌کنن! پیشرفت‌هایی مثل یادگیری عمیق (Deep Learning یعنی مدلی از هوش مصنوعی که با شبکه عصبی‌های پیچیده کار می‌کنه) و پردازش زبان طبیعی (Natural Language Processing یا NLP یعنی اینکه کامپیوتر بتونه زبان آدم‌ها رو بفهمه و جواب بده) کلی باعث شده AI همه جا به کار بیاد. همه اینا به خاطر حجم عظیم داده‌ها و حسابی قوی شدن کامپیوترهاست.

ولی یه مشکل اساسی داریم: مدل‌های هوش مصنوعی مخصوصاً اونایی که شبکه عصبی دارن، مثل یه جعبه سیاه می‌مونن؛ یعنی درست نمی‌دونیم دارن چی کار می‌کنن و چرا یه تصمیم خاصی می‌گیرن. واسه همین بعضی وقتا آدم بهشون اعتماد نمی‌کنه یا حتی نمی‌تونه بفهمه مشکل کجاست.

اینجا یه ایده باحال میاد وسط: بیایم خروجی شبکه عصبی‌ها رو تبدیل کنیم به مدل‌هایی که خیلی راحت و شفاف می‌تونیم بفهمیمشون؛ مثل درخت تصمیم یا همون Decision Tree (یه مدل خیلی ساده که توش هر تصمیم شبیه یه سؤال بله/خیر پیش میره و شاخه‌بندی میشه تا به نتیجه برسی). اینجوری هم مزایای یادگیری عمیق رو داریم، هم می‌تونیم بفهمیم مدل دقیقاً داره چی کار می‌کنه.

تو این مدل جدید که توی مقاله توضیح داده شده، قراره مدل‌های نمادین (Symbolic Models یعنی مدل‌های قابل فهم برای آدم، مثل قوانین و شرط و شروط) رو با کمک شبکه‌های عصبی feedforward یا همون FNN بسازیم. FNNها اون دسته‌ای هستن که اطلاعات رو لایه به لایه جلو می‌برن و دور نمی‌زنن. توش خبری از پیچیدگی‌های لایه‌های برگشتی نیس!

اینجا دقیقاً قراره چی اتفاق بیفته؟ نویسنده‌ها اومدن با دقت به این نگاه کردن که هر نورون تو هر لایه شبکه عصبی چطور و با چه ورودی‌هایی فعال میشه. بعد اومدن این مسیرهای فعال‌سازی رو دونه‌دونه دنبال کردن و به زبون درخت تصمیم تبدیل کردن. مثلاً شاخه‌های درخت تصمیم نشون میدن که اگه یه نورون خاص با فلان ورودی فعال بشه، یه تصمیم خاص گرفته میشه و الی آخر. اینجوری می‌تونیم بفهمیم مدل چی رو از دیتا یاد گرفته و تصمیم گرفتنش چطوریه.

یه نکته باحال دیگه اینکه این کارو مرحله به مرحله (step-by-step) با مثال توضیح دادن تا کامل قابل فهم بشه. تازه، نویسنده‌ها واسه اینکه کار علمی‌تر و قابل تست باشه، یه نمونه اولیه (Prototype یعنی نسخه دم دستی و تستی یه محصول یا مدل) هم با استفاده از Keras (یه کتابخونه توی پایتونه واسه ساخت راحت شبکه عصبی) و قالب داده h5 ساختن. بعدشم تو محیط Java JDK/JavaFX شبیه‌سازی کردنش که یعنی حتی کسایی که با جاوا راحت‌ترن هم می‌تونن ازش استفاده کنن.

تو این روش، بر اساس اینکه مقدار فعال شدن نورون‌ها چقدره و چه ورودی‌هایی باعثش شده، می‌تونن نقش‌ها و رابطه‌های نمادین رو پیدا کنن؛ مثلاً اینکه هر تیکه از داده داره چه info به شبکه میده. به این میگن distributed representations یعنی اون ویژگی‌هایی که توی شبکه عصبی پخش شدن و هرکدوم یه گوشه از کار مدل رو بر عهده دارن.

یه نتیجه خیلی مهم اینه که با این کار می‌تونیم حتی شبکه‌های عمیق‌تر رو هم تکه‌تکه زیر نظر بگیریم و ساختار تصمیم‌گیریشون رو ببینیم. مثلاً میشه هر لایه پنهان (Hidden Layer) رو بررسی و شاخه‌های درخت رو کامل‌تر کرد. خلاصه همه چیز داره مثل یه داستان پیش میره و ریزبه‌ریز قابل ردگیریه.

نتیجه اصلی کل مقاله اینه: میشه مدل‌های غیرقابل فهم شبکه عصبی رو به چیزی مثل درخت تصمیم تبدیل کرد که خیلی شفافه و ما می‌فهمیم چرا مدل همچین تصمیمی گرفته. اینجوری هم میشه به هوش مصنوعی اعتماد کرد، هم مسئولیت‌پذیریش بیشتر میشه. یعنی اگه مشکلی پیش اومد، می‌دونیم مدل تقصیر رو انداخته گردن کدوم ورودی یا کدوم تصمیم.

کلاً اگه دنبال شفافیت تو مدل‌های هوش مصنوعی هستی یا دلت می‌خواد بدونی چرا یه شبکه عصبی فلان تصمیم رو گرفت، این روش می‌تونه خیلی کمکت کنه. به اصطلاح، این پل بین دنیای شبکه‌های عصبی که شبیه مغز آدم‌ها کار می‌کنن و دنیای قوانین و منطق آدمیزادیه!

منبع: +