[论文解读] The CodRep Machine Learning on Source Code Competition
CodRep竞赛引入了一项新颖的机器学习挑战,专注于预测在源代码文件中代码替换的正确插入行号。该挑战基于五个从开源项目中精选的一行提交数据集(总计58,069个任务),使研究人员和实践者能够使用基于绝对行号差的双曲正切函数的可微分、有界损失函数,在真实世界代码演化场景中训练模型。
CodRep is a machine learning competition on source code data. It is carefully designed so that anybody can enter the competition, whether professional researchers, students or independent scholars, without specific knowledge in machine learning or program analysis. In particular, it aims at being a common playground on which the machine learning and the software engineering research communities can interact. The competition has started on April 14th 2018 and has ended on October 14th 2018. The CodRep data is hosted at https://github.com/KTH/CodRep-competition/.
研究动机与目标
- 创建一个面向机器学习研究的共享基准,对研究人员、学生及独立学者友好,无需具备深厚的机器学习或程序分析专业知识。
- 通过一个公开可用的真实代码变更数据集,促进机器学习与软件工程社区之间的协作。
- 为预测源文件中代码行插入位置提供标准化的问题设定,重点聚焦于替换操作。
- 收集并整理大规模的一行提交数据集,源自学术研究,确保数据质量与可复现性。
- 设计一种稳健的可微分损失函数,反映真实世界中小幅行号误差在代码替换任务中的容忍度。
提出的方法
- 竞赛任务要求预测给定代码行在源文件中应被插入的目标行号,作为替换操作。
- 输入数据由成对信息构成:(待插入的代码行, 完整的源文件内容),以文本文件格式存储,第一行为待插入的代码行,第二行为文件完整内容。
- 训练标签以单独的解决方案文件提供,每个任务对应正确的行号。
- 数据集源自学术文献中已有研究的开源项目真实提交记录,确保其相关性与可复现性。
- 数据筛选排除了仅包含注释的更改、空行以及多行替换,仅保留Java文件中的单行替换提交。
- 采用自定义损失函数:tanh(|正确行 − 预测行|),该函数具有有界性、对称性、连续性与可微性(除0点外),并以对数方式惩罚较大的误差。
实验结果
研究问题
- RQ1机器学习模型在真实源代码文件中预测代码替换正确插入行号的准确度如何?
- RQ2不同模型架构在具有不同代码风格与结构的多样化开源项目中,其泛化能力如何?
- RQ3可微分、有界的损失函数在指导代码插入预测任务的模型训练方面有多有效?
- RQ4一个共享的、精心筛选的一行提交数据集,能否作为代码演化与代码生成研究的可靠基准?
- RQ5数据来源与筛选标准对代码变更预测数据集的质量与实用性有何影响?
主要发现
- CodRep竞赛提供了目前已知最大的一行提交数据集,总计58,069个预测任务,涵盖五个从学术项目中精选的数据集。
- 该数据集由来自开源项目的实际、经过筛选的提交构成,其中Dataset1包含4,394个任务,Dataset5包含18,366个任务,确保了高度的相关性与可复现性。
- 损失函数tanh(|正确 − 预测|)确保了误差测量的有界性、对称性与可微性,对近乎完美的预测结果施加最小惩罚。
- Dataset5被用作最终排名的隐藏测试集,确保了竞赛的完整性,并防止了对公开数据的过拟合。
- 竞赛框架支持来自多样化研究社区的广泛参与,包括学生与独立学者,且无需具备专门的机器学习或程序分析知识。
- 经筛选的数据集已公开发布于 https://github.com/KTH/CodRep-competition/,支持竞赛之外的未来实证研究与模型训练。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。