评分方法

在确定如何在评估框架内对候选代码条目进行评分、归一化和惩罚时,请遵循以下架构原则。

直接最大化目标

AlphaEvolve 仅执行最大化搜索,将每个优化目标都视为爬山任务。如需最大限度地减少延迟时间或错误率等指标,您必须对最终计算值取反:score = -latency_ms # AE maximizes -> minimizes latency。

保持严格的函数单调性

请确保仅实现单调评分函数。随着候选解决方案的改进,返回的数值分数必须持续增加。纳入非单调分数会降低搜索性能,并在优化路径中引入逻辑不一致。

提供详细、精细的指标

详细评分可直接提升整体搜索质量。即使针对单一核心业务目标进行优化,纳入次要指标或代理指标也有助于 AlphaEvolve 更有效地探索复杂的搜索空间。将各个子分数作为结构化数据洞见传回系统,以便 LLM 能够明确推理不同生成结果之间的性能权衡。

奖励部分成功,而非稀疏结果

奖励部分成功,而不是完全依赖于最终结果或二元结果。始终优先选择密集评分信号,而非稀疏评分信号。

二元或低分辨率目标(例如,跟踪在基于锦标赛的游戏问题中赢得的比赛)会造成多个候选模型并列的大规模性能停滞期。这种行为会导致 AlphaEvolve 无法区分“差一点就成功”和“糟糕的解决方案”,从而导致父级选择循环停滞。

如需保持搜索梯度方向,请执行以下操作:

  • 添加细粒度子信号:衡量朝着最终目标取得的增量进展(例如,在比赛中获得的个人积分),以便 AlphaEvolve 可以对原本并列的候选方案进行排名,并朝着有希望的解决方案空间进行爬山。

  • 仔细调整对齐和权重:确保子信号与真实目标单调对齐,且权重安全地低于真实目标。如果权重不当,AlphaEvolve 会以牺牲实际目标为代价来优化代理指标(导致奖励黑客攻击)。

例如,使用积分作为逻辑决胜局,构建标量目标函数:use score = matches_won + w * (points_scored / points_possible)。

将权重约束配置为 w < 1,以便额外的终局胜利始终优先于任何比赛内积分累积,从而将子信号严格视为决胜局。

从单一目标开始

建议您在开始实施时先使用单个目标函数。虽然数据库原生完全支持具有全面帕累托前沿跟踪的多目标优化,其中 MAP-Elites 会跟踪每个指标的最佳程序,并且系统会维护所有指标的运行帕累托前沿,但在初始部署期间,单个标量目标更容易推理和调试。如果问题需要多个目标,您可以将它们合并为一个加权标量,也可以从一开始就利用多指标跟踪工具。

在合并前重新缩放和归一化

对各项指标应用严格的比例平衡,以避免优化偏差:

  • 跨范围重新缩放:在合并指标之前,先将其归一化为可比较的范围。在不进行显式重新缩放的情况下,将有界分数(范围从 0 到 1)和无界分数(范围从 0 到 infinity)组合在一起,会导致无界指标在适应度景观中占据主导地位。

  • 优先选择加法结构,而非乘法组合:乘法目标可能会对分母的微小变化过于敏感,从而影响搜索准确性和稳定性。请改为实现加法加权和:w1*A - w2*L - w3*M。此格式允许根据每个性能参数直接调整权重。

  • 相对于初始值进行归一化:为防止尺度差异导致搜索路径出现偏差,请将每个指标除以其各自的初始基准值,以便在应用权重并组合这些指标之前,所有指标都从基准值 1.0 开始。

放大微小的数值差异

较小的数值分数差异可能无法为底层 LLM 提供有用的优化信号。如果一个强候选答案得分为 1e-7,而一个较弱候选答案得分为 1e-8,则 LLM 在查看上下文时可能无法有意义地对它们进行区分。将最终得分重新缩放到一个明显、人类可读的范围(例如 0 到 100),以便在生成提示中以数字形式直观地体现代码的增量改进。