הגדרת סוכן RL למסחר ב-OpenAI Gym / Gymnasium

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מדוע סוכן מסחר ב-OpenAI Gym לא מגיע לפרודקשן

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

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

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

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

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

מה נותנת סביבת אימון מכוילת של למידת חיזוק

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

מה הופך למדיד כאשר הסביבה מכוילת:

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

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

מצבי הרצה ב-OpenAI Gym: השוואת גישות

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

להלן שלושה מצבים שביניהם בוחרים בדרך כלל; הם נבדלים בדרישות לנתונים ולתחזוקה.

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

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

כיצד אנו מכיילים ובודקים את סביבת האימון של הסוכן

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

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

  1. ביקורת הסביבה והנתונים. בודקים את ממדי התצפיות והפעולות, גבולות הערכים, צעד הסימולציה, דטרמיניזם המעברים ותקינות איפוס הפרק.
  2. תרשים הניסוי. מקבעים את גרסת הסביבה, מחוללי המספרים האקראיים, חלוקה לאימון ולבדיקה נפרדת, ופורמט הלוגים והמדדים.
  3. כיול התגמול. מרכיבים את פונקציית התגמול מתוצאה מטרה, קנסות על סיכון ואיסורים על מצבים בלתי קבילים, ומסננים חריגים בפרקים ארוכים.
  4. אימון ובקרת התכנסות. מריצים סדרת הרצות עם מחוללים שונים ובוחנים את פיזור התגמול — כך מבחינים בין צמיחה יציבה למזל חד-פעמי.
  5. בדיקת לחץ של הסוכן. משנים פרמטרים של הסביבה, מוסיפים רעש והשהיות בתצפיות, בודקים מצבי קצה והתנהגות בגבולות הטווחים.
  6. מסירת הפתרון. מוסרים את קוד הסביבה, התצורות, סקריפטי ההרצה, לוח המדדים והוראות לשחזור ההרצות על חומרה אחרת.

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

תצורות, תרשימי סביבה ותקני ניסוי

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

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

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

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

מה היה

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

מה שינינו

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

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

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

שיעור הפרקים הכושלים ירד מ-40% ל-9%, הפיזור בין ריצות — מפי שלושה ל-1.2, ומחזור האימון המלא הואץ פי 2.4. על נתונים שלא השתתפו באימון, התנהגות הסוכן נותרה יציבה: אין הידרדרות באופק ארוך.

במה נבדלת סביבת האימון מהמעגל המבצעי?

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

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

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

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

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

ספקות טכניים לפני תחילת העבודה

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

אצלנו כבר פרוסה סביבה ב-OpenAI Gym — תתחילו מאפס?

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

כיצד להבחין בין אוברפיטינג של הסוכן לבין תגמול חסר?

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

האם אפשר להעביר את המודל ומה לעשות בעת שינוי נתונים?

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

מה כלול בתמיכה בפתרון?

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

נדון במשימה ונחזור עם אומדן ותוכנית

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

  • הצגת המשימה: מהו המכשיר, מהי לוגיקת המסחר, ומה נחשב להצלחה — תשואה, ירידה מקסימלית, שיעור עסקאות רווחיות.
  • נתונים: ציטוטים היסטוריים או רישומי עסקאות, עומק ההיסטוריה, הרכב המאפיינים, חוסרים וחריגים ידועים.
  • מגבלות סיכון: ירידה מקסימלית מותרת, מגבלות על הפוזיציה, תדירות עסקאות, כללי עצירה של הסוכן.
  • סביבת הביצוע: מעגל בדיקה של הברוקר או סימולטור, אופן ההתחברות, מגבלות על מסחר אוטומטי.
  • נכסים קיימים: קוד הסביבה ב-OpenAI Gym, תצורות אימון, לוגים של הרצות קודמות — אם יש, מתחילים מהם ולא מאפס.
  • קריטריוני קבלה: באילו מדדים ועל איזה קטע אנו מאשרים את התוצאה, וכיצד בודקים את יציבות הסוכן מחוץ לתקופת האימון.
  • מסגרת העבודה: לוח הזמנים הרצוי, פורמט הדיווח, מי מקבל את התוצאה מטעם הלקוח.

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