中文

重新思考代码搜索中的负样本对

软件工程 2023-10-13 v1 计算与语言 信息检索 机器学习

摘要

近来,对比学习已成为微调代码搜索模型以提升软件开发效率与效果的关键组件。其将正代码片断拉近,同时将负样本推远(给定搜索查询)。在对比学习中,InfoNCE因其更优性能成为最广泛使用的损失函数。然而,InfoNCE负样本中的以下问题可能恶化其表示学习:1)大型代码语料中因重复而存在假负样本。2)未能显式区分负样本间的潜在相关性。例如,对于快速排序算法查询,冒泡排序算法示例比文件保存函数“负”得少。本文通过提出一种简单而有效的Soft-InfoNCE损失来解决上述问题,该损失向InfoNCE中插入权重项。在我们提出的损失函数中,应用三种方法估计负样本对的权重,并表明原始InfoNCE损失是Soft-InfoNCE的特例。理论上,我们分析了Soft-InfoNCE对控制所学代码表示分布及推导更精确互信息估计的影响。我们进一步讨论了所提损失函数相对于其他设计选择的优越性。大量实验证明了在包含六种编程语言的大规模公开数据集上,Soft-InfoNCE与权重估计方法在最先进代码搜索模型下的有效性。源代码见\url{https://github.com/Alex-HaochenLi/Soft-InfoNCE}。

关键词

引用

@article{arxiv.2310.08069,
  title  = {Rethinking Negative Pairs in Code Search},
  author = {Haochen Li and Xin Zhou and Luu Anh Tuan and Chunyan Miao},
  journal= {arXiv preprint arXiv:2310.08069},
  year   = {2023}
}

备注

Accepted to EMNLP 2023