לחשוב · לתכנת · ללמוד

למידת מכונה ולמידת חיזוק

באמצעות בניית משחקים
גלעד מרקמן
לתלמידי כיתות י״א–י״ב במגמת הנדסת תוכנה, במסלול למידת מכונה ולמידת חיזוק
5 יחידות לימוד מגמת הנדסת תוכנה תוכנית מוכרת על ידי משרד החינוך Python · Pygame · PyTorch

על הספר

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

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

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

הספר מלווה את תוכנית הלימודים „בינה מלאכותית ולמידת מכונה באמצעות פיתוח משחקים” במגמת הנדסת תוכנה, תוכנית בהיקף 5 יחידות לימוד המוכרת על ידי משרד החינוך ונלמדת בכיתות י״א–י״ב. סדר הפרקים עוקב אחר סדר הנושאים בתוכנית, וכל פרק מחבר בין ההסבר, האלגוריתם והקוד.

מסלול הלימוד

לומדים בארבעה חלקים, וכל חלק נשען על קודמו:

אפייתוןשפת פייתון והספריות שישמשו אותנו בהמשך: NumPy, PyPlot ו־Pandas.
בpygameבניית משחק גרפי: לולאה ראשית, ציור, אירועים, אנימציה, ספרייטים והתנגשויות.
גלמידת מכונהמנגזרות ו־Gradient Descent דרך רגרסיה ועד רשתות נוירונים ו־CNN עם PyTorch.
דלמידת חיזוקסוכן וסביבה, MDP, תכנון דינמי, מונטה קרלו, TD ולמידת חיזוק עמוקה: DQN ו־DDQN.

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

אתר הקורס וחומרי ליווי

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

מחברות ודוגמאות קוד

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

מאגרי הקוד של גלעד מרקמן ב־GitHub · מחברות פייתון של האוניברסיטה הפתוחה

בחלק א עובדים ב־Colab. ההתקנה המקומית של פייתון ו־VS Code תשמש בהמשך, בחלק ב. מחברות וחומרי ליווי נוספים מקושרים בראש הפרקים המתאימים.

תוכן העניינים

חלק א — פייתון

חלק ב — pygame

חלק ג — למידת מכונה

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

חלק ד — למידת חיזוק