יש כמה סיכונים שקשורים לפריצה של תגמולים. בהמשך מפורטים הסיכונים והאסטרטגיות המתאימות לצמצום הסיכונים.
סיכון 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).