Approcci di assegnazione del punteggio

Applica i seguenti principi di architettura per determinare come assegnare un punteggio, normalizzare e penalizzare le voci di codice candidate all'interno del tuo sistema di valutazione.

Massimizza direttamente gli obiettivi

AlphaEvolve esegue esclusivamente ricerche di massimizzazione, trattando ogni target di ottimizzazione come un'attività di hill climbing. Per ridurre al minimo una metrica come la latenza o i tassi di errore, devi negare il valore calcolato finale: score = -latency_ms # AE maximizes -> minimizes latency.

Mantieni una rigorosa monotonicità della funzione

Assicurati di implementare solo funzioni di punteggio monotone. Il punteggio numerico restituito deve aumentare costantemente man mano che le soluzioni candidate migliorano. L'incorporazione di punteggi non monotonici riduce le prestazioni di ricerca e introduce incoerenze logiche nel percorso di ottimizzazione.

Fornire metriche dettagliate e granulari

I punteggi dettagliati migliorano direttamente la qualità complessiva della ricerca. Anche quando l'ottimizzazione è per un singolo scopo commerciale principale, l'incorporazione di metriche secondarie o proxy aiuta AlphaEvolve a navigare in uno spazio di ricerca complesso in modo più efficace. Passa i singoli punteggi secondari al sistema come insight strutturati in modo che l'LLM possa ragionare esplicitamente sui compromessi delle prestazioni tra le generazioni.

Premia il successo parziale rispetto ai risultati scarsi

Premia i successi parziali invece di fare affidamento interamente su risultati finali o binari. Preferisci sempre un indicatore di punteggio denso rispetto a uno sparso.

Un obiettivo binario o a bassa risoluzione (ad esempio, il monitoraggio delle partite vinte in un problema di gioco basato su tornei) crea enormi plateau di rendimento in cui più candidati si trovano in parità. Questo comportamento impedisce ad AlphaEvolve di distinguere un quasi-successo da una soluzione scadente, il che blocca i loop di selezione dei genitori.

Per mantenere la direzione del gradiente di ricerca:

  • Aggiungi un sub-indicatore granulare: misura i progressi incrementali verso l'obiettivo finale (ad esempio i singoli punti segnati in una partita) in modo che AlphaEvolve possa classificare i candidati che altrimenti sarebbero in parità e procedere verso spazi di soluzione promettenti.

  • Allinea attentamente l'allineamento e i pesi: assicurati che l'indicatore secondario sia allineato in modo monotono all'obiettivo reale e che il suo peso sia inferiore a quest'ultimo. Se non viene ponderata correttamente, AlphaEvolve ottimizzerà la metrica proxy a scapito dell'obiettivo effettivo (causando un reward hacking).

Ad esempio, crea una funzione obiettivo scalare utilizzando i punti come criterio di spareggio logico: use score = matches_won + w * (points_scored / points_possible).

Configura il vincolo di ponderazione su w < 1 in modo che una vittoria finale aggiuntiva superi sempre qualsiasi accumulo di punti all'interno della partita, trattando l'indicatore secondario rigorosamente come un criterio di spareggio.

Inizia con un unico obiettivo

Valuta di iniziare l'implementazione con una singola funzione obiettivo. Sebbene l'ottimizzazione multiobiettivo con monitoraggio completo della frontiera di Pareto sia completamente supportata in modo nativo nel database, in cui MAP-Elites monitora il miglior programma per metrica e il sistema mantiene una frontiera di Pareto in esecuzione su tutte le metriche, un singolo obiettivo scalare è notevolmente più semplice da analizzare ed eseguire il debug durante il deployment iniziale. Se il problema richiede più obiettivi, puoi combinarli in un unico scalare ponderato o utilizzare strumenti di monitoraggio multimetrico fin dall'inizio.

Riscala e normalizza prima di combinare

Applica un bilanciamento rigoroso della scala alle metriche per evitare bias di ottimizzazione:

  • Riscala gli intervalli: normalizza le metriche in intervalli comparabili prima di combinarle. La combinazione di punteggi limitati (da 0 a 1) e punteggi non limitati (da 0 a infinity) senza un ridimensionamento esplicito fa sì che la metrica non limitata domini il panorama di idoneità.

  • Preferisci strutture additive rispetto a combinazioni moltiplicative: gli obiettivi moltiplicativi possono diventare ipersensibili a piccole variazioni nel denominatore, compromettendo l'accuratezza e la stabilità della ricerca. Implementa invece somme ponderate additive: w1*A - w2*L - w3*M. Questo formato consente di regolare facilmente i pesi in base ai parametri di rendimento.

  • Normalizza in base ai valori iniziali: per evitare che le differenze di scala distorcano il percorso di ricerca, dividi ogni metrica per il rispettivo valore di riferimento iniziale, in modo che tutte le metriche inizino con un valore di riferimento pari a 1.0 prima di applicare i pesi e combinarle.

Amplifica le differenze numeriche minime

Piccole differenze numeriche nei punteggi potrebbero non fornire un indicatore di ottimizzazione utile all'LLM sottostante. Se un candidato valido ottiene un punteggio di 1e-7 e un candidato meno valido ottiene un punteggio di 1e-8, l'LLM potrebbe non distinguerli in modo significativo durante l'esame del contesto. Riscala i punteggi finali in un intervallo ovvio e leggibile dall'uomo (ad esempio da 0 a 100) in modo che i miglioramenti incrementali del codice diventino numericamente evidenti all'interno del prompt di generazione.