Skip to main content
QUICK REVIEW

[论文解读] Breaking the Silence: the Threats of Using LLMs in Software Engineering

June Sallou, Thomas Durieux|arXiv (Cornell University)|Dec 13, 2023
Software Engineering Research参考文献 39被引用 5
一句话总结

本文识别出大语言模型(LLM)在软件工程研究中面临的关键有效性威胁——尤其是闭源模型依赖、数据泄露和不可复现性,并为软件工程研究人员及语言模型提供方提出可操作的指南,以提升研究的可复现性、透明度和严谨性。通过以Defects4J上的测试用例生成为案例研究,本文展示了代码混淆和多源评估如何减少幻觉和数据泄露,从而提升研究的可靠性。

ABSTRACT

Large Language Models (LLMs) have gained considerable traction within the Software Engineering (SE) community, impacting various SE tasks from code completion to test generation, from program repair to code summarization. Despite their promise, researchers must still be careful as numerous intricate factors can influence the outcomes of experiments involving LLMs. This paper initiates an open discussion on potential threats to the validity of LLM-based research including issues such as closed-source models, possible data leakage between LLM training data and research evaluation, and the reproducibility of LLM-based findings. In response, this paper proposes a set of guidelines tailored for SE researchers and Language Model (LM) providers to mitigate these concerns. The implications of the guidelines are illustrated using existing good practices followed by LLM providers and a practical example for SE researchers in the context of test case generation.

研究动机与目标

  • 提高对大语言模型(LLM)在软件工程研究中关键有效性威胁的认识,包括数据泄露、闭源模型不可预测性以及不可复现性。
  • 解决LLM因训练数据重叠而对评估数据集具有先验知识的风险,尤其是在Defects4J等广泛使用的基准中。
  • 通过提出实用且可操作的指南,促进方法论严谨性,确保软件工程研究人员和语言模型提供方能够实现可靠且透明的LLM评估。
  • 展示方法论选择(如代码混淆和多源数据收集)对减少幻觉和提升结果有效性的影响力。
  • 倡导社区广泛采用标准化评估实践,以确保LLM在软件工程中贡献的长期可复现性和可信度。

提出的方法

  • 提出一个针对三大核心威胁的指南框架:闭源模型依赖、训练集/验证集/测试集之间的数据泄露,以及因模型演化导致的不可复现性。
  • 建议采用代码混淆(例如,重命名方法和变量)以切断LLM训练数据与评估项目之间的隐式数据泄露。
  • 倡导使用多个独立提示或查询,以减少对单一、可能带有偏见的LLM响应的依赖。
  • 鼓励使用开源和闭源LLM进行对比评估,以验证不同模型类型下的发现。
  • 建议利用ONNX等框架来简化跨模型评估,确保一致性。
  • 建议使用代码克隆检测和依赖分析,识别评估集与LLM训练数据之间潜在的数据泄露。

实验结果

研究问题

  • RQ1闭源LLM在未经控制的模型更新和版本管理下,其性能是否会出现退化或不一致?
  • RQ2LLM训练数据与评估基准(如Defects4J)之间存在的显式或隐式数据泄露,在多大程度上影响了报告结果的有效性?
  • RQ3代码混淆技术是否能有效减少LLM的幻觉,并提升在软件工程任务中测试用例生成的可靠性?
  • RQ4多个数据源(如GitHub与SourceForge)在多大程度上能减少偏差并提升LLM在软件工程评估中的泛化能力?
  • RQ5当模型输出非随机且模型版本随时间演变时,研究人员如何确保LLM研究成果的可复现性?

主要发现

  • 当向ChatGPT 3.5输入Math-5的混淆版本时,其生成了无法编译的测试用例,并表现出明显的幻觉(例如,调用不存在的方法),表明其可靠性显著下降。
  • 对于Chart-11,代码混淆对分支覆盖率影响甚微(p值 = 0.79),但观察到轻微的负效应量(A12 = 0.63),表明在混淆代码上的性能略有下降。
  • LLM在SourceForge项目上的表现显著差于GitHub项目,凸显了在使用流行代码仓库作为基准时存在数据泄露风险。
  • 代码克隆检测显示,生成的测试用例经常与公共代码仓库中的现有代码相似,表明训练数据中可能存在潜在的数据泄露。
  • 对评估集进行外部依赖分析显示,训练、验证和测试项目中均存在相似的API使用方式和依赖关系,增加了数据泄露的风险。
  • 使用开源模型(如Llama2和Falcon 180B)进行的对比评估表明,不同模型的结果存在显著差异,凸显了多模型验证在确保结果稳健性方面的重要性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。