近年来,大型语言模型(LLMs)在各种自然语言处理任务中取得了显著的成功(Brown, Qiu, Xu, Fang, Zhang, Deng, Dai, Ding, Wang, Han, Che等人,2025;Xu, Qiu, Deng, Zhang, Gao, Fang, Wang, Ding, Wang, Han等人,2025),这些模型已被专门用于软件工程领域,形成了所谓的用于代码的大型语言模型(LLMs4Code),例如CodeLlama和Stable Code(Xu等人,2022)。通过在编程语言数据集上进行广泛的预训练,这些模型在代码相关任务上表现出色(Deng, Xia, Yang, Zhang, Yang, Zhang, 2024;Geng, Wang, Dong, Wang, Li, Jin, Mao, Liao, 2024;Qin, Wang, Lou, Dong, Wang, Li, & Mao, 2024)。例如,Geng等人(2024)展示了LLMs4Code在生成代码摘要方面的能力,这些摘要不仅质量高,而且能够通过上下文学习满足人类程序员的多样化需求(Geng等人,2024)。
然而,LLMs4Code也是一把双刃剑,最近的研究已经指出了其中存在敏感信息泄露的风险,包括个人身份信息(PII)、私人数据或机密秘密(Jahanshahi, Mockus, Yang, Sun, Yue, Devanbu, & Lo)。从模型攻击的角度来看(Dong, Zhou, Yang, Shao, & Qiao, Yao, Duan, Xu, Cai, Sun, Zhang, 2024),实证证据表明,特定的提示可能导致相应敏感信息的泄露(Carlini, Tramer, Wallace, Jagielski, Herbert-Voss, Lee, Roberts, Brown, Song, Erlingsson等人,2021;Huang, Li, Wu, Zhang, Lyu, 2024)。更正式地,这种在利用LLMs4Code时发生的隐私泄露风险通常被称为记忆问题(Al-Kaswan, Izadi, 2023;Lukas, Salem, Sim, Tople, Wutschitz, Zanella-Béguelin, 2023)。由于记忆问题普遍存在于各种与代码相关的任务中,例如代码生成(Svyatkovskiy, Deng, Fu, Sundaresan, 2020;Wang, Le, Gotmare, Bui, Li, Hoi, 2023a),并且对开发者的日常开发活动构成了不可避免的风险,我们认为:在LLMs4Code的时代,有效解决潜在的敏感数据泄露问题对于维护用户隐私和建立信任至关重要。
然而,据我们所知,目前的相关工作很少提供针对这一重要但具有挑战性问题的解决方案,仅提供了关于记忆问题的实证发现(Kiyomaru, Sugiura, Kawahara, Kurohashi, 2024;Leybzon, Kervadec, 2024)。我们还注意到,一种潜在的方法是在训练数据预处理阶段加入专门的数据清洗步骤,但这会导致灵活性和可扩展性的不足,因为需要投入大量的工程努力来制定合适的规则和启发式方法。
幸运的是,机器去学习(MU)作为一种技术应运而生,旨在帮助目标模型“忘记”初始训练集中的数据点,提供了一种轻量且有效的方法来保护敏感信息(Liu, Dou, Tan, Tian, & Jiang, Nguyen, Huynh, Nguyen, Liew, Yin, & Nguyen)。具体来说,MU提出了一个“辅助”的净化数据集(不含敏感信息),从而可能比重新训练模型节省大量的开发成本。基于这一直觉,多项研究验证了MU在使LLMs忘记训练期间遇到的特定内容方面的有效性(Chen, Yang, 2023;Chundawat, Tarun, Mandal, Kankanhalli, 2023)。尽管如此,我们 also 注意到,现有文献缺乏对现有MU技术在LLMs4Code背景下的优势和劣势的全面理解,包括它们在减轻代码生成过程中隐私泄露方面的有效性,以及最先进的MU技术在LLMs4Code上的表现。虽然一些先前的工作(例如Chen和Yang(2023);Chundawat等人(2023)已经探索了通用LLMs上的机器去学习技术,但将这些方法直接应用于LLMs4Code并非易事。代码生成模型与自然语言模型有显著不同,因为代码更具重复性、更容易被记住,并且在功能上更为精确。这些特性使得在LLMs4中进行去学习在技术上更具挑战性,在实际应用中后果也更严重。此外,通常用于评估去学习效果的方法依赖于分类准确性或困惑度,而这些指标并不适用于代码生成任务,因为在代码生成任务中,通过率(pass@1)和功能正确性是主要的评估指标。我们的工作通过使用隐私泄露和代码生成指标系统地评估LLMs4Code上的去学习策略,填补了这一空白。
为了填补这一空白,本文对LLMs4Code中的敏感数据泄露进行了广泛的实证研究,同时验证了它们生成的代码的正确性。借助最先进的GPT-4和成熟的代码生成数据集,我们首先构建了一个基准测试集,包括:(a)包含5K条与隐私相关的个人数据的遗忘集,用于评估去学习的有效性;(b)包含5K条代码生成数据的保留集,用于评估LLMs4Code的基本能力。随后,我们在三个广泛使用的LLMs4Code模型(AIXCoder、CodeLlama和CodeQwen)上评估了三种最先进的、易于部署的MU技术。除了研究这些MU技术的有效性外,我们还分析了去学习过程后的隐私保护和泄露形式,以及未来需要解决的潜在挑战。总体而言,我们的贡献总结如下:
1.MU是一种有前景的方法,可以同时减轻LLMs4Code的隐私问题,同时保持其代码生成能力。具体来说,去学习可以将AIXCoder的泄露率降低超过50%,同时对代码生成的副作用可以忽略不计。
2.去学习后,LLMs4Code学会了采用多种形式来防止敏感信息的泄露,其中最常用的一种是用变量名和缩写替换敏感字段。
3.去学习后,LLMs4Code更有可能间接泄露隐私,这意味着它们倾向于泄露未明确查询的信息。这表明未来的工作还应考虑间接隐私泄露,以实现更强大的去学习过程。
4.