arrow
返回

Effective Hard Negative Mining for Contrastive Learning-Based Code Search

delete2025-02-23
delete0
delete
OA
AI
F
Fan Ye
李
李传艺 (Chuanyi Li)
葛
葛季栋 (Jidong Ge)
L
LiGuo Huang
骆斌 封面图
骆斌 (Bin Luo)
DOI:10.1145/3695994delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

En 中文
背景。代码搜索旨在根据给定的自然语言查询,在大规模代码库中找到最相关的代码片段。一个准确的代码搜索引擎可以提高代码复用率并改善编程效率。代码搜索的重点在于如何表示代码和查询之间的语义相似性。随着代码预训练模型的发展,使用数值特征向量(嵌入)表示代码语义、并使用向量距离表示语义相似性的模式,已取代传统的字符串匹配方法。语义表示的质量对代码搜索等下游任务的有效性至关重要。目前,最先进(SOTA)的学习方法采用对比学习范式。对比学习的目标在于最大化匹配代码和查询(正样本)之间的相似性,同时最小化不匹配对(负样本)之间的相似性。为提高负样本的复用率,先前的对比学习方法使用大型队列(记忆库)来存储嵌入。问题。然而,在代码搜索中使用负样本仍有很大的改进空间:(1) 由于负样本的随机选择,现有模型学习的语义表示无法很好地区分相似代码。(2) 由于记忆库中的语义向量复用自之前的推理结果,并直接用于损失函数计算而未经梯度下降,模型无法有效学习负样本的语义信息。方法。为解决上述问题,我们提出了一个带硬负样本挖掘的对比学习代码搜索模型,称为CoCoHaNeRe:(1) 为使模型能够区分相似代码,我们在对比训练中引入硬负样本,这些是代码库中与正样本最相似的负样本。因此,硬负样本最有可能使模型出错。(2) 为提高训练过程中负样本的学习效率,我们将所有硬负样本纳入模型的梯度下降过程中。结果。为验证CoCoHaNeRe的有效性,我们在六种编程语言的大型代码搜索数据集上进行了实验,以及类似的检索任务(代码克隆检测和代码问答)。实验结果表明,我们的模型达到了SOTA性能。在代码搜索任务中,CoCoHaNeRe的平均MRR分数分别超过CodeBERT、GraphCodeBERT和UniXcoder 11.25%、8.13%和7.38%。在代码克隆检测和代码问答方面也取得了显著进展。此外,我们的方法在不同编程语言和代码预训练模型上表现良好。此外,定性分析表明,我们的模型能够有效区分相似代码之间的高阶语义差异。
Keyword:
Code Search
Contrastive Learning
Hard Negative Mining
Code Pre- trained Model

期刊

A
ACM Transactions on Software Engineering and Methodology
IF:
6.2
论文数:
1.2K
被引数:
3.4K

机构

暂无机构信息
引用论文

引用论文

No Perisaccadic Mislocalization with Abruptly Cancelled Saccades
err2014-04-16
err0
errOAAI
errJeroen Atsma; Femke Maij; Brian D. Corneil; W. Pieter Medendorp
err分享
err收藏
err分享
err收藏
Caveolin-1 and -2 regulate cell motility in castration-resistant prostate cancer
err2018-10-01
err0
errOAAI
errToyoharu Kamibeppu; Koji Yamasaki; Kozue Nakahara; Takahiro Nagai; Naoki Terada; Hiromasa Tsukino; Shoichiro Mukai; Toshiyuki Kamoto
err分享
err收藏
Unusual Photoisomerization Pathway in a Near-Infrared Light Absorbing Enzymerhodopsin
err2022-10-06
err0
PREAI
errMasahiro Sugiura; Kazuki Ishikawa; Kota Katayama; Yuji Sumii; Rei Abe-Yoshizumi; Satoshi P. Tsunoda; Yuji Furutani; Norio Shibata; Leonid S. Brown; Hideki Kandori
err分享
err收藏
err
IF0
err
err0
PREAI
err
err分享
err收藏
学者 查看更多内容