论文

检测代码语言模型中的功能记忆

Detecting Functional Memorization in Code Language Models

模型评测安全与风险评测

摘要

大语言模型 (LLM) 越来越多地用于大规模生成代码。同时,之前的工作通过审核训练示例和模型生成之间的文本重叠来调查训练数据是否可以从模型输出中恢复。然而,代码可以保留相同的逻辑,但在语法和结构上有很大不同。我们在这里研究功能记忆:从 LLM 代中泄漏训练数据逻辑,而文本审计无法检测到。我们利用 AI 编码智能体 生成用于训练数据功能的不同测试输入,并评估模型生成的延续是否产生相同的输出。我们通过反事实框架将其形式化,将目标模型(暴露于特定代码)与参考模型(未暴露)进行比较,并仅要求目标具有功能等效性。我们跨 4 个开源模型实例化该框架,并显式过滤 5 种编程语言中具有有意义逻辑的函数。我们发现 0.3-3.4% 的过滤函数是反事实功能性记忆的,即在文本度量无法检测到的重构代码中以等效行为进行再现。我们进一步表明,基于 LLM 的法官为基于执行的测试提供了可扩展的代理,在 1% 的假阳性率下实现了 68% 的真阳性率,并发现功能记忆与训练语料库中的语义重复相关。