מניעת פריצה לפרסים

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

סיכון 1:

פריצה חמדנית לתגמולים. אם Obj = w1*S1 + w2*S2 + w3*S3, יכול להיות ש-AlphaEvolve יגלה את S2 כדי להגדיל ולהתמקד בו לחלוטין, תוך התעלמות מ-S1 ומ-S3.

השבתה זמנית של אותות אכיפה:

להקטין את המשקל של ציון המשנה. יכול להיות שיידרשו 2-3 הרצות ניסיון כדי לכייל את המשקלים. סימולציות בסיסיות ראשוניות של כמה תוצאות ניקוד יכולות לעזור.

סיכון 2:

התעלמות מהקנס על הפרת האילוץ. אם אילוצים גמישים הם קנסות (Obj = Score - w*Penalty), יכול להיות ש-AlphaEvolve יגלה שהתעלמות מהאילוצים מניבה Obj גבוה יותר.

השבתה זמנית של אותות אכיפה:

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

סיכון 3:

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

השבתה זמנית של אותות אכיפה:

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

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

  • משתמשים בבדיקות AST כדי לאתר פרימיטיבים אסורים (sys, ‏ os, ‏ inspect, ‏ eval, ‏ exec,‏ getattr, ‏ setattr) ומחזירים את הערך None אם הם נמצאים.

  • מוודאים שהקוד מחוץ ל-EVOLVE-BLOCK לא השתנה (הבדלי טקסט או AST).

  • מריצים את הפונקציה המפותחת פעמיים עם אותו קלט ומוודאים שהפלט זהה (כדי לזהות פריצה לאקראיות).

  • בודקים את זמן ההערכה. אם הוא מסיים תוך מיקרו-שניות, כנראה שהתשובה מקודדת באופן קשיח.

  • לשים את לוגיקת הניקוד בקובץ נפרד שלא גלוי למודל ה-LLM.