مقدمة عن الذكاء الصنعي
المعلوماتية >>>> الذكاء الصنعي
يُمكِّن الذكاءُ البشرَ من تحقيق أهدافهم وممارسة حياتهم بشكلٍ سلس؛ فمثلاً بما أن البشر يملكون القدرة على التفكير المجرد فإنهم أيضاً قادرون على تطوير اللغات للتواصل بين بعضهم، وبما أنّ البشر يمتلكون القدرة على التعلم فإنهم يستفيدون من خبرات الماضي في التعامل مع الحاضر كالطفل الذي يتجنب الأشياء الساخنة لأنها أحرقته مرةً.
يُمكّنهم الذكاء أيضاً من التأقلم مع البيئة المحيطة بهم، فالذّكاء البشري هو الذي يدفع البشر لارتداء معاطفَ في الشتاء، ويدفعهم لتجنّب المخاطر، ويدفع الطفل لتعلّم أساليبَ جديدةٍ للتعلم في المدرسة كي يتأقلم مع بيئته.
هذا هو الذكاء البشري -وبشكلِ مبسَّط جداً- فماذا عن الذكاء الصنعي؟
يُقسَم الذكاءُ الصنعي من حيثِ التعريف وطريقةِ العلم للوصول إليه إلى نوعين: محاولةُ جعلِ الآلةِ ذكيةً كالبشر، ومحاولةِ جعل الآلة تتصرف تصرفاتٍ ذكية، وهنا يكمن فرقٌ ضخمٌ بين الاثنين؛ إذ أنه من الممكن للآلة أن تتصرف بشكل ذكيٍّ دون أن تكون ذكيةً بنفسها، وأن تكون قادرةً على تعلم مهامٍ جديدةٍ تماماً. فمثلاً نظام الطيار الآلي هو نظامٌ يَستخدم الذكاء الصنعي ويَتصرّف بذكاء، إذ أنّه يقرأ معطياتِ البيئة المحيطة ويقرر مسارَ الطائرة وارتفاعَها وأموراً أُخرى، لكنّه ليس ذكيّاً بالمعنى الحرفي؛ فلا يُمكن مثلاً أن نتوقع من هذا النظام أن يبدأ فجأةً بقراءة الشعر أو تعلم فيزياء الكم لأنه صُمِّمَ ليتصرَّف بذكاءٍ لا ليكون ذكياً.
في سلسلة المقالات هذه سوف نخوض في الكثير من المسائل، منها ما يتعلق بكيفية جعل الآلة ذكيةً، ومنها بكيفية جعل الآلة تتصرف بذكاء. وسنتطرّق أيضاً خلالها إلى أقسامه المختلفة لنناقش ما هو تعلم الآلة، وما هي الشبكات العصبونية في الحواسيب، وكيف يُمثَّل المنطق، وكيف تُمثَّل المسائل التي تحتاج لتفكيرٍ مجرّدٍ كاللغات.
وسنبدأ بالمهمة الأسهل نسبياً: جعل الآلة تتصرف بشكلٍ ذكي.
قبل أن نقوم بذلك، نحن بحاجةٍ لإيجاد طريقةٍ لإفهام الآلة ما هي المشكلة التي نحاول حلها، أو بعبارةٍ أُخرى؛ علينا إيجاد طريقةٍ لنعبّر عن المسائل بشكلٍ برمجيٍّ ما.
أولى هذه الطرق هي بالتعبير عن المسألة عن طريق بناء شجرةٍ تُمثّل المسألة تتكوّن هذه الشجرة من عُقَدٍ تتصل مع بعضها بأغصانٍ أو أضلاعٍ تُمثّل علاقةً ما بين العقدة والأُخرى التي تليها. لنأخذْ مثلاً أُحجيةَ ٨، هذه الأحجيةُ عبارةٌ عن ٨ مربعاتٍ صغيرةٍ من الممكن تحريكُها، وهدفُ اللعبةِ أن يتمَّ ترتيب الأرقام بشكلٍ تصاعديٍّ (أو تنازلي).
Image: http://www.aiai.ed.ac.uk/~gwickler/eightpuzzle-inf.html
لنستطيعَ جعلَ الآلة تفهمُ كيف من الممكن أن تحُلُّ هذه اللعبة؛ سنعبِّر عنها بشجرةٍ ذروتُها هي الحالة الأولى التي نجد الأحجية عليها، والمستوى الأول من الفروع يُمثِّل جميع الحركات الممكنة، والمستوى التالي يمثّل جميع الحركات الممكنة من المستوى الذي يسبقه، وهكذا دواليك.
Image: http://www.wou.edu/las/cs/csclasses/cs160/VTCS0/AI/Lessons/GamePlaying/gametree.gif
كمثالٍ آخر عن تمثيل المُشكلات في الحاسوب، نجد برامج الخرائط التي تساعد المستخدِمين على إيجاد الطريق لمُرادهم بأسرعِ وقتٍ ممكن. تعبّر هذه البرامج عن المدن على شكلِ عُقدٍ تتصل مع بعضها بأغصانٍ أيضاً، تمثّل هذه العقد نقاطاً في المدينة، وتمثل الأغصان طرقاتٍ، وما على الحاسوب الآن إلا أن يسير من بداية الطريق مُتّبعاً خوارزميةً ما لإيجاد الحل الأمثل.
تمثّل خوازرميات البحثِ موضوعاً هاماً في الذكاء الصنعي، وذلك لأنه يُستَخدم لحلِّ الكثير من المسائل. من هذه المسائل مسألةُ وضعِ ثمانية قطعِ وزراءٍ في الشطرنج على الرقعة دون أن يأكل أحدهم الآخر، أو ببساطةٍ إعادة ترتيب قطعٍ فوق بعضها البعض وفق ترتيبٍ مُعيَّن.
ماذا تعني هذه المسائل؟
إن عبَّرنا عن مجموعةِ التنقُّلات المُمكنة بالشجرة سابقة الذكر، فإنَّ المسائل ستعني أننا نبدأُ من وضعٍ بدئيٍّ (عقدةٍ في شجرة)، ونريد الوصول إلى وضعٍ نهائي (عقدةٍ أخرى) عبر سلسلةٍ من التنقلات (الأضلاع)، وإنّ إيجاد السلسلة التي تسمح بالوصول إلى الوضع النهائي المرغوب يكون عبر البحث.
فإذا أردنا الانطلاق من A واكتشافَ العُقد الباقية. سيكون لدينا وسيلتان للتنقل:
- أن نخوضَ كلَّ فرعٍ إلى نهايته ثم ننتقل للفرعِ الآخرِ باحثينَ عن الهدف. أي أننا سوف ننطلق وفق التسلسل التالي:
A B D H I E J K C F L M G N O، وتُدعى هذه الطريقة بالبحث وفق العُمق أولاً (Depth First Search / DFS) وتَستخدم بنيةً في الحاسوب تدعى بالمكدّس Stack، إذ أنّ آخر عقدة تم إدخالها هي أول عقدة سوف يتم اكتشافهاLast In First Out (LIFO).
Image: http://aima.cs.berkeley.edu/
- أن نكتشف جميع العقد التي تقع في مستوىً واحد، ثم ننتقلُ إلى المستوى التالي، وهكذا...
أي أننا سوف ننطلق وفق التسلسل التالي:
A B C D E F G، وتُدعى هذه الطريقة بالبحث وفق العرض أولاً Breadth First Search BFS وتَستخدم في الحاسوب بنيةً تدعى بالصف Queue، إذ أنّ العقدة التالية التي سيتم اكتشافها هي أول عقدة تم إدخالها فيه First In First Out (FIFO).
Image: http://aima.cs.berkeley.edu/
تُشكّل هاتان الطريقتان ما يدعى بخوارزميات البحث العمياء Uninformed Search Algorithms لأنها لا تملِكُ أيَّ معلوماتٍ عن كيفيةِ عملِ المسألة المطروحة. كلُّ ما تقوم به هو توليدُ خطواتٍ متلاحقةٍ والتمييزُ بين نقطة الانطلاق والنقطة التي نرغبُ بالوصول إليها.
إلا أنَّ هناك خوارزمياتٍ يُمكِنها معرفة إن كانت إحدى العقدِ الواقعة بين البداية والهدف؛ واعدةً أكثرَ من غيرِها، أي احتمالُ الوصولِ عبرَها بشكلٍ جيّدٍ إلى الهدف، أفضلُ من غيره لأنّها تُدرك معلوماتٍ إضافيةً عن المسألة التي يتم حلها وكيفية عملها.
تُدعى هذه الخوارزميات بخوارزميات البحث المُوجَّهة باستخدام الاستدلال، فكيف تعمل هذه الخوارزميات؟
تقوم هذه الخوارزميات باختيار العقدة التالية الأقل تكلفة، ويتم حساب هذه التكلفة عبر تابعِ تقديرٍ يعتمدُ على الاستدلال ويُمثّلُ التكلفةَ التقديريةَ للوصول من هذه العقدة إلى العقدة الهدف، كأن يقوم شخصٌ ما موجودٌ في رومانيا، بتقديرِ أنَّ أقلَّ تكلفةٍ للوصول من مدينة آراد إلى مدينة بوخارست هي تكلفةُ عبور الطريق المستقيم بين المدينتين.
تُدعى إحدى أشهرُ هذهِ الخوارزميات بخوارزمية A* search، التي تقوم بتقييم العُقد عبرِ جمعِ تكلفةِ الوصول إلى هذه العقدة، مضافاً إليها التكلفةَ التقديريَّةَ للوصول منها إلى الهدف. ثُمَّ تختار العقدةَ ذاتَ التكلفةِ الأقلّ، ليتم اكتشافُها تالياً، بدلاً من أن يكون اختيارُ العقدةِ التالية معتمِداً تماماً على بنية الشجرة كما في خوارزميات البحث العمياء.
نلاحظ في المثال التالي أنَّ العقدة التي تَقرَّرَ اكتشافُها بعد العقدة الأولى Arad هي العقدة ذات التكلفة الأقل Sibiu، ثم تمَّ اختيارُ العقدة ذات التكلفة الأقل وهي Fagaras وهكذا.
Image: http://aima.cs.berkeley.edu/
لكي نأخذَ مثالاً آخرَ عن هذه الخوارزميات سنعود إلى اللوحة التي تحتوي على الأرقام من 1 إلى 8 وعلينا ترتيبها، فيمكننا اعتبار تابع الاستدلال:
1- يُمثّلُ في كلِّ حالةٍ، ما إذا كان الرقم يقع في مكانه الصحيح (وعندها القيمة 0)، أو في مكانٍ خاطئ (وعندها القيمة 1)، ثُمَّ نجمع هذه القيم، وهذا ما يدعى بتابع أولوية هامنغ.
2- يُمثل في كل حالةٍ عددَ الخطوات المطلوبة لكلِّ رقمٍ ليصبحَ في موقعه الصحيح ثمّ نجمع هذه القيم، وهذا ما يدعى بتابع أولوية مانهاتن.
ثمّ يتم تحديد الخطوة التالية تبعاً لهذا التابع بالإضافة لتكلفة الوصول لكل حالة.
Image: https://www.cs.princeton.edu/courses/archive/spr10/cos226/assignments/8puzzle.html
بعد هذه الجولة التعريفية في عالم الذكاء الصنعي، والتعرُّفِ على كيفية تمثيل المسائل وبعض خوارزميات الحل، سنتابع في مقالاتنا القادمة التعمّقَ في أقسامه ومجالاته وتطبيقاته في حياتنا اليومية.
المصادر
هنا
هنا
هنا
هنا
هنا
هنا
هنا
هنا
هنا