自监督对比学习:基于语义保持转换实现代码检索和摘要
本文介绍了应对在自然语言生成中源代码编辑的二义性问题的解决方案 ——ContraCode,通过对许多非等价程序的功能相似变体进行对比预训练的方式来实现源代码功能性的学习,并在 JavaScript 总结和 TypeScript 类型推断准确性上取得了较大的提升。
Jul, 2020
本文提出了 CodeRetriever 模型,通过大规模的代码 - 文本对比预训练学习功能级别的代码语义表示,并采用单模态对比学习和双模态对比学习两种对比学习方案,以通过文档、函数名称和代码 - 文本对建立语义相关的代码对和代码 - 文本对,在不同代码粒度的 11 个领域 / 语言特定的代码搜索任务中,CodeRetriever 取得了新的最高水平,有效性和鲁棒性得到证明。
Jan, 2022
本文介绍了一种新的代码到代码搜索技术,通过包括静态和动态特征以及在训练过程中利用相似和不同的示例来提高大型语言模型的性能。我们展示了第一个能够在训练期间编码动态运行时信息的代码搜索方法,在推断时间无需执行搜索语料库或搜索查询,同时还是第一个训练正负参考样本的代码搜索技术。我们通过一系列研究验证了我们方法的有效性,并展示了增强 LLMs 执行跨语言代码到代码搜索的能力。我们的评估表明,我们的方法的效果在各种模型架构和编程语言中都是一致的。此外,我们的消融研究表明,即使在训练过程中只有一个正面和负面参考样本,也会产生相当大的性能提高,这证明了相似和不同的参考是代码搜索的重要部分。重要的是,我们展示了精心制作的、经过调整的模型在性能上始终优于未调整的更大的现代 LLMs,即使是在增强最大可用 LLMs 时也是如此,这凸显了开源模型的重要性。为了确保我们研究的可重复性和可扩展性,我们介绍了一个名为 Cosco 的开源实现和培训过程
May, 2023
DISCO 是一种基于自我监督的模型,结合原创的代码转换算法和注入真实世界安全漏洞的数据增强技术来预训练 Transformer 模型,以更好地识别源代码中的相似之处和不同之处,并区分易受攻击程序和良性程序。
Oct, 2021
该研究提出了一个检索增强框架 REDCODER,用于检索相关的代码或摘要,作为代码生成或总结模型的补充,实现了与检索数据库的交互。这个机制可以扩展检索技术的功能,适用于含有不同模态的检索数据库,并在 Java 和 Python 的代码生成和摘要的基准数据集上得到了良好的实验结果。
Aug, 2021
本文提出了一个新的端到端模型来同时处理代码摘要生成和检索两个任务通过引入额外的代码生成任务,利用双向学习明确地利用了代码摘要和代码生成之间的概率相关性,通过多任务学习利用用于代码摘要和代码生成的两个编码器训练代码检索任务。作者在现有的 SQL 和 Python 数据集上进行了广泛的实验,结果表明,我们的模型可以显著提高代码检索任务的结果,同时在代码摘要任务的 BLEU 得分方面也能够达到竞争性的性能。
Feb, 2020
本文提出了软标签对比性预训练框架 SCodeR,包括两种正样本构建方法来学习功能层级的代码表示。实验结果表明,SCodeR 在四个代码相关任务的七个数据集上均取得了新的最好表现,这说明了所提出的预训练模型的有效性。
Oct, 2022
本文提出了 CoCoSoDa 的方法,充分利用了对比学习进行代码搜索方面应用的两个关键因素:数据扩充和负样本。该方法使用软数据扩充技术生成正样本,使用动量机制生成一致的负样本表示,使用多模式的对比学习方法,既拉紧了代表代码 - 查询对的表示,又将不成对的代码片段和查询推开。对大型数据集进行的广泛实验表明,该方法的性能显著优于 14 个基线,并在平均 MRR 分数上分别超过 CodeBERT、GraphCodeBERT 和 UniXcoder 的 13.3%、10.5%和 5.9%。
Apr, 2022
本文探讨使用 Transformer 模型和自注意力机制来生成代码表示以进行源代码概述的任务,并提出其相对编码表现显著优于绝对编码,并通过实验验证其在处理长距离依赖性方面的有效性,实现了领先于现有技术的性能表现。
May, 2020
通过使用 Transformer 编码器作为模型的一个关键组成部分并引入了一个名为 TransformCode 的新型框架,该研究论文提出了一种基于对比学习方式学习代码嵌入的方法,并介绍了一种名为抽象语法树转换的新型数据增强技术,从而生成更多样化和稳健的锚点样本。该框架不仅灵活适应,可以扩展到其他需要代码表达的下游任务,而且效率高且可扩展性强,支持任何编程语言。
Nov, 2023