记忆还是泛化?基于代码重写的 LLM 代码生成评估
人工智能
2025-10-01 v2
摘要
大型语言模型(LLM)近期展现了卓越的代码生成能力。然而,关于 LLM 主要是进行记忆(即复制或重用其训练数据的大部分)还是泛化(即超越训练数据)的争论日益激烈。现有评估大多通过表面/结构相似性来代理记忆,从而将重复代码的良性重用与有害回忆混为一谈,并忽视了语义变化下的任务正确性。我们在行为上将有害记忆定义为在高相似度下的失败,并引入语义扰动代码重写,即为给定编码任务在相似难度水平上重写一个语义不同的答案,然后逆向工程出一个新的编码任务。我们进一步提出记忆风险指数(MRI),这是一个结合两个信号的归一化分数:(i) 模型对重写任务的答案与原始真值解的相似度,以及 (ii) 从原始任务到其重写对应任务的性能下降程度。仅当两个条件同时满足时,即当模型输出相似代码但在扰动任务上失败时,MRI 才会较高,从而捕获有害记忆而非重复代码的良性重用。在代码生成基准 MBPP+ 和 BigCodeBench 上的实证评估表明:(1) 记忆并不随模型增大而增加,在许多情况下会随其规模扩大而缓解;(2) 监督微调(SFT)在提高准确性的同时引入了记忆;(3) 结合近端策略优化(PPO)的强化学习在记忆与泛化之间实现了更平衡的权衡。
引用
@article{arxiv.2503.02296,
title = {Memorize or Generalize? Evaluating LLM Code Generation with Code Rewriting},
author = {Lizhe Zhang and Wentao Chen and Li Zhong and Letian Peng and Zilong Wang and Jingbo Shang},
journal= {arXiv preprint arXiv:2503.02296},
year = {2025}
}