יום 22: כיצד לבנות Bot משחק AI באמצעות מכון כושר OpenAI ויקום

בואו נודה בזה, AI נמצא בכל מקום. קרב פנים אל פנים מתפתח בין אילון מאסק למארק צוקרברג על עתיד ה- AI. יש כאלה שמשטים את זה. וחלקם שדעותיהם האוטופיות טוענות כי AI כמעט יכול להיות כמו אלוהים בעזרה לאנושות. לא משנה מה הצדדים שהשקפות שלך נוטות, AI כאן כדי להישאר.

"בעזרת בינה מלאכותית אנו מזמנים את השד." - אילון מאסק "החשש מפני עלייה ברובוטים הרוצחים זה כמו לדאוג לאוכלוסיית יתר במאדים." אנדרו נג

אם אתה נרגש לצלול פנימה ולהתעסק עם AI, אז המשחקים הם מקום נהדר להתחיל בו. הם היו המבחן המובחן עבור AI. אבל לפני שקפצים פנימה, הנה קצת היסטוריה על האופן שבו תכנות המשחק התפתחו לאורך זמן.

ההיסטוריה של תכנות המשחק

מתכנתים של משחקים השתמשו בהחלטות מסוג היוריסטי אם-אז-אחר כדי לנחש ניחושים משכילים. ראינו זאת במשחקי ארקייד המוקדמים ביותר כמו פונג ופקמן. מגמה זו הייתה הנורמה במשך תקופה ארוכה מאוד. אבל מפתחי משחקים יכולים רק לחזות כל כך הרבה תרחישים ומקרי קצה כדי שהבוט שלך לא יפעל במעגלים!

מפתחי המשחק ניסו לחקות כיצד בני אדם ישחקו במשחק, ודגמו אינטליגנציה אנושית בבוט משחק.

הצוות ב- DeepMind עשה זאת על ידי הכללה ודוגמנות של מודיעין בכדי לפתור כל משחק עטרי שנזרק עליו. בוט המשחק השתמש ברשתות עצביות למידה עמוקה שלא יהיה בעל ידע ספציפי למשחק. הם ניצחו את המשחק על סמך הפיקסלים שראו על המסך וידעיהם על בקרות המשחק. עם זאת, חלקים מ- DeepMind עדיין אינם מקור פתוח מכיוון שגוגל משתמשת בו כדי לנצח את התחרות.

הדמוקרטיזציה של AI

כדי להימנע מריכוז הכוח המדהים של AI בידי מעטים, הקים אילון מאסק את OpenAI. היא מבקשת לדמוקרטיזציה של AI על ידי הפיכתה לנגישה לכל. היום נחקור את מכון הכושר OpenAI ואת היקום שיצא לאחרונה, שנבנה על גבי חדר הכושר.

OpenAI Gym מספק ממשק פשוט לאינטראקציה וניהול כל סביבה דינמית שרירותית. OpenAI Universe היא פלטפורמה המאפשרת לך לבנות בוט ולבדוק אותו.

יש אלפי סביבות. הם נעים בין משחקי Atari קלאסיים, Minecraft ו- Grand Theft Auto, לסימולציות של קיפול חלבונים שיכולים לרפא סרטן. אתה יכול ליצור בוט ולהריץ אותו בכל סביבה תוך שימוש בכמה שורות קוד Python בלבד. זה מדהים מכדי שלא לנסות!

פרויקט (שעה)

אנו הולכים לבנות משחק בוט של AI המשתמש בטכניקה "למידת חיזוק". אסביר זאת בהמשך. זה ישחק באופן אוטונומי נגד המשחק Atari Neon Race Car (ויכול לבחור כל משחק שתרצו). אנו בונים את בוט המשחק הזה באמצעות ספריות הכושר והיקום של OpenAI.

שלב 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 מכאן.

שלב 2: קוד את בוט המשחק

משחק הבוט מקודד בפייתון, לכן אנו מתחילים לייבא את שתי התלות היחידה הדרושה: חדר כושר ויקום.

import gymimport 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), מפתח הבקרה (Up Arrow), והגדרת אותו נכון לכל תצפית שהסוכן רואה.

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()

עכשיו יש לך את משחק הבוט מוכן להתחרות בסביבה. הקוד השלם עבור הבוט הבסיסי הזה, כמו גם גרסה מתקדמת, זמין ברשימות ה- Github שלי כאן.

שלב 3: הפעל את משחק הבוט

עכשיו לחלק הכיף: ודא ש- Docker פועל והפעל את הבוט. ראו את זה בפעולה מכים מכוניות אחרות או לא מצליחים לעשות זאת. אם זה נכשל, המשך לצבוט את הבוט שלך כדי לגרום לו לנצח את האינטליגנציה!

python gamebot.py

המשיכו להתעסק עם AI ובסופו של דבר תוכלו לפתוח את מצב האל! # 100DaysOfCode

אם נהניתם, אנא מחאו כפיים ? s o שאחרים יכולים לראות את זה גם! עקבו אחרי בטוויטר @H ariniLabs או M edium כדי לקבל את העדכונים האחרונים על סיפורים אחרים או סתם להגיד היי :)

PS: Sign up for my newsletter here to be the first to get fresh new content and it’s filled with a dose of inspiration from the world of #WomenInTech and yes men can signup too!