يا جماعة الخير، أذكر ذلك اليوم جيداً. كان يوم ثلاثاء، والمكتب يعجّ بالهمهمات والاجتماعات كالعادة. أنا أبو عمر، جالس في مكتبي أحتسي فنجان القهوة الصباحي وأراجع بعض الكود، وفجأة يدخل علي مدير قسم العمليات، وجهه لا يبشر بالخير أبداً. قال لي بنبرة فيها من القلق أكثر من العتب: “أبو عمر، بدنا نحكي. في مشكلة كبيرة”.
القصة وما فيها، أن نظام التصنيف الائتماني الآلي الذي بنيناه باستخدام أحدث نماذج التعلم العميق (Deep Learning)، والذي كان مصدر فخر لنا بدقته التي تجاوزت 95%، بدأ يسبب لنا كوابيس حقيقية. النظام رفض طلب قرض لأحد العملاء المهمين، والذي يبدو ملفه للوهلة الأولى مثالياً: راتب عالٍ، تاريخ ائتماني نظيف نسبياً، ويعمل في شركة مرموقة. عندما تواصل العميل مع خدمة العملاء ليسأل عن السبب، كان الجواب “النظام قرر ذلك”. طبعاً، هذا جواب غير مقبول لا للعميل ولا للجهات التنظيمية.
اجتمعنا كلنا في غرفة الاجتماعات: أنا وفريقي التقني، مدير العمليات، ومسؤول الامتثال القانوني الذي كان يمسح حبات العرق عن جبينه. السؤال الذي كان يطرحه الجميع بصوت عالٍ أو في سرهم: “ليش النظام رفض الطلب؟”. والحقيقة المرة أنني لم أكن أملك جواباً دقيقاً. كل ما كنت أستطيع قوله هو “النموذج رياضي معقد، أعطى هذا الاحتمال بناءً على آلاف المتغيرات…”. كان نموذجنا عبارة عن “صندوق أسود” (Black Box)، يعطي نتائج مذهلة، لكن لا أحد فينا، حتى أنا الذي بنيته، يستطيع أن يشرح “كيف” و “لماذا” وصل إلى قرار معين. هذه كانت بداية رحلتنا الإجبارية والمثمرة مع ما يسمى بـ “الذكاء الاصطناعي القابل للتفسير” أو XAI.
الصندوق الأسود: عندما تكون الدقة لعنة وليست نعمة
في عالم التكنولوجيا المالية (Fintech)، خصوصاً في مجال الإقراض والائتمان، الدقة وحدها لا تكفي. بل قد تكون خطيرة إذا لم تكن مصحوبة بالشفافية. نموذجنا، الذي كان يستخدم خوارزميات مثل XGBoost والشبكات العصبية، كان يعاني من عدة مشاكل جوهرية على الرغم من دقته العالية:
- التحيز الخفي (Hidden Bias): النماذج المعقدة تتعلم أنماطاً من البيانات التاريخية. إذا كانت هذه البيانات تحتوي على أي نوع من التحيز التاريخي (مثلاً، تحيز ضد مناطق جغرافية معينة أو فئات ديموغرافية)، فالنموذج سيتعلم هذا التحيز ويعززه، مما يؤدي إلى قرارات غير عادلة.
- المخاطر التنظيمية (Regulatory Risks): قوانين مثل “اللائحة العامة لحماية البيانات” (GDPR) في أوروبا وغيرها من التشريعات حول العالم بدأت تمنح العملاء “الحق في التفسير” (Right to Explanation). أن تقول لجهة تنظيمية “النموذج قرر هكذا” هو بمثابة دعوة مفتوحة لغرامات باهظة.
- فقدان الثقة الداخلية والخارجية: كيف يمكن لفريق خدمة العملاء أن يساعد عميلاً غاضباً إذا لم يفهموا هم أنفسهم سبب القرار؟ وكيف يمكن لإدارة المخاطر أن تثق بنظام لا يمكنها مساءلته؟
كنا في ورطة حقيقية. المنتج الذي بنيناه ليحل مشكلة، أصبح هو نفسه المشكلة الأكبر.
الذكاء الاصطناعي القابل للتفسير (XAI): إضاءة الصندوق الأسود
هنا بدأ البحث عن حل. لم نكن نريد التخلي عن قوة نماذجنا، ولكن كنا بحاجة ماسة إلى طريقة لفهمها. هذا هو جوهر الذكاء الاصطناعي القابل للتفسير (Explainable AI – XAI). هو ليس نوعاً جديداً من الذكاء الاصطناعي، بل هو مجموعة من الأدوات والتقنيات التي تُطبق على النماذج الموجودة لجعل قراراتها مفهومة للبشر.
ما هو XAI بالضبط؟
ببساطة، XAI يجيب على سؤال “لماذا؟”. بدلاً من مجرد الحصول على نتيجة (مثلاً، “رفض القرض بنسبة 80%”). يمنحك XAI الأسباب وراء هذه النتيجة (مثلاً، “تم رفض القرض بسبب: 1. نسبة الدين إلى الدخل عالية، 2. وجود دفعة متأخرة حديثة، 3. قصر التاريخ الائتماني”).
هناك نوعان رئيسيان من التفسيرات التي يقدمها XAI:
- التفسيرات العامة (Global Explanations): تساعدك على فهم سلوك النموذج بشكل عام. ما هي أهم العوامل التي ينظر إليها النموذج عند اتخاذ قراراته؟ (مثلاً، هل الراتب أهم من عدد القروض الحالية؟).
- التفسيرات المحلية (Local Explanations): وهي الأهم في حالتنا، حيث تفسر قراراً فردياً واحداً. لماذا تم رفض طلب “أحمد” تحديداً؟
من التنظير للتطبيق: كيف استخدمنا SHAP لإنقاذ الموقف
بعد بحث وتقصي، استقر رأينا على استخدام مكتبة برمجية قوية جداً اسمها SHAP (SHapley Additive exPlanations). هذه الأداة مبنية على نظرية الألعاب (Game Theory) وتعتبر من أفضل الأدوات في مجال XAI لقدرتها على تقديم تفسيرات دقيقة ومتسقة لكل من التفسيرات العامة والمحلية.
الآن، دعونا نعود لقصة العميل الذي رُفض طلبه. كيف يمكن لـ SHAP أن يساعدنا؟
خطوات عملية مع مثال كود
لنفترض أن لدينا نموذج XGBoost مدرب مسبقاً. الخطوة الأولى هي تطبيق SHAP عليه لفهم قراراته. (الكود التالي هو تبسيط للمفهوم باستخدام لغة Python).
import shap
import xgboost
import pandas as pd
# 1. تحميل النموذج المدرب والبيانات
# model = ... (load your trained XGBoost model)
# X_data = ... (load your feature data as a pandas DataFrame)
# لنفترض أن هذا هو النموذج والبيانات لدينا (مثال توضيحي)
X, y = shap.datasets.adult()
model = xgboost.XGBClassifier().fit(X, y)
# 2. إنشاء "المُفسِّر" (Explainer) الخاص بـ SHAP
explainer = shap.Explainer(model, X)
# 3. اختيار العميل الذي نريد تفسير قراره (لنفترض أنه العميل رقم 50)
customer_index = 50
shap_values = explainer(X.iloc[[customer_index]])
# 4. عرض التفسير بشكل مرئي (هذه هي اللحظة السحرية!)
# shap.initjs() # في دفتر jupyter
shap.force_plot(explainer.expected_value, shap_values.values, X.iloc[customer_index])
قراءة النتائج: من بيانات إلى قصة
عند تنفيذ الكود أعلاه، نحصل على رسم بياني يسمى “Force Plot”. هذا الرسم كان بمثابة الوحي لنا!
الـ Force Plot يوضح لك العوامل التي “دفعت” القرار نحو الرفض (باللون الأحمر)، والعوامل التي “دفعت” القرار نحو الموافقة (باللون الأزرق). طول الشريط يمثل قوة تأثير هذا العامل.
عندما طبقنا هذا على حالة عميلنا، ظهرت لنا القصة كاملة:
- عوامل حمراء (تدفع للرفض):
- نسبة الدين إلى الدخل (Debt-to-Income Ratio): كانت مرتفعة بشكل ملحوظ، وهذا كان العامل الأقوى.
- عدد الاستعلامات الائتمانية الحديثة: كان لديه 3 استعلامات في آخر شهرين، مما يشير إلى بحثه عن تمويل في عدة أماكن (علامة خطر).
- متوسط عمر الحسابات: كان تاريخه الائتماني قصيراً نسبياً.
- عوامل زرقاء (تدفع للموافقة):
- الدخل السنوي: كان مرتفعاً جداً، وهذا ما خدعنا في البداية عند النظر للملف يدوياً.
- تاريخ الدفعات (باستثناء واحدة): كان سجله جيداً في الغالب.
فجأة، لم يعد القرار غامضاً. أصبح لدينا قصة واضحة ومنطقية. النموذج لم يكن متحيزاً أو غبياً، بل كان يرى نمطاً لم نره نحن بالعين المجردة. لقد أعطى وزناً كبيراً لمجموعة من عوامل الخطر الصغيرة التي تفوقت في النهاية على عامل الدخل المرتفع.
فوائد أبعد من مجرد تفسير قرار واحد
تطبيق XAI لم يحل لنا مشكلة العميل الغاضب فقط، بل فتح الباب أمام تحسينات هائلة في عملياتنا:
- تمكين خدمة العملاء: أصبح بإمكان موظف خدمة العملاء الآن أن يرى ملخصاً بسيطاً لأسباب القرار. يمكنه أن يقول للعميل: “سيدي، نرى أن دخلك ممتاز، ولكن يبدو أن نسبة الدين الحالية وعدد الاستعلامات أثرت على القرار. ربما يمكنك المحاولة مرة أخرى بعد تخفيض بعض الديون والانتظار لبضعة أشهر”. هذا يحول تجربة سلبية إلى نصيحة بناءة.
- تدقيق التحيز والعدالة: باستخدام SHAP، يمكننا تحليل تأثير متغيرات حساسة (مثل المنطقة الجغرافية) على قرارات النموذج بشكل عام. إذا وجدنا أن النموذج يعتمد بشكل غير مبرر على متغير معين قد يشير إلى تحيز، يمكننا إعادة تدريبه أو تعديل البيانات.
- بناء ثقة المنظمين: في اجتماعنا التالي مع مسؤولي الامتثال، بدلاً من التمتمة بكلمات غير مفهومة، عرضنا عليهم لوحة تحكم تفاعلية تظهر تفسيرات SHAP لكل قرار. كانت تلك لحظة فارقة في علاقتنا معهم.
نصائح من قلب الميدان (من أبو عمر)
بعد خوض هذه التجربة، خرجت ببعض الدروس التي أحب أن أشاركها معكم يا جماعة:
- لا تنتظر الكارثة: ابدأ في دمج أدوات XAI في دورة حياة تطوير نماذجك من اليوم الأول، لا تنتظر حتى تأتيك شكوى من عميل أو استدعاء من جهة تنظيمية.
- التفسير ليس بديلاً عن الخبرة: أدوات مثل SHAP تعطي تفسيرات، لكن هذه التفسيرات تحتاج إلى خبير (مثل محلل مخاطر أو عالم بيانات) ليفهم سياقها ويتخذ الإجراء الصحيح.
- فكر في “واجهة المستخدم للتفسير”: لا يكفي أن تولّد الرسوم البيانية للمطورين. فكر كيف ستقدم هذه المعلومات بشكل مبسط ومفهوم لموظف خدمة العملاء أو مدير المخاطر.
- اختر الأداة المناسبة: SHAP أداة رائعة لكنها قد تكون بطيئة حسابياً. هناك أدوات أخرى مثل LIME (Local Interpretable Model-agnostic Explanations) قد تكون أسرع لبعض الحالات. افهم الفروقات واختر ما يناسبك.
الخلاصة: من الظلام إلى النور 💡
رحلتنا مع الصندوق الأسود كانت شاقة لكنها ضرورية. تعلمنا بالطريقة الصعبة أن في عالم القرارات المصيرية التي تؤثر على حياة الناس المالية، مثل التصنيف الائتماني، الشفافية ليست ميزة إضافية، بل هي حجر الأساس. الذكاء الاصطناعي القابل للتفسير (XAI) لم يكن مجرد أداة تقنية، بل كان الجسر الذي عبرنا به من عالم الشك والغموض إلى عالم الثقة والوضوح.
اليوم، لم نعد نخاف من سؤال “لماذا؟”، بل أصبحنا نرحب به، لأننا نملك الإجابة. وهذا، يا أصدقائي، هو الفرق بين بناء “برنامج ذكي” وبناء “نظام مسؤول”. يلا يا جماعة، شدّوا حيلكم وخلّوا شغلكم دايماً في النور. 👍