中文

基于微调的难负样本采样改进代码搜索

软件工程 2024-11-25 v2

摘要

预训练代码模型已成为代码搜索任务的最先进范式。该范式涉及在诸如掩码语言建模等与搜索无关的任务上预训练模型,随后进行专注于搜索相关任务的微调阶段。典型的微调方法是采用双编码器架构分别编码查询和代码的语义嵌入,然后基于嵌入计算它们的相似度。然而,典型的双编码器架构在建模查询与代码之间的词元级交互方面存在不足,这限制了模型的能力。为解决这一局限,我们引入一种用于代码搜索的交叉编码器架构,联合编码查询与代码的拼接。我们进一步引入一个检索器-排序器(RR)框架,将双编码器和交叉编码器级联以提升评估和在线服务的效率。此外,我们提出一种基于排序的难负样本采样(PS)方法,以提升交叉编码器区分难负样本代码的能力,从而进一步增强级联的 RR 框架。在四个数据集上使用三个代码模型的实验证明了我们所提方法的优越性。我们已在 https://github.com/DongHande/R2PS 公开代码。

关键词

引用

@article{arxiv.2305.04508,
  title  = {Improving Code Search with Hard Negative Sampling Based on Fine-tuning},
  author = {Hande Dong and Jiayi Lin and Yanlin Wang and Yichong Leng and Jiawei Chen and Yutao Xie},
  journal= {arXiv preprint arXiv:2305.04508},
  year   = {2024}
}

备注

Accepted by APSEC 2024