RB1001-08 : סימולציה פשוטה מאוד של נהיגה אוטונומית דו־ממדית RL PPO

RB1001-08 : סימולציה פשוטה מאוד של נהיגה אוטונומית דו־ממדית RL PPO

 

מטרת התוכנית

זוהי סימולציה בסיסית של נהיגה אוטונומית דו־ממדית באמצעות למידת חיזוק מסוג PPO.

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

הקלט למודל

בכל צעד המודל מקבל מטריצה בגודל 50×39, הכוללת 1,950 ערכים:

0.0 – שטח ריק

0.5 – גבול הכביש

1.0 – הרכב

המטריצה המוצגת בצד שמאל היא אותו מידע שמקבל המודל, אך היא מוגדלת לצורך תצוגה.

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

הפעולות האפשריות

למודל שלוש פעולות:

STRAIGHT – הפחתת המהירות הצידית לכיוון אפס.

LEFT – היגוי שמאלה.

RIGHT – היגוי ימינה.

המהירות קדימה קבועה. המודל שולט רק בהיגוי הצידי.

מערכת התגמולים

מטרת התגמול היא לעודד נסיעה במרכז הכביש ולהעניש התקרבות לקצה או יציאה מהכביש.

המשתנה d הוא המרחק המנורמל ממרכז הכביש:

d = 0 – הרכב נמצא במרכז הכביש.

d = 1 – קצה הרכב מגיע לקצה הכביש.

התגמול בכל צעד מחושב כך:

Reward = 0.02 + 0.08 × (1 − d²)

לכן:

במרכז הכביש מתקבל תגמול של 0.10+.

באמצע הדרך לקצה מתקבל תגמול של כ־0.08+.

קרוב לקצה מתקבל תגמול של כ־0.02+.

במרחק של עד 10 פיקסלים מקצה הכביש מתווסף עונש של 0.15−.

ביציאה מהכביש מתקבל עונש של 1.0− והפרק מסתיים.

לאחר השלמת מרחק של 2,800 יחידות מתקבל תגמול נוסף של 3.0+ והפרק מסתיים בהצלחה.

פרק אימון

Episode הוא ניסיון נהיגה אחד.

כל פרק מסתיים באחד המצבים הבאים:

יציאה מהכביש.

השלמת המסלול.

הגעה למגבלת הצעדים.

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

מה ה־Actor לומד?

ה־Actor לומד מדיניות בחירת פעולות.

עבור כל מטריצה הוא מחשב הסתברות לשלוש הפעולות: ישר, שמאלה וימינה.

לדוגמה:

ישר – 10%

שמאלה – 82%

ימינה – 8%

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

במצב Play משתמשים ב־deterministic=True. במצב זה אין אימון או חקירה, והמודל בוחר בפעולה בעלת ההסתברות הגבוהה ביותר.

מה ה־Critic לומד?

ה־Critic מעריך את התגמול העתידי הצפוי מהמצב הנוכחי:

V(s) = Expected future reward

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

ההפרש בין התחזית שלו לבין התוצאה בפועל משמש לשיפור ה־Actor וה־Critic.

תהליך הלמידה

  1. המודל מקבל מטריצה.
  2. ה־Actor בוחר פעולה.
  3. הרכב משנה את מיקומו.
  4. הסביבה מחשבת תגמול.
  5. המצב, הפעולה והתגמול נשמרים.
  6. לאחר 512 צעדים מתקבל Rollout.
  7. PPO מחשב את יתרון הפעולות ביחס לתחזיות ה־Critic.
  8. משקלי ה־Actor וה־Critic מתעדכנים במשך 10 Epochs.
  9. מתחיל Rollout חדש.

מדוע משתמשים ב־PPO?

PPO הוא אלגוריתם Actor-Critic המגביל את גודל השינוי במדיניות בכל עדכון.

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

גרף התגמול

הגרף מציג את התגמולים של 240 הצעדים האחרונים:

קו ירוק – תגמול רגיל.

שיא ירוק סביב 3+ – השלמת המסלול.

שיא אדום בגובה 1− – יציאה מהכביש.

שיפור בלמידה אמור להתבטא בירידה במספר השיאים האדומים, בעלייה במספר השלמות המסלול ובתגמול רגיל הקרוב ל־0.10.

מדדי האימון

Actor Loss – מתאר את עדכון מדיניות הפעולות. אין לו ערך אידיאלי קבוע.

Value Loss – שגיאת תחזית ה־Critic ביחס לתגמול העתידי שהתקבל בפועל.

Explained Variance – מודד את איכות תחזיות ה־Critic. ערך הקרוב ל־1 טוב, וערך הקרוב ל־0 מצביע על תחזיות חלשות.

Entropy – מודדת את מידת האקראיות והחקירה במדיניות.

Approx KL – מודד את השינוי בין המדיניות הישנה לחדשה.

Clip Fraction – שיעור העדכונים שהוגבלו על ידי מנגנון ה־Clipping של PPO.

מבנה הרשת

הקוד משתמש ב־MlpPolicy.

המטריצה הדו־ממדית משוטחת לווקטור של 1,950 ערכים ומועברת לרשת עצבית מסוג MLP. לכן המודל אינו משתמש ב־CNN ואינו מקבל מראש הנחה מרחבית לגבי הקשר בין תאים סמוכים.

CNN עשויה לזהות עיקולים ומבנים מרחביים בצורה יעילה יותר.

מגבלת הקלט

המהירות הצידית של הרכב אינה כלולה בקלט.

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

אפשר לשפר את המערכת באמצעות:

הוספת המהירות הצידית לקלט.

הוספת הפעולה הקודמת.

שימוש במספר מטריצות עוקבות.

שימוש ב־Recurrent PPO.

שימוש ב־CNN לניתוח המטריצה.

מגבלות הסימולציה

התוכנית אינה מערכת מלאה של רכב אוטונומי.

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

ההגדרה המדויקת היא:

סימולציה בסיסית של שמירת רכב וירטואלי במרכז כביש דו־ממדי באמצעות PPO.

עיקרון מרכזי

המתכנת אינו מגדיר למודל מתי לפנות שמאלה או ימינה. הוא מגדיר את הקלט, הפעולות ומערכת התגמולים.

המודל לומד מדיניות נהיגה שמטרתה למקסם את סכום התגמולים העתידי.

R=0.02+0.08(1-d^2)
]

מצב תגמול
מרכז הכביש +0.10
באמצע הדרך לקצה בערך +0.08
קרוב לקצה בערך +0.02
עד 10 פיקסלים מהקצה תוספת −0.15
יציאה מהכביש −1.0 וסיום הפרק
השלמת 2,800 יחידות תוספת +3.0 וסיום הפרק

התגמול בהשלמה הוא למעשה בין +3.02 ל־+3.10, לפי מיקום הרכב.

מה ה־Actor לומד?

ה־Actor לומד מדיניות:

[
\pi(a|s)
]

כלומר, מה ההסתברות לבחור בכל פעולה כאשר מתקבלת מטריצה מסוימת.

לדוגמה:

פעולה הסתברות
ישר 10%
שמאלה 82%
ימינה 8%

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

מה ה־Critic לומד?

ה־Critic מעריך:

[
V(s)=\text{התגמול העתידי הצפוי ממצב זה}
]

הוא מנסה לענות:

האם המצב הנוכחי צפוי להוביל לנסיעה מוצלחת או להתרסקות?

ה־Critic אינו נוהג ברכב. הוא מספק ל־Actor משוב לגבי איכות המצבים והפעולות.

כיצד PPO לומד?

  1. המודל מקבל מטריצה.
  2. ה־Actor בוחר פעולה.
  3. הרכב זז.
  4. הסביבה מחשבת תגמול.
  5. התהליך חוזר במשך 512 צעדים.
  6. PPO משווה בין התגמול שהתקבל לבין תחזית ה־Critic.
  7. משקלי ה־Actor וה־Critic מתעדכנים במשך 10 epochs.
  8. מתחיל Rollout חדש.

משמעות הגרף

  • קו ירוק: התגמול בכל צעד.
  • שיא ירוק סביב +3: השלמת המסלול.
  • שיא אדום בגובה −1: התרסקות.
  • הגרף מציג תגמול לכל צעד, לא את סכום התגמול של הפרק.

נקודה טכנית חשובה מאוד

למרות שהקלט הוא מטריצה דו־ממדית, הקוד משתמש ב:

לכן Stable-Baselines3 משטח אותה לווקטור של 1,950 מספרים. זו אינה רשת CNN.

המשמעות:

  • המודל יכול ללמוד.
  • אבל הוא אינו מקבל מראש את העיקרון שפיקסלים סמוכים קשורים זה לזה.
  • CNN עשויה ללמוד עיקולים ומבנה מרחבי ביעילות גבוהה יותר.

מגבלה נוספת

המהירות הצידית של הרכב אינה כלולה בקלט. שני מצבים עשויים להיראות כמעט זהים, אף שבאחד הרכב נע במהירות שמאלה ובשני ימינה.

לכן הסביבה אינה Markov מלאה מבחינת המודל. לשיפור עתידי אפשר:

  • להוסיף מהירות צידית כנתון.
  • לתת למודל מספר מטריצות עוקבות.
  • להשתמש ב־Recurrent PPO.

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

 

קוד התכונה