Bewertungsansätze

Wenden Sie die folgenden Architekturprinzipien an, wenn Sie festlegen, wie Kandidatencodeeinträge in Ihrem Bewertungssystem bewertet, normalisiert und bestraft werden sollen.

Ziele direkt maximieren

AlphaEvolve führt ausschließlich Maximierungssuchen durch und behandelt jedes Optimierungsziel als Hill-Climbing-Aufgabe. Wenn Sie einen Messwert wie die Latenz oder Fehlerraten minimieren möchten, müssen Sie den endgültigen berechneten Wert negieren: score = -latency_ms # AE maximizes -> minimizes latency.

Strikte Monotonie der Funktion beibehalten

Achten Sie darauf, nur monotone Bewertungsfunktionen zu implementieren. Der zurückgegebene numerische Wert muss sich mit der Verbesserung der Kandidatenlösungen kontinuierlich erhöhen. Die Einbeziehung nicht monotoner Werte beeinträchtigt die Suchleistung und führt zu logischen Inkonsistenzen im Optimierungspfad.

Detaillierte, detaillierte Messwerte bereitstellen

Detaillierte Bewertungen verbessern die allgemeine Suchqualität direkt. Selbst wenn Sie für ein einzelnes Kerngeschäftsziel optimieren, hilft die Einbeziehung sekundärer oder Proxy-Messwerte AlphaEvolve, einen komplexen Suchbereich effektiver zu durchsuchen. Geben Sie einzelne Unterbewertungen als strukturierte Insights an das System zurück, damit das LLM explizit über Leistungs-Trade-offs zwischen den Generationen nachdenken kann.

Teilerfolge belohnen, statt nur auf das Endergebnis zu achten

Belohnen Sie Teilerfolge, anstatt sich ausschließlich auf endgültige oder binäre Ergebnisse zu verlassen. Bevorzugen Sie immer ein dichtes Bewertungssignal gegenüber einem dünnbesetzten.

Ein binäres oder niedrigauflösendes Ziel (z. B. das Erfassen von gewonnenen Spielen in einem turnierbasierten Spielproblem) führt zu massiven Leistungsplateaus, bei denen mehrere Kandidaten gleichauf sind. Dadurch kann AlphaEvolve nicht zwischen einer fast richtigen und einer schlechten Lösung unterscheiden, was die Auswahl der übergeordneten Lösungen blockiert.

So behalten Sie die Richtung des Suchgradienten bei:

  • Feingranulares Subsignal hinzufügen: Messen Sie den inkrementellen Fortschritt in Richtung des Endziels (z. B. einzelne Punkte, die in einem Spiel erzielt wurden), damit AlphaEvolve Kandidaten mit gleicher Punktzahl bewerten und sich vielversprechenden Lösungsbereichen annähern kann.

  • Ausrichtung und Gewichtung sorgfältig abstimmen: Das Subsignal muss monoton mit dem wahren Ziel ausgerichtet und sicher darunter gewichtet sein. Wenn sie nicht richtig gewichtet ist, optimiert AlphaEvolve den Proxy-Messwert auf Kosten des eigentlichen Ziels (was zu einem Reward Hack führt).

Erstellen Sie beispielsweise eine skalare Zielfunktion mit Punkten als logischem Tie-Breaker: use score = matches_won + w * (points_scored / points_possible).

Konfigurieren Sie die Gewichtungsbeschränkung auf w < 1, damit ein zusätzlicher Terminalgewinn immer Vorrang vor einer Punktesammlung innerhalb des Spiels hat. Das Subsignal wird dann strikt als Tiebreaker behandelt.

Mit einem einzelnen Ziel beginnen

Sie sollten die Implementierung mit einer einzelnen Zielfunktion beginnen. Die Optimierung mit mehreren Zielen und umfassendem Pareto-Frontier-Tracking wird zwar nativ in der Datenbank unterstützt, wobei MAP-Elites das beste Programm pro Messwert verfolgt und das System eine laufende Pareto-Frontier über alle Messwerte hinweg verwaltet. Ein einzelnes skalares Ziel ist jedoch bei der ersten Bereitstellung wesentlich einfacher zu verstehen und zu debuggen. Wenn Ihr Problem mehrere Ziele erfordert, können Sie diese entweder zu einem einzigen gewichteten Skalar kombinieren oder von Anfang an Tools für das Tracking mehrerer Messwerte verwenden.

Vor dem Kombinieren neu skalieren und normalisieren

Wenden Sie einen strikten Skalenausgleich auf Ihre Messwerte an, um eine Verzerrung der Optimierung zu vermeiden:

  • Über Bereiche hinweg neu skalieren: Normalisieren Sie Messwerte auf vergleichbare Bereiche, bevor Sie sie kombinieren. Wenn Sie begrenzte Werte (von 0 bis 1) und unbegrenzte Werte (von 0 bis infinity) ohne explizite Neuskalierung kombinieren, dominiert der unbegrenzte Messwert die Fitnesslandschaft.

  • Additive Strukturen sind multiplikativen Kombinationen vorzuziehen: Multiplikative Ziele können sehr empfindlich auf geringfügige Abweichungen im Nenner reagieren, was die Genauigkeit und Stabilität der Suche beeinträchtigt. Implementieren Sie stattdessen additive gewichtete Summen: w1*A - w2*L - w3*M. Dieses Format ermöglicht einfache Gewichtungsanpassungen pro Leistungsparameter.

  • Relativ zu den Anfangswerten normalisieren: Damit Skalierungsunterschiede Ihren Suchpfad nicht verzerren, teilen Sie jeden Messwert durch den jeweiligen anfänglichen Referenzwert. So beginnen alle Messwerte bei einem Referenzwert von 1.0, bevor Sie Gewichtungen anwenden und sie kombinieren.

Minimale numerische Unterschiede verstärken

Kleine numerische Unterschiede bei den Punktzahlen liefern dem zugrunde liegenden LLM möglicherweise kein nützliches Optimierungssignal. Wenn ein starker Kandidat 1e-7 und ein schwächerer Kandidat 1e-8 erhält, kann das LLM bei der Überprüfung des Kontexts möglicherweise nicht sinnvoll zwischen ihnen unterscheiden. Skalieren Sie Ihre endgültigen Bewertungen auf einen offensichtlichen, menschenlesbaren Bereich (z. B. 0 bis 100), damit inkrementelle Codeverbesserungen im Generierungs-Prompt numerisch sichtbar werden.