论文
ACES:谁来测试测试?代码生成的留一 AUC 一致性
ACES: Who Tests the Tests? Leave-One-Out AUC Consistency for Code Generation
摘要
使用 LLM 生成的测试选择 LLM 生成的候选代码具有挑战性,因为测试本身可能不正确。现有的方法要么平等地对待所有测试,要么依赖临时启发法来过滤不可靠的测试。然而,确定测试的正确性需要知道哪些代码是正确的,从而创建\emph{循环依赖}。我们的主要见解是我们根本不需要确定测试的正确性:\emph{测试投票应该排名,而不仅仅是计数}。重要的不是有多少代码通过测试,而是测试能否区分正确和错误的代码。我们通过留一法评估打破循环依赖:保留一个测试,根据所有剩余测试的总分对代码进行排名,并衡量保留测试的通过/失败模式是否与此排名一致。我们将这一协议形式化为留一法 AUC~(LOO-AUC),并证明预期的 LOO-AUC 与每个测试区分正确代码和错误代码的能力成正比。在此基础上,我们提出了 \textbf{ACES}~(\textbf{A}UC \textbf{C}onsist\textbf{E}ncy \textbf{S}coring) 和两个互补的变体:ACES-C 提供了封闭形式的权重,可以在平均测试质量的温和假设下证明近似于预期的预言; ACES-O 放弃了这一假设并迭代优化可微分的 LOO-AUC 目标。两者都仅在二进制传递矩阵上运行,开销可以忽略不计,并在多个代码生成基准上实现了最先进的 Pass@$k$。