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

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

סיכון 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).