CoCoSoDa:面向代码搜索的有效对比学习
软件工程
2023-02-14 v3 人工智能
机器学习
摘要
代码搜索旨在为给定的自然语言查询检索语义相关的代码片段。近年来,许多采用对比学习的方法在代码表示学习上展现出有前景的结果,并极大提升了代码搜索的性能。然而,在利用对比学习进行代码搜索方面仍有很大的提升空间。本文提出 CoCoSoDa,通过对比学习中的两个关键因素——数据增强和负样本——来有效利用对比学习进行代码搜索。具体而言,软数据增强通过动态掩码或将输入序列中的某些词元替换为其类型来生成正样本。动量机制通过维护一个队列和一个动量编码器,在一个小批量中生成大规模且一致的负样本表示。此外,采用多模态对比学习来拉近代码-查询对的表示,并推远不匹配的代码片段和查询。我们在一个包含六种编程语言的大规模数据集上进行了广泛实验,以评估我们方法的有效性。实验结果表明:(1) CoCoSoDa 优于 14 个基线模型,尤其在平均 MRR 分数上分别超过 CodeBERT、GraphCodeBERT 和 UniXcoder 达 13.3%、10.5% 和 5.9%。(2) 消融研究显示了我们方法中每个组件的有效性。(3) 我们将技术应用于多个不同的预训练模型,如 RoBERTa、CodeBERT 和 GraphCodeBERT,并观察到它们在代码搜索上的性能显著提升。(4) 我们的模型在不同超参数下表现稳健。此外,我们进行了定性和定量分析,以探究模型取得良好性能背后的原因。
引用
@article{arxiv.2204.03293,
title = {CoCoSoDa: Effective Contrastive Learning for Code Search},
author = {Ensheng Shi and Yanlin Wang and Wenchao Gu and Lun Du and Hongyu Zhang and Shi Han and Dongmei Zhang and Hongbin Sun},
journal= {arXiv preprint arXiv:2204.03293},
year = {2023}
}
备注
Accepted by ICSE 2023 (The 45th International Conference on Software Engineering)