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

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

סיכון 1:

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

הפחתת הסיכון:

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

סיכון 2:

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

הפחתת הסיכון:

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

סיכון 3:

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

הפחתת הסיכון:

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

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

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

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

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

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

  • כדאי להוסיף את לוגיקת הניקוד לקובץ נפרד שלא גלוי למודל שפה גדול (LLM).