评估器实现模式

在为 AlphaEvolve 评估框架设计评估指标时,请建立以下三个不同的测试层级。

第 1 层级:解决方案验证测试

这些测试会在代码完全执行之前,验证基本的代码执行安全性和政策合规性。

  • 执行安全性:验证代码是否执行。这包括检查语法、检查编译时间、执行静态分析以及检查基础架构兼容性。

  • 执行政策:确定即使代码正常运行,是否也应执行该代码。这包括 lint 检查、常规代码质量检查、信息安全审核、风险和合规性验证以及 API 供应链检查。

考虑因素:

  • 如果验证失败,则返回一个较高的负分,例如 -10000 或 -100000。AlphaEvolve 会忽略这些程序。

  • 请附上失败类型和日志,以便进行调试。虽然 AlphaEvolve 不会将这些元数据用作搜索信号,但它们对于事后分析故障模式非常有用。

第 2 层级:解决方案验证测试

这些测试使用单元测试和功能测试来验证算法的正确性以及是否符合约束条件。

  • 功能准确性:使用单元测试和功能测试验证代码是否正常运行。

  • 约束条件遵守情况:验证解决方案的可行性或约束条件满足情况。

  • 奖励黑客攻击缓解措施:将验证分数作为负惩罚应用于适应度函数,以防止奖励黑客攻击。断言得分为 -10000 或 -100000 可作为有效的惩罚。

考虑因素:

  • 返回通过测试的数量或百分比。这种方法提供了梯度信号;通过 5 项测试中的 4 项的程序被认为比通过 5 项测试中的 0 项的程序更接近正确。

  • 将验证视为软约束条件满足。即使对于硬性系统约束,将其表示为基于与可行空间邻近性的软性惩罚,也能为 AlphaEvolve 提供比二元通过或失败更具可操作性的搜索信号。

第 3 层级:解决方案评估测试(性能测试)

这些测试会根据优化目标的类型来衡量客观效果指标。

  • 直接衡量:在插桩允许的情况下直接跟踪目标。

  • 确定性估计:针对经典运筹学风格,通过分析计算目标。

  • 样本外验证:针对涉及机器学习流水线优化或智能体 Harness 调优的使用场景,使用验证数据集进行测试。

  • 基于模拟的估计:使用马尔可夫链蒙特卡洛 (MCMC) 模拟、贝叶斯优化类型代理函数或其他基于模型的方法。

考虑因素:

  • 返回精细得分和汇总得分。

  • 不要将得分计算工作交给 LLM,而应在评估器框架内以确定性的方式进行计算。AlphaEvolve 会根据这些预先计算的汇总效果得分进行爬山。

  • 部分得分可提供梯度信号,从而加快搜索收敛速度。例如,如果一个程序通过了 5 项测试中的 4 项,则应获得 0.8 分,而不是 None 分。返回 None 会导致 AlphaEvolve 完全忽略该程序,从而消除有用的反馈。得分为 0.8 表示候选答案接近正确,并且具有可行的优化潜力。