“أبو عمر، النموذج دقيق بنسبة 98%، بس ليش بحكي إنه هالصورة فيها التهاب رئوي؟ الصورة سليمة مية بالمية!”… كانت هذه كلمات الدكتور رامي، صديقي استشاري الأشعة، وهو يشير إلى شاشة حاسوبه بقلق. كنت قد قضيت شهوراً في بناء نموذج ذكاء اصطناعي لتحليل صور الأشعة السينية للصدر. النموذج كان خارقاً على الورق، لكن في تلك اللحظة، أمام قرار واحد خاطئ وغير مبرر، اهتزت ثقة الطبيب بالكامل. شعرت وقتها أني بنيت سيارة سباق سريعة جداً، لكن بدون مقود أو نوافذ. مجرد صندوق أسود غامض يندفع نحو قرارات لا أفهم منطقها. كانت تلك الحادثة هي الشرارة التي أدخلتني إلى عالم الذكاء الاصطناعي القابل للتفسير (XAI)، العالم الذي أنقذنا من جحيم الصناديق السوداء.
يا أهلاً وسهلاً فيكم يا جماعة الخير. أنا أبو عمر، واليوم بدي أحكيلكم عن شغلة أساسية ومهمة جداً في عالمنا، عالم الذكاء الاصطناعي. مش عن خوارزمية جديدة أو شبكة عصبونية معقدة، بل عن الأهم: الثقة والوضوح. خلينا نغوص مع بعض في قصة الصندوق الأسود وكيف استطعنا فتح نافذة عليه.
ما هو جحيم “الصندوق الأسود” (The Black Box)؟
تخيل معي أنك عينت طباخاً عبقرياً في مطبخك. هذا الطباخ يصنع أطباقاً شهية لم تتذوق مثلها من قبل، لكنه يرفض تماماً أن يخبرك بالمكونات أو طريقة التحضير. كل ما عليك فعله هو أن تأكل وتثق به. هذا هو بالضبط حال العديد من نماذج الذكاء الاصطناعي المتقدمة، وخصوصاً الشبكات العصبونية العميقة (Deep Neural Networks).
نعطيها بيانات (مدخلات)، فتعطينا نتائج دقيقة جداً (مخرجات)، لكن العملية التي تحدث في الوسط تظل غامضة ومبهمة. هذا هو ما نسميه “الصندوق الأسود”.
- لماذا هو مشكلة؟ لأن انعدام الشفافية يؤدي إلى:
- انعدام الثقة: كما حصل مع صديقي الطبيب، كيف يمكن أن نثق بقرار يؤثر على حياة إنسان إذا لم نكن نعرف “لماذا” تم اتخاذه؟
- صعوبة التصحيح: إذا أخطأ النموذج، كيف يمكننا أن نصلح الخلل ونحن لا نعرف أين يكمن؟
- التحيز والظلم: قد يتعلم النموذج أنماطاً متحيزة من البيانات (مثلاً، التحيز ضد فئة معينة في قرارات القروض البنكية)، ولن نكتشف ذلك إلا إذا فهمنا منطقه.
- المساءلة القانونية والأخلاقية: من المسؤول عن خطأ سيارة ذاتية القيادة؟ المبرمج؟ الشركة؟ أم الخوارزمية نفسها؟ بدون تفسير، تضيع المسؤولية.
المنقذ: الذكاء الاصطناعي القابل للتفسير (XAI)
هنا يأتي دور البطل في قصتنا: Explainable AI (XAI) أو الذكاء الاصطناعي القابل للتفسير. الهدف من XAI بسيط وواضح: تحويل الصناديق السوداء إلى صناديق زجاجية (Glass Boxes). بدلاً من الاكتفاء بمعرفة “ماذا” قرر النموذج، نسعى لمعرفة “لماذا” قرر ذلك.
تقنيات XAI هي مجموعة من الأدوات والأساليب التي تساعدنا على فهم سلوك نماذج تعلم الآلة. هي بمثابة المترجم الذي يشرح لنا منطق الآلة بلغة يفهمها البشر.
كيف تعمل تقنيات XAI عملياً؟ (الجزء الممتع)
تقنيات التفسير متنوعة، لكن يمكن تقسيمها بشكل عام حسب نطاقها. هناك تفسيرات “محلية” (Local) تشرح قراراً واحداً محدداً، وهناك تفسيرات “عالمية” (Global) تشرح سلوك النموذج بشكل عام. دعونا نلقي نظرة على أشهر تقنيتين وأكثرها عملية.
تقنية LIME: المحقق المحلي
اسمها اختصار لـ Local Interpretable Model-agnostic Explanations. فكرتها عبقرية في بساطتها. لشرح قرار معين اتخذه النموذج المعقد، يقوم LIME بالآتي:
- يأخذ النقطة (القرار) التي نريد تفسيرها.
- ينشئ الكثير من العينات الجديدة المشابهة لها مع تغييرات طفيفة.
- يمرر هذه العينات الجديدة عبر “الصندوق الأسود” ليرى كيف تتغير المخرجات.
- يبني نموذجاً بسيطاً وقابلاً للتفسير (مثل نموذج الانحدار الخطي) يحاكي سلوك الصندوق الأسود في هذه المنطقة المحلية الصغيرة فقط.
النتيجة؟ نحصل على تفسير بسيط ومفهوم لسلوك النموذج المعقد حول تلك النقطة تحديداً.
مثال كود باستخدام LIME
تخيل أن لدينا نموذجاً يتنبأ بأسعار المنازل. نريد أن نعرف لماذا تنبأ بسعر معين لمنزل محدد. الكود التالي يوضح الفكرة (سنستخدم مكتبة lime في بايثون):
import lime
import lime.lime_tabular
from sklearn.ensemble import RandomForestRegressor
# ... لنفترض أن لدينا بيانات تدريب (X_train, y_train) ونموذج مدرب
# model = RandomForestRegressor()
# model.fit(X_train, y_train)
# 1. إنشاء "المفسّر" (Explainer)
explainer = lime.lime_tabular.LimeTabularExplainer(
training_data=X_train,
feature_names=feature_names, # أسماء الأعمدة مثل "المساحة"، "عدد الغرف"
class_names=['price'],
mode='regression'
)
# 2. اختيار المنزل الذي نريد تفسير سعره (مثلاً، المنزل رقم 5)
instance_to_explain = X_test[5]
# 3. الحصول على التفسير
explanation = explainer.explain_instance(
instance_to_explain,
model.predict,
num_features=5 # نريد أهم 5 عوامل
)
# 4. عرض التفسير
explanation.show_in_notebook(show_table=True)
# أو طباعة النتائج
print(explanation.as_list())
سيُظهر الناتج قائمة بالميزات التي أثرت على السعر، مثل: “المساحة > 150 متر مربع” رفعت السعر، بينما “العمر > 20 سنة” خفضت السعر. بسيط وواضح!
تقنية SHAP: عدالة توزيع التأثير
اسمها اختصار لـ SHapley Additive exPlanations. هذه التقنية تستند إلى مفهوم “قيم شابلي” من نظرية الألعاب، وهي طريقة لتوزيع “المكافأة” (نتيجة التنبؤ) بشكل عادل بين “اللاعبين” (ميزات النموذج).
ببساطة، يجيب SHAP على السؤال: ما هو مقدار مساهمة كل ميزة (مثل مساحة المنزل، عدد الغرف، الموقع) في دفع التنبؤ بعيداً عن المتوسط العام؟
SHAP قوي جداً لأنه يوفر:
- تفسيرات محلية: يوضح مساهمة كل ميزة في قرار واحد محدد.
- تفسيرات عالمية: عبر تجميع التفسيرات المحلية، يمكننا فهم أهمية كل ميزة على مستوى النموذج ككل.
مثال كود باستخدام SHAP
باستخدام نفس مثال أسعار المنازل، لنر كيف يعمل SHAP (باستخدام مكتبة shap):
import shap
# ... لنفترض أن لدينا نفس النموذج المدرب 'model'
# 1. إنشاء "المفسّر"
explainer = shap.TreeExplainer(model) # يوجد أنواع مختلفة من المفسرين حسب النموذج
# 2. حساب قيم SHAP لمجموعة من البيانات (مثلاً، بيانات الاختبار)
shap_values = explainer.shap_values(X_test)
# 3. عرض التفسير لقرار واحد (المنزل رقم 5)
# يوضح هذا المخطط كيف دفعت كل ميزة القرار النهائي
shap.initjs() # لتهيئة العرض في المتصفح
shap.force_plot(explainer.expected_value, shap_values[5,:], X_test[5,:], feature_names=feature_names)
# 4. عرض ملخص للتأثير العالمي للميزات
shap.summary_plot(shap_values, X_test, feature_names=feature_names)
الـ summary_plot رائع جداً، فهو لا يوضح فقط أهم الميزات، بل يوضح أيضاً اتجاه تأثيرها (هل القيم المرتفعة للميزة ترفع التنبؤ أم تخفضه). هذا يعطينا فهماً عميقاً لسلوك النموذج.
نصائح عملية من خبرتي (من قلب الميدان)
بعد سنوات من العمل مع هذه التقنيات، اسمحوا لي أن أقدم لكم بعض النصائح العملية:
- ابدأ والشفافية في ذهنك: لا تنتظر حتى نهاية المشروع لتفكر في التفسير. أحياناً، اختيار نموذج أبسط وأكثر شفافية (مثل الانحدار اللوجستي) قد يكون أفضل من صندوق أسود معقد، خاصة إذا كانت المخاطر عالية.
- اختر الأداة المناسبة للمهمة: هل تحتاج لشرح قرار واحد لمستخدم نهائي؟ LIME قد يكون خياراً ممتازاً. هل تحتاج لفهم سلوك النموذج بشكل عام وتقديمه لزملائك المطورين؟ SHAP يقدم رؤى أعمق.
- التفسير موجه للبشر: تذكر دائماً أن الهدف هو أن يفهم الإنسان. طريقة عرض التفسير لطبيب تختلف عن طريقة عرضه لمهندس بيانات. اجعلها مرئية وبسيطة.
- لا توجد عصا سحرية: حتى تقنيات XAI نفسها هي نماذج تقريبية. التفسير الذي تقدمه هو أفضل تخمين لسلوك النموذج، وليس الحقيقة المطلقة. كن واعياً بهذه الحدود.
الخلاصة: من الغموض إلى الثقة
رحلتنا في عالم الذكاء الاصطناعي تشبه الإبحار في محيط واسع. النماذج الدقيقة هي محركاتنا القوية، لكن بدون بوصلة وخريطة، سنضيع في عرض البحر. تقنيات الذكاء الاصطناعي القابل للتفسير (XAI) هي تلك البوصلة التي توجهنا، هي النافذة التي نطل منها على عمل المحرك لنفهمه ونثق به.
بالعودة إلى قصتي مع الدكتور رامي، عندما استخدمت تقنيات XAI، استطعت أن أعود إليه وأقول: “دكتور، النموذج أخطأ لأنه ركز على علامة ‘ضوضاء’ في جهاز الأشعة تشبه علامات الالتهاب التي تعلمها من آلاف الصور الأخرى”. هنا، تحول الحوار من “لماذا أثق بك؟” إلى “كيف يمكننا تحسين البيانات ليتجنب النموذج هذا الخطأ مستقبلاً؟”. انتقلنا من الشك إلى التعاون البنّاء.
نصيحتي الأخيرة لكم: لا تقبلوا أبداً بالإجابات الغامضة من نماذجكم. كونوا فضوليين، وشككوا، وابحثوا عن “السبب”. فمستقبل الذكاء الاصطناعي لا يكمن في قوته فحسب، بل في شفافيته وقدرتنا على الوثوق به. بالتوفيق يا جماعة الخير! 👨💻