יום שני, 6 באפריל 2020

האם מישהו סוף סוף ינצח את האסייתים בגיימינג? והאם זה בכלל יהיה מחשב?

קודם כל תתחילו מלראות את הוידאו הבא (וכן זה בסדר להיות מבולבלים, עושים סדר עוד מעט)



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

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


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