论文阅读 - Contrastive Code Representation Learning

Motivation

先前工作从上下文重建tokens来学习源代码上下文表示,对下游的语义理解任务,如代码克隆检测,这些表示应该理想的捕捉程序的功能。但是,我们发现流行的基于重构的RoBERTa模型对代码编辑很敏感,甚至当编辑保留了语义。

ContraCode

我们提出ContraCode:一个对比的预训练任务,学习代码的功能,不只是形式。ContraCode 预训练一个神经网络在许多非等效的干扰项中识别功能相似的程序变体。我们使用一种自动源到源的编译器作为数据扩充的一种形式,伸缩的生成这些变体。对比性预训练在逆序代码克隆检测基准上的表现优于RoBERTa 39%AUROC。令人惊讶的是,改进的对抗性鲁棒性会比自然代码更准确;与竞争基线相比,ContraCode将汇总和TypeScript类型推理精度提高了2到13个百分点。code,paper

像GitHub这样的大型代码库是学习机器辅助编程工具的有力资源。然而,大多数当前的代码表示学习方法都需要标签,而像RoBERTa这样流行的无标签自我监督方法对对抗性输入并不鲁棒。我们不是像BERT这样重建tokens学习代码说什么,而是学习代码做什么。我们提出ContraCode,一种对比性的自我监督算法,它通过基于编译器的数据预测来学习表示不变性。在实验中,ContraCode学习功能的有效表示,并对对抗性代码编辑具有鲁棒性。我们发现,Contra Code显著提高了三个下游JavaScript代码理解任务的性能。

论文阅读 - Contrastive Code Representation Learning

http://example.com/2022/09/21/论文阅读 - 04/

作者

Yang

发布于

2022-09-21

更新于

2022-10-11

许可协议

评论