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



הספר מלווה את תוכנית הלימודים „בינה מלאכותית ולמידת מכונה באמצעות פיתוח משחקים” במגמת הנדסת תוכנה, תוכנית בהיקף 5 יחידות לימוד המוכרת על ידי משרד החינוך ונלמדת בכיתות י״א–י״ב. סדר הפרקים עוקב אחר סדר הנושאים בתוכנית, וכל פרק מחבר בין ההסבר, האלגוריתם והקוד.
מסלול הלימוד
לומדים בארבעה חלקים, וכל חלק נשען על קודמו:
הספר אינו קורס תכנות. הוא יוצא מנקודת הנחה שהתלמידים כבר למדו את יסודות התכנות: משתנים, תנאים, לולאות, פונקציות ומחלקות, בשפה אחרת. חלק א מלמד את שפת פייתון ואת הספריות הדרושות בהמשך, ולא את מושגי היסוד של התכנות עצמם.
אתר הקורס וחומרי ליווי
הקורס זמין גם באתר „תכנות באינטרנט” של גלעד מרקמן, וכולל סרטונים, מצגות ודוגמאות קוד. הקישורים הבאים מובילים למדורי הקורס ולחומרי הליווי המתאימים לכל חלק בספר.
מחברות ודוגמאות קוד
באתר הקורס יש מחברות Colab נוספות ודוגמאות קוד. קישורים ספציפיים מופיעים בדפי השיעורים, בפרקים המתאימים בספר ובמחברות הליווי.
מאגרי הקוד של גלעד מרקמן ב־GitHub · מחברות פייתון של האוניברסיטה הפתוחה
בחלק א עובדים ב־Colab. ההתקנה המקומית של פייתון ו־VS Code תשמש בהמשך, בחלק ב. מחברות וחומרי ליווי נוספים מקושרים בראש הפרקים המתאימים.
תוכן העניינים
חלק א — פייתון
- א.1 — מהי פייתון?
- א.2 — סביבת העבודה: Google Colab
- א.3 — פקודות בסיסיות
- א.4 — מחרוזות — עבודה עם טקסט
- א.5 — תנאים ובקרת זרימה
- א.6 — לולאות
- א.7 — פונקציות
- א.8 — רשימות — List
- א.9 — tuple
- א.10 — שוויון, זהות והעתקה
- א.11 — מילונים — dict
- א.12 — קבוצות — set
- א.13 — פונקציות מתקדמות
- א.14 — חריגות — טיפול בשגיאות בזמן ריצה
- א.15 — רקורסיה
- א.16 — חיפוש, מיון ויעילות
- א.17 — טבלאות גיבוב
- א.18 — מחלקות
- א.19 — ירושה והכלה
- א.20 — קבצים — קריאה וכתיבה
- א.21 — NumPy — מערכים וחישובים
- א.22 — PyPlot — גרפים ותרשימים
- א.23 — תמונות כמערכים
- א.24 — Pandas — טבלאות וניתוח נתונים
חלק ב — pygame
- ב.1 — מעבר מ־Colab לעבודה מקומית
- ב.2 — מבנה הלולאה הראשית
- ב.3 — אירועים וסגירת החלון
- ב.4 — משטחים, שכבות וצבעים
- ב.5 — ציור צורות גאומטריות
- ב.6 — טעינה והצגה של תמונות
- ב.7 — אינטראקציה עם המשתמש: עכבר ומקלדת
- ב.8 — שעון, קצב פריימים ורענון המסך
- ב.9 — אנימציה פשוטה
- ב.10 — מלבני מיקום: pygame.Rect
- ב.11 — ספרייטים: pygame.sprite.Sprite
- ב.12 — גילוי התנגשויות
- ב.13 — קבוצות ספרייטים והתנגשויות בין קבוצות
חלק ג — למידת מכונה
כל פרק מוסיף צעד אחד: מן הנתונים והנגזרות, דרך אימון ונרמול, ועד רשתות וסיווג תמונות.
חלק ד — למידת חיזוק
- ד.1 — מבוא ללמידת חיזוק
- ד.2 — התקנת PyTorch במחשב האישי
- ד.3 — מודל סביבה–סוכן ו־MDP
- ד.4 — תכנון דינמי: Policy Iteration
- ד.5 — תכנון דינמי: Value Iteration
- ד.6 — מונטה קרלו — למידה מהתנסות
- ד.7 — מונטה קרלו באיקס עיגול — טבלת Q וקוד האימון
- ד.8 — Temporal Difference
- ד.9 — TD באיקס עיגול ו־AfterState
- ד.10 — למידת חיזוק עמוקה
- ד.11 — בנייה ואימון של DQN באיקס עיגול
- ד.12 — DDQN — ההבדל מ־DQN