Command Palette
Search for a command to run...
ACES:谁在测试测试集?针对代码生成任务的 Leave-One-Out AUC 一致性研究
ACES:谁在测试测试集?针对代码生成任务的 Leave-One-Out AUC 一致性研究
Hui Sun Yun-Ji Zhang Zheng Xie Ren-Biao Liu Yali Du Xin-Ye Li Ming Li
摘要
使用 LLM 生成的测试用例来筛选 LLM 生成的代码候选集是一项具有挑战性的任务,因为测试用例本身可能存在错误。现有方法要么对所有测试用例一视同仁,要么依赖于特定的人工启发式规则(ad-hoc heuristics)来过滤不可靠的测试。然而,判断测试用例的正确性需要预先知道哪些代码是正确的,这从而产生了一种循环依赖(circular dependency)。我们的核心洞察是:我们根本不需要去判定测试用例的正确性,因为测试投票应当用于“排序”,而不仅仅是“计数”。关键不在于有多少代码通过了某个测试,而在于该测试能否区分(distinguish)正确代码与错误代码。我们通过“留一法评估”(leave-one-out evaluation)打破了这种循环依赖:预留一个测试用例,根据代码在所有其余测试上的聚合得分进行排序,然后测量被预留的测试用例的通过/失败模式是否与该排序一致。我们将这种一致性形式化为“留一法 AUC”(LOO-AUC),并证明了预期的 LOO-AUC 与每个测试用例区分正确代码与错误代码的能力成正比。基于此,我们提出了 ACES(AUC ConsistEncy Scoring),并包含两种互补的变体:ACES-C 在关于平均测试质量的温和假设下,提供了在期望上可证明近似 Oracle(真值)的闭式权重(closed-form weights);ACES-O 则无需该假设,通过迭代优化一个可微的 LOO-AUC 目标函数来进行工作。两种方法都仅基于二值化通过矩阵(binary pass matrix)运行,且开销极低,并在多个代码生成 benchmark 上实现了最先进的(state-of-the-art)Pass@k 性能。