اليوم الثاني والعشرون: كيفية إنشاء روبوت ألعاب AI باستخدام OpenAI Gym and Universe

دعونا نواجه الأمر ، الذكاء الاصطناعي في كل مكان. تتكشف معركة مواجهة بين Elon Musk و Mark Zuckerberg حول مستقبل الذكاء الاصطناعي. هناك من يشيطنها. والبعض ممن يزعمون في آرائهم الطوباوية أن الذكاء الاصطناعي يمكن أن يكون شبه الله في مساعدة البشرية. أيًا كان جانب إمالة وجهات نظرك ، فإن الذكاء الاصطناعي موجود لتبقى.

"بالذكاء الاصطناعي ، نحن نستدعي الشيطان." - إيلون ماسك "الخوف من ظهور الروبوتات القاتلة يشبه القلق بشأن الزيادة السكانية على المريخ." - أندرو نج

إذا كنت متحمسًا للغوص في الذكاء الاصطناعي والعبث به ، فإن الألعاب هي مكان رائع للبدء. لقد كانوا بمثابة اختبار الانتقال للذكاء الاصطناعي. ولكن قبل القفز ، إليك القليل من التاريخ حول كيفية تطور برمجة الألعاب عبر الزمن.

تاريخ برمجة الألعاب

اعتاد مبرمجو الألعاب على استخدام قرارات الاستدلال إذا كان الأمر كذلك لإجراء تخمينات مستنيرة. لقد رأينا هذا في أقدم ألعاب فيديو آركيد مثل Pong و PacMan. كان هذا الاتجاه هو المعيار لفترة طويلة جدًا. لكن مطوري الألعاب لا يمكنهم إلا توقع الكثير من السيناريوهات وحالات الحافة حتى لا يعمل الروبوت في دوائر!

حاول مطورو الألعاب بعد ذلك تقليد طريقة لعب البشر للعبة ، وصمموا ذكاء الإنسان في روبوت اللعبة.

قام الفريق في DeepMind بهذا من خلال التعميم ونمذجة الذكاء لحل أي لعبة Atari تم إلقاؤها عليها. استخدم روبوت اللعبة شبكات عصبية التعلم العميق التي لن يكون لها معرفة خاصة باللعبة. لقد تغلبوا على اللعبة بناءً على وحدات البكسل التي رأوها على الشاشة ومعرفتهم بضوابط اللعبة. ومع ذلك ، لا تزال أجزاء من DeepMind غير مفتوحة المصدر حيث تستخدمها Google للتغلب على المنافسة.

دمقرطة الذكاء الاصطناعي

لتجنب تركيز القوة المذهلة للذكاء الاصطناعي في أيدي قلة ، أسس Elon Musk شركة OpenAI. تسعى إلى إضفاء الطابع الديمقراطي على الذكاء الاصطناعي من خلال جعله في متناول الجميع. سنستكشف اليوم OpenAI Gym والكون الذي تم إصداره مؤخرًا ، والذي تم بناؤه على قمة Gym.

يوفر OpenAI Gym واجهة بسيطة للتفاعل مع أي بيئة ديناميكية عشوائية وإدارتها. OpenAI Universe هو نظام أساسي يتيح لك إنشاء روبوت واختباره.

هناك الآلاف من البيئات. وهي تتراوح بين ألعاب Atari الكلاسيكية و Minecraft و Grand Theft Auto ، إلى محاكاة طيات البروتين التي يمكن أن تعالج السرطان. يمكنك إنشاء روبوت وتشغيله في أي بيئة باستخدام بضعة أسطر فقط من كود Python. هذا رائع جدا لعدم المحاولة!

مشروع (1 ساعة)

سنقوم ببناء روبوت ألعاب ذكاء اصطناعي يستخدم تقنية "التعلم المعزز". سأشرح ذلك لاحقًا. ستلعب بشكل مستقل وتتغلب على لعبة Atari Neon Race Car (يمكنك اختيار أي لعبة تريدها). سنقوم ببناء روبوت اللعبة هذا باستخدام مكتبات OpenAI's Gym و Universe.

الخطوة 1: التثبيت

تأكد من تثبيت Python أو تثبيته باستخدام Homebrew. يمكنك تنزيل Python IDE المخصص مثل دفتر PyCharm أو iPython. أحب أن أبقيه بسيطًا وأن أستخدم Sublime. أخيرًا ، قم بتثبيت Gym و Universe والمكتبات الأخرى المطلوبة باستخدام Pip.

// Install python using brewbrew install python3// Install the required OpenAI librariespip3 install gympip3 install numpy incrementalbrew install golang libjpeg-turbo pip install universe

كل شيء في الكون (البيئات) يعمل كحاويات داخل Docker. في حالة عدم وجوده بالفعل ، قم بتثبيت Docker وتشغيله من هنا.

الخطوة الثانية: كود بوت اللعبة

تم ترميز Game Bot في Python ، لذلك نبدأ باستيراد التبعيتين الوحيدتين اللازمتين: Gym و Universe.

import gymimport universe

في لعبة Game Bot ، دعنا نستخدم لعبة طفولتي المفضلة ، Neon Race Cars ، كبيئة اختبار. يمكنك العثور على قائمة كاملة بالبيئة / الألعاب الأخرى التي يمكنك الاختيار من بينها هنا.

يتيح لك Universe تشغيل العديد من البيئات على التوازي. لكن بالنسبة لهذا المشروع ، سنستخدم واحدًا فقط.

env = gym.make(‘flashgames.NeonRace-v0’)env.configure(remotes=1) # creates a local docker container

تعزيز التعلم

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

الهدف هو جعل الملاحظة التالية أفضل (في حالتنا - لتعظيم نتيجة المباراة). يتم اختيار هذا الإجراء وتنفيذه بواسطة وكيل (Game Bot) بهدف تعظيم النتيجة. ثم يتم تطبيقه على البيئة. تسجل البيئة الحالة الناتجة والمكافأة بناءً على ما إذا كان الإجراء مفيدًا أم لا (هل فاز باللعبة؟).

الآن يمكننا استرداد قائمة الملاحظات لكل بيئة تمت تهيئتها باستخدام طريقة env.reset ().

observation_n = env.reset()

الملاحظة هنا هي كائن خاص بالبيئة. إنه يمثل ما تمت ملاحظته ، مثل بيانات البكسل الأولية على الشاشة أو حالة اللعبة / النتيجة.

الخطوة التالية هي إنشاء وكيل اللعبة باستخدام حلقة لا نهائية ، والتي تؤدي باستمرار بعض الإجراءات بناءً على الملاحظة. في برنامج الروبوت الخاص بنا ، دعنا نحدد إجراءً منفردًا يتمثل في الضغط المتكرر على السهم لأعلى (الروبوت السخيف! لا تتردد في تطويره إلى واحد معقد ...). يتم تحديد الإجراء هنا من خلال نوع الحدث (KeyEvent) ، ومفتاح التحكم (سهم لأعلى) ، وتعيينه على true لجميع الملاحظات التي يراها الوكيل.

while True:action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]

ثم نستخدم env.step()الطريقة لاستخدام الإجراء للمضي قدمًا خطوة واحدة. هذا هو تنفيذ أساسي للغاية للتعلم المعزز.

 observation_n, reward_n, done_n, info = env.step(action_n)

ترجع طريقة الخطوة هنا أربعة متغيرات:

  1. observation_n: ملاحظات على البيئة
  2. reward_n: إذا كان عملك مفيدًا أم لا: + 1 / -1
  3. done_n: يشير إلى ما إذا كانت اللعبة قد انتهت أم لا: نعم / لا
  4. info: معلومات إضافية مثل الأداء ووقت الاستجابة لأغراض التصحيح

يمكنك تشغيل هذا الإجراء في وقت واحد لجميع البيئات التي تقوم فيها بتدريب الروبوت الخاص بك. استخدم طريقة env.render () لبدء الروبوت.

env.render()

الآن لديك Game Bot جاهز للتنافس مع البيئة. الكود الكامل لهذا الروبوت الأساسي بالإضافة إلى إصدار متقدم متاح في Github repo هنا.

الخطوة 3: قم بتشغيل Game Bot

الآن بالنسبة للجزء الممتع: تأكد من أن Docker يعمل وقم بتشغيل الروبوت. شاهده أثناء اللعب بفوزه على سيارات أخرى أو عدم القيام بذلك. إذا فشل ، استمر في تعديل الروبوت الخاص بك لجعله يتفوق على الذكاء!

python gamebot.py

استمر في العبث بالذكاء الاصطناعي وفي النهاية يمكنك فتح وضع الله! # 100DaysOfCode

إذا استمتعت بهذا ، من فضلك صفق ؟ ق س الآخرين يمكن أن نرى ذلك أيضا! تابعوني على TwitterH ariniLabs أو M edium للحصول على آخر التحديثات حول القصص الأخرى أو لمجرد قول مرحبًا :)

ملاحظة: اشترك في رسالتي الإخبارية هنا لتكون أول من يحصل على محتوى جديد ومليء بجرعة من الإلهام من عالم # WomenInTech ونعم يمكن للرجال الاشتراك أيضًا!