المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [مقال] الذكاء الاصطناعي المتعلم.



OctoBot
20-06-2006, 05:20 AM
أهلا و سهلا.
أنا ما عدت من جديد و لا شيء, لكني كافئت نفسي لأني أحرزت تقدم في برمجة لعبتي نوعا ما, بأني
أناقشكم في موضوع واحد هنا, ما بأدخل إلا موضوعي ( أو مواضيع غريبة جدا لدرجة إني ما أقدر
أستحمل ما أكتب ).
على أي حال أنا كنت أبحث عن هذا الموضوع, الذكاء الاصطناعي الذي يتعلم, لكن قبل أن أشرح
أفكاري و وجهات نظري أبغى أسوي شيء ضروري .
( هذا مقال للنقاش, و لا يتخصص ببرنامج واحد فقط )
( اللعبة "الخيالية" التي سأضرب المثل فيها هي لعبة FPS ثنائية الأبعاد و التصوير يكون علوي
عمودي على الأرض overhead أو top-view )


-=<{ Warning: Noobs are not welcome and are not expected to understand }>=-
-=<{ تحذير: قليلي الخبرة غير مرحب بهم و لا يتوقع منهم الفهم }>=-

هذا بس شيء بسيط كان لازم أحطه, بيفيدني كثير.

على أي حال, الذكاء هو من سمات الكائنات الحية, و من أهمها الإنسان خاصة, و الثدييات عامة, في
العقود الأخيرة, عمل الإنسان على ما يسمى "بالذكاء الاصطناعي/الصناعي" و هو لا يقارن بالذكاء
لدى الثدييات.

الذكاء الاصطناعي المعهود يكون على شكل قاعدة بيانات كبيرة من الزنادات و الأوامر, عندما يتفعل
الزناد يحدث الأمر.

كما نعرف كلنا أن هذا الذكاء ليس ذكاء حقيقي, إنه فقط عمليات ديناميكية معقدة, آلية, فلا يوجد تفكير.

و ما هو التفكير؟ عرفه البعض على أنه حل المشكلات, و لا يوجد هنا مشكلة ( بنظر الآلة ) ليكون لها
حل, فما أدراه أن الطلقة عندما تتوجه إليه تكون مشكلة؟, هو يعرف أنه سيموت بسبب الطلقة, و لكن
لماذا يكون الموت مشكلة؟, فالآلة لا تستطيع تقدير المشاكل بدون كتابة كل مشكلة بذاتها في البرنامج,
كما في الأطفال حديثي السن, لا يمانع الطفل أن يلقى في حوض من الماء, لا يعلم أن هذا مشكلة, و
لكن الفرق بين الآلة و الطفل أن الطفل لو مسك النار مرة لن يمسكها مرة أخرى, أما الآلة ستسجل أنه
تم إحراقها ثم ماذا؟, الطفل حس بالألم, الآلة لا تحس بألم, تستطيع أن تقيس درجة الحرارة, و لكن ثم
ماذا؟, لذلك, نستطيع أن نقول أن الذكاء الاصطناعي, هو تفكير مزيف.

لنفهم الذكاء الاصطناعي يجب أن نفهم العقل البشري, فجل ما نفعله في الألعاب هو محاولة جعل
الكمبيوتر يتصرف تصرفات شبيهة بالإنسان نوعا ما, و أن نقيم تحديا للإنسان ليلعب ضده, و لا يوجد
تحد أكبر من إنسان ضد إنسان, و لكننا لا نريد إنسان ضد إنسان, لأننا لو أردنا ذلك لما قرأنا هذا
المقال :33: .

و هنا تأتي المقارنة, العقل البشري يحفظ معلومات, و كذلك الآلة, العقل البشري يستطيع أن يميز الجيد
من السيء, و الآلة لا تقدر, العقل البشري يستطيع أن يربط بين الحدث و السبب, و الآلة لا تقدر.

إذا, لدينا القدرة على حفظ المعلومات, و الآن نذهب للمشكلة الأولى, لا نستطيع أن تميز الآلة السيء
من الجيد, و تصنيف كل شيء قد يحدث للآلة إلى سيء و جيد في البرنامج لا يعد تعلما, فالآلة لا تتعلم
السيء و الجيد, و لكننا نفعل كما يفعل العقل البشري, ندخل الغرائز الأساسية, ففي فطرة الإنسان الألم
هو شيء سيء, و الجوع شيء سيء, الأكل عند الجوع شيء جيد, هذه غرائز, تكون مكتوبة في
جينات الإنسان, لذلك نكتب في برمجيات الكمبيوتر, خسارة الصحة ( الدم ) شيء سيء, قتل العدو
شيء جيد, تعبئة ذخيرة السلاح شيء جيد, و هكذا الأشياء الأساسية فقط لا غير, و الربط بين هذه
الغرائز ستأتي لاحقا.
المشكلة الثانية, ربط الآلة بين الحدث و السبب, في الإنسان صفات التساؤل و الفضول, و حب
الاستطلاع والتجربة, لذلك نكون سريعي التعلم, في الكمبيوتر, إذا مات لاعب الكمبيوتر, الكمبيوتر لن
يقول "لماذا مت؟ ما هو الخطأ؟", و لكنه في الواقع سيعيد نفس الخطأ, و هذه يا إخواني هي الخبرة,
الإنسان لن يخطأ نفس الخطأ مرتين ( على الأقل بقصد منه ), لأننا نقول "لقد شعرت بألم شديد في يدي
عندما وضعتها في النار, لن أضعها مرة أخرى", فيكون من خبرتنا أن الحدث هو الألم الشديد, و
السبب هو قرب اليد من النار, إذا كيف يكون الكمبيوتر الخبرة؟, بالتجربة و الخطأ, كل لحظة يموت
فيها الكمبيوتر يسجل كامل بياناته في ملف نصي خارجي ( مستوي الصحة, الذخيرة, سرعة الحركة,
جهة التصويب, السلاح المستخدم..... ) و يلعب المرة الثانية كالمرة الأولى, بغباء, و لكن عندما يموت
هذه المرة, نجعله يشطب البيانات المختلفة, و هذا هو التعلم البسيط, مثلا إذا مات المرة الأولى و
سلاحه هو القناص, و مات المرة الثانية و سلاحه هو قاذف الصواريخ, فالسلاح المستخدم طبعا ليس
الخطأ, و المرة الأولى كان واقفا و المرة الثانية كان يركض, إذا هذا ليس الخطأ, و لكن في المرتان لم
يكن لديه ذخيرة, إذا لا بد أن الذخيرة هي سبب رئيسي, و في المرتان كانت صحته أقل من النصف, هذا
سبب آخر, لاحظوا أن كل بيان له قيمتان, قيمة البيان و قيمة أهمية البيان, مثلا بيان الصحة, يحتوي
قيمتين, الأولى هي قيمة نقاط الصحة, و الثانية هي أهمية نقاط الصحة, فعندما نقول يشطب البيانات
المختلفة فهو لا يحذفها تماما, و لكن يقلل قيمة أهميتها, و البيانات التي تكون سبب رئيسي تزيد
أهميتها, ففي المثال الأخير سيصبح الكمبيوتر يوفر ذخيرته, يعالج نفسه بعد كل الاشتباكات العنيفة, و
بعد 30 أو 40 خسارة, سيكون لدى الكمبيوتر "فكرة" واضحة عما يجب فعله كي لا يموت.
و الآن, نفعل نفس الشيء لقتل العدو, نسجل جميع البيانات كل مرة يقتل الكمبيوتر العدو في ملف نصي
خارجي, و يحدد العوامل التي ساعدته على قتل العدو, و بنفس الطريقة التي في الأعلى سيتعلم
الكمبيوتر كيف يقتل عدوه بأقصى فعالية.
( الملف النصي يبقى موجودا في مجلد اللعبة للأبد, و بذلك اللعبة تزداد خبرة كما يزداد اللاعب خبرة ).

و الآن نعود للربط بين الغرائز, و هو جزء من الخبرة, و هي الأشياء المركبة, مثلا, يستطيع الكمبيوتر
الآن أن يقتل اللاعب, و لكن الكمبيوتر سيموت في العملية, أحدهما سيء, و أحدهما جيد, كيف يقدر
الكمبيوتر قيمة العملية كاملة؟ التضحية بالنفس لقتل الخصم, هل هذا سيء أم جيد؟, نجعل الكمبيوتر
يضع قيم, إذا كان باقي للاعب 10 فرص يلعب بها, و كان للكمبيوتر 3 فرص, يجد الكمبيوتر أن
التضحية بالنفس لا تستحق, لأن فرصة الكمبيوتر هنا أهم بكثير من فرصة اللاعب, لأنه أقرب
للخسارة, لكن ماذا يحدث لو كان الوضع معكوسا؟, لو كان لدى الكمبيوتر 10 فرص و لدى اللاعب 3؟
يستحق الوضع التضحية بالنفس طبعا, لأن قيمة فرصة اللاعب هنا أعلى, و لا مانع أن يخسر
الكمبيوتر حياة واحدة, فقيمتها له هي 0.1 , و لكن قيمة فرصة اللاعب هي 0.33 , و بذلك يكون
الكمبيوتر خسر اللاعب أكثر من 3 أضعاف ما خسره هو, و التضحية هنا صحيحة, هذا ما يسمى بتقدير
الخطورة, و هو ببساطة تركيب الغرائز, و حساب النسب و قيمة كل شيء, ثم مقارنتها للخطورة.

...............
كاستراحة من الموضوع الثقيل, سأكتب عن برنامج وثائقي قرأت عنه ( و لم أشاهده ) عن مستقبل
العالم, يتضمن الكثير من الخيال العلمي.... و لكن في جزء منه, صور البرنامج مبرمجين, اخترعوا
حيوانات آلية متعلمة, لا تعرف أي شيء على الإطلاق, إلا طريقة التعلم, شغلوا هذه الحيوانات, كل
منها في مساحة منفصلة, بعد ما يقارب السبع ساعات, تعلمت كل الحيوانات كل ما يوجد لتعلمه من
قدراتها, ثم وضعوا في مساحات أخرى, يوجد وسط كل مساحة منها هدف, و في كل مساحة من هذه
حيوانين, تمشي الحيوانات باتجاهات عشوائية, أول حيوان وصل للهدف ( عن طريق المشي
العشوائي ) ضغط المبرمجون على زر التربيت, و هو زر الضغط عليه يكون شيئا جيد في غريزة الآلة,
عن طريق الشبكة اللاسلكية بين الحيوانات لاحظت الحيوانات الأخرى أن هذا الحيوان تم التربيت عليه,
فبدأت الحيوانات كلها بمراجعة بياناته و التشطيب و الترجيح, و بعدها و صل آخر للهدف و تم التربيت
عليه, فقارنت الحيوانات المتبقية بين البيانات, و بعد العديد من المحاولات العشوائية اكتشفت كل
الحيوانات أن من يصل للهدف يتم التربيت عليه, و لكن فقط نصفهم تم التربيت عليهم, لأن الواصل
الأول في كل حجرة هو فقط يتم التربيت عليه, و بعد مراجعة الحيوانات الخاسرة للبيانات اكتشفت أن
العامل المشترك بين الفائزين أولا هو الوصول أولا, و بعدها تمت إعادة أماكن الحيوانات
( أوتوماتيكيا ) بدأ كل اثنين في الحجرة يتسابقان للوصول إلى الهدف, يكتشفون أفضل الطرق, و أسرع
الحركات, و بقت الحيوانات على هذا المنوال تجمع الخبرة لمدة سبعة أيام, في اليوم الثامن سقط أحدهم
( بسبب ضعف في بطاريته ) مع أنه كان متقدم على الآخر, قامت الحيوانات كلها يتسجيل بياناته
تحليلها ... الخ, و لكنه لم يفعلوا شيئا مختلف بسببها, و لكن أحد الحيوانات, لم يفز, و لا مرة واحدة,
طوال السبعة أيام, عندما سقط الحيوان الآخر ( الذي تم استبدال بطاريته فورا ), اكتشف هذا الحيوان,
أن السقوط يؤدي إلى تحول السرعة إلى صفر, و أن تحول السرعة إلى صفر يعني عدم التحرك, و عدم
التحرك يعني عدم نقصان المسافة بينه و بين الهدف, يعني أن الوصول للهدف حال السقوط مستحيل, و
في اليوم الثامن قام هذا الحيوان بـ.... الهجوم على الحيوان الآخر !!, هجم عليه و أسقطه و وصل
للهدف!, لم يتوقع المبرمجين هذا الشيء, و سرعان ما أصبحت التجربة حلبة مصارعة, يتقاتل
الاثنان, و الفائز يمشي للهدف.
الشيء الغريب, هو: لماذا اكتشف الحيوان استحالة الوصول للهدف عند السقوط و لم يكتشفه
الآخرين؟ هل أحست الآلة بشعور الإحباط؟! أم أنه كان متفوق عليهم بذكاءه ( مع أنهم كلهم من نفس
البرنامج و كلهم يحللون نفس البيانات ), هذا سر لم يتم حله حتى الآن :D .

انتهت "الاستراحة" ( و لا دعايات سبيس تون :09: )
...............

الآن سأتكلم عن الذكاء المعتمد على المناطق المتعددة الطبقات.
في لعبتنا الخيالية, قسم الخريطة إلى مناطق صغيرة ( و لكن ليس جدا, 32 في 32 مثلا ) و لكل منطقة
قيمة, القيمة الأساسية هي 500, القيمة 0 تعني هذا المكان هو أسوأ الأماكن, القيمة 1000 تعني
هذا المكان هو أفضل الأماكن.
الآن كلما يقتل الكمبيوتر اللاعب يضيف الكمبيوتر 5 نقاط للمكان الذي هو فيه, و إذا قتل اللاعب
الكمبيوتر تقل نقاط المكان بقيمة 5.
بعد عدة مباريات, سيخطط الكمبيوتر لنفسه أفضل طريق, و أفضل أماكن للتواجد, و أسوأ طريق, و
أسوأ مكان للتواجد ( نضع في برمجة الخريطة أماكن الجدران و نحوها صفر, لأنه من غريزتنا أننا لا
نمشي على الجدران ).
و الآن, ليكون الذكاء أفضل أيضا, نضيف طبقة من النقاط أيضا, الآن يعرف الكمبيوتر أفضل طريق
لحدوث القتل و تجنب الموت, نريد الكمبيوتر أن يعرف أماكن الأسلحة و الذخيرة, إذا "وجد" الكمبيوتر
سلاح ( هو يعرف الأسلحة الجيد و السيئة من السابق ) في هذا المكان ( تسجيل أماكن الأسلحة في
خرائط لم يلعب بها الكمبيوتر هو ليس تعلم ) يزيد على نقاط المنطقة 10.
طبقة أخرى, في لعبة flag ( التي يجب فيها إمساك علم الخصم و جلبه لعلمك ) إذا وجد الكمبيوتر أن
فريق اللاعبين يمسك العلم في أول دقيقتين و يسجل نقطة دائما, يزيد الكمبيوتر نقاط المناطق الدفاعية
حول علمه في هذه الفترة, إذا وجد الكمبيوتر أنه سجل 4 أعلام ( من أصل 5 للفوز ) و أن اللاعب
سجل علم واحد فقط, فالكمبيوتر يزيد نقاط مناطق الهجوم على العدو, لأن الخسارة ليست احتمال.

و هكذا, بتطبيق طريقة التسجيل>التصنيف>التحليل, و المناطق المتعددة الطبقات, سيتعلم الكمبيوتر
بسرعة و دقة كيف يهزم أسلوبك في للعب, مما يضطرك إلى تغيير أسلوبك في اللعب, مما يضيف
حلاوة على اللعب عجيبة, و ينتزع الرتابة و الملل و السهولة الرمادية كريهة.

على أي حال أرجو أني أفدت من استطاع فهمه, أرجو ممن لم يفهم السؤال ( و عن شيء محدد لو
سمحت ), و النقاش هنا مفتوح, عن أي نقطة أحببتم.

لا تخيبون أملي فيكم :kiss: .
في أمان الله :D .

عدد الكلمات: 1810
عدد الحروف (كلها): 9518
عدد الفقرات: 34
عدد السطور: 133

The Coder
20-06-2006, 06:25 AM
السلام عليكم ^^
ماشاء الله عليك اوكتو ^^
عيني عليك باردة ,, دائما تتحفني بمواضيعك ^^


الله يوفقك ... ماعندي سوال حاليا ولا انتقاد :D

^^ ترشيح

رامي لولح
20-06-2006, 06:31 AM
السلام عليكم
مشكور أخوي على هل المقال الحلو

||صقر||
20-06-2006, 09:57 AM
مقالة جميلة جداً و مفيدة لى شكراً
و لا يوجد انتقاد

Fox McCloud
20-06-2006, 10:06 AM
مشكووور على المقالة الرائعة

GOGENDANTESS
20-06-2006, 10:18 AM
إضافة مني :) :
الذكاء الصناعي يكون بذروته و صعوبته في الألعاب الإستراتيجية RTS ، حتى الألعاب الناجحة مثل Generals Zero Hour يشتكي لاعبينها على الشركة يوميا على "الغباء الصناعي" لبعض الوحدات. و بالفعل الذكاء الصناعي يكون صعب صعب صعب جدا في الإستراتيجية فيتم برمجة الأوبجيكت (دبابة مثلا) ان تسلك اقرب طريق إلى النقطة المطلوب منها و كيف تتصرف الوحدة في حال وقوع أوبجكت(دبابة ثانية مثلا) أمامها و اشلون تغير مسارها في حال وجود أوبجكت ثابت(مبنى مثلا)

و ترى لو تبحثون في الإنترنت تلقون مواقع مخصصة (((فقط))) للذكاء الصناعي و كيفية برمجته

||صقر||
20-06-2006, 10:38 AM
و ترى لو تبحثون في الإنترنت تلقون مواقع مخصصة (((فقط))) للذكاء الصناعي و كيفية برمجته

بمناسبة المواقع شوفوا هذا الموقعhttp://www.gameai.com/

الموقوف
20-06-2006, 01:23 PM
مشكور اخي اوكتوبوت على المقال الرائع والمفيد ;)

دائماً مواضيعك متميزة هكذا :biggthump

Son Of UAE
20-06-2006, 02:31 PM
موضوع ممتاز . و اسلوبك زاده حلاوة . و لقد عجبني كثيراً الفاصل الإعلاني و خصوصاً نهايته !

من اين لك هذا ؟ نعم ... من أين اتيت بهذه المعلومات القيمة و الأفكار الخطيرة ؟ هل هي من الكتب أم من الإنترنت ؟


مشكور و بارك الله فيك


و اكيد لك ترشيح :biggthump

OctoBot
20-06-2006, 02:45 PM
جافا == مشكور عالمرور.
رامي لولح == العفو.
ahmedsaker == العفو.
The first Racer == العفو, و انتظروا المزيد ( بعد ما أنتهي من اللعبة ).
GOGENDANTESS == في الواقع الأسلوب اللي أنا طرحته يصلح للاستراتيجية, لكن بتعمق أكثر و غرائز أكثر, تبغى تشوف ذكاء اصطناعي العب Warcraft III: The frozen throne, بالنسبة لجنرالز ما انعرف عن EA القدرة في الذكاء الاصطناعي.
الموقوف == العفو أخوي.
Son of UAE == بالنسبة للبرنامج الوثائقي أنا قرأت عنه و لم أشاهده, قرأت عنه في أحد المنتديات الأجنبية, و لكنه لم يذكر اسم الوثائقي :12: , الأفكار هذي مجمّعها من الإنترنت, طبعا معدلها و مضيف عليها من عندي.

مشكورين الكل على المرور.

d.a.m.h
20-06-2006, 04:19 PM
بصراحة يا اكتوبوت موضوعك غاية فى الروعة واسلوبك منظم جدا
كما ان المقالة ستفيدنى كثيرا فى لعبة اصنعها حاليا تعتمد على الذكاء الاصطناعى (كخطوة جريئة)
وسوف اعرضها قريبا
لو كان بيدى الترشيح لرشحت

من التراب
22-06-2006, 12:22 AM
هلا اكتوبوت الصراحه انبهرت بهذا المقال ... اسلوبك حلو

النظريات الي طرحتها ممتازه لكن التطبيق يمكن معقد شوي وخاصه نقطة الجيد والسيء ....^^"

شعرت بالسعاده وأنا أقرأ هذا المقال تسلم ;)

على فكره الاستراحه كانت روعه ...كثر منها :D

بالتوفيق

d.a.m.h
23-06-2006, 01:17 AM
اود مناقشتك فى بعض الافكار....وسوف اكشف هنا عن مشروعى :28:

انا حاليا اصمم لعبة قتالية بذكاء اصطناعى تجمع بين شخصيات megaman لكل شخصية فينيش
(finish ) محدد......ماعلينا :o
لقد قمت بوضع كود محدد يجعل العدو اذا قلت طاقته الى اقل من النصف فانه يتفادى ضرباتك باحتمالين
(اما القفز الى اليمين او اليسار واما عن طريق الصد)

بماذا تقترح على لجعل الشخصيات المقاتلة اكثر كفاءة من ناحية الهجوم والدفاع.....يعنى ماذا اضيف عليها من حركات غير التفادى مثلا؟؟؟....شكرا :D

urca
24-06-2006, 03:50 AM
السلام عليكم
عيني عليك بارده يا اوكتو
الذكاء الاصطناعي يكون احياناً غباء
فيه لعبه من الالعاب فيها مشكله في الذكاء الاصطناعي للجنود
بحيث انهم مايبعدون لو انرمت قنبله
ومايذخرون الا لمن تذخر انت
وحدث معاي موقف مماثل لمن كنت العب اون لاين
صار فيه خلل بالذكاء الاصطناعي للوحوش فصارت تطير>_<
المشكله ان الصوره انحذفت مع تسونامي المنتدى
لو اعرف كيف ارشح كان سويت لك ترشيح
P.S:انا مااشارك كثير لكن موضوعك شدني فحبيت ارد وارشح لكن مااعرف كيف ارشح><
واعذرني لو اني اخطيت بأي معلومه
واللعبه اللي صارت فيها الوحوش تطير هي لعبة اون لاين
boy bye..

MALTOOSH
24-06-2006, 11:42 AM
ماشاء الله مقال أكثر من رائع!!

أشكرك جدا أخوي OctoBot على هذا المقال الرائع