الدرس الثالث (١)
انظر إلى العنوان: اتخاذ القرار القائم على القواعد. تعتمد هذه الأنظمة، وتسمى الأنظمة الخبيرة، على استخدام مجموعة من القواعد المحددة مسبقاً لاتخاذ القرارات وحل المشكلات، مثل تشخيص الحالات الطبية. انظر إلى قاعدة المعرفة في المنتصف: هي مجموعة الحقائق والقواعد التي يستخدمها النظام لاتخاذ القرارات بناءً على خبرات بشرية. انظر إلى الجدول في الأسفل: من مزايا هذه الأنظمة اتخاذ القرارات بسرعة وبدقة أفضل من البشر في المهام التي تتطلب معرفة كبيرة، وتعمل باستمرار دون تحيز. أما من عيوبها أنها لا تستطيع التعامل مع المواقف التي تقع خارج نطاق خبراتها، ولا يمكنها التعلم أو التكيف بالطريقة نفسها التي يفعلها البشر، مما يجعلها أقل قابلية للتطبيق عندما تتغير مدخلات البيانات والمنطق كثيراً بمرور الوقت.
يقوم الدرس على الأنظمة القائمة على القواعد لاتخاذ القرارات وحل المشكلات، وهي تشبه الأنظمة الخبيرة التي تحاكي الخبرة البشرية. يبدأ الشرح بالإصدار الأول الذي يعتمد على تعليمات برمجية ثابتة بعبارات شرطية IF لتشخيص الأمراض بناء على الأعراض. ثم يتطور النظام في الإصدار الثاني لقراءة قاعدة المعرفة مباشرة من ملفات خارجية واستخدام حلقات التكرار، بينما يضيف الإصدار الثالث نظام أوزان للأعراض الأكثر شيوعاً والأقل شيوعاً لزيادة دقة التشخيص. مثال ذلك: إذا كان المريض يعاني من القيء وألم البطن والإسهال، فإن النظام يطابق هذه الأعراض مع قاعدة المعرفة ليخرج بتشخيص التسمم الغذائي.
الفكرة الأساسية
تقوم فكرة الدرس على بناء نظم ذكاء اصطناعي تعتمد على قواعد معيارية وقواعد معرفة لحل المشكلات واتخاذ القرارات، مستوحاة من طريقة الخبير البشري.
الشرح
تعتمد الأنظمة القائمة على القواعد على قاعدة معرفة تضم الحقائق والقواعد. في الإصدار الأول، تُبنى الدالة باستخدام عبارات شرطية ثابتة داخل الكود البرمجي مثل if و elif للتحقق من أعراض المريض وتحديد التشخيص المحتمل. في الإصدار الثاني، يتطور النظام ليقرأ قاعدة المعرفة من ملف خارجي بتسجيل JSON، مما يقلل الحاجة لهندسة العبارات الشرطية يدوياً، ويستخدم حلقات التكرار for لفحص كل مرض وعدّ الأعراض المتطابقة باستخدام متغير المطابقة matching_symptoms_lower_bound. وفي الإصدار الثالث، يتم الانتقال إلى منطق الأوزان، حيث تُعطى الأعراض الأكثر شيوعا أوزانا أكبر والأقل شيوعا أوزانا أقل مثل very_common_weight و less_common_weight لحساب مجموع النقاط واختيار المرض ذي المجموع الأعلى.
مثال محلول خطوة بخطوة
خذ مثال مريض لديه الأعراض التالية مخزنة في قائمة: my_symptoms=['abdominal_pain', 'fever', 'vomiting']. في الإصدار الأول، تفحص الدالة هذه الأعراض عبر عبارات if؛ فإذا تحقق وجود عرض القيء وألم البطن والحمى معا، تضيف الدالة اسم المرض إلى قائمة التشخيصdiagnosis وتعود بها. هنا سيعطي النظام النتيجة بناء على تطابق الأعراض الثلاثة معا مع قاعدة المعرفة الثابتة.
أخطاء شائعة
الاعتماد المطلق على عبارات شرطية ثابتة في الكود يجعل توسيع النظام صعبة للغاية مع زيادة عدد الأمراض. كما أن إغفال تفاوت أهمية الأعراض يقلل دقة التشخيص، حيث تتساوى الأعراض الشتوية البسيطة مع الأعراض الحادة.
سؤالان للتدريب مع الإجابة
السؤال الأول: ما الفرق الجوهري بين الإصدار الأول والإصدار الثاني في الأنظمة القائمة على القواعد؟ الإجابة: الإصدار الأول يعتمد على تعليمات برمجية ثابتة بعبارات شرطية داخل الدالة، بينما الإصدار الثاني يقرأ قاعدة المعرفة مباشرة من ملف JSON خارجي ويستخدم حلقات التكرار، مما يمنحه مرونة أكبر. السؤال الثاني: كيف يتعامل الإصدار الثالث مع أهمية الأعراض المختلفة للمرض؟ الإجابة: يعتمد على نظام أوزان مخصصة، حيث تُعطى الأعراض الأكثر شيوعا وزنا أكبر مثل 1، والأعراض الأقل شيوعا وزنا أقل مثل 0.5 لحساب مجموع النقاط لكل مرض.